public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Delete test target descriptions when exiting
@ 2018-07-31 14:25 sergiodj+buildbot
  2018-07-31 14:25 ` Failures on RHEL-s390x-m64, branch master sergiodj+buildbot
                   ` (9 more replies)
  0 siblings, 10 replies; 3701+ messages in thread
From: sergiodj+buildbot @ 2018-07-31 14:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1c28969efcca7c214e41c496f599bc4de2c56dbe ***

Author: Simon Marchi <simon.marchi@ericsson.com>
Branch: master
Commit: 1c28969efcca7c214e41c496f599bc4de2c56dbe

Delete test target descriptions when exiting

Looking at the address sanitizer output, this was a quite low hanging
fruit.  We create target_desc objects for testing that we never free.
Saving them in unique_ptrs takes care of it.

I created a small struct to hold these because I thought it would help
readability.

gdb/ChangeLog:

	* target-descriptions.c (struct xml_test_tdesc): New.
	(xml_tdesc): Change type to std::vector<xml_test_tdesc>.
	(record_xml_tdesc): Update.
	(maintenance_check_xml_descriptions): Update.
	* target-descriptions.h (record_xml_tdesc): Update comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Adjust bfd/warning.m4 egrep patterns
@ 2019-01-09  3:39 sergiodj+buildbot
  2019-01-09  4:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09  3:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3107326d3df950b0578a895bb835b2a8dfa8fab7 ***

Author: Andrew Paprocki <andrew@ishiboo.com>
Branch: master
Commit: 3107326d3df950b0578a895bb835b2a8dfa8fab7

Adjust bfd/warning.m4 egrep patterns

Adjust the `bfd/warning.m4` `egrep` patterns to handle preprocessors
that do not define `__GNUC__`, leaving the string in the output.

bfd/
	* warning.m4: Adjust egrep pattern for non-GNU compilers.
	* configure: Regenerate.
binutils/
	* configure: Regenerate.
gas/
	* configure: Regenerate.
gold/
	* configure: Regenerate.
gprof/
	* configure: Regenerate.
ld/
	* configure: Regenerate.
opcodes/
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak in linespec.c
@ 2019-01-09  4:59 sergiodj+buildbot
  2019-01-09  6:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09  4:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1055a3b422da11b252fc83e73a5e9f465233e73d ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 1055a3b422da11b252fc83e73a5e9f465233e73d

Fix leak in linespec.c

Valgrind reports a leak in many tests, such as:
==9382== 16 bytes in 1 blocks are definitely lost in loss record 236 of 3,282
==9382==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==9382==    by 0x4197AF: xrealloc (common-utils.c:64)
==9382==    by 0x51D16A: xresizevec<linespec_canonical_name> (poison.h:170)
==9382==    by 0x51D16A: add_sal_to_sals(linespec_state*, std::vector<symtab_and_line, std::allocator<symtab_and_line> >*, symtab_and_line*, char const*, int) (linespec.c:1041)
==9382==    by 0x51E2BF: create_sals_line_offset (linespec.c:2215)
==9382==    by 0x51E2BF: convert_linespec_to_sals(linespec_state*, linespec*) (linespec.c:2358)
==9382==    by 0x521B5D: convert_explicit_location_to_sals (linespec.c:2473)

Fix leak by xfree-ing self->canonical_names in linespec_state_destructor.
The leak probably appeared with the patch 'Remove cleanup from linespec.c',
as there was a cleanup to xfree canonical_names before the patch.

Tested on Debian/amd64, native and under valgrind.

2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* linespec.c (linespec_state_destructor): Free self->canonical_names.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Remove interactive prompt case from mi_gdb_test
@ 2019-01-09 10:50 sergiodj+buildbot
  2019-01-09 11:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 10:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d820d0c37beda1c29ff50bb1f2ebc1d23114d735 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: d820d0c37beda1c29ff50bb1f2ebc1d23114d735

gdb/testsuite: Remove interactive prompt case from mi_gdb_test

I noticed that when running this test:

  make check-gdb RUNTESTFLAGS="--target_board=native-gdbserver gdb.mi/mi-break.exp"

I would occasionally see some UNRESOLVED test results like this:

  (gdb)
  PASS: gdb.mi/mi-break.exp: mi-mode=separate: breakpoint at main
  Expecting: ^(kill[
  ]+)?(.*[
  ]+[(]gdb[)]
  [ ]*)
  kill
  &"kill\n"
  ~"Kill the program being debugged? (y or n) [answered Y; input not from terminal]\n"
  =thread-group-exited,id="i1"
  ERROR: Got interactive prompt.
  UNRESOLVED: gdb.mi/mi-break.exp: mi-mode=separate:

The problem appears to be that the expect buffer fills up to include
the '(y or n)' prompt without including the following lines.

The pattern supplied by the outer test script is looking for the
following lines.  As the following lines are not present then expect
matches on the interactive prompt case rather than the case for the
user supplied pattern.

The problem with this is that we are not really at an interactive
prompt, GDB is providing an answer for us and then moving on.  When I
examine a successful run of the test the output from GDB is identical,
the only difference is where expect happens to buffer the output from
GDB.

This patch remove all special handling of the interactive prompt
case.  This means that if we ever break GDB and start seeing an
unexpected interactive prompt then tests will rely on a timeout to
fail, instead of having dedicated interactive prompt detection, but
this solves the problem that an auto-answered prompt looks very
similar to an interactive prompt.

With this patch in place I can now leave the following loop running
indefinitely, where before it would fail usually after ~10
iterations.

  while make check-gdb RUNTESTFLAGS="--target_board=native-gdbserver gdb.mi/mi-break.exp"; \
  do /bin/true; \
  done

gdb/testsuite/ChangeLog:

	* lib/mi-support.exp (mi_gdb_test): Remove interactive prompt
	case.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Avoid signed integer overflow when printing source lines
@ 2019-01-09 15:59 sergiodj+buildbot
  2019-01-09 16:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 15:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0e2a21335b6fc4a5b6bed19d9623916c52918b72 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 0e2a21335b6fc4a5b6bed19d9623916c52918b72

gdb: Avoid signed integer overflow when printing source lines

When printing source lines with calls to print_source_lines we need to
pass a start line number and an end line number.  The end line number
is calculated by calling get_lines_to_list and adding this value to
the start line number.  For example this code from list_command:

    print_source_lines (cursal.symtab, first,
                        first + get_lines_to_list (), 0);

The problem is that get_lines_to_list returns a value based on the
GDB setting `set listsize LISTSIZE`.  By default LISTSIZE is 10,
however, its also possible to set LISTSIZE to unlimited, in which
case get_lines_to_list will return INT_MAX.

As the parameter signature for print_source_lines is:

  void print_source_lines (struct symtab *, int, int,
                           print_source_lines_flags);

and `first` in the above code is an `int`, then when LISTSIZE is
`unlimited` the above code will result in signed integer overflow,
which is undefined.

The solution in this patch is a new class source_lines_range that can
be constructed from a single line number and a direction (forward or
backward).  The range is then constructed from the line number and the
value of get_lines_to_list.

gdb/ChangeLog:

	* cli/cli-cmds.c (list_command): Pass a source_lines_range to
	print_source_lines.
	* source.c (print_source_lines_base): Update line number check.
	(print_source_lines): New function.
	(source_lines_range::source_lines_range): New function.
	* source.h (class source_lines_range): New class.
	(print_source_lines): New declaration.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove support for old mangling schemes
@ 2019-01-09 18:33 sergiodj+buildbot
  2019-01-09 19:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 18:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 041be52673949e5b6cc2b507e55a379a54ab8ee0 ***

Author: Simon Marchi <simon.marchi@ericsson.com>
Branch: master
Commit: 041be52673949e5b6cc2b507e55a379a54ab8ee0

gdb: Remove support for old mangling schemes

An upcoming sync with gcc's libiberty [1] will remove support for old
mangling schemes (GNU v2, Lucid, ARM, HP and EDG).  It will remove the
cplus_demangle_opname function, so we need to get rid of its usages in
GDB (it's a GNU v2 specific function).

I think the changes are mostly relatively obvious, some hacks that were
necessary to support overloaded operators with GNU v2 mangling are not
needed anymore.

The change in stabsread.c is perhaps less obvious.  I think we could get
rid of more code in that region that is specific to old mangling
schemes, but I chose to do only the minimal changes required to remove
the cplus_demangle_opname uses.  There is also a detailed comment just
above that explaining how GNU v2 and v3 mangled symbols are handled, I
decided to leave it as-is, since I wasn't sure which part to remove,
change or leave there.

[1] The commit "Remove support for demangling GCC 2.x era mangling
schemes.", specifically.

gdb/ChangeLog:

	* gdbtypes.c (check_stub_method_group): Remove handling of old
	mangling schemes.
	* linespec.c (find_methods): Likewise.
	* stabsread.c (read_member_functions): Likewise.
	* valops.c (search_struct_method): Likewise.
	(value_struct_elt_for_reference): Likewise.
	* NEWS: Mention this change.

gdb/testsuite/ChangeLog:

	* gdb.cp/demangle.exp (test_gnu_style_demangling): Rename to...
	(test_gnuv3_style_demangling): ... this.
	(test_lucid_style_demangling): Remove.
	(test_arm_style_demangling): Remove.
	(test_hp_style_demangling): Remove.
	(do_tests): Remove calls to the above.

gdb/doc/ChangeLog:

	* gdb.texinfo (Print Settings): Remove mention of specific
	demangle-style values, just refer to the in-process help.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: Fix disassembly of indexed OPR operands with zero index.
@ 2019-01-09 19:35 sergiodj+buildbot
  2019-01-09 20:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 19:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 39f286cd585226ad98c2cd94ee0f96988b3696ce ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: 39f286cd585226ad98c2cd94ee0f96988b3696ce

S12Z: Fix disassembly of indexed OPR operands with zero index.

gas/
	* testsuite/gas/s12z/jsr.s: New case.
	* testsuite/gas/s12z/jsr.d: New case.
opcodes/
	* s12z-dis.c (opr_emit_disassembly): Do not omit an index if it is
	zero.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: Don't crash when disassembling invalid instructions.
@ 2019-01-09 20:05 sergiodj+buildbot
  2019-01-09 22:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 20:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 448b8ca86519cce1216c9db5f0236604a6a33320 ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: 448b8ca86519cce1216c9db5f0236604a6a33320

S12Z: Don't crash when disassembling invalid instructions.

Check for null before dereferencing an operand pointer.  Normally
this situation should never arise, but could happen if a "partial"
instruction is encountered at the end of a file or section.

opcodes/
	* s12z-dis.c (print_insn_s12z):  Do not dereference an
	operand if it is null.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Merge from gcc: use "cannot" instead of "can not" in libiberty and include.
@ 2019-01-09 22:15 sergiodj+buildbot
  2019-01-10  0:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-09 22:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a08da33eb3f69dec01810440a40c77ed56a79b69 ***

Author: Sandra Loosemore <sandra@codesourcery.com>
Branch: master
Commit: a08da33eb3f69dec01810440a40c77ed56a79b69

Merge from gcc: use "cannot" instead of "can not" in libiberty and include.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	Merge from GCC:

	2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	PR other/16615 [2/5]

	include/
	* libiberty.h: Mechanically replace "can not" with "cannot".
	* plugin-api.h: Likewise.

	libiberty/
	* cp-demangle.c: Mechanically replace "can not" with "cannot".
	* floatformat.c: Likewise.
	* strerror.c: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce all_objfiles and next_iterator
@ 2019-01-10  1:52 sergiodj+buildbot
  2019-01-10  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  1:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 217083254a26b9e1dc42c43f573054740988c2cf ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 217083254a26b9e1dc42c43f573054740988c2cf

Introduce all_objfiles and next_iterator

This introduces an iterable object which can be used to iterate over
objfiles.  It also introduces a generic "next_iterator", which can be
used to iterate over types that have a "next" field.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* common/next-iterator.h: New file.
	* objfiles.h (class all_objfiles): New.
	(struct objfile_iterator): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_PSPACE_OBJFILES
@ 2019-01-10  2:24 sergiodj+buildbot
  2019-01-10  4:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  2:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 99d89cdea6c296bdd94ce532350d139d3900ff78 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 99d89cdea6c296bdd94ce532350d139d3900ff78

Remove ALL_PSPACE_OBJFILES

This removes the ALL_PSPACE_OBJFILES macro in favor of ranged for
loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* probe.c (parse_probes_in_pspace): Use all_objfiles.
	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Use
	all_objfiles.
	* objfiles.h (ALL_PSPACE_OBJFILES): Remove.
	* symmisc.c (print_symbol_bcache_statistics)
	(print_objfile_statistics, maintenance_print_objfiles)
	(maintenance_info_symtabs, maintenance_check_symtabs)
	(maintenance_expand_symtabs, maintenance_info_line_tables): Use
	all_objfiles.
	* source.c (forget_cached_source_info): Use all_objfiles.
	* symfile-debug.c (set_debug_symfile): Use all_objfiles.
	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
	(elf_gnu_ifunc_resolve_by_got): Use all_objfiles.
	* objfiles.c (update_section_map): Use all_objfiles.
	(shared_objfile_contains_address_p): Likewise.
	* psymtab.c (maintenance_info_psymtabs): Use all_objfiles.
	* python/py-progspace.c (pspy_get_objfiles): Use all_objfiles.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove most uses of ALL_OBJFILES
@ 2019-01-10  2:36 sergiodj+buildbot
  2019-01-10  5:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  2:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aed57c537116ae91f553ac835b3f96d1f87b3bb0 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: aed57c537116ae91f553ac835b3f96d1f87b3bb0

Remove most uses of ALL_OBJFILES

This removes most uses of ALL_OBJFILES, replacing them with ranged for
loops.  The remaining uses are all in macros, and will be removed in
subsequent patches.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* symtab.c (iterate_over_symtabs, matching_obj_sections)
	(expand_symtab_containing_pc, lookup_static_symbol)
	(basic_lookup_transparent_type, find_pc_sect_compunit_symtab)
	(find_symbol_at_address, find_line_symtab, find_main_name): Use
	all_objfiles.
	* probe.c (find_probe_by_pc, collect_probes): Use all_objfiles.
	* breakpoint.c (create_overlay_event_breakpoint)
	(create_longjmp_master_breakpoint)
	(create_std_terminate_master_breakpoint)
	(create_exception_master_breakpoint): Use all_objfiles.
	* linux-thread-db.c (try_thread_db_load_from_pdir)
	(has_libpthread): Use all_objfiles.
	* ada-lang.c (add_nonlocal_symbols): Use all_objfiles.
	* linespec.c (iterate_over_all_matching_symtabs)
	(search_minsyms_for_name): Use all_objfiles.
	* maint.c (maintenance_info_sections): Use all_objfiles.
	* main.c (captured_main_1): Use all_objfiles.
	* spu-tdep.c (spu_objfile_from_frame): Use all_objfiles.
	* guile/scm-objfile.c (gdbscm_objfiles): Use all_objfiles.
	* guile/scm-pretty-print.c
	(ppscm_find_pretty_printer_from_objfiles): Use all_objfiles.
	* solib-spu.c (append_ocl_sos): Use all_objfiles.
	* symmisc.c (maintenance_print_symbols): Use all_objfiles.
	(maintenance_print_msymbols): Use all_objfiles.
	* source.c (select_source_symtab): Use all_objfiles.
	* jit.c (jit_find_objf_with_entry_addr): Use all_objfiles.
	* symfile.c (remove_symbol_file_command)
	(expand_symtabs_matching, map_symbol_filenames): Use
	all_objfiles.
	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created): Use
	all_objfiles.
	* dwarf2-frame.c (dwarf2_frame_find_fde): Use all_objfiles.
	* objc-lang.c (find_methods): Use all_objfiles.
	* objfiles.c (have_partial_symbols, have_full_symbols)
	(have_minimal_symbols, qsort_cmp)
	(default_iterate_over_objfiles_in_search_order): Use
	all_objfiles.
	* hppa-tdep.c (find_unwind_entry): Use all_objfiles.
	* psymtab.c (maintenance_print_psymbols): Use all_objfiles.
	(maintenance_check_psymtabs): Use all_objfiles.
	(ALL_PSYMTABS): Remove.
	* compile/compile-object-run.c (do_module_cleanup): Use
	all_objfiles.
	* blockframe.c (find_pc_partial_function): Use all_objfiles.
	* cp-support.c (add_symbol_overload_list_qualified): Use
	all_objfiles.
	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
	Use all_objfiles.
	* dwarf-index-write.c (save_gdb_index_command): Use all_objfiles.
	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Use
	all_objfiles.
	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
	(objfpy_lookup_objfile_by_build_id): Use all_objfiles.
	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
	Uses all_objfiles.
	* solib.c (solib_read_symbols): Use all_objfiles


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS
@ 2019-01-10  2:59 sergiodj+buildbot
  2019-01-10  8:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  2:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5325b9bf1ee283c40f076334eb3ea66e1f0a6ade ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5325b9bf1ee283c40f076334eb3ea66e1f0a6ade

Remove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS

This removes the ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS macros,
replacing their uses with ranged for loops.

In a couple of spots, a new declaration was needed in order to work
around shadowing; these are just temporary and are removed in a
subsequent patch.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* symtab.c (search_symbols)
	(default_collect_symbol_completion_matches_break_on): Use
	objfile_msymbols.
	* ada-lang.c (ada_lookup_simple_minsym)
	(ada_collect_symbol_completion_matches): Use objfile_msymbols.
	* minsyms.c (find_solib_trampoline_target): Use objfile_msymbols.
	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Use
	objfile_msymbols.
	* coffread.c (coff_symfile_read): Use objfile_msymbols.
	* symmisc.c (dump_msymbols): Use objfile_msymbols.
	* objc-lang.c (find_methods): Use objfile_msymbols.
	(info_selectors_command, info_classes_command): Likewise.
	* stabsread.c (scan_file_globals): Use objfile_msymbols.
	* objfiles.h (class objfile_msymbols): New.
	(ALL_OBJFILE_MSYMBOLS): Remove.
	(ALL_MSYMBOLS): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_OBJFILE_COMPUNITS
@ 2019-01-10  3:12 sergiodj+buildbot
  2019-01-10  9:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  3:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 592553c46959c98bf5981ad245d0fbb97f373d2a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 592553c46959c98bf5981ad245d0fbb97f373d2a

Remove ALL_OBJFILE_COMPUNITS

This removes ALL_OBJFILE_COMPUNITS, replacing its uses with ranged for
loops.  Because ALL_COMPUNITS is also updated, in some places a
declaration must be deleted to avoid shadowing.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* source.c (select_source_symtab)
	(forget_cached_source_info_for_objfile): Remove declaration.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
	declaration.
	* maint.c (count_symtabs_and_blocks): Remove declaration.
	* cp-support.c (add_symbol_overload_list_qualified): Remove
	declaration.
	* coffread.c (coff_symtab_read): Remove declaration.
	* symtab.c (lookup_symbol_in_objfile_symtabs)
	(basic_lookup_transparent_type_1): Use objfile_compunits.
	(lookup_objfile_from_block, find_pc_sect_compunit_symtab)
	(info_sources_command, search_symbols)
	(default_collect_symbol_completion_matches_break_on)
	(make_source_files_completion_list): Remove declaration.
	* ada-lang.c (add_nonlocal_symbols): Use objfile_compunits.
	(ada_collect_symbol_completion_matches)
	(ada_add_global_exceptions): Remove declaration.
	* linespec.c (iterate_over_all_matching_symtabs): Use
	objfile_compunits.
	* objfiles.h (ALL_OBJFILE_COMPUNITS): Remove.
	(class objfile_compunits): New.
	(ALL_COMPUNITS): Use objfile_compunits.
	* symmisc.c (print_objfile_statistics, maintenance_info_symtabs)
	(maintenance_check_symtabs, maintenance_info_line_tables): Use
	objfile_compunits.
	* objfiles.c (objfile_relocate1): Use objfile_compunits.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_COMPUNITS
@ 2019-01-10  3:25 sergiodj+buildbot
  2019-01-10 11:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  3:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d8aeb77f040ced7d37ab83f032b2e4ded2c81ca5 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d8aeb77f040ced7d37ab83f032b2e4ded2c81ca5

Remove ALL_COMPUNITS

This removes the ALL_COMPUNITS, replacing its uses with two nested
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* symtab.c (lookup_objfile_from_block)
	(find_pc_sect_compunit_symtab, search_symbols)
	(default_collect_symbol_completion_matches_break_on): Use
	objfile_compunits.
	* objfiles.h (ALL_COMPUNITS): Remove.
	* maint.c (count_symtabs_and_blocks): Use objfile_compunits.
	* cp-support.c (add_symbol_overload_list_qualified): Use
	objfile_compunits.
	* ada-lang.c (ada_collect_symbol_completion_matches)
	(ada_add_global_exceptions): Use objfile_compunits.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_COMPUNIT_FILETABS
@ 2019-01-10  3:56 sergiodj+buildbot
  2019-01-10 15:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  3:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5accd1a07e080c386918da413e0f9e90c4cab58a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5accd1a07e080c386918da413e0f9e90c4cab58a

Remove ALL_COMPUNIT_FILETABS

This removes ALL_COMPUNIT_FILETABS, replacing its uses with ranged for
loops.

Because this is still used in the ALL_OBJFILE_FILETABS macro, in some
places a declaration had to be removed or renamed to avoid shadowing.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* symtab.h (ALL_COMPUNIT_FILETABS): Remove.
	(compunit_filetabs): New.
	* symtab.c (iterate_over_some_symtabs, find_pc_sect_line): Use
	compunit_filetabs.
	(info_sources_command, make_source_files_completion_list): Remove
	declaration.
	* symmisc.c (print_objfile_statistics, dump_objfile)
	(maintenance_print_symbols): Remove declaration.
	(maintenance_info_symtabs): Use compunit_filetabs.
	(maintenance_info_line_tables): Likewise.
	* source.c (select_source_symtab): Change local variable name.
	(forget_cached_source_info_for_objfile): Remove declaration.
	* objfiles.h (ALL_OBJFILE_FILETABS): Use compunit_filetabs.
	* objfiles.c (objfile_relocate1): Remove declaration.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
	declaration.
	* maint.c (count_symtabs_and_blocks): Use compunit_filetabs.
	* coffread.c (coff_symtab_read): Remove declaration.
	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
	compunit_filetabs.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_OBJFILES and ALL_FILETABS
@ 2019-01-10  4:18 sergiodj+buildbot
  2019-01-10 18:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  4:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8b31193aa9752ba60d63cedaba943370d76ce543 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8b31193aa9752ba60d63cedaba943370d76ce543

Remove ALL_OBJFILES and ALL_FILETABS

This removes the ALL_OBJFILES and ALL_FILETABS macros, replacing them
with ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* symtab.c (find_line_symtab, info_sources_command)
	(make_source_files_completion_list): Use objfile_compunits.
	* source.c (select_source_symtab): Use objfile_compunits.
	* objfiles.h (struct objfile): Update comment.
	(ALL_OBJFILES): Remove.
	(ALL_FILETABS): Remove.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Use
	objfile_compunits.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_OBJFILE_PSYMTABS
@ 2019-01-10  4:42 sergiodj+buildbot
  2019-01-10 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  4:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b22a7c6ab6173fe4fa1352e14d00a234bbf50346 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: b22a7c6ab6173fe4fa1352e14d00a234bbf50346

Remove ALL_OBJFILE_PSYMTABS

This removes the ALL_OBJFILE_PSYMTABS macro, replacing its uses with
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* dbxread.c (dbx_end_psymtab): Use objfile_psymtabs.
	* mdebugread.c (parse_partial_symbols): Use objfile_psymtabs.
	* psymtab.c (ALL_OBJFILE_PSYMTABS_REQUIRED): Remove.
	(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
	(psym_lookup_symbol, psym_find_last_source_symtab)
	(psym_forget_cached_source_info, psym_print_stats)
	(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
	(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
	(psym_map_matching_symbols, psym_expand_symtabs_matching)
	(psym_find_compunit_symtab_by_address)
	(maintenance_print_psymbols, maintenance_info_psymtabs)
	(maintenance_check_psymtabs): Use ranged for.
	* psymtab.h (class objfile_psymtabs): New.
	(require_partial_symbols): Return objfile_psymtabs.
	* psympriv.h (ALL_OBJFILE_PSYMTABS): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove ALL_OBJFILES_SAFE
@ 2019-01-10  6:23 sergiodj+buildbot
  2019-01-10  7:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10  6:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cac85af2467c9bac326b397b150274d95d2916a5 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: cac85af2467c9bac326b397b150274d95d2916a5

Remove ALL_OBJFILES_SAFE

This removes the ALL_OBJFILES_SAFE macro, replacing the uses with
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

	* common/next-iterator.h (next_adapter): Add Iterator template
	parameter.
	* objfiles.h (ALL_OBJFILES_SAFE): Remove.
	(class all_objfiles_safe): New.
	* jit.c (jit_inferior_exit_hook): Use all_objfiles_safe.
	* objfiles.c (put_objfile_before): Update comment.
	(add_separate_debug_objfile): Likewise.
	(free_all_objfiles): Use all_objfiles_safe.
	(objfile_purge_solibs): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove parameters from start_psymtab_common
@ 2019-01-10 14:53 sergiodj+buildbot
  2019-01-11  2:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 14:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 939652a515a10654b16b97e7e2ea39c013714850 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 939652a515a10654b16b97e7e2ea39c013714850

Remove parameters from start_psymtab_common

start_psymtab_common takes references to the global_psymbols and
static_psymbols vectors, but it also has an objfile parameter.  This
is redundant, so this patch simplifies the function by removing those
reference parameters.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
	static_psymbols parameters.
	(scan_xcoff_symtab): Update.
	* psymtab.c (start_psymtab_common): Remove global_psymbols and
	static_psymbols parameters.
	* psympriv.h (start_psymtab_common): Update.
	* mdebugread.c (parse_partial_symbols): Update.
	* dwarf2read.c (create_partial_symtab): Update.
	* dbxread.c (read_dbx_symtab): Update.
	(start_psymtab): Remove global_psymbols and static_psymbols
	parameters.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify calls to init_psymbol_list
@ 2019-01-10 15:18 sergiodj+buildbot
  2019-01-11  5:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 15:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6eee24ce30f8e95335c2ad8586f9a64398eb2cd4 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6eee24ce30f8e95335c2ad8586f9a64398eb2cd4

Simplify calls to init_psymbol_list

Existing callers to init_psymbol_list were checking to see if psymbols
had already been initialized.  It seemed better to me to do this check
directly in init_psymbol_list, simplifying the callers.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (xcoff_initial_scan): Unconditionally call
	init_psymbol_list.
	* psymtab.c (init_psymbol_list): Do nothing if already called.
	* psympriv.h (init_psymbol_list): Add comment.
	* dwarf2read.c (dwarf2_build_psymtabs): Unconditionally call
	init_psymbol_list.
	* dbxread.c (dbx_symfile_read): Unconditionally call
	init_psymbol_list.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change create_demangled_names_hash to take an objfile_per_bfd_storage
@ 2019-01-10 15:30 sergiodj+buildbot
  2019-01-11  6:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 15:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0f14768a2a6ba894ae81010e8e70c99ecdb39a73 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 0f14768a2a6ba894ae81010e8e70c99ecdb39a73

Change create_demangled_names_hash to take an objfile_per_bfd_storage

This changes create_demangled_names_hash to take an
objfile_per_bfd_storage parameter.  This makes it clearer where it is
storing the objects it allocates.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* symtab.c (create_demangled_names_hash): Change argument to be an
	objfile_per_bfd_storage.
	(symbol_set_names): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change symbol_set_names to take an objfile_per_bfd_storage
@ 2019-01-10 15:41 sergiodj+buildbot
  2019-01-11  7:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 15:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1d94a5a36a614cf7ebe259d7660f4fa725f38ee2 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1d94a5a36a614cf7ebe259d7660f4fa725f38ee2

Change symbol_set_names to take an objfile_per_bfd_storage

This changes symbol_set_names to take an objfile_per_bfd_storage
argument, and updates the users.  It also changes PSYMBOL_SET_NAMES to
take this argument directly; I feel this clarifies the storage
location of objects created in psymtab.c.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* symtab.h (SYMBOL_SET_NAMES): Update.
	(symbol_set_names): Update.
	(MSYMBOL_SET_NAMES): Update.
	* symtab.c (symbol_set_names): Change argument to be an
	objfile_per_bfd_storage.
	* psymtab.c (add_psymbol_to_bcache): Update.
	* psympriv.h (PSYMBOL_SET_NAMES): Take per_bfd argument.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Allocate the address map on the psymtab obstack
@ 2019-01-10 16:18 sergiodj+buildbot
  2019-01-11 11:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5923a04c0c489054d275e3b0441626ce1ae7344a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5923a04c0c489054d275e3b0441626ce1ae7344a

Allocate the address map on the psymtab obstack

After this patch, the psymtab address map will now be allocated on the
psymtab obstack rather than the objfile obstack.  This also changes
the psymtab storage object to make the obstack private; this will be
used later.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* psymtab.h (psymtab_storage::obstack): New method.
	<m_obstack>: Rename from obstack; now private.
	* psymtab.c (psymtab_storage): Update.
	* dwarf2read.c (create_addrmap_from_index)
	(create_addrmap_from_aranges, dwarf2_build_psymtabs_hard):
	Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add psymtab_storage::allocate_dependencies
@ 2019-01-10 16:43 sergiodj+buildbot
  2019-01-11 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 16:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a9342b62885d5119593fa4330924e031e14c6406 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: a9342b62885d5119593fa4330924e031e14c6406

Add psymtab_storage::allocate_dependencies

This adds a new method to psymtab_storage to allocate storage for
psymtab dependencies, then changes the symbol readers to use it.  This
has the effect of moving the storage to the psymtab storage obstack.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (xcoff_end_psymtab): Use allocate_dependencies.
	* psymtab.h (psymtab_storage::allocate_dependencies): New method.
	* mdebugread.c (parse_partial_symbols): Use
	allocate_dependencies.
	* dwarf2read.c (dwarf2_create_include_psymtab): Use
	allocate_dependencies.
	(process_psymtab_comp_unit_reader)
	(build_type_psymtab_dependencies): Likewise.
	* dbxread.c (dbx_end_psymtab): Use allocate_dependencies.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move psymtabs to their own obstack
@ 2019-01-10 17:09 sergiodj+buildbot
  2019-01-11 16:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 17:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8d7bcccb82d9a7efccd75d9552d007c62031e855 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8d7bcccb82d9a7efccd75d9552d007c62031e855

Move psymtabs to their own obstack

Previously, the psymtab obstack was just a pointer to the objfile
obstack.  This patch changes psymtabs to use their own obstack,
instead.  A gdb::optional is used to avoid unnecessary allocation when
the obstack is not needed.

After this patch, the psymtab code lifetime model is that, in the core
psymtab code, objects allocated on the psymtab obstack may point to
other such objects, or to objects on the per-BFD obstack -- but never
to the objfile obstack.

Note however that this invariant is only obeyed the core psymtab code,
and even there not quite fully: there is still a link from the psymtab
to the full symtab.

Symbol readers are free to work however they like; and in particular,
even after this patch, in practice all symbol readers violate this
invariant via the read_symtab_private field.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* objfiles.h (objfile::reset_psymtabs): Update.
	* objfiles.c (objfile::objfile): Update.
	* psymtab.h (psymtab_storage::obstack): Update.
	(psymtab_storage::m_obstack): Use gdb::optional.
	(class psymtab_storage): Update comment.  Remove objfile
	parameter.
	* psymtab.c (psymtab_storage::psymtab_storage): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak in solib-target.c:library_list_start_library
@ 2019-01-10 18:32 sergiodj+buildbot
  2019-01-11 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 18:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2f667667e24357ff54701f3e046820cf08d649cf ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 2f667667e24357ff54701f3e046820cf08d649cf

Fix leak in solib-target.c:library_list_start_library

lm_info_target::name is nowadays std::string, so we're leaking the
result of xstrdup.

gdb/ChangeLog:
2019-01-10  Pedro Alves  <palves@redhat.com>

	* solib-target.c (library_list_start_library): Don't xstrdup name.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix tracepoint.c:parse_tracepoint_definition leak (and one more)
@ 2019-01-10 18:44 sergiodj+buildbot
  2019-01-11 22:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 18:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 67aa1f3c2881e607081d9e1b57be3e7544c2c45c ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 67aa1f3c2881e607081d9e1b57be3e7544c2c45c

Fix tracepoint.c:parse_tracepoint_definition leak (and one more)

Coverity points out that gdb/tracepoint.c:parse_tracepoint_definition
can leak 'cond' in this line:

      cond = (char *) xmalloc (2 * xlen + 1);

That can leak because we're in a loop and 'cond' may have already been
xmalloc'ed into in a previous iteration.  That won't normally happen,
because we don't expect to see a tracepoint definition with multiple
conditions listed, but, it doesn't hurt to be pedantically correct,
in case some stub manages to send something odd back to GDB.

At first I thought I'd just replace the xmalloc call with:

      cond = (char *) xrealloc (cond, 2 * xlen + 1);

and be done with it.  However, my pedantic self realizes that
warning() can throw as well (due to pagination + Ctrl-C), so I fixed
it using gdb::unique_xmalloc_ptr instead.

While doing this, I noticed that these vectors in struct uploaded_tp:

  std::vector<char *> actions;
  std::vector<char *> step_actions;

hold heap-allocated strings, but nothing is freeing the strings,
AFAICS.

So I ended up switching all the heap-allocated strings in uploaded_tp
to unique pointers.  This patch is the result of that.

I also wrote an alternative, but similar patch that uses std::string
throughout instead of gdb::unique_xmalloc_ptr, but in the end reverted
it because the code didn't look that much better, and I kind of
dislike replacing pointers with fat std::string's (3 or 4 times the
size of a pointer) in structures.

gdb/ChangeLog:
2019-01-10  Pedro Alves  <palves@redhat.com>

	* breakpoint.c (read_uploaded_action)
	(create_tracepoint_from_upload): Adjust to use
	gdb::unique_xmalloc_ptr.
	* ctf.c (ctf_write_uploaded_tp):
	(SET_ARRAY_FIELD): Use emplace_back.
	(SET_STRING_FIELD): Adjust to use gdb::unique_xmalloc_ptr.
	* tracefile-tfile.c (tfile_write_uploaded_tp):
	* tracepoint.c (parse_tracepoint_definition): Adjust to use
	gdb::unique_xmalloc_ptr.
	* tracepoint.h (struct uploaded_tp) <cond, actions, step_actions,
	at_string, cond_string, cmd_strings>: Replace char pointers
	with gdb::unique_xmalloc_ptr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/23712: Remove dw2_add_symbol_to_list
@ 2019-01-10 23:02 sergiodj+buildbot
  2019-01-12  8:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-10 23:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d3cb68081112a4976979df3f8eae7ca926e76519 ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: d3cb68081112a4976979df3f8eae7ca926e76519

gdb/23712: Remove dw2_add_symbol_to_list

Finally, we can remove dw2_add_symbol_to_list since the wrapper function
originally introduced to catch this multi-language scenario is no longer
needed.  With multi-language dictionaries, we can now support adding
symbols of multiple languages, negating the need for the assertion
entirely.

This patch should now fix gdb/23712 (and symtab/23010).  At least it will
if the NULL buildsym_compunit problem doesn't strike first (see gdb/23773).

gdb/ChangeLog:

	PR gdb/23712
	PR symtab/23010
	* dwarf2read.c (dw2_add_symbol_to_list): Remove.
	(fixup_go_packaging, new_symbol): Use add_symbol_to_list.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce class psymtab_storage
@ 2019-01-11  8:09 sergiodj+buildbot
  2019-01-11  8:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-11  8:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d320c2b5e181828418224521f2acd2ff48e127f4 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d320c2b5e181828418224521f2acd2ff48e127f4

Introduce class psymtab_storage

This introduces a new psymtab_storage class, which holds all
psymbol-related objects that are independent of the objfile.  (This
latter contraint explains why psymbol_map was not moved; though this
could still be done with some work.)

This patch does not yet change where psymtab allocation is done --
that comes later.  This just wraps everything in a single object to
make further transformations simpler.

Note that a shared_ptr is used to link from the objfile to the
psymtab_storage object.  The end goal here is to allow a given symbol
reader to simply attach to the psymtab_storage object to the BFD, then
reuse it in later invocations; shared_ptr makes this simple to reason
about.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* symmisc.c (print_symbol_bcache_statistics): Update.
	(print_objfile_statistics): Update.
	* symfile.c (reread_symbols): Update.
	* psymtab.h (class psymtab_storage): New.
	* psymtab.c (psymtab_storage): New constructor.
	(~psymtab_storage): New destructor.
	(require_partial_symbols): Update.
	(ALL_OBJFILE_PSYMTABS_REQUIRED): Rewrite.
	(find_pc_sect_psymtab, find_pc_sect_psymbol)
	(match_partial_symbol, lookup_partial_symbol, dump_psymtab)
	(psym_dump, recursively_search_psymtabs, psym_has_symbols)
	(psym_find_compunit_symtab_by_address, sort_pst_symbols)
	(start_psymtab_common, end_psymtab_common)
	(add_psymbol_to_bcache, add_psymbol_to_list, init_psymbol_list)
	(allocate_psymtab): Update.
	(psymtab_storage::discard_psymtab): Rename from discard_psymtab.
	Update.
	(dump_psymtab_addrmap, maintenance_print_psymbols)
	(maintenance_check_psymtabs): Update.
	(class objfile_psymtabs): Move to objfiles.h.
	* psympriv.h (discard_psymtab): Now inline.
	(psymtab_discarder::psymtab_discarder): Update.
	(psymtab_discarder::~psymtab_discarder): Update.
	(ALL_OBJFILE_PSYMTABS): Rewrite.
	* objfiles.h (struct objfile) <psymtabs, psymtabs_addrmap,
	free_psymtabs, psymbol_cache, global_psymbols, static_psymbols>:
	Remove fields.
	<partial_symtabs>: New field.
	(class objfile_psymtabs): Move from psymtab.h.  Update.
	* objfiles.c (objfile::objfile): Initialize partial_symtabs, not
	psymbol_cache.
	(objfile::~objfile): Don't destroy psymbol_cache.
	* mdebugread.c (parse_partial_symbols): Update.
	* dwarf2read.c (create_addrmap_from_index)
	(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
	(process_psymtab_comp_unit_reader, dwarf2_build_psymtabs_hard)
	(add_partial_subprogram, dwarf2_ranges_read): Update.
	* dwarf-index-write.c (write_address_map)
	(write_one_signatured_type, recursively_write_psymbols)
	(class debug_names, class debug_names, write_psymtabs_to_index):
	Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make psymtab_storage::free_psymtabs private
@ 2019-01-11 14:49 sergiodj+buildbot
  2019-01-11 15:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-11 14:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b596a3c77da2387d7e5a3855717d65ce33bdfb58 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: b596a3c77da2387d7e5a3855717d65ce33bdfb58

Make psymtab_storage::free_psymtabs private

This adds a new psymtab allocation method to psymtab_storage and
changes the free_psymtabs member to be private.  While not strictly
necessary, this seems like a decent cleanup, and also makes it simpler
to move psymtabs off of obstacks entirely, should that prove
desirable.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

	* psymtab.h (psymtab_storage::allocate_psymtab): New method.
	<free_psymtabs>: Now private.
	* psymtab.c (psymtab_storage::allocate_psymtab): Implement.
	(allocate_psymtab): Use new method.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/23712: Cleanup/Remove temporary dictionary functions
@ 2019-01-12  1:32 sergiodj+buildbot
  2019-01-12  2:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12  1:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 63a20375b401e24c30987367a10b47b289612e1c ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: 63a20375b401e24c30987367a10b47b289612e1c

gdb/23712: Cleanup/Remove temporary dictionary functions

Now that multidictionary's are being used, there is no longer any need
to retain the four temporary functions introduced in the beginning of
this series.

This patch removes them.

As an additional cleanup, since the single-language dictionaries are
no longer used outside dictionary.c, make all of those functions
static.

gdb/ChangeLog:

	PR gdb/23712
	PR symtab/23010
	* dictionary.c (pending_to_vector): Remove.
	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
	Remove _1 suffix, replacing functions of the same name.  Update
	all callers.
	(dict_create_hashed, dict_create_hashed_expandable)
	(dict_create_linear, dict_create_linear_expandable, dict_free)
	(dict_add_symbol, dict_add_pending, dict_size, dict_empty):
	Make functions static.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix 'obj' may be used uninitialized warning in symtab.c:matching_obj_sections.
@ 2019-01-12  7:17 sergiodj+buildbot
  2019-01-12 12:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12  7:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9d7c67bfbde3b948704b46f8a6fd479e98ecf2c8 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 9d7c67bfbde3b948704b46f8a6fd479e98ecf2c8

Fix 'obj' may be used uninitialized warning in symtab.c:matching_obj_sections.

Fix warning:

gdb/symtab.c: In function int matching_obj_sections(obj_section*, obj_section*):
gdb/symtab.c:1024:12: warning: obj may be used uninitialized in this function [-Wmaybe-uninitialized]
   if (obj->separate_debug_objfile_backlink != NULL

2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* symtab.c (matching_obj_sections): Initialize obj,
	declare it closer to its usage.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/23712: Test case for multidictionary
@ 2019-01-12  9:25 sergiodj+buildbot
  2019-01-12 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12  9:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b56f80d8b27dffd0f8c02b8b11068b71b9fec375 ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: b56f80d8b27dffd0f8c02b8b11068b71b9fec375

gdb/23712: Test case for multidictionary

This is a test derived from one of the reproducers in symtab/23010.
The DIE tree used here is typical of compilations with LTO, where an
artificial parent DIE of language C99 imports DIEs of other languages.

gdb/testsuite/ChangeLog:

	PR gdb/23712
	PR symtab/23010
	* gdb.dwarf2/multidictionary.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Don't allow paths to appear in test name
@ 2019-01-12 11:31 sergiodj+buildbot
  2019-01-12 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12 11:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6eb6fb6787430a2589e0382aa3e2e4f6f2a0a600 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 6eb6fb6787430a2589e0382aa3e2e4f6f2a0a600

gdb/testsuite: Don't allow paths to appear in test name

Having paths in the test names makes it harder to compare results
between two runs in different directories.  Give the test a name so
that the path doesn't appear.

gdb/ChangeLog:

	* gdb.base/style.exp: Don't include path in testname.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] expand a bit the in-GDB help for the "catch exception" help text
@ 2019-01-12 15:21 sergiodj+buildbot
  2019-01-12 16:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12 15:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 60a90376792474224f3d22b1d9813844a3b3589a ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 60a90376792474224f3d22b1d9813844a3b3589a

expand a bit the in-GDB help for the "catch exception" help text

One of our users remarked that the help doesn't mention the fact that
the "catch exception" supports the special argument "unhandled" to catch
exceptions which do not have a handler. This patch changes the output
of...

 | (gdb) help catch exception
 | Catch Ada exceptions, when raised.
 | With an argument, catch only exceptions with the given name.

... to ...

 | (gdb) help catch exception
 | Catch Ada exceptions, when raised.
 | Usage: catch exception [ ARG ]
 |
 | Without any argument, stop when any Ada exception is raised.
 | If ARG is "unhandled" (without the quotes), only stop when the exception
 | being raised does not have a handler (and will therefore lead to the task's
 | termination).
 | Otherwise, the catchpoint only stops when the name of the exception being
 | raised is the same as ARG.

gdb/ChangeLog:

        * ada-lang.c (_initialize_ada_language): Expand the help text
        for the "catch exception" command.

Tested on x86_64-linux, no regression.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add RXv3 instructions.
@ 2019-01-12 16:44 sergiodj+buildbot
  2019-01-12 17:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12 16:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4ce8c66d19abec8a768add7f6102e856157a3952 ***

Author: Yoshinori Sato <ysato@users.sourceforge.jp>
Branch: master
Commit: 4ce8c66d19abec8a768add7f6102e856157a3952

Add RXv3 instructions.

        * rx-decode.opc (DSIZE): New. double size.
        (_ld): New. dmov size attribute.
        (PSCALE): Add double size.
        (DCR, DDR, DDRH, DDRL, DCND): New. Double FPU registers.
        (SCR, SDR, SDRH, SDRL): Likewise.
        (S2DR, S2CR): Likewise.
        (SDD): New. double displacement.
        (DL): New. Set dmov size attribute.
        (rx_decode_opcode): Add RXv3 instructions.
        * rx-decode.c: Regenerate.
        * rx-dis.c (size_names): Add double entry.
        (opsize_names): Likewise.
        (double_register_names): New. Double FPU registers.
        (double_register_high_names): Likewise.
        (double_register_low_names): Likewise.
        (double_register_control_names): Likewise.
        (double_condition_names): dcmp condition.
        (print_insn_rx): Add  bfmov / bfmovz output.
        Add double FPU output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Implement help/show values for 'set|show style'.
@ 2019-01-12 21:26 sergiodj+buildbot
  2019-01-12 22:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-12 21:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d73cff189ddc3725697e614d4d247819f754f096 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: d73cff189ddc3725697e614d4d247819f754f096

Implement help/show values for 'set|show style'.

Currently, the behaviour is:
  (gdb) show style
  (gdb) set style
  (gdb) show style address
  (gdb) set style address
  (gdb)

With this patch, the behaviour is:
  (gdb) show style
  style address background:  The "address" background color is: none
  style address foreground:  The "address" foreground color is: blue
  style address intensity:  The "address" display intensity is: normal
  enabled:  CLI output styling is enabled.
  style filename background:  The "filename" background color is: none
  style filename foreground:  The "filename" foreground color is: green
  style filename intensity:  The "filename" display intensity is: normal
  style function background:  The "function" background color is: none
  style function foreground:  The "function" foreground color is: yellow
  style function intensity:  The "function" display intensity is: normal
  style variable background:  The "variable" background color is: none
  style variable foreground:  The "variable" foreground color is: cyan
  style variable intensity:  The "variable" display intensity is: normal
  (gdb) set style
  "set style" must be followed by an appropriate subcommand.
  List of set style subcommands:

  set style address -- Address display styling
  set style enabled -- Set whether CLI styling is enabled
  set style filename -- Filename display styling
  set style function -- Function name display styling
  set style variable -- Variable name display styling

  Type "help set style" followed by set style subcommand name for full documentation.
  Type "apropos word" to search for commands related to "word".
  Command name abbreviations are allowed if unambiguous.
  (gdb) show style address
  background:  The "filename" background color is: none
  foreground:  The "filename" foreground color is: green
  intensity:  The "filename" display intensity is: normal
  (gdb) set style address
  List of set style address subcommands:

  set style address background -- Set the background color for this property
  set style address foreground -- Set the foreground color for this property
  set style address intensity -- Set the display intensity color for this property

  Type "help set style address" followed by set style address subcommand name for full documentation.
  Type "apropos word" to search for commands related to "word".
  Command name abbreviations are allowed if unambiguous.
  (gdb)

gdb/ChangeLog
	* cli/cli-style.h (class cli_style_option): <add_setshow_commands>
	Remove arg prefixname, add do_set and do_show.
	Add member functions set_list and show_list.
	* cli/cli-style.c (class cli_style_option): Update accordingly.
	(style_set_list): Move to file scope.
	(style_show_list): Likewise.
	(set_style): Call help_list.
	(show_style): Call cmd_show_list.
	(_initialize_cli_style): New macro STYLE_ADD_SETSHOW_COMMANDS.
	Update to use the new macro.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: xtensa: fix register counters for xtensa-linux
@ 2019-01-13 21:50 sergiodj+buildbot
  2019-01-13 22:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-13 21:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1a782351162b1158484923493b567231d1aec7d2 ***

Author: Max Filippov <jcmvbkbc@gmail.com>
Branch: master
Commit: 1a782351162b1158484923493b567231d1aec7d2

gdb: xtensa: fix register counters for xtensa-linux

Commit 37d9e0623102 ("gdb: xtensa: handle privileged registers") changed
how the tdep->num_regs and tdep->num_pseudo_regs are calculated, but
didn't update these numbers in the gdbarch for the xtensa-linux target.
As a result xtensa-linux-gdb behaves as xtensa-elf-gdb and cannot
communicate with the linux gdbserver.
Fix tdep->num_pseudo_regs calculation and call set_gdbarch_num_regs and
set_gdbarch_num_pseudo_regs in xtensa_linux_init_abi.

gdb/
2019-01-13  Max Filippov  <jcmvbkbc@gmail.com>

	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Update
	tdep->num_pseudo_regs. Add calls to set_gdbarch_num_regs and
	set_gdbarch_num_pseudo_regs.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add support to GNU ld to separate got related plt entries from normal ones in order to be able to switch the non-plt got entries to read-only after startup, conforming to revised Linux for zSeries ABI.
@ 2019-01-14 16:15 sergiodj+buildbot
  2019-01-14 17:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-14 16:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5a12586d44fa8d5dfc74cbca4f2f36a273a16335 ***

Author: Maamoun Tarsha <maamountk@hotmail.com>
Branch: master
Commit: 5a12586d44fa8d5dfc74cbca4f2f36a273a16335

Add support to GNU ld to separate got related plt entries from normal ones in order to be able to switch the non-plt got entries to read-only after startup, conforming to revised Linux for zSeries ABI.

	PR 20133
	* emulparams/elf64_s390.sh (SEPARATE_GOTPLT): Define.
	* emulparams/elf_s390.sh (SEPARATE_GOTPLT): Define.
	* testsuite/ld-s390/gotreloc_31-1.dd: Update expected output.
	* testsuite/ld-s390/tlsbin.dd: Likewise.
	* testsuite/ld-s390/tlsbin.rd: Likewise.
	* testsuite/ld-s390/tlsbin.sd: Likewise.
	* testsuite/ld-s390/tlsbin_64.dd: Likewise.
	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
	* testsuite/ld-s390/tlsbin_64.sd: Likewise.
	* testsuite/ld-s390/tlspic.dd: Likewise.
	* testsuite/ld-s390/tlspic.rd: Likewise.
	* testsuite/ld-s390/tlspic.sd: Likewise.
	* testsuite/ld-s390/tlspic_64.dd: Likewise.
	* testsuite/ld-s390/tlspic_64.rd: Likewise.
	* testsuite/ld-s390/tlspic_64.sd: Likewise.
	* testsuite/ld-s390/s390.exp: Skip s390 tests for tpf targets.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PowerPC] Aliases for vector registers
@ 2019-01-14 21:11 sergiodj+buildbot
  2019-01-14 22:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-14 21:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6f072a103498fa9b7795782d9fdf1ae226f5565e ***

Author: Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
Branch: master
Commit: 6f072a103498fa9b7795782d9fdf1ae226f5565e

[PowerPC] Aliases for vector registers

This patch defines pseudo-registers "v0" through "v31" as aliases that
map to the corresponding raw "vr0" through "vr31" vector registers for
Power.

The motivation behind this is that although GDB defines these
registers as "vrX", the disassembler prints them as "vX", e.g. as the
operands in instructions such as "vaddubm v2,v1,v1".  This can be
confusing to users trying to print out the values of the operands
while inspecting the disassembled code.

The new aliases are made not to belong to any register group, to avoid
duplicated values in "info register vector" and "info register all".
The arch-specific rs6000_pseudo_register_reggroup_p function had
previously been removed since the other pseudo-registers could have
their groups inferred by their type.  It restored with this patch to
handle the aliases.  Membership for the other pseudo-registers is
still determined using the default function.

A new tests checks that GDB prints the expected values of vector
registers after they are filled by the inferior, by using both the raw
names and the aliases.  Two other existing tests are modified to also
test the aliases.

gdb/ChangeLog:
2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* ppc-tdep.h (struct gdbarch_tdep) <ppc_v0_alias_regnum>: New
	field.
	* rs6000-tdep.c: Include reggroups.h.
	(IS_V_ALIAS_PSEUDOREG): Define.
	(rs6000_register_name): Return names for the "vX" aliases.
	(rs6000_pseudo_register_type): Return type for the "vX" aliases.
	(rs6000_pseudo_register_reggroup_p): Restore.  Handle "vX"
	aliases.  Call default_register_reggroup_p for all other
	pseudo-registers.
	(v_alias_pseudo_register_read, v_alias_pseudo_register_write):
	New functions.
	(rs6000_pseudo_register_read, rs6000_pseudo_register_write):
	Handle "vX" aliases.
	(v_alias_pseudo_register_collect): New function.
	(rs6000_ax_pseudo_register_collect): Handle "vX" aliases.
	(rs6000_gdbarch_init): Initialize "vX" aliases as
	pseudo-registers.  Restore registration of
	rs6000_pseudo_register_reggroup_p with
	set_tdesc_pseudo_register_reggroup_p.

gdb/testsuite/ChangeLog:
2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* gdb.arch/vsx-regs.exp: Add tests that use the vector register
	aliases.
	* gdb.arch/altivec-regs.exp: Likewise.  Fix indentation of two
	tests.
	* gdb.arch/powerpc-vector-regs.c: New file.
	* gdb.arch/powerpc-vector-regs.exp: New file.

gdb/doc/ChangeLog:
2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* gdb.texinfo (PowerPC Features): Document the alias
	pseudo-registers for the org.gnu.gdb.power.altivec feature.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix placement of output in TUI mode
@ 2019-01-14 23:32 sergiodj+buildbot
  2019-01-15  0:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-14 23:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bbd94648f2115338bd94e9800ba0e37f09d98a79 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: bbd94648f2115338bd94e9800ba0e37f09d98a79

Fix placement of output in TUI mode

The fix for PR tui/28819 regressed gdb command output a bit.  In
"nonl" mode, pressing the Enter key will result in a newline not being
echoed properly, so that gdb output for the command will begin on the
same line as the input.

This patch changes gdb_wgetch to echo the newline.  I have only tested
this interactively, as the TUI doesn't have automated tests in
general.

gdb/ChangeLog
2019-01-14  Tom Tromey  <tom@tromey.com>

	PR tui/28819:
	* tui/tui-io.c (gdb_wgetch): Print \r when needed.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify target_pass_signals and target_program_signals
@ 2019-01-15  0:51 sergiodj+buildbot
  2019-01-15  2:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-15  0:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 491adecac48c5960fe29582f5046c015ff92c211 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 491adecac48c5960fe29582f5046c015ff92c211

Constify target_pass_signals and target_program_signals

This constifies the final parameter to target_pass_signals and
target_program_signals and updates the rest of gdb.

Note that I have no way to test the nto-procfs.c change.

gdb/ChangeLog
2019-01-14  Tom Tromey  <tom@tromey.com>

	* target-debug.h (target_debug_print_signals): Constify.
	* nto-procfs.c (nto_procfs_target::pass_signals): Update.
	* procfs.c (procfs_target::pass_signals): Update.
	* linux-nat.c (linux_nat_target::pass_signals): Update.
	* linux-nat.h (class linux_nat_target) <pass_signals>: Update.
	* target-delegates.c: Rebuild.
	* remote.c (remote_target::program_signals): Update.
	(remote_target::pass_signals): Update.
	* target.c (target_pass_signals): Constify argument.
	(target_program_signals): Likewise.
	* target.h (struct target_ops) <pass_signals, program_signals>:
	Constify argument.
	(target_pass_signals, target_program_signals): Constify argument.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify some remote-notif functions
@ 2019-01-15  1:15 sergiodj+buildbot
  2019-01-15  4:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-15  1:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bb27775165d9b992120371383012404e213b1981 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: bb27775165d9b992120371383012404e213b1981

Constify some remote-notif functions

This constifies the "buf" arguments to various remote-notif functions
and updates the users.

gdb/ChangeLog
2019-01-14  Tom Tromey  <tom@tromey.com>

	* remote-notif.c (handle_notification, remote_notif_ack)
	(remote_notif_parse): Make "buf" const.
	* remote-notif.h (struct notif_client) <parse, ack>: Make "buf"
	const.
	(remote_notif_parse, remote_notif_ack, handle_notification):
	Likewise.
	* remote.c (remote_notif_stop_parse): Make "buf" const.
	(remote_target::remote_parse_stop_reply): Make "buf" const.
	(remote_notif_stop_ack): Make "buf" const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanup from remote.c
@ 2019-01-15 23:03 sergiodj+buildbot
  2019-01-16  0:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-15 23:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8d64371b6b710831ddfd6a8636097396040476ee ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8d64371b6b710831ddfd6a8636097396040476ee

Remove cleanup from remote.c

This removes the remaining cleanup from remote.c, by changing
remote_state::buf to be a gdb::char_vector, and then fixing up all the
fallout.  The resulting patch is somewhat ugly, but on the other hand,
it eliminates some possibilities for mistakes.

Regression tested using the
Fedora-x86_64-native-extended-gdbserver-m64 builder on the buildbot.

gdb/ChangeLog
2019-01-15  Tom Tromey  <tom@tromey.com>

	* remote.c (class remote_state) <buf>: Now a char_vector.
	<buf_size>: Remove.
	(remote_target::getpkt): Change type of buf.  Remove sizeof_buf
	parameter.
	(remote_target::getpkt_or_notif_sane_1)
	(remote_target::getpkt_sane)
	(remote_target::getpkt_or_notif_sane): Likewise.
	(class remote_target) <putpkt>: New overload.
	(remote_target::read_frame): Change type of "buf_p".  Remove
	sizeof_p parameter.
	(packet_ok): New overload.
	(packet_check_result): New overload.
	Update all uses.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim: Fix definition of SIM_ARANGE_INLINE
@ 2019-01-15 23:04 sergiodj+buildbot
  2019-01-16  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-15 23:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dc7e818497f0af0a3ee569f6eee0ad74e19b4bc2 ***

Author: Simon Marchi <simon.marchi@ericsson.com>
Branch: master
Commit: dc7e818497f0af0a3ee569f6eee0ad74e19b4bc2

sim: Fix definition of SIM_ARANGE_INLINE

If HAVE_INLINE is false, SIM_ARANGE_INLINE is currently defined as

    #define SIM_ARANGE_INLINE EXTERN

However, EXTERN is not defined anywhere, leading to errors such as:

    In file included from
    /mipt-mips/simulator/../../sim/common/sim-basics.h:147:0,
                     from /mipt-mips/simulator/export/gdb/sim-main.h:13,
                     from /mipt-mips/simulator/export/gdb/gdb_interface.cpp:7:
    /mipt-mips/simulator/../../sim/common/sim-arange.h:71:27: error: EXTERN
    does not name a type; did you mean EUSERS?
     #define SIM_ARANGE_INLINE EXTERN
                               ^
    /mipt-mips/simulator/../../sim/common/sim-arange.h:76:1: note: in expansion
    of macro SIM_ARANGE_INLINE
     SIM_ARANGE_INLINE int
     ^~~~~~~~~~~~~~~~~

I (Simon) have reproduced the problem by simply removing the HAVE_INLINE
definition.  This was originally reported by Pavel I. Kryukov
<kryukov@frtk.ru>.

sim/common/ChangeLog:

	* sim-arange.h (SIM_ARANGE_INLINE): Change EXTERN to extern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: Emit RELOC_S12Z_OPR instead of RELOC_EXT24 where appropriate.
@ 2019-01-16 13:55 sergiodj+buildbot
  2019-01-16 15:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-16 13:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d5dcaf1b59e77047e10a1f246095d6b21f7d9772 ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: d5dcaf1b59e77047e10a1f246095d6b21f7d9772

S12Z: Emit RELOC_S12Z_OPR instead of RELOC_EXT24 where appropriate.

When assembling instructions which involve OPR references, emit
RELOC_S12Z_OPR instead of RELOC_EXT24.

bfd/
	* bfd-in2.h [BFD_RELOC_S12Z_OPR]: New reloc.
	* libbfd.h: regen.
	* elf32-s12z.c (eld_s12z_howto_table): R_S12Z_OPR takes non zero
	source field.  (md_apply_fix): Apply final fix
	to BFD_RELOC_S12Z_OPR.
	* reloc.c[BFD_RELOC_S12Z_OPR]: New reloc.

gas/
	* config/tc-s12z.c (emit_opr): Emit BFD_RELOC_S12Z_OPR instead of
	BFD_RELOC_24.
	* testsuite/gas/s12z/opr-indirect-expr.d: Expect R_S12Z_OPR instead
	of R_S12Z_EXT24.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Merge ELF attribute for ld.
@ 2019-01-16 21:51 sergiodj+buildbot
  2019-01-17  1:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-16 21:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7d7a7d7ccf6047cc5b480064e9eb9489542c0dd7 ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: 7d7a7d7ccf6047cc5b480064e9eb9489542c0dd7

RISC-V: Merge ELF attribute for ld.

	2019-01-16  Kito Cheng  <kito@andestech.com>
		    Nelson Chu  <nelson@andestech.com>

	bfd/
	* elfnn-riscv.c (in_subsets): New.
	(out_subsets): Likewise.
	(merged_subsets): Likewise.
	(riscv_std_ext_p): Likewise.
	(riscv_non_std_ext_p): Likewise.
	(riscv_std_sv_ext_p): Likewise.
	(riscv_non_std_sv_ext_p): Likewise.
	(riscv_version_mismatch): Likewise.
	(riscv_i_or_e_p): Likewise.
	(riscv_merge_std_ext): Likewise.
	(riscv_merge_non_std_and_sv_ext): Likewise.
	(riscv_merge_arch_attr_info): Likewise.
	(riscv_merge_attributes): Likewise.
	(_bfd_riscv_elf_merge_private_bfd_data): Merge attribute.
	ld/
	* testsuite/ld-elf/orphan-region.d: XFAIL for RISC-V, because add new
	section.
	* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Add new tests.
	* testsuite/ld-riscv-elf/attr-merge-arch-01.d: New test.
	* testsuite/ld-riscv-elf/attr-merge-arch-01a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-01b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-02a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-02b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-03a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-03b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align-a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align-b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed-a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed-b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-01a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-01b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-02a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-02b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-03a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-03b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-04a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-04b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-05a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-strict-align-05b.s: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace "the the" with "the"
@ 2019-01-17 17:38 sergiodj+buildbot
  2019-01-17 18:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-17 17:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6471e7d23de333a63a119220d59b920c6aaef562 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6471e7d23de333a63a119220d59b920c6aaef562

Replace "the the" with "the"

This replaces "the the" with "the" in various comments.

Tested by rebuilding.  This didn't test the solib-dsbt.c change, but
it looks harmless.

gdb/ChangeLog
2019-01-17  Tom Tromey  <tromey@bapiya>

	* valprint.c: Replace "the the" with "the".
	* symtab.c: Replace "the the" with "the".
	* solib.c: Replace "the the" with "the".
	* solib-dsbt.c: Replace "the the" with "the".
	* linespec.c: Replace "the the" with "the".
	* dwarf2loc.h: Replace "the the" with "the".
	* amd64-windows-tdep.c: Replace "the the" with "the".
	* aarch64-tdep.c: Replace "the the" with "the".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanups from solib-target.c
@ 2019-01-17 17:50 sergiodj+buildbot
  2019-01-17 20:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-17 17:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 776489e0a79a14cb3f1138d4e4158ab9a8c7ecf3 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 776489e0a79a14cb3f1138d4e4158ab9a8c7ecf3

Remove cleanups from solib-target.c

This removes the remaining cleanups from solib-target.c, plus a VEC,
by using std::vector and std::unique_ptr.

Tested by the buildbot.

gdb/ChangeLog
2019-01-17  Tom Tromey  <tom@tromey.com>

	* solib-target.c (lm_info_target_p): Remove typedef.  Don't
	declare VEC.
	(solib_target_parse_libraries): Change return type.
	(library_list_start_segment, library_list_start_section)
	(library_list_end_library, library_list_start_library); Update.
	(solib_target_free_library_list): Remove.
	(solib_target_parse_libraries): Remove cleanup.  Change return
	type.
	(solib_target_current_sos): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change all_objfiles adapter to be a method on program_space
@ 2019-01-17 23:38 sergiodj+buildbot
  2019-01-18  0:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-17 23:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2030c079717475f5b6fad837bb81758891f3b802 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 2030c079717475f5b6fad837bb81758891f3b802

Change all_objfiles adapter to be a method on program_space

This changes the all_objfiles range adapter to be a method on the
program space, and fixes up all the users.

gdb/ChangeLog
2019-01-17  Tom Tromey  <tom@tromey.com>

	* progspace.h (program_space) <objfiles_range>: New typedef.
	<objfiles>: New method.
	<objfiles_head>: Rename from objfiles.
	(object_files): Update.
	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Update.
	* guile/scm-pretty-print.c
	(ppscm_find_pretty_printer_from_objfiles): Update.
	* guile/scm-objfile.c (gdbscm_objfiles): Update.
	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers):
	Update.
	* python/py-progspace.c (pspy_get_objfiles): Update.
	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
	Update.
	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
	(objfpy_lookup_objfile_by_build_id): Update.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update.
	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
	Update.
	* symtab.c (iterate_over_symtabs, matching_obj_sections)
	(expand_symtab_containing_pc, lookup_objfile_from_block)
	(lookup_static_symbol, basic_lookup_transparent_type)
	(find_pc_sect_compunit_symtab, find_symbol_at_address)
	(find_line_symtab, info_sources_command)
	(default_collect_symbol_completion_matches_break_on)
	(make_source_files_completion_list, find_main_name): Update.
	* symmisc.c (print_symbol_bcache_statistics)
	(print_objfile_statistics, maintenance_print_symbols)
	(maintenance_print_msymbols, maintenance_print_objfiles)
	(maintenance_info_symtabs, maintenance_check_symtabs)
	(maintenance_expand_symtabs, maintenance_info_line_tables):
	Update.
	* symfile.c (remove_symbol_file_command, overlay_invalidate_all)
	(find_pc_overlay, find_pc_mapped_section, list_overlays_command)
	(map_overlay_command, unmap_overlay_command)
	(simple_overlay_update, expand_symtabs_matching)
	(map_symbol_filenames): Update.
	* symfile-debug.c (set_debug_symfile): Update.
	* spu-tdep.c (spu_overlay_update, spu_objfile_from_frame):
	Update.
	* source.c (select_source_symtab, forget_cached_source_info):
	Update.
	* solib.c (solib_read_symbols): Update.
	* solib-spu.c (append_ocl_sos): Update.
	* psymtab.c (maintenance_print_psymbols)
	(maintenance_info_psymtabs, maintenance_check_psymtabs): Update.
	* probe.c (parse_probes_in_pspace, find_probe_by_pc): Update.
	* printcmd.c (info_symbol_command): Update.
	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created):
	Update.
	* objfiles.h (class all_objfiles): Remove.
	* objfiles.c (have_partial_symbols, have_full_symbols)
	(have_minimal_symbols, qsort_cmp, update_section_map)
	(shared_objfile_contains_address_p)
	(default_iterate_over_objfiles_in_search_order): Update.
	* objc-lang.c (info_selectors_command, info_classes_command)
	(find_methods): Update.
	* minsyms.c (find_solib_trampoline_target): Update.
	* maint.c (maintenance_info_sections)
	(maintenance_translate_address, count_symtabs_and_blocks):
	Update.
	* main.c (captured_main_1): Update.
	* linux-thread-db.c (try_thread_db_load_from_pdir)
	(has_libpthread): Update.
	* linespec.c (iterate_over_all_matching_symtabs)
	(search_minsyms_for_name): Update.
	* jit.c (jit_find_objf_with_entry_addr): Update.
	* hppa-tdep.c (find_unwind_entry)
	(hppa_lookup_stub_minimal_symbol): Update.
	* gcore.c (gcore_create_callback, objfile_find_memory_regions):
	Update.
	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
	(elf_gnu_ifunc_resolve_by_got): Update.
	* dwarf2-frame.c (dwarf2_frame_find_fde): Update.
	* dwarf-index-write.c (save_gdb_index_command): Update.
	* cp-support.c (add_symbol_overload_list_qualified): Update.
	* breakpoint.c (create_overlay_event_breakpoint)
	(create_longjmp_master_breakpoint)
	(create_std_terminate_master_breakpoint)
	(create_exception_master_breakpoint): Update.
	* blockframe.c (find_pc_partial_function): Update.
	* ada-lang.c (ada_lookup_simple_minsym, add_nonlocal_symbols)
	(ada_collect_symbol_completion_matches)
	(ada_add_global_exceptions): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make psymtab range adapter a method on objfile
@ 2019-01-18  0:16 sergiodj+buildbot
  2019-01-18  5:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-18  0:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f252c6d5dc49cb27838e153e863f16ea7895859e ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: f252c6d5dc49cb27838e153e863f16ea7895859e

Make psymtab range adapter a method on objfile

This removes the objfile_psymtabs class in favor of a method on
objfile and on psymtab_storage.

2019-01-16  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile) <psymtabs>: New method.
	(class objfile_psymtabs): Remove.
	* psymtab.h (class psymtab_storage) <partial_symtab_range>: New
	typedef.
	<range>: New method.
	(require_partial_symbols): Change return type.
	* psymtab.c (require_partial_symbols)
	(psym_expand_symtabs_matching): Update.
	* mdebugread.c (parse_partial_symbols): Update.
	* dbxread.c (dbx_end_psymtab): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make minimal symbol range adapter a method on objfile
@ 2019-01-18  0:41 sergiodj+buildbot
  2019-01-18  7:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-18  0:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7932255de56fb99836b2e712e7dbcfdd5e1f1309 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7932255de56fb99836b2e712e7dbcfdd5e1f1309

Make minimal symbol range adapter a method on objfile

This removes class objfile_msymbols in favor of a method on the
objfile.

2019-01-16  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct minimal_symbol_iterator): Rename.  Move
	earlier.
	(struct objfile) <msymbols_range>: Move from top level.
	<msymbols>: New method.
	(class objfile_msymbols): Remove.
	* symtab.c (default_collect_symbol_completion_matches_break_on):
	Update.
	* symmisc.c (dump_msymbols): Update.
	* stabsread.c (scan_file_globals): Update.
	* objc-lang.c (info_selectors_command, info_classes_command)
	(find_methods): Update.
	* minsyms.c (find_solib_trampoline_target): Update.
	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
	* coffread.c (coff_symfile_read): Update.
	* ada-lang.c (ada_lookup_simple_minsym)
	(ada_collect_symbol_completion_matches): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change all_objfiles_safe adapter to be a method on program_space
@ 2019-01-18  1:13 sergiodj+buildbot
  2019-01-18  2:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-18  1:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7e955d83c4128ec773d84b92487ed1cdfed09938 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7e955d83c4128ec773d84b92487ed1cdfed09938

Change all_objfiles_safe adapter to be a method on program_space

This changes the all_objfiles_safe range adapter to be a method on the
program space, and fixes up all the users.

gdb/ChangeLog
2019-01-15  Tom Tromey  <tom@tromey.com>

	* progspace.h (program_space) <objfiles_safe_range>: New
	typedef.
	<objfiles_safe>: New method.
	* objfiles.h (class all_objfiles_safe): Remove.
	* objfiles.c (free_all_objfiles, objfile_purge_solibs): Update.
	* jit.c (jit_inferior_exit_hook): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify minsym iteration
@ 2019-01-18  5:48 sergiodj+buildbot
  2019-01-18  6:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-18  5:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 604b1bfb46e62d561698397cb5499b487eb0db34 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 604b1bfb46e62d561698397cb5499b487eb0db34

Simplify minsym iteration

This simplifies the minimal symbol iterator, by using
minimal_symbol_count and just doing a somewhat ordinary array-like
iteration.  array_view is nearly usable, except that it is more
convenient for this iterator to return pointers rather than
references.

gdb/ChangeLog
2019-01-16  Tom Tromey  <tom@tromey.com>

	* objfiles.h (class objfile_msymbols) <iterator>: Change argument
	type.  Remove no-argument constructor.
	<iterator::operator++>: Simplify.
	<begin>: Update.
	<end>: Use minimal_symbol_count.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add markers for 2.32 branch to NEWS and ChangeLog files.
@ 2019-01-19 16:11 sergiodj+buildbot
  2019-01-19 17:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-19 16:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f974f26cb16cc6fe3946f163c787a05e713fb77b ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: f974f26cb16cc6fe3946f163c787a05e713fb77b

Add markers for 2.32 branch to NEWS and ChangeLog files.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change version to 2.32.51 and regenerate configure and pot files.
@ 2019-01-19 17:08 sergiodj+buildbot
  2019-01-19 18:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-19 17:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f48dfe417e2ceb2251825336fe8769897a4d4b05 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: f48dfe417e2ceb2251825336fe8769897a4d4b05

Change version to 2.32.51 and regenerate configure and pot files.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Ensure stack protection is off for GCC
@ 2019-01-21 11:00 sergiodj+buildbot
  2019-01-21 12:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 11:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fc65c7dbe0607dfb1fc3d1019c46df73854cc896 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: fc65c7dbe0607dfb1fc3d1019c46df73854cc896

Testsuite: Ensure stack protection is off for GCC

Using -fstack-protector-strong will cause GDB to break on the wrong line
when placing a breakpoint on a function.  This is due to inadequate dwarf
line numbering, and is being tracked by the GCC bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88432

GCC (and Clang) provided by Debian/Ubuntu default to stack protector
being enabled.

Ensure that when running the GDB testsuite, stack protector is always
turned off for GCC 4.1.0 (when stack protector was added) and above.

Ensure that this does not cause infinite recursion due to
test_compiler_info having to compile a file itself.

Add a test to explicitly test breakpoints with various levels of stack
protection on both GCC and Clang, with xfail for the known errors.

Restore change in ovldbreak.exp which worked around the issue.

gdb/testsuite/ChangeLog:

2019-01-18  Alan Hayward  <alan.hayward@arm.com>

	* gdb.base/stack-protector.c: New test.
	* gdb.base/stack-protector.exp: New file.
	* gdb.cp/ovldbreak.exp: Only allow a single break line.
	* lib/gdb.exp (get_compiler_info): Use getting_compiler_info
	option.
	(gdb_compile): Remove stack protector for GCC and prevent
	recursion.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Updated translations for various binutils subdirectories.
@ 2019-01-21 13:15 sergiodj+buildbot
  2019-01-21 15:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 13:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 375cd4233dd1576d48acf93309125183e2c9ec9e ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 375cd4233dd1576d48acf93309125183e2c9ec9e

Updated translations for various binutils subdirectories.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64 AAPCS: Empty structs have non zero size in C++
@ 2019-01-21 16:18 sergiodj+buildbot
  2019-01-21 17:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 73021deb50855f31bb312241899a464c62155f6a ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 73021deb50855f31bb312241899a464c62155f6a

AArch64 AAPCS: Empty structs have non zero size in C++

When gdb.base/infcall-nested-structs.c is complied as C++, the compiler
will not pass structs containing empty structs via float arguments.
This is because structs in C++ have a minimum size of 1, causing padding
in the struct once compiled.  The AAPCS does not allow structs with
padding to be passed in float arguments.

Add padding checks to AArch64 and add C++ compile variant to the test.

Some of the tests fail on X86_64. This has been raised as bug gdb/24104.

gdb/ChangeLog:

	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
	for padding.

gdb/testsuite/ChangeLog:

	* gdb.base/infcall-nested-structs.exp: Test C++ in addition to C.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak in splay-tree
@ 2019-01-21 16:36 sergiodj+buildbot
  2019-01-21 18:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 16:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d7167c671da0323daf31a8e07945c57c25f858d2 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d7167c671da0323daf31a8e07945c57c25f858d2

Fix leak in splay-tree

Philippe Waroquiers noticed a memory leak in gdb, which he tracked
down to a bug in splay-tree.  splay_tree_remove does not call the
`delete_key' function when it removes the old node; but it should.

I looked at every splay tree in GCC and there is only one that passes
a non-NULL delete function -- the one in lto.c.  That file does not
call splay_tree_remove.  So, I think this is safe to check in.

I re-ran the LTO tests to double check.

libiberty/
	* splay-tree.c (splay_tree_remove): Delete the key if necessary.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove duplicate or commented-out #includes
@ 2019-01-21 18:41 sergiodj+buildbot
  2019-01-21 19:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 18:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT be6d4f74c77c6f521afc873d226480e001cb99c2 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: be6d4f74c77c6f521afc873d226480e001cb99c2

Remove duplicate or commented-out #includes

I wrote a little script to detect duplicate or commented-out #includes
and ran it on gdb.  This patch is the result.  Tested by rebuilding.

gdb/ChangeLog
2019-01-21  Tom Tromey  <tom@tromey.com>

	* ui-out.c: Fix includes.
	* tui/tui-source.c: Fix includes.
	* target.c: Fix includes.
	* remote.c: Fix includes.
	* regcache.c: Fix includes.
	* python/py-block.c: Fix includes.
	* printcmd.c: Fix includes.
	* or1k-tdep.c: Fix includes.
	* mi/mi-main.c: Fix includes.
	* m32r-tdep.c: Fix includes.
	* csky-tdep.c: Fix includes.
	* compile/compile-cplus-types.c: Fix includes.
	* cli/cli-interp.c: Fix includes.

gdb/gdbserver/ChangeLog
2019-01-21  Tom Tromey  <tom@tromey.com>

	* tracepoint.c: Fix includes.
	* remote-utils.c: Fix includes.
	* linux-x86-low.c: Fix includes.

gdb/stubs/ChangeLog
2019-01-21  Tom Tromey  <tom@tromey.com>

	* ia64vms-stub.c: Fix includes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak in event-top.c history expansion
@ 2019-01-21 20:44 sergiodj+buildbot
  2019-01-21 21:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-21 20:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b6fb1ee51c9a773d2d6044993af6c0fd7499638f ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: b6fb1ee51c9a773d2d6044993af6c0fd7499638f

Fix leak in event-top.c history expansion

E.g. in gdb.base/default.exp, valgrind detects leaks such as
==17663== 1,438 bytes in 101 blocks are definitely lost in loss record 2,804 of 2,884
==17663==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==17663==    by 0x418A17: xmalloc (common-utils.c:44)
==17663==    by 0x4E6F19C: history_expand (histexpand.c:1061)
==17663==    by 0x4B4490: handle_line_of_input(buffer*, char const*, int, char const*) (event-top.c:685)
==17663==    by 0x4B4562: command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) (event-top.c:753)
...

Fix the leak by using an unique_xmalloc_ptr for history_value.

gdb/ChangeLog
2019-01-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* event-top.c (handle_line_of_input): use unique_xmalloc_ptr for
	history_value.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove the EXTERN define from stabsread.h
@ 2019-01-22 23:15 sergiodj+buildbot
  2019-01-23  0:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-22 23:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d65d5705cd6e972067dfa7ccf1f9e0950c1538ff ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d65d5705cd6e972067dfa7ccf1f9e0950c1538ff

Remove the EXTERN define from stabsread.h

This removes the EXTERN define from stabsread.h.  This is the only
spot that still uses this approach, and it interfered with sorting the
includes in stabsread.c.

Tested by rebuilding.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* stabsread.c (EXTERN): Do not define.
	(symnum, next_symbol_text_func, processing_gcc_compilation)
	(within_function, global_sym_chain, global_stabs)
	(previous_stab_code, this_object_header_files)
	(n_this_object_header_files)
	(n_allocated_this_object_header_files): Define.
	* stabsread.h (EXTERN): Never define.  Use "extern".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use "struct bcache" in objfiles.h
@ 2019-01-23  4:29 sergiodj+buildbot
  2019-01-23  8:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23  4:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6b4d77743349028e471334da3d63df09cddfd820 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6b4d77743349028e471334da3d63df09cddfd820

Use "struct bcache" in objfiles.h

If objfiles.h is included after bcache.h, then the "bcache" function
will cause a compiler error because "bcache" will be seen as a
function, not a type.  Fix this error by using the "struct" keyword.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage): Use "struct"
	keyword for bcache.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Do not include py-ref.h in most files
@ 2019-01-23  4:41 sergiodj+buildbot
  2019-01-23  9:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23  4:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3fabc0163acbdffd9d77d7608604f737fc981399 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 3fabc0163acbdffd9d77d7608604f737fc981399

Do not include py-ref.h in most files

py-ref.h can really only be included from a specific spot in
python-internal.h.  The other includes are not useful, and cause
compilation errors if the includes are ever sorted.  So, remove these
includes.

Arguably, py-ref.h should simply not be a separate header.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* python/py-arch.c: Do not include py-ref.h.
	* python/py-bpevent.c: Do not include py-ref.h.
	* python/py-cmd.c: Do not include py-ref.h.
	* python/py-continueevent.c: Do not include py-ref.h.
	* python/py-event.h: Do not include py-ref.h.
	* python/py-evtregistry.c: Do not include py-ref.h.
	* python/py-finishbreakpoint.c: Do not include py-ref.h.
	* python/py-frame.c: Do not include py-ref.h.
	* python/py-framefilter.c: Do not include py-ref.h.
	* python/py-function.c: Do not include py-ref.h.
	* python/py-infevents.c: Do not include py-ref.h.
	* python/py-linetable.c: Do not include py-ref.h.
	* python/py-objfile.c: Do not include py-ref.h.
	* python/py-param.c: Do not include py-ref.h.
	* python/py-prettyprint.c: Do not include py-ref.h.
	* python/py-progspace.c: Do not include py-ref.h.
	* python/py-symbol.c: Do not include py-ref.h.
	* python/py-symtab.c: Do not include py-ref.h.
	* python/py-type.c: Do not include py-ref.h.
	* python/py-unwind.c: Do not include py-ref.h.
	* python/py-utils.c: Do not include py-ref.h.
	* python/py-value.c: Do not include py-ref.h.
	* python/py-varobj.c: Do not include py-ref.h.
	* python/py-xmethods.c: Do not include py-ref.h.
	* python/python.c: Do not include py-ref.h.
	* varobj.c: Do not include py-ref.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Declare remote_target in remote-fileio.h
@ 2019-01-23  4:51 sergiodj+buildbot
  2019-01-23 10:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23  4:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 37b3ab5b547de7e727c5426c6615ece0284168c7 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 37b3ab5b547de7e727c5426c6615ece0284168c7

Declare remote_target in remote-fileio.h

remote-fileio.h refers to remote_target, so forward-declare it.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* remote-fileio.h (struct remote_target): Declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Include gdb_curses.h in tui-wingeneral.h
@ 2019-01-23  5:14 sergiodj+buildbot
  2019-01-23 13:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23  5:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 93cc1d53f545e84c279c890c6309f3feddd39212 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 93cc1d53f545e84c279c890c6309f3feddd39212

Include gdb_curses.h in tui-wingeneral.h

tui-wingeneral.h uses WINDOW, which is defined by curses.  So, include
gdb_curses.h from tui-wingeneral.h.

2019-01-22  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.h: Include gdb_curses.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove a comment in compile/compile-cplus-types.c
@ 2019-01-23  5:55 sergiodj+buildbot
  2019-01-23  6:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23  5:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7af7e9b5d8f9dd8f994d59923158d24d77a54bbe ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7af7e9b5d8f9dd8f994d59923158d24d77a54bbe

Remove a comment in compile/compile-cplus-types.c

The include sorter can't handle multi-line comments on the same line
as a #include.  This patch removes the only such comment.

In general I think these sorts of comments do not provide much value:
more often than not, I find that the comment is obsolete in one way or
another, and so the include sorter removes them in most cases.

gdb/ChangeLog
2019-01-22  Tom Tromey  <tom@tromey.com>

	* compile/compile-cplus-types.c: Remove a comment by #include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Ensure lwp info is created zeroed
@ 2019-01-23 12:06 sergiodj+buildbot
  2019-01-23 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 12:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6594e122864119d7b1434599c22b112f98e178ca ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 6594e122864119d7b1434599c22b112f98e178ca

AArch64: Ensure lwp info is created zeroed

The code to not set empty hardware BPs/WPs on new threads will only work
if the newly allocated struct is empty.

Ensure the structure is created zeroed.

This patch removes the remaining racy behaviour on gdb.threads tests
when run on AArch64 Ubuntu.

gdb/ChangeLog:

	* nat/aarch64-linux.c (aarch64_linux_new_thread): Replace XNEW
	with XCNEW.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Updated translations for some of the binutils subdirectory.
@ 2019-01-23 16:32 sergiodj+buildbot
  2019-01-23 17:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 16:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d99386305c5420754e84b9e6073cb061922f4a27 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: d99386305c5420754e84b9e6073cb061922f4a27

Updated translations for some of the binutils subdirectory.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rename ESC -> ESC_PARENS
@ 2019-01-23 19:30 sergiodj+buildbot
  2019-01-23 21:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 19:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cf08fb29f8c484a34c4babb015348b220f80a33b ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: cf08fb29f8c484a34c4babb015348b220f80a33b

Rename ESC -> ESC_PARENS

A following patch will include common/preprocessor.h in some .c file
that also includes readline.h, and that revealed a conflict -- ESC is
defined by readline.h as well (actually readline's chardefs.h) with a
completely unrelated meaning:

 #define ESC CTRL('[')

Rename our version to avoid the conflict.

gdb/ChangeLog:
2019-01-23  Pedro Alves  <palves@redhat.com>

	* common/preprocessor.h (ESC): Rename to ...
	(ESC_PARENS): ... this.
	* common/valid-expr.h (CHECK_VALID_EXPR_1, CHECK_VALID_EXPR_2)
	(CHECK_VALID_EXPR_3, CHECK_VALID_EXPR_4): Adjust.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce scope_exit
@ 2019-01-23 19:40 sergiodj+buildbot
  2019-01-23 22:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 19:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 54b65c9b51ec80ef5812dde1a508ce171eeb8ce6 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 54b65c9b51ec80ef5812dde1a508ce171eeb8ce6

Introduce scope_exit

This add a new template class scope_exit.  scope_exit is a
general-purpose scope guard that calls its exit function at the end of
the current scope.  A scope_exit may be canceled by calling the
"release" method.  The API is modeled on P0052R5 - Generic Scope Guard
and RAII Wrapper for the Standard Library, which is itself based on
Andrej Alexandrescu's ScopeGuard/SCOPE_EXIT.

The main advantage of scope_exit is avoiding writing single-use RAII
classes and its boilerplate.  Following patches will remove a few of
such classes.

There are two forms available:

 - The "make_scope_exit" form allows canceling the scope guard.  Use
   it like this:

     auto cleanup = make_scope_exit ( <function, function object, lambda> );
     ...
     cleanup.release (); // cancel

 - If you don't need to cancel the guard, you can use the SCOPE_EXIT
   macro, like this:

     SCOPE_EXIT { /* any code you like here. */ }

Note: scope_exit instances do not allocate anything on the heap.

gdb/ChangeLog:
2019-01-23  Pedro Alves  <palves@redhat.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>
	    Tom Tromey  <tom@tromey.com>

	* common/scope-exit.h: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce forward_scope_exit
@ 2019-01-23 19:52 sergiodj+buildbot
  2019-01-23 23:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 19:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5b9b3e53a68f4568dc0b6907e34e763a6c3dd145 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 5b9b3e53a68f4568dc0b6907e34e763a6c3dd145

Introduce forward_scope_exit

This adds a template that can be used to automatically instantiate
scope_exit-like types that wrap some cleanup function.  The
instantiated type has a ctor that has the same interface as the
wrapped function.  While the "magic" is just straight C++11, the
intended use is via the FORWARD_SCOPE_EXIT macro, which is a minimal
macro that avoids spelling out the wrapped function name more than
once:

 void some_function (int foo, object *bar);
 using some_function_fce = FORWARD_SCOPE_EXIT (some_function);
 some_function_fce cleanup (some_int, some_obj_ptr);

The above runs:
  some_function (some_int, some_obj_ptr);
at scope exit.

This is mainly useful as opposed to a simpler SCOPE_EXIT when you need
to:
  - cancel the scope_exit, in which case you need the object's name
  - wrap the scope_exit in a gdb::optional, in which case you need the
    scope_exit's type in advance.

More details in the code comments.

gdb/ChangeLog:
2019-01-23  Pedro Alves  <palves@redhat.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>

	* common/forward-scope-exit.h: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use forward_scope_exit for scoped_finish_thread_state
@ 2019-01-23 20:03 sergiodj+buildbot
  2019-01-24  1:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 20:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 77f0e74cbe2ee7e874432776a0394a3d2a7a4342 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 77f0e74cbe2ee7e874432776a0394a3d2a7a4342

Use forward_scope_exit for scoped_finish_thread_state

This reimplements the manually-written scoped_finish_thread_state
class as a forward_scope_exit instantiation.  forward_scope_exit has
the same interface as scoped_finish_thread_state, so nothing else has
to change.

A forward_scope_exit is preferred over make_scope_exit here because
infrun.c:normal_stop needs to wrap scoped_finish_thread_state in a
gdb::optional.  Since we need the type there, might as well use it
everywhere.

gdb/ChangeLog:
2019-01-23  Pedro Alves  <palves@redhat.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>

	* gdbthread.h: Include "common/forward-scope-exit.h".
	(scoped_finish_thread_state): Redefine custom class in terms of
	forward_scope_exit.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace delete_longjmp_breakpoint_cleanup with a forward_scope_exit type
@ 2019-01-23 20:46 sergiodj+buildbot
  2019-01-24  3:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 20:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5419bdae559360a10044983b06c11a31de8d81f4 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5419bdae559360a10044983b06c11a31de8d81f4

Replace delete_longjmp_breakpoint_cleanup with a forward_scope_exit type

This removes delete_longjmp_breakpoint_cleanup in favor of forward_scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>
	    Pedro Alves  <palves@redhat.com>

	* breakpoint.c (until_break_command): Use
	delete_longjmp_breakpoint_cleanup class.
	* infcmd.c (delete_longjmp_breakpoint_cleanup): Remove function.
	(until_next_command): Use delete_longjmp_breakpoint_cleanup class.
	* inferior.h: Include forward-scope-exit.h.
	(delete_longjmp_breakpoint_cleanup): Replace function declaration
	with FORWARD_SCOPE_EXIT type.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove remaining cleanup from gdb/breakpoint.c
@ 2019-01-23 20:56 sergiodj+buildbot
  2019-01-24  5:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 20:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89f8fb50fa16b0ef510dcd6de9088cee9820116d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 89f8fb50fa16b0ef510dcd6de9088cee9820116d

Remove remaining cleanup from gdb/breakpoint.c

In v3: remove the "have BKPT_CHAIN already discarded" comment too.

The remaining null cleanup in breakpoint.c does not seem to protect
anything, so remove it.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* breakpoint.c (create_breakpoint): Remove cleanup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove make_bpstat_clear_actions_cleanup
@ 2019-01-23 21:21 sergiodj+buildbot
  2019-01-24  7:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 21:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 694c6bf5425024a8654a5541dec88e4dd6ddafb5 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 694c6bf5425024a8654a5541dec88e4dd6ddafb5

Remove make_bpstat_clear_actions_cleanup

This removes make_bpstat_clear_actions_cleanup, replacing it with uses
of scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>
	    Pedro Alves  <palves@redhat.com>

	* infrun.c (fetch_inferior_event): Use scope_exit.
	* utils.h (make_bpstat_clear_actions_cleanup): Don't declare.
	* top.c (execute_command): Use scope_exit.
	* breakpoint.c (bpstat_do_actions): Use scope_exit.
	* utils.c (do_bpstat_clear_actions_cleanup)
	(make_bpstat_clear_actions_cleanup): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanup_delete_std_terminate_breakpoint
@ 2019-01-23 21:33 sergiodj+buildbot
  2019-01-24  9:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 21:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2cc83d1e0eeaad9927553ee157f810e43d47d24f ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 2cc83d1e0eeaad9927553ee157f810e43d47d24f

Remove cleanup_delete_std_terminate_breakpoint

This removes cleanup_delete_std_terminate_breakpoint, replacing it
with a use of SCOPE_EXIT.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* infcall.c (cleanup_delete_std_terminate_breakpoint): Remove.
	(call_function_by_hand_dummy): Use SCOPE_EXIT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove clear_symtab_users_cleanup
@ 2019-01-23 21:56 sergiodj+buildbot
  2019-01-24 11:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 21:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 286526c1e5f6d54bf6ecc961d7c2d0a32b58fe45 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 286526c1e5f6d54bf6ecc961d7c2d0a32b58fe45

Remove clear_symtab_users_cleanup

This removes clear_symtab_users_cleanup, replacing it with uses of
forward_scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* symfile.c: Include forward-scope-exit.h.
	(clear_symtab_users_cleanup): Replace forward declaration with
	a FORWARD_SCOPE_EXIT.
	(syms_from_objfile_1): Use the forward_scope_exit and
	gdb::optional instead of cleanup_function.
	(reread_symbols): Use the forward_scope_exit instead of
	cleanup_function.
	(clear_symtab_users_cleanup): Remove function.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanup from stop_all_threads
@ 2019-01-23 22:28 sergiodj+buildbot
  2019-01-24 13:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 22:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9885e6bb5b0f6f0147f9b3a15a4bd4516faf4a26 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 9885e6bb5b0f6f0147f9b3a15a4bd4516faf4a26

Remove cleanup from stop_all_threads

This removes the cleanup from stop_all_threads, replacing it with a
scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* infrun.c (disable_thread_events): Delete.
	(stop_all_threads): Use SCOPE_EXIT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove remaining cleanup from fetch_inferior_event
@ 2019-01-23 22:39 sergiodj+buildbot
  2019-01-24 14:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 22:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d238133d0292926b937aaa6f83bf921dd0bbb01c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d238133d0292926b937aaa6f83bf921dd0bbb01c

Remove remaining cleanup from fetch_inferior_event

This removes the remaining cleanup from fetch_inferior_event,
replacing it with a SCOPE_EXIT.  This required introducing a new scope
and reindenting.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* infrun.c (reinstall_readline_callback_handler_cleanup): Remove
	parameter.
	(fetch_inferior_event): Use SCOPE_EXIT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update cleanup comment in ui-out.h
@ 2019-01-23 23:02 sergiodj+buildbot
  2019-01-24 16:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-23 23:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 296bd123f76d7f8474b5a2937a49fd619748a871 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 296bd123f76d7f8474b5a2937a49fd619748a871

Update cleanup comment in ui-out.h

ui-out.h refers to some cleanup functions that no longer exist.  This
updates the reference.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>

	* ui-out.h (class ui_out_emit_type): Update comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use SCOPE_EXIT in gdbarch-selftest.c
@ 2019-01-24  1:46 sergiodj+buildbot
  2019-01-24  2:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-24  1:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e587ef421eb7e009c6a69da55c269e9df45093e4 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: e587ef421eb7e009c6a69da55c269e9df45093e4

Use SCOPE_EXIT in gdbarch-selftest.c

Replace the custom local class with a SCOPE_EXIT.

gdb/ChangeLog:
2019-01-23  Pedro Alves  <palves@redhat.com>

	* gdbarch-selftests.c (struct on_exit): Use SCOPE_EXIT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove delete_just_stopped_threads_infrun_breakpoints_cleanup
@ 2019-01-24  5:44 sergiodj+buildbot
  2019-01-24  6:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-24  5:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4c41382ac101f10071f92074bab7c33242ef5b15 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 4c41382ac101f10071f92074bab7c33242ef5b15

Remove delete_just_stopped_threads_infrun_breakpoints_cleanup

v3: sorted earlier in the series, and replaces the cleanup in
fetch_inferior_event here too instead of in some other patch.

This removes delete_just_stopped_threads_infrun_breakpoints_cleanup,
replacing it with uses of scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* infrun.c: Include "common/scope-exit.h"
	(delete_just_stopped_threads_infrun_breakpoints_cleanup): Remove.
	(wait_for_inferior): Use SCOPE_EXIT.
	(fetch_inferior_event): Use scope_exit.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64 AAPCS: Ignore static members
@ 2019-01-24  8:41 sergiodj+buildbot
  2019-01-24 19:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-24  8:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 353229bf405113e6ba2fe21f2a691bc63aa94bd8 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 353229bf405113e6ba2fe21f2a691bc63aa94bd8

AArch64 AAPCS: Ignore static members

Static members in C++ structs are global data and therefore not part of the
list of struct members considered for passing in registers.

Note the corresponding code in GCC (from which the GDB AAPCS code is based)
does not have any static member checks due to the static members not being
part of the struct type at that point.

Extend gdb.base/infcall-nested-structs.exp to test structs with static
members when compiled for C++.  XFAIL more cases for x86_64 (see gdb/24104).
For completeness, ensure some test cases have both empty structures and
static members.

Also fixes gdb.dwarf2/dw2-cp-infcall-ref-static.exp.

gdb/ChangeLog:

	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
	for static members.
	(pass_in_v_vfp_candidate): Likewise.

gdb/testsuite/ChangeLog:

	* gdb.base/infcall-nested-structs.c (struct struct_static_02_01):
	New structure.
	(struct struct_static_02_02): Likewise.
	(struct struct_static_02_03): Likewise.
	(struct struct_static_02_04): Likewise.
	(struct struct_static_04_01): Likewise.
	(struct struct_static_04_02): Likewise.
	(struct struct_static_04_03): Likewise.
	(struct struct_static_04_04): Likewise.
	(struct struct_static_06_01): Likewise.
	(struct struct_static_06_02): Likewise.
	(struct struct_static_06_03): Likewise.
	(struct struct_static_06_04): Likewise.
	(cmp_struct_static_02_01): Likewise.
	(cmp_struct_static_02_02): Likewise.
	(cmp_struct_static_02_03): Likewise.
	(cmp_struct_static_02_04): Likewise.
	(cmp_struct_static_04_01): Likewise.
	(cmp_struct_static_04_02): Likewise.
	(cmp_struct_static_04_03): Likewise.
	(cmp_struct_static_04_04): Likewise.
	(cmp_struct_static_06_01): Likewise.
	(cmp_struct_static_06_02): Likewise.
	(cmp_struct_static_06_03): Likewise.
	(cmp_struct_static_06_04): Likewise.
	(call_all): Test new structs.
	* gdb.base/infcall-nested-structs.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use scope_exit in regcache.c
@ 2019-01-24 18:19 sergiodj+buildbot
  2019-01-24 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-24 18:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 311dc83a411c83d61cd6cb931289761574ea3ecc ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 311dc83a411c83d61cd6cb931289761574ea3ecc

Use scope_exit in regcache.c

This removes the regcache_invalidator class in favor of a scope_exit.
This seems like an improvement (albeit a minor one) because
regcache_invalidator is only used in a single spot.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* regcache.c (class regcache_invalidator): Remove.
	(regcache::raw_write): Use make_scope_exit.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix clang/libc++ build
@ 2019-01-24 18:21 sergiodj+buildbot
  2019-01-24 20:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-24 18:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3046d67a0e29686ec18abd719660969c97973063 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 3046d67a0e29686ec18abd719660969c97973063

Fix clang/libc++ build

This fixes the following build error with clang/libc++, reported at
<https://sourceware.org/ml/gdb-patches/2019-01/msg00537.html>:

  (...)
  In file included from breakpoint.c:34:
  In file included from ./inferior.h:54:
  ./common/forward-scope-exit.h:98:7: error: no matching constructor for
  initialization of 'decltype(std::bind(&delete_longjmp_breakpoint,
  std::declval<int>()))' (aka '__bind<void (*)(int), int>')
      : m_bind_function (std::bind (function, args...))
	^                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ./common/gdb_optional.h:155:19: note: in instantiation of member
  function 'detail::forward_scope_exit<void (int),
  &delete_longjmp_breakpoint, void (int)>::forward_scope_exit' requested
  here
      new (&m_item) T (std::forward<Args>(args)...);
		    ^
  breakpoint.c:11127:18: note: in instantiation of function template
  specialization 'gdb::optional<detail::forward_scope_exit<void (int),
  &delete_longjmp_breakpoint, void (int)> >::emplace<int &>' requested
  here
	lj_deleter.emplace (thread);
		   ^
  /Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2220:7:
  note: candidate constructor (the implicit copy constructor) not
  viable: no known conversion from '__bind<[...], int &>' to 'const
  __bind<[...], int>' for 1st argument
  class __bind
	^
  (...)

I don't really know why I ended up with a copy here.  We can just pass
the arguments directly to the being-constructed bind.

gdb/ChangeLog:
2019-01-24  Pedro Alves  <palves@redhat.com>

	* common/forward-scope-exit.h
	(forward_scope_exit::forward_scope_exit): Pass arguments to
	m_bind_function directly, instead of creating a std::bind and
	copying that.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Updated Bulgarian and Russian translations for some of the binutils sub-directories
@ 2019-01-25 13:09 sergiodj+buildbot
  2019-01-25 13:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-25 13:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9ed1348c2008f54368f0fd989a0bf2de8b93329a ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 9ed1348c2008f54368f0fd989a0bf2de8b93329a

Updated Bulgarian and Russian translations for some of the binutils sub-directories


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Update encodings for stg, st2g, stzg and st2zg.
@ 2019-01-25 15:56 sergiodj+buildbot
  2019-01-25 19:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-25 15:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 69105ce4c42e5644ab92cb9b2765ff5ce6bf7b1b ***

Author: Sudi Das <sudi.das@arm.com>
Branch: master
Commit: 69105ce4c42e5644ab92cb9b2765ff5ce6bf7b1b

AArch64: Update encodings for stg, st2g, stzg and st2zg.

This patch is part of a series of patches to introduce a few changes to the
Armv8.5-A Memory Tagging Extension. This patch updates the st*g instructions
to use a previously reserved field for a new register operand. Thus the
new versions of the instructions are as follows:

- STG Xt, [<Xn|SP>, #<simm>]
- STG Xt, [<Xn|SP>, #<simm>]!
- STG Xt, [<Xn|SP>], #<simm>
- STZG Xt, [<Xn|SP>, #<simm>]
- STZG Xt, [<Xn|SP>, #<simm>]!
- STZG Xt, [<Xn|SP>], #<simm>
- ST2G Xt, [<Xn|SP>, #<simm>]
- ST2G Xt, [<Xn|SP>, #<simm>]!
- ST2G Xt, [<Xn|SP>], #<simm>
- STZ2G Xt, [<Xn|SP>, #<simm>]
- STZ2G Xt, [<Xn|SP>, #<simm>]!
- STZ2G Xt, [<Xn|SP>], #<simm>

Committed on behalf of Sudakshina Das.

*** gas/ChangeLog ***

	* config/tc-aarch64.c (warn_unpredictable_ldst): Exempt
	stg, st2g, stzg and stz2g from Xt == Xn with writeback warning.
	* testsuite/gas/aarch64/armv8_5-a-memtag.d: Change tests for
	stg, stzg, st2g and stz2g.
	* testsuite/gas/aarch64/armv8_5-a-memtag.s: Likewise.
	* testsuite/gas/aarch64/illegal-memtag.l: Likewise.
	* testsuite/gas/aarch64/illegal-memtag.s: Likewise.

*** opcodes/ChangeLog ***

	* aarch64-tbl.h (QL_LDST_AT): Update macro.
	(aarch64_opcode): Change encoding for stg, stzg
	st2g and st2zg.
	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't use -I for common subdirectory
@ 2019-01-25 23:18 sergiodj+buildbot
  2019-01-26  2:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-25 23:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0707f3c36cab402cd4c3235bedd2b5f7b4c6aed ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: a0707f3c36cab402cd4c3235bedd2b5f7b4c6aed

Don't use -I for common subdirectory

This changes the Makefiles to remove the -I for the common/
subdirectory.  This will enforce the rule that includes must use the
'common/filename.h' form.

gdb/ChangeLog
2019-01-25  Tom Tromey  <tom@tromey.com>

	* Makefile.in (GDB_CFLAGS): Don't add -I for common.

gdb/gdbserver/ChangeLog
2019-01-25  Tom Tromey  <tom@tromey.com>

	* Makefile.in (INCLUDE_CFLAGS): Don't add -I for common.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update create-version.sh to use common/version.h
@ 2019-01-25 23:52 sergiodj+buildbot
  2019-01-26  0:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-25 23:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2f5c153e0ce1b0d3aa0c12724cbc8c3b11d4095f ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 2f5c153e0ce1b0d3aa0c12724cbc8c3b11d4095f

Update create-version.sh to use common/version.h

This changes create-version.sh to have the generated file use
common/version.h as the file name.

gdb/ChangeLog
2019-01-25  Tom Tromey  <tom@tromey.com>

	* common/create-version.sh: Use common/version.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Normalize includes to use common/
@ 2019-01-26  1:11 sergiodj+buildbot
  2019-01-26  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-26  1:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0747795c085d3b2a35da6bb474f32c58ce1b70c8 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 0747795c085d3b2a35da6bb474f32c58ce1b70c8

Normalize includes to use common/

This changes all includes to use the form "common/filename.h" rather
than just "filename.h".  This was written by a script.

gdb/ChangeLog
2019-01-25  Tom Tromey  <tom@tromey.com>

	* xtensa-linux-nat.c: Fix common/ includes.
	* xml-support.h: Fix common/ includes.
	* xml-support.c: Fix common/ includes.
	* x86-linux-nat.c: Fix common/ includes.
	* windows-nat.c: Fix common/ includes.
	* varobj.h: Fix common/ includes.
	* varobj.c: Fix common/ includes.
	* value.c: Fix common/ includes.
	* valops.c: Fix common/ includes.
	* utils.c: Fix common/ includes.
	* unittests/xml-utils-selftests.c: Fix common/ includes.
	* unittests/utils-selftests.c: Fix common/ includes.
	* unittests/unpack-selftests.c: Fix common/ includes.
	* unittests/tracepoint-selftests.c: Fix common/ includes.
	* unittests/style-selftests.c: Fix common/ includes.
	* unittests/string_view-selftests.c: Fix common/ includes.
	* unittests/scoped_restore-selftests.c: Fix common/ includes.
	* unittests/scoped_mmap-selftests.c: Fix common/ includes.
	* unittests/scoped_fd-selftests.c: Fix common/ includes.
	* unittests/rsp-low-selftests.c: Fix common/ includes.
	* unittests/parse-connection-spec-selftests.c: Fix common/
	includes.
	* unittests/optional-selftests.c: Fix common/ includes.
	* unittests/offset-type-selftests.c: Fix common/ includes.
	* unittests/observable-selftests.c: Fix common/ includes.
	* unittests/mkdir-recursive-selftests.c: Fix common/ includes.
	* unittests/memrange-selftests.c: Fix common/ includes.
	* unittests/memory-map-selftests.c: Fix common/ includes.
	* unittests/lookup_name_info-selftests.c: Fix common/ includes.
	* unittests/function-view-selftests.c: Fix common/ includes.
	* unittests/environ-selftests.c: Fix common/ includes.
	* unittests/copy_bitwise-selftests.c: Fix common/ includes.
	* unittests/common-utils-selftests.c: Fix common/ includes.
	* unittests/cli-utils-selftests.c: Fix common/ includes.
	* unittests/array-view-selftests.c: Fix common/ includes.
	* ui-file.c: Fix common/ includes.
	* tui/tui-io.c: Fix common/ includes.
	* tracepoint.h: Fix common/ includes.
	* tracepoint.c: Fix common/ includes.
	* tracefile-tfile.c: Fix common/ includes.
	* top.h: Fix common/ includes.
	* top.c: Fix common/ includes.
	* thread.c: Fix common/ includes.
	* target/waitstatus.h: Fix common/ includes.
	* target/waitstatus.c: Fix common/ includes.
	* target.h: Fix common/ includes.
	* target.c: Fix common/ includes.
	* target-memory.c: Fix common/ includes.
	* target-descriptions.c: Fix common/ includes.
	* symtab.h: Fix common/ includes.
	* symfile.c: Fix common/ includes.
	* stap-probe.c: Fix common/ includes.
	* spu-linux-nat.c: Fix common/ includes.
	* sparc-nat.c: Fix common/ includes.
	* source.c: Fix common/ includes.
	* solib.c: Fix common/ includes.
	* solib-target.c: Fix common/ includes.
	* ser-unix.c: Fix common/ includes.
	* ser-tcp.c: Fix common/ includes.
	* ser-pipe.c: Fix common/ includes.
	* ser-base.c: Fix common/ includes.
	* selftest-arch.c: Fix common/ includes.
	* s12z-tdep.c: Fix common/ includes.
	* rust-exp.y: Fix common/ includes.
	* rs6000-aix-tdep.c: Fix common/ includes.
	* riscv-tdep.c: Fix common/ includes.
	* remote.c: Fix common/ includes.
	* remote-notif.h: Fix common/ includes.
	* remote-fileio.h: Fix common/ includes.
	* remote-fileio.c: Fix common/ includes.
	* regcache.h: Fix common/ includes.
	* regcache.c: Fix common/ includes.
	* record-btrace.c: Fix common/ includes.
	* python/python.c: Fix common/ includes.
	* python/py-type.c: Fix common/ includes.
	* python/py-inferior.c: Fix common/ includes.
	* progspace.h: Fix common/ includes.
	* producer.c: Fix common/ includes.
	* procfs.c: Fix common/ includes.
	* proc-api.c: Fix common/ includes.
	* printcmd.c: Fix common/ includes.
	* ppc-linux-nat.c: Fix common/ includes.
	* parser-defs.h: Fix common/ includes.
	* osdata.c: Fix common/ includes.
	* obsd-nat.c: Fix common/ includes.
	* nat/x86-linux.c: Fix common/ includes.
	* nat/x86-linux-dregs.c: Fix common/ includes.
	* nat/x86-dregs.h: Fix common/ includes.
	* nat/x86-dregs.c: Fix common/ includes.
	* nat/ppc-linux.c: Fix common/ includes.
	* nat/mips-linux-watch.h: Fix common/ includes.
	* nat/mips-linux-watch.c: Fix common/ includes.
	* nat/linux-waitpid.c: Fix common/ includes.
	* nat/linux-ptrace.h: Fix common/ includes.
	* nat/linux-ptrace.c: Fix common/ includes.
	* nat/linux-procfs.c: Fix common/ includes.
	* nat/linux-personality.c: Fix common/ includes.
	* nat/linux-osdata.c: Fix common/ includes.
	* nat/linux-namespaces.c: Fix common/ includes.
	* nat/linux-btrace.h: Fix common/ includes.
	* nat/linux-btrace.c: Fix common/ includes.
	* nat/fork-inferior.c: Fix common/ includes.
	* nat/amd64-linux-siginfo.c: Fix common/ includes.
	* nat/aarch64-sve-linux-ptrace.c: Fix common/ includes.
	* nat/aarch64-linux.c: Fix common/ includes.
	* nat/aarch64-linux-hw-point.h: Fix common/ includes.
	* nat/aarch64-linux-hw-point.c: Fix common/ includes.
	* namespace.h: Fix common/ includes.
	* mips-linux-tdep.c: Fix common/ includes.
	* minsyms.c: Fix common/ includes.
	* mi/mi-parse.h: Fix common/ includes.
	* mi/mi-main.c: Fix common/ includes.
	* mi/mi-cmd-env.c: Fix common/ includes.
	* memrange.h: Fix common/ includes.
	* memattr.c: Fix common/ includes.
	* maint.h: Fix common/ includes.
	* maint.c: Fix common/ includes.
	* main.c: Fix common/ includes.
	* machoread.c: Fix common/ includes.
	* location.c: Fix common/ includes.
	* linux-thread-db.c: Fix common/ includes.
	* linux-nat.c: Fix common/ includes.
	* linux-fork.c: Fix common/ includes.
	* inline-frame.c: Fix common/ includes.
	* infrun.c: Fix common/ includes.
	* inflow.c: Fix common/ includes.
	* inferior.h: Fix common/ includes.
	* inferior.c: Fix common/ includes.
	* infcmd.c: Fix common/ includes.
	* inf-ptrace.c: Fix common/ includes.
	* inf-child.c: Fix common/ includes.
	* ia64-linux-nat.c: Fix common/ includes.
	* i387-tdep.c: Fix common/ includes.
	* i386-tdep.c: Fix common/ includes.
	* i386-linux-tdep.c: Fix common/ includes.
	* i386-linux-nat.c: Fix common/ includes.
	* i386-go32-tdep.c: Fix common/ includes.
	* i386-fbsd-tdep.c: Fix common/ includes.
	* i386-fbsd-nat.c: Fix common/ includes.
	* guile/scm-type.c: Fix common/ includes.
	* guile/guile.c: Fix common/ includes.
	* go32-nat.c: Fix common/ includes.
	* gnu-nat.c: Fix common/ includes.
	* gdbthread.h: Fix common/ includes.
	* gdbarch-selftests.c: Fix common/ includes.
	* gdb_usleep.c: Fix common/ includes.
	* gdb_select.h: Fix common/ includes.
	* gdb_bfd.c: Fix common/ includes.
	* gcore.c: Fix common/ includes.
	* fork-child.c: Fix common/ includes.
	* findvar.c: Fix common/ includes.
	* fbsd-nat.c: Fix common/ includes.
	* event-top.c: Fix common/ includes.
	* event-loop.c: Fix common/ includes.
	* dwarf2read.c: Fix common/ includes.
	* dwarf2loc.c: Fix common/ includes.
	* dwarf2-frame.c: Fix common/ includes.
	* dwarf-index-cache.c: Fix common/ includes.
	* dtrace-probe.c: Fix common/ includes.
	* disasm-selftests.c: Fix common/ includes.
	* defs.h: Fix common/ includes.
	* csky-tdep.c: Fix common/ includes.
	* cp-valprint.c: Fix common/ includes.
	* cp-support.h: Fix common/ includes.
	* cp-support.c: Fix common/ includes.
	* corelow.c: Fix common/ includes.
	* completer.h: Fix common/ includes.
	* completer.c: Fix common/ includes.
	* compile/compile.c: Fix common/ includes.
	* compile/compile-loc2c.c: Fix common/ includes.
	* compile/compile-cplus-types.c: Fix common/ includes.
	* compile/compile-cplus-symbols.c: Fix common/ includes.
	* command.h: Fix common/ includes.
	* cli/cli-dump.c: Fix common/ includes.
	* cli/cli-cmds.c: Fix common/ includes.
	* charset.c: Fix common/ includes.
	* build-id.c: Fix common/ includes.
	* btrace.h: Fix common/ includes.
	* btrace.c: Fix common/ includes.
	* breakpoint.h: Fix common/ includes.
	* breakpoint.c: Fix common/ includes.
	* ax.h:
	(enum agent_op): Fix common/ includes.
	* ax-general.c (struct aop_map): Fix common/ includes.
	* ax-gdb.c: Fix common/ includes.
	* auxv.c: Fix common/ includes.
	* auto-load.c: Fix common/ includes.
	* arm-tdep.c: Fix common/ includes.
	* arch/riscv.c: Fix common/ includes.
	* arch/ppc-linux-common.c: Fix common/ includes.
	* arch/i386.c: Fix common/ includes.
	* arch/arm.c: Fix common/ includes.
	* arch/arm-linux.c: Fix common/ includes.
	* arch/arm-get-next-pcs.c: Fix common/ includes.
	* arch/amd64.c: Fix common/ includes.
	* arch/aarch64.c: Fix common/ includes.
	* arch/aarch64-insn.c: Fix common/ includes.
	* arch-utils.c: Fix common/ includes.
	* amd64-windows-tdep.c: Fix common/ includes.
	* amd64-tdep.c: Fix common/ includes.
	* amd64-sol2-tdep.c: Fix common/ includes.
	* amd64-obsd-tdep.c: Fix common/ includes.
	* amd64-nbsd-tdep.c: Fix common/ includes.
	* amd64-linux-tdep.c: Fix common/ includes.
	* amd64-linux-nat.c: Fix common/ includes.
	* amd64-fbsd-tdep.c: Fix common/ includes.
	* amd64-fbsd-nat.c: Fix common/ includes.
	* amd64-dicos-tdep.c: Fix common/ includes.
	* amd64-darwin-tdep.c: Fix common/ includes.
	* agent.c: Fix common/ includes.
	* ada-lang.h: Fix common/ includes.
	* ada-lang.c: Fix common/ includes.
	* aarch64-tdep.c: Fix common/ includes.

gdb/gdbserver/ChangeLog
2019-01-25  Tom Tromey  <tom@tromey.com>

	* win32-low.c: Fix common/ includes.
	* win32-i386-low.c: Fix common/ includes.
	* tracepoint.c: Fix common/ includes.
	* thread-db.c: Fix common/ includes.
	* target.h: Fix common/ includes.
	* symbol.c: Fix common/ includes.
	* spu-low.c: Fix common/ includes.
	* server.h: Fix common/ includes.
	* server.c: Fix common/ includes.
	* remote-utils.c: Fix common/ includes.
	* regcache.h: Fix common/ includes.
	* regcache.c: Fix common/ includes.
	* nto-x86-low.c: Fix common/ includes.
	* notif.h: Fix common/ includes.
	* mem-break.h: Fix common/ includes.
	* lynx-low.c: Fix common/ includes.
	* lynx-i386-low.c: Fix common/ includes.
	* linux-x86-tdesc-selftest.c: Fix common/ includes.
	* linux-x86-low.c: Fix common/ includes.
	* linux-low.c: Fix common/ includes.
	* inferiors.h: Fix common/ includes.
	* i387-fp.c: Fix common/ includes.
	* hostio.c: Fix common/ includes.
	* hostio-errno.c: Fix common/ includes.
	* gdbthread.h: Fix common/ includes.
	* gdbreplay.c: Fix common/ includes.
	* fork-child.c: Fix common/ includes.
	* event-loop.c: Fix common/ includes.
	* ax.c:
	(enum gdb_agent_op): Fix common/ includes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix the sim build
@ 2019-01-26 16:23 sergiodj+buildbot
  2019-01-26 17:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-26 16:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 67f8b42f3e65ede1915f2dc4e2ca46ddeb57c508 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 67f8b42f3e65ede1915f2dc4e2ca46ddeb57c508

Fix the sim build

Simon pointed out that the "common/" include change in gdb broke the
sim build.  The problem was that the sim was using gdb's
create-version.sh, which changed.

This patch copies create-version.sh to the sim, so that it can
generate "version.c" in a way that works in the sim build.

Tested by rebuilding.

sim/common/ChangeLog
2019-01-26  Tom Tromey  <tom@tromey.com>

	* Make-common.in (version.c): Use sim's create-version.sh.
	* create-version.sh: New file.

sim/ppc/ChangeLog
2019-01-26  Tom Tromey  <tom@tromey.com>

	* Makefile.in (version.c): Use sim's create-version.sh.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove duplicate skip_python_tests invocation
@ 2019-01-27 22:08 sergiodj+buildbot
  2019-01-27 23:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-27 22:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1dbc40b9d70b95717abb0db6865a12ebd7d91b06 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1dbc40b9d70b95717abb0db6865a12ebd7d91b06

Remove duplicate skip_python_tests invocation

I noticed that py-finish-breakpoint.exp had two calls to
skip_python_tests, in quick succession.  This patch removes the second
one.

gdb/testsuite/ChangeLog
2019-01-27  Tom Tromey  <tom@tromey.com>

	* gdb.python/py-finish-breakpoint.exp: Remove duplicate call to
	skip_python_tests.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: When attaching, add process before lwps
@ 2019-01-28 10:30 sergiodj+buildbot
  2019-01-28 11:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-28 10:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f084d335110408aa08ea06c7cb217ae19697db3d ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: f084d335110408aa08ea06c7cb217ae19697db3d

gdbserver: When attaching, add process before lwps

The recent BP/WP changes for AArch64 swapping the order in add_lwp()
so that the process was added before the lwp. This was due to the lwp
creation requiring the process data.

This also needs changing in linux_attach().

Fixes gdb.server/ext-attach.exp on Aarch64.

(This regression was hidden due to the racy nature of the gdb.server
tests - now they are no longer racy it'll be easier to spot. Also
checked X86).

gdb/gdbserver/ChangeLog:

2019-01-25  Alan Hayward  <alan.hayward@arm.com>

	* linux-low.c (linux_attach): Add process before lwp.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace contribution list in CONTRIBUTE file with link
@ 2019-01-28 10:30 sergiodj+buildbot
  2019-01-28 12:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-28 10:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 36c25ffa1ab5d6d5ee0fa3fc32f128a58e78e7a2 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 36c25ffa1ab5d6d5ee0fa3fc32f128a58e78e7a2

Replace contribution list in CONTRIBUTE file with link

The GDB wiki page has a much better contribution checklist than
that in the GDB CONTRIBUTE file.  In addition, the wiki is easier
to keep up to date with current processes.

Reduce the CONTRIBUTE file down to a short paragraph followed by
a link to the contribution process.  This also ensures anyone
reading the CONTRIBUTE file for a given release has access to the
latest processes.

gdb/ChangeLog:

	* CONTRIBUTE: Replace contribution list with wiki link.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix GCC9 warning on elf32-arm.c:elf32_arm_final_link_relocate
@ 2019-01-28 16:17 sergiodj+buildbot
  2019-01-28 17:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-28 16:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 453f8e1e4918171bc12e4d03aab7ee8360dfcfef ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: 453f8e1e4918171bc12e4d03aab7ee8360dfcfef

Fix GCC9 warning on elf32-arm.c:elf32_arm_final_link_relocate

Fedora Rawhide has just switched to GCC9, and now GDB doesn't compile
because of a BFD warning:

  BUILDSTDERR: ../../bfd/elf32-arm.c: In function 'elf32_arm_final_link_relocate':
  BUILDSTDERR: ../../bfd/elf32-arm.c:10907:10: error: absolute value function 'labs' given an argument of type 'bfd_signed_vma' {aka 'long long int'} but has parameter of type 'long int' which may cause truncation of value [-Werror=absolute-value]
  BUILDSTDERR: 10907 |  value = labs (relocation);
  BUILDSTDERR:       |          ^~~~

You can take a look at the full build log here:

  https://kojipkgs.fedoraproject.org//work/tasks/4828/32174828/build.log

The fix is (apparently) simple: instead of using 'labs', we should use
'llabs', since we're passing a 'bfd_signed_vma' to it, which is at
least a 'long long int', as far as I have checked.  This is what this
patch does.

bfd/ChangeLog:
2019-01-25  Sergio Durigan Junior  <sergiodj@redhat.com>

	* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
	of 'labs' (and fix GCC warning).


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Revert "gdbserver: When attaching, add process before lwps"
@ 2019-01-28 17:44 sergiodj+buildbot
  2019-01-28 18:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-28 17:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9ee194135535acbd7b786d685666badbb59e536a ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 9ee194135535acbd7b786d685666badbb59e536a

Revert "gdbserver: When attaching, add process before lwps"

This reverts commit f084d335110408aa08ea06c7cb217ae19697db3d.

Accidently pushed. Reverted.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use trad_frame_set_reg_addr for FreeBSD arm signal trampoline unwinders.
@ 2019-01-28 18:32 sergiodj+buildbot
  2019-01-28 19:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-28 18:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7054e2fff6d93e4c2b3b6d0de0d8bda72d3c3d59 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 7054e2fff6d93e4c2b3b6d0de0d8bda72d3c3d59

Use trad_frame_set_reg_addr for FreeBSD arm signal trampoline unwinders.

Replace individual calls to trad_frame_set_reg_addr for the general
purpose and floating point registers in signal trampoline frames used
by FreeBSD/aarch64 and FreeBSD/arm with calls to
trad_frame_set_reg_addr using the register maps for the corresponding
register sets.

gdb/ChangeLog:

	* aarch64-fbsd-tdep.c (aarch64_fbsd_gregmap)
	(aarch64_fbsd_fpregmap): Move earlier.
	(AARCH64_MCONTEXT_REG_SIZE, AARCH64_MCONTEXT_FPREG_SIZE): Delete.
	(aarch64_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
	instead of individual calls to trad_frame_set_reg_addr.
	* arm-fbsd-tdep.c (arm_fbsd_gregmap, arm_fbsd_vfpregmap): Move
	earlier.
	(ARM_MCONTEXT_REG_SIZE, ARM_MCONTEXT_VFP_REG_SIZE): Delete.
	(arm_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
	instead of individual calls to trad_frame_set_reg_addr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PR gdb/23985] Fix libinproctrace.so build
@ 2019-01-30 18:16 sergiodj+buildbot
  2019-01-30 19:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-30 18:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 956cc47c5614b0d50bf538e3dcc88c81560fa64c ***

Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Branch: master
Commit: 956cc47c5614b0d50bf538e3dcc88c81560fa64c

[PR gdb/23985] Fix libinproctrace.so build

The IPA objects currently may use gnulib replacement apis, which is
wrong: gnulib is not linked into the produced dso and it cannot be
because it is not built with -fPIC -fvisibility=hidden.

The gnulib replacement detection is broken under cross compilation:
for targets other than *-gnu*, replacements are enabled that depend
on execution time detection. This causes unnecessary build failure
when the target has proper support for the replaced api.

This fix tries to undo the replacements, which is tricky because the
gnulib headers are still used for various compile time fixups and
there is no simple knob in gnulib to only turn the replacements off.

Without this workaround gdb fails to cross build to non-gnu targets:

  ld: tracepoint-ipa.o: in function `gdb_agent_helper_thread(void*)':
  gdb/gdbserver/tracepoint.c:7221: undefined reference to `rpl_strerror'
  ...
  Makefile:434: recipe for target 'libinproctrace.so' failed

gdb/gdbserver/ChangeLog:

	PR gdb/23985
	* Makefile.in (IPAGENT_CFLAGS): Add UNDO_GNULIB_CFLAGS.
	(UNDO_GNULIB_CFLAGS): Undo gnulib replacements.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S/390: Implement instruction set extensions
@ 2019-01-31 17:04 sergiodj+buildbot
  2019-01-31 17:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-31 17:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fc60b8c806a641cc2260c8b26f389f2abdc99dda ***

Author: Andreas Krebbel <krebbel@linux.ibm.com>
Branch: master
Commit: fc60b8c806a641cc2260c8b26f389f2abdc99dda

S/390: Implement instruction set extensions

opcodes/ChangeLog:

2019-01-31  Andreas Krebbel  <krebbel@linux.ibm.com>

	* s390-mkopc.c (main): Accept arch13 as cpu string.
	* s390-opc.c: Add new instruction formats and instruction opcode
	masks.
	* s390-opc.txt: Add new arch13 instructions.

include/ChangeLog:

2019-01-31  Andreas Krebbel  <krebbel@linux.ibm.com>

	* opcode/s390.h (enum s390_opcode_cpu_val): Add
	S390_OPCODE_ARCH13.

gas/ChangeLog:

2019-01-31  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/tc-s390.c (s390_parse_cpu): New entry for arch13.
	* doc/c-s390.texi: Document arch13 march option.
	* testsuite/gas/s390/s390.exp: Run the arch13 related tests.
	* testsuite/gas/s390/zarch-arch13.d: New test.
	* testsuite/gas/s390/zarch-arch13.s: New test.
	* testsuite/gas/s390/zarch-z13.d: Expect the renamed mnemonics
	also for z13.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Readline: Cleanup some warnings
@ 2019-01-31 18:19 sergiodj+buildbot
  2019-01-31 19:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-01-31 18:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 16bfc2f9705b40a11052f465b83fea2ec0904ce5 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 16bfc2f9705b40a11052f465b83fea2ec0904ce5

Readline: Cleanup some warnings

Cleanup the readline warnings that gdb buildbot complains about.

To prevent wcwidth missing declaration warnings, add the SOURCE /
EXTENSION macros to config.in that have already checked for in
configure.

Ensure pid is a long before printing as one.  Also fix GNU style.

Check the return value of write the same way as history_do_write ().

These changes are consistent with upstream readline.

readline/ChangeLog.gdb:

	* config.h.in: Add SOURCE/EXTENSION macros.
	* histfile.c (history_truncate_file): Check return of write.
	* util.c (_rl_tropen): Ensure pid is long.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Hoist assertion in target_stack::unpush
@ 2019-02-05 13:58 sergiodj+buildbot
  2019-02-05 15:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-05 13:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1688cb2916e7bc46c92dd6f5ac2ba0da6c832274 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1688cb2916e7bc46c92dd6f5ac2ba0da6c832274

Hoist assertion in target_stack::unpush

I noticed that target_stack::unpush first uses the target "t", then
later asserts that it is non-NULL:

  strata stratum = t->stratum ();
[...]
  gdb_assert (t != NULL);

This is backwards, though, as the assertion must come first.

gdb/ChangeLog
2019-02-05  Tom Tromey  <tom@tromey.com>

	* target.c (target_stack::unpush): Move assertion earlier.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86-64: Restore PIC check for PCREL reloc against protected symbol
@ 2019-02-06  3:09 sergiodj+buildbot
  2019-02-06  4:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-06  3:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 83924b3846361f2f76f9a6e7b5afa01c0eebbd4f ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 83924b3846361f2f76f9a6e7b5afa01c0eebbd4f

x86-64: Restore PIC check for PCREL reloc against protected symbol

commit bd7ab16b4537788ad53521c45469a1bdae84ad4a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Feb 13 07:34:22 2018 -0800

    x86-64: Generate branch with PLT32 relocation

removed check R_X86_64_PC32 relocation against protected symbols in
shared objects.  Since elf_x86_64_check_relocs is called after we
have seen all input files, we can check for PC-relative relocations in
elf_x86_64_check_relocs.  We should not allow PC-relative relocations
against protected symbols since address of protected function and
location of protected data may not be in the shared object.

bfd/

	PR ld/24151
	* elf64-x86-64.c (elf_x86_64_need_pic): Check
	SYMBOL_DEFINED_NON_SHARED_P instead of def_regular.
	(elf_x86_64_relocate_section): Move PIC check for PC-relative
	relocations to ...
	(elf_x86_64_check_relocs): Here.
	(elf_x86_64_finish_dynamic_symbol): Use SYMBOL_DEFINED_NON_SHARED_P
	to check if a symbol is defined in a non-shared object.
	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): New.

ld/

	PR ld/24151
	* testsuite/ld-x86-64/pr24151a-x32.d: New file.
	* testsuite/ld-x86-64/pr24151a.d: Likewise.
	* testsuite/ld-x86-64/pr24151a.s: Likewise.
	* testsuite/ld-x86-64/x86-64.exp: Run pr24151a and pr24151a-x32.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix 'info proc cmdline' for native FreeBSD processes.
@ 2019-02-06 18:05 sergiodj+buildbot
  2019-02-06 19:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-06 18:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 424eb552c27a1574974d9052dff4ff252a7db22d ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 424eb552c27a1574974d9052dff4ff252a7db22d

Fix 'info proc cmdline' for native FreeBSD processes.

The kern.proc.args.<pid> sysctl returns the argv array as a packed
array of arguments, each null terminated.  To construct a complete
command line, the arguments must be joined with spaces by converting
the intermediate nul characters to spaces.  Previously only the first
argument was shown in cmdline output.  Now, all arguments are shown.

gdb/ChangeLog:

	* fbsd-nat.c (fbsd_fetch_cmdline): Join arguments with spaces.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak of identifier in macro definition.
@ 2019-02-06 20:21 sergiodj+buildbot
  2019-02-06 21:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-06 20:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bb0da2b49689f49f01be2f8c5429945f37e12404 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: bb0da2b49689f49f01be2f8c5429945f37e12404

Fix leak of identifier in macro definition.

Valgrind detects leaks like the following (gdb.base/macscp.exp).
This patch fixes 1 of the 3 leaks (the last one in the list below).

The remaining leaks are better fixed in splay_tree_remove  and
splay_tree_insert in libiberty.
Tested on debian/amd64, natively and under valgrind.

==22285== 64 (48 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 737 of 3,377
==22285==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==22285==    by 0x4049E7: xmalloc (common-utils.c:44)
==22285==    by 0x533A20: new_macro_key(macro_table*, char const*, macro_source_file*, int) (macrotab.c:355)
==22285==    by 0x53438B: macro_define_function(macro_source_file*, int, char const*, int, char const**, char const*) (macrotab.c:822)
==22285==    by 0x52F945: macro_define_command(char const*, int) (macrocmd.c:409)
...
==22285== 128 (96 direct, 32 indirect) bytes in 2 blocks are definitely lost in loss record 1,083 of 3,377
==22285==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==22285==    by 0x4049E7: xmalloc (common-utils.c:44)
==22285==    by 0x533A20: new_macro_key(macro_table*, char const*, macro_source_file*, int) (macrotab.c:355)
==22285==    by 0x534277: macro_define_object_internal(macro_source_file*, int, char const*, char const*, macro_special_kind) (macrotab.c:776)
==22285==    by 0x52F7E0: macro_define_command(char const*, int) (macrocmd.c:414)
...
==22285== 177 bytes in 19 blocks are definitely lost in loss record 1,193 of 3,377
==22285==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==22285==    by 0x4049E7: xmalloc (common-utils.c:44)
==22285==    by 0x52F5BD: extract_identifier(char const**, int) (macrocmd.c:316)
==22285==    by 0x52F77D: macro_define_command(char const*, int) (macrocmd.c:355)
gdb/ChangeLog
2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* macrocmd.c (extract_identifier): Return
	a gdb::unique_xmalloc_ptr<char> instead of a char *, and update
	callers.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Factorize macro definition code in macrotab.c
@ 2019-02-06 20:32 sergiodj+buildbot
  2019-02-06 22:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-06 20:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ab9268d2f88414f202651eb5ffbd61c7927fb0c3 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: ab9268d2f88414f202651eb5ffbd61c7927fb0c3

Factorize macro definition code in macrotab.c

When first fixing splay tree key leaks in macrotab.c, some duplicated code
logic was factorized.
The key leaks will be fixed in libiberty, but the code factorization
is better kept in any case.

gdb/ChangeLog
2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* macrotab.c (macro_define_internal): New function that
	factorizes macro_define_object_internal and macro_define_function
	code.
	(macro_define_object_internal): Use macro_define_internal.
	(macro_define_function): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] C++-ify struct thread_fsm
@ 2019-02-07 13:41 sergiodj+buildbot
  2019-02-07 14:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 13:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 46e3ed7ff94dc2d65f3d937d483c459b4cee6a0a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 46e3ed7ff94dc2d65f3d937d483c459b4cee6a0a

C++-ify struct thread_fsm

This C++-ifies struct thread_fsm, replacing the "ops" structure with
virtual methods, and changing all the implementations to derive from
thread_fsm.

gdb/ChangeLog
2019-02-07  Tom Tromey  <tom@tromey.com>

	* thread.c (thread_cancel_execution_command): Update.
	* thread-fsm.h (struct thread_fsm): Add constructor, destructor,
	methods.
	(struct thread_fsm_ops): Remove.
	(thread_fsm_ctor, thread_fsm_delete, thread_fsm_clean_up)
	(thread_fsm_should_stop, thread_fsm_return_value)
	(thread_fsm_set_finished, thread_fsm_finished_p)
	(thread_fsm_async_reply_reason, thread_fsm_should_notify_stop):
	Don't declare.
	* mi/mi-interp.c (mi_on_normal_stop_1): Update.
	* infrun.c (clear_proceed_status_thread)
	(clean_up_just_stopped_threads_fsms, fetch_inferior_event)
	(print_stop_event): Update.
	* infcmd.c (struct step_command_fsm): Inherit from thread_fsm.
	Add constructor.
	(step_command_fsm_ops): Remove.
	(new_step_command_fsm): Remove.
	(step_1): Update.
	(step_command_fsm::should_stop): Rename from
	step_command_fsm_should_stop.
	(step_command_fsm::clean_up): Rename from
	step_command_fsm_clean_up.
	(step_command_fsm::do_async_reply_reason): Rename from
	step_command_fsm_async_reply_reason.
	(struct until_next_fsm): Inherit from thread_fsm.  Add
	constructor.
	(until_next_fsm_ops): Remove.
	(new_until_next_fsm): Remove.
	(until_next_fsm::should_stop): Rename from
	until_next_fsm_should_stop.
	(until_next_fsm::clean_up): Rename from until_next_fsm_clean_up.
	(until_next_fsm::do_async_reply_reason): Rename from
	until_next_fsm_async_reply_reason.
	(struct finish_command_fsm): Inherit from thread_fsm.  Add
	constructor.  Change type of breakpoint.
	(finish_command_fsm_ops): Remove.
	(new_finish_command_fsm): Remove.
	(finish_command_fsm::should_stop): Rename from
	finish_command_fsm_should_stop.
	(finish_command_fsm::clean_up): Rename from
	finish_command_fsm_clean_up.
	(finish_command_fsm::return_value): Rename from
	finish_command_fsm_return_value.
	(finish_command_fsm::do_async_reply_reason): Rename from
	finish_command_fsm_async_reply_reason.
	(finish_command): Update.
	* infcall.c (struct call_thread_fsm): Inherit from thread_fsm.
	Add constructor.
	(call_thread_fsm_ops): Remove.
	(call_thread_fsm::call_thread_fsm): Rename from
	new_call_thread_fsm.
	(call_thread_fsm::should_stop): Rename from
	call_thread_fsm_should_stop.
	(call_thread_fsm::should_notify_stop): Rename from
	call_thread_fsm_should_notify_stop.
	(run_inferior_call, call_function_by_hand_dummy): Update.
	* cli/cli-interp.c (should_print_stop_to_console): Update.
	* breakpoint.c (struct until_break_fsm): Inherit from thread_fsm.
	Add constructor.  Change type of location_breakpoint,
	caller_breakpoint.
	(until_break_fsm_ops): Remove.
	(new_until_break_fsm): Remove.
	(until_break_fsm::should_stop): Rename from
	until_break_fsm_should_stop.
	(until_break_fsm::clean_up): Rename from
	until_break_fsm_clean_up.
	(until_break_fsm::do_async_reply_reason): Rename from
	until_break_fsm_async_reply_reason.
	(until_break_command): Update.
	* thread-fsm.c: Remove.
	* Makefile.in (COMMON_SFILES): Remove thread-fsm.c.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move potentially obsolete BFD targets into the definitely obsolete section. Add a note to the README-how-to-make-a-release document about doing this.
@ 2019-02-07 14:54 sergiodj+buildbot
  2019-02-07 17:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 14:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2012bf013b2ce507b181c0d9049ad946b2a59d8a ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 2012bf013b2ce507b181c0d9049ad946b2a59d8a

Move potentially obsolete BFD targets into the definitely obsolete section.  Add a note to the README-how-to-make-a-release document about doing this.

bfd	* config.bfd: Move the powerpc-lynxos and powerpc-windiss targets
	into the definitely obsolete list.

binutils * README-how-to-make-a-release: Add a note about updating the
	obsolete targets in the bfd/config.bfd file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: When attaching, add process before lwps
@ 2019-02-07 15:06 sergiodj+buildbot
  2019-02-07 18:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 15:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT df0da8a2b80315485330c03c18b704b8d7b3e9c2 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: df0da8a2b80315485330c03c18b704b8d7b3e9c2

gdbserver: When attaching, add process before lwps

The recent BP/WP changes for AArch64 swapping the order in add_lwp()
so that the process was added before the lwp. This was due to the lwp
creation requiring the process data.

This also needs changing in linux_attach().

Also add additional checks to make sure cannot attach to the same
process twice. Add test case for this - do this by splitting
attach.exp into distinct pass and error case sections.

Fixes gdb.server/ext-attach.exp on Aarch64.

gdb/gdbserver/ChangeLog:

	* linux-low.c (linux_attach): Add process before lwp.
	* server.c (attach_inferior): Check if already attached.

gdb/testsuite/ChangeLog:

	* gdb.base/attach.exp: Add double attach test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Visium: fix bogus overflow check on 32-bit hosts
@ 2019-02-07 16:18 sergiodj+buildbot
  2019-02-07 21:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 68a091326f6ac25005c49c4cbda1855080ba1d5f ***

Author: Eric Botcazou <ebotcazou@gcc.gnu.org>
Branch: master
Commit: 68a091326f6ac25005c49c4cbda1855080ba1d5f

Visium: fix bogus overflow check on 32-bit hosts

bfd/
	* elf32-visium.c (visium_elf_howto_parity_reloc): Minor tweak.
	<R_VISIUM_PC16>: Use explicit range test to detect an overflow.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Add verifier for By elem Single and Double sized instructions.
@ 2019-02-07 17:54 sergiodj+buildbot
  2019-02-08  0:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 17:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6456d318aaa7ea35511dad1f2facf0fb984972e5 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: 6456d318aaa7ea35511dad1f2facf0fb984972e5

AArch64: Add verifier for By elem Single and Double sized instructions.

The AArch64 instruction set has cut-outs inside instructions encodings for
when a given encoding that would normally fall within the encoding space of
an instruction is instead undefined.

This updates the first few instructions FMLA, FMLA, FMUL and FMULX in the case
where sz:L == 11.

gas/ChangeLog:

	PR binutils/23212
	* testsuite/gas/aarch64/undefined_by_elem_sz_l.s: New test.
	* testsuite/gas/aarch64/undefined_by_elem_sz_l.d: New test.

opcodes/ChangeLog:

	PR binutils/23212
	* aarch64-opc.h (enum aarch64_field_kind): Add FLD_sz.
	* aarch64-opc.c (verify_elem_sd): New.
	(fields): Add FLD_sz entr.
	* aarch64-tbl.h (_SIMD_INSN): New.
	(aarch64_opcode_table): Add elem_sd verifier to fmla, fmls, fmul and
	fmulx scalar and vector by element isns.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Updated Swedish translation for the opcodes sub-directory
@ 2019-02-07 19:10 sergiodj+buildbot
  2019-02-07 19:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 19:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4a83b61091168f7df0f58009dda67b9e36f8a5f7 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 4a83b61091168f7df0f58009dda67b9e36f8a5f7

Updated Swedish translation for the opcodes sub-directory


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] SPARC: fix PR ld/18841
@ 2019-02-07 21:52 sergiodj+buildbot
  2019-02-07 23:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-07 21:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b2abe1bd8149dd9ad64432f620c3a034bf23a5fe ***

Author: Eric Botcazou <ebotcazou@gcc.gnu.org>
Branch: master
Commit: b2abe1bd8149dd9ad64432f620c3a034bf23a5fe

SPARC: fix PR ld/18841

This fixes the last ld failures on SPARC64/Linux:

FAIL: Run pr18841 with libpr18841b.so
FAIL: Run pr18841 with libpr18841c.so
FAIL: Run pr18841 with libpr18841bn.so (-z now)
FAIL: Run pr18841 with libpr18841cn.so (-z now)

by mimicing what has been done on x86-64 and Aarch64 to fix the PR.

bfd/
	PR ld/18841
        * elf32-sparc.c (elf32_sparc_reloc_type_class): Return
        reloc_class_ifunc for ifunc symbols.
        * elf64-sparc.c (elf64_sparc_reloc_type_class): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Arm: Backport hlt to all architectures.
@ 2019-02-08  1:07 sergiodj+buildbot
  2019-02-08  1:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-08  1:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f7dd2fb2e2b750f0fb9dedaf885c17bc6beef1f7 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: f7dd2fb2e2b750f0fb9dedaf885c17bc6beef1f7

Arm: Backport hlt to all architectures.

The software trap instruction HLT that was introduced in Armv8-a is used
as the semihosting trap instruction in AArch64.  In order to allow systems
configured to run AArch64 code to also run AArch32 with semihosting it was
decided that AArch32 should also use HLT in the case of the "mixed mode"
environment.  This requires that HLT also be backported to all earlier
architectures.  The instruction is in the undefined encoding space earlier
architectures but must trigger a semihosting trap [3].

The Arm Architectural Reference Manual [1] doesn't explicitly mention this
however this is an explicit requirement in the Semihosting-v2 protocol [2].

[1] https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile
[2] https://developer.arm.com/docs/100863/latest/the-semihosting-interface
[3] https://github.com/qemu/qemu/commit/19a6e31c9d2701ef648b70ddcfc3bf64cec8c37e

gas/ChangeLog:

	* config/tc-arm.c (insns): Redefine THUMB_VARIANT and ARM_VARIANT for
	hlt to armv1.
	* testsuite/gas/arm/armv8a-automatic-hlt.d: Update TAGs
	* testsuite/gas/arm/hlt.d: New test.
	* testsuite/gas/arm/hlt.s: New test.

opcodes/ChangeLog:

	* arm-dis.c (arm_opcodes): Redefine hlt to armv1.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Compress 3-operand beq/bne against x0.
@ 2019-02-08 21:33 sergiodj+buildbot
  2019-02-08 22:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-08 21:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ca0bc1509849a3871e99fdf48705b93f18d5fa7b ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: ca0bc1509849a3871e99fdf48705b93f18d5fa7b

RISC-V: Compress 3-operand beq/bne against x0.

This lets us accept an instruction like
	beq a2,x0,.Label
and generate a compressed beqz.  This will allow some future simplications
to the gcc support, e.g. eliminating some duplicate patterns, and avoiding
adding new duplicate patterns, since currently we have to handle signed
and equality compares against zero specially.

Tested with rv{32,64}-{elf,linux} cross builds and make checks for binutils
and gcc.  There were no regressions.

	gas/
	* config/tc-riscv.c (validate_riscv_insn) <'C'>: Add 'z' support.
	(riscv_ip) <'C'>: Add 'z' support.
	opcodes/
	* riscv-opc.c (riscv_opcodes) <beq>: Use Cz to compress 3 operand form.
	<bne>: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Add FP register core file support.
@ 2019-02-08 21:44 sergiodj+buildbot
  2019-02-08 23:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-08 21:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 617126bc8ae3c83b565aef1a454742c8a7237c14 ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: 617126bc8ae3c83b565aef1a454742c8a7237c14

RISC-V: Add FP register core file support.

This adds fp reg support similar to the existing general reg support.

This fixes one gdb testsuite failure
FAIL: gdb.base/gcore.exp: corefile restored system registers
which fails without the patch because fcsr was missing.  Otherwise, no
regressions with riscv64-linux native testsuite run.

	gdb/
	* riscv-linux-tdep.c (riscv_linux_fregmap): New.
	(riscv_linux_fregset): New.
	(riscv_linux_iterate_over_regset_sections): Call cb for .reg2 section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [ARC] don't force _init/_fini as DT_INIT/DT_FINI.
@ 2019-02-09 10:19 sergiodj+buildbot
  2019-02-09 11:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-09 10:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0e90a73f0dc7e44c980ef5ea512eb7a3bd0cabc ***

Author: Claudiu Zissulescu <claziss@gmail.com>
Branch: master
Commit: a0e90a73f0dc7e44c980ef5ea512eb7a3bd0cabc

[ARC] don't force _init/_fini as DT_INIT/DT_FINI.

Recent gcc commit b4371b277f1e ("[ARC] Enable init_array support")
inhibits DT_"INIT,FINI} in favor of DT_{INIT,FINI}ARRAY.

Even prior to that, it seems ARC port is the only one with this
special DT_INIT/FINI handling in linker emulation. Removing it
doesn't seem to change any uClibc/glibc testsuite results,
so this can RIP anyways.

bfd/
    2019-02-01  Vineet Gupta <vgupta@synopsys.com>

           * elf32-arc.c: Delete init_str, fini_str

ld/
    2019-02-01  Vineet Gupta <vgupta@synopsys.com>

           * emultempl/arclinux.em : Delete special INIT/FINI handling.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] (Ada) -var-update crash for variable whose type is a reference to changeable
@ 2019-02-10  9:13 sergiodj+buildbot
  2019-02-10 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-10  9:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aff29d1c738c0327e7b40ba9f6885279b75e3eca ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: aff29d1c738c0327e7b40ba9f6885279b75e3eca

(Ada) -var-update crash for variable whose type is a reference to changeable

Consider the following variable, which is a string whose value
is not known at compile time, because it is the return value
from a function call (Get_Name):

   A : String := Get_Name;

If one tries to create a varobj for that variable, everything works
as expected:

    | (gdb) -var-create a * a
    | ^done,name="a",numchild="19",value="[19] \"Some kind of string\"",type="<ref> array (1 .. 19) of character",thread-id="1",has_more="0"

However, try then to request an update, regardless of whether the string
has changed or not, and we get a crash:

    | -var-update a
    | ~"/[...]/gdb/varobj.c:1379: internal-error: bool install_new_value(varobj*, value*, bool): Assertion `!value_lazy (var->value.get ())' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable.\nQuit this debugging session? (y or n) "

When the varobj gets created (-var-create), the expression is evaluated
and transformed into a value. The debugging information describes our
variables as a reference to an array of characters, so our value has
the corresponding type. We then call varobj.c::install_new_value
to store that value inside our varobj, and we see that this function
pretty starts by determining weither our varobj is changeable, via:

    | changeable = varobj_value_is_changeable_p (var);

(where 'var' is the varobj we are building, and where the function
varobj_value_is_changeable_p simply dispatches to the Ada version
of this routine: ada_value_is_changeable_p).

At this point, the varobj doesn't have a value, yet, but it does
have a type which was provided by varobj_create a little bit before
install_new_value was called. So ada_value_is_changeable_p uses that
to determine whether or not our type is changeable.

Since our type is a reference to an array, and that the value of
such objects is displayed as if there weren't a reference, it means
that our object is changeable -- in other words, if an element of
the string changes, then the "value" field of the varobj will change
accordingly. But unfortunately, ada_value_is_changeable_p mistakenly
returns false, because it is missing the handling of reference types.

As a consequence of this, install_new_value doesn't feel it is
necessary to fetch the value's contents, as explained by the following
comment inside that function:

  /* The new value might be lazy.  If the type is changeable,
     that is we'll be comparing values of this type, fetch the
     value now.  Otherwise, on the next update the old value
     will be lazy, which means we've lost that old value.  */

This means that a lazy value gets installed inside our varobj
as a result of the mistake in ada_value_is_changeable_p.

Another important detail is that, after determining whether
our varobj is changeable or not, it then purposefully removes
the reference layer from our value:

  /* We are not interested in the address of references, and given
     that in C++ a reference is not rebindable, it cannot
     meaningfully change.  So, get hold of the real value.  */
  if (value)
    value = coerce_ref (value);

The consequence of those two facts on shows up only later, when
the user requests an update (-var-update). When doing so, GDB
evaluates the expression again into a value which is once more
a reference to a string, and then calls install_new_value again
to install the new value and report any changes. This time around,
the call to...

    | changeable = varobj_value_is_changeable_p (var);

... now gets a varobj which has a value, and one which had the reference
layer removed! So, this time, we classify the varobj correctly, and
say it is changeable. And because it is changeable, we then go into
the section of code in install_new_value which checks for changes,
where we need the varobj's value to not be lazy, as explained by
the comment we quoted above. That's what the assertion was about.

This patch fixes the issues by teaching ada_value_is_changeable_p
to ignore reference layers when evaluating a given varobj's type.

gdb/ChangeLog:

	* ada-varobj.c (ada_value_is_changeable_p): Add handling of
        TYPE_CODE_REF types.

gdb/testsuite/ChangeLog:

        * gdb.ada/mi_ref_changeable: New testcase.

Prior to this patch, this testcase reports 2 unresolved tests
(due to GDB hitting the internal error). With this patch, all
tests in this testcase pass.

Tested on x86_64-linux, no regression.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix type_stack leaks in c expression parsing.
@ 2019-02-10 12:29 sergiodj+buildbot
  2019-02-10 16:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-10 12:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ab759ca8db37ffd3e32df5226e0b4ea16a81c849 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: ab759ca8db37ffd3e32df5226e0b4ea16a81c849

Fix type_stack leaks in c expression parsing.

Valgrind detects a bunch of leaks in several tests, such as:

==22905== 40 (24 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 531 of 3,268
==22905==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==22905==    by 0x5893AD: get_type_stack() (parse.c:1509)
==22905==    by 0x3F4EAD: c_yyparse() (c-exp.y:1223)
==22905==    by 0x3F71BC: c_parse(parser_state*) (c-exp.y:3308)
==22905==    by 0x588CEA: parse_exp_in_context_1(char const**, unsigned long, block const*, int, int, int*) [clone .constprop.89] (parse.c:1205)
==22905==    by 0x588FA1: parse_exp_in_context (parse.c:1108)
==22905==    by 0x588FA1: parse_exp_1 (parse.c:1099)
==22905==    by 0x588FA1: parse_expression(char const*) (parse.c:1247)
...

==22395== 456 (168 direct, 288 indirect) bytes in 7 blocks are definitely lost in loss record 2,658 of 2,978
==22395==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==22395==    by 0x5893AD: get_type_stack() (parse.c:1509)
==22395==    by 0x3F4ECF: c_yyparse() (c-exp.y:1230)
==22395==    by 0x3F71BC: c_parse(parser_state*) (c-exp.y:3308)
==22395==    by 0x588CEA: parse_exp_in_context_1(char const**, unsigned long, block const*, int, int, int*) [clone .constprop.89] (parse.c:1205)
==22395==    by 0x588FA1: parse_exp_in_context (parse.c:1108)
==22395==    by 0x588FA1: parse_exp_1 (parse.c:1099)
==22395==    by 0x588FA1: parse_expression(char const*) (parse.c:1247)
==22395==    by 0x67BB9D: whatis_exp(char const*, int) (typeprint.c:515)
...

==22395== VALGRIND_GDB_ERROR_BEGIN
==22395== 144 (24 direct, 120 indirect) bytes in 1 blocks are definitely lost in loss record 1,016 of 2,978
==22395==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==22395==    by 0x5893AD: get_type_stack() (parse.c:1509)
==22395==    by 0x3F4E8A: c_yyparse() (c-exp.y:1217)
==22395==    by 0x3F71BC: c_parse(parser_state*) (c-exp.y:3308)
==22395==    by 0x588CEA: parse_exp_in_context_1(char const**, unsigned long, block const*, int, int, int*) [clone .constprop.89] (parse.c:1205)
==22395==    by 0x588FA1: parse_exp_in_context (parse.c:1108)
==22395==    by 0x588FA1: parse_exp_1 (parse.c:1099)
==22395==    by 0x588FA1: parse_expression(char const*) (parse.c:1247)
==22395==    by 0x67BB9D: whatis_exp(char const*, int) (typeprint.c:515)
...

Fix these by storing the allocated type_stack in the cpstate->type_stacks
vector.

Tested on debian/amd64, natively and under valgrind.

gdb/ChangeLog
2019-02-10  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* c-exp.y (direct_abs_decl): Use emplace_back to record the
	type_stack.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Detect exit from execve syscall
@ 2019-02-11 17:01 sergiodj+buildbot
  2019-02-11 18:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-11 17:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ea638c43121624bb4b09bb89b88314f99c85a48d ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: ea638c43121624bb4b09bb89b88314f99c85a48d

AArch64: Detect exit from execve syscall

Checking the syscall number when stopped on entry/exit relies on checking
the value in register X8.

However, on exit from an execve syscall, the registers will all be cleared.
Given this is only checked on syscall entry/exit, then a cleared register
state either means execve exit or syscall 0 (io_setup) entry with invalid
parameters and an invalid FR and LR, which in reality should never happen.
Use this to detect execve exit.

Move function to allow use of aarch64_sys_execve enum, and use newer
regcache functions.

Fixes gdb.base/catch-syscall.exp on Aarch64.

gdb/ChangeLog:

	* aarch64-linux-tdep.c (aarch64_linux_get_syscall_number): Check
	for execve.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp
@ 2019-02-12 13:20 sergiodj+buildbot
  2019-02-12 14:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 13:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e20773049fde7b9a123fda4485259fc06249b22f ***

Author: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Branch: master
Commit: e20773049fde7b9a123fda4485259fc06249b22f

Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp

When a node is removed from a splay tree, the splay tree was
not using the function splay_tree_delete_key_fn to release the key.
This was causing a leak, fixed by Tom Tromey.

This patch fixes another key leak, that happens when a key equal to
a key already present is inserted.  In such a case, we have to release
the old KEY.
Note that this is based on the assumption that the caller always
allocates a new KEY when doing an insert.

Also, clarify the documentation about when the release functions are
called.

2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* splay-tree.h (splay_tree_delete_key_fn): Update comment.
	(splay_tree_delete_value_fn): Likewise.

libiberty/ChangeLog
2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* splay-tree.c (splay_tree_insert): Also release old KEY in case
	of insertion of a key equal to an already present key.
	(splay_tree_new_typed_alloc): Update comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268793 138bc75d-0d04-0410-961f-82ee72b054a4


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use function_name_style to print Ada and C function names
@ 2019-02-12 19:30 sergiodj+buildbot
  2019-02-12 20:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 19:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ac8c53cc67724f990003009fd37a3d7dc662fcb3 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: ac8c53cc67724f990003009fd37a3d7dc662fcb3

Use function_name_style to print Ada and C function names

Note that ada-typeprint.c print_func_type is called with
types representing functions and is also called to print
a function NAME together with its type.  In such a case, the function
name will be printed using function name style.

Similarly, c_print_type_1 is called to print a type, optionally
with the name of an object of this type in the VARSTRING arg.
So, c_print_type_1 uses function name style to print varstring
when the type code indicates that c_print_type_1 TYPE is some
'real code'.

gdb/ChangeLog
2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* ada-typeprint.c (print_func_type): Print function name
	style to print function name.
	* c-typeprint.c (c_print_type_1): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use address style to print addresses in breakpoint information.
@ 2019-02-12 20:52 sergiodj+buildbot
  2019-02-12 21:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 20:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2636d81d80ad34653d05d0d94207d62720bfd6aa ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 2636d81d80ad34653d05d0d94207d62720bfd6aa

Use address style to print addresses in breakpoint information.

gdb/ChangeLog
2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* breakpoint.c (describe_other_breakpoints): Use address style
	to print addresses.
	(say_where): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Look for separate debug files in debug directories under a sysroot.
@ 2019-02-12 22:12 sergiodj+buildbot
  2019-02-13  3:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 22:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 402d2bfec425f29c5b54089d5ff98ca9a1b8ec27 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 402d2bfec425f29c5b54089d5ff98ca9a1b8ec27

Look for separate debug files in debug directories under a sysroot.

When an object file is present in a system root, GDB currently looks
for separate debug files under the global debugfile directories.  For
example, if the sysroot is set to "/myroot" and hte global debugfile
directory is set to "/usr/lib/debug", GDB will look for a separate
debug file for "/myroot/lib/libc.so.7" in the following paths:

  /myroot/lib/libc.so.7.debug
  /myroot/lib/.debug/libc.so.7.debug
  /usr/lib/debug//myroot/lib/libc.so.7.debug
  /usr/lib/debug/lib/libc.so.7.debug

However, some system roots include a full system installation
including a nested global debugfile directory under the sysroot.  This
patch adds an additional check to support such systems.  In the
example above the additional path searched is:

  /myroot/usr/lib/debug/lib/libc.so.7.debug

To try to preserve existing behavior as much as possible, this new
path is searched last for each global debugfile directory.

gdb/ChangeLog:

	* symfile.c (find_separate_debug_file): Look for separate debug
	files in debug directories under the sysroot.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a new function child_path.
@ 2019-02-12 22:22 sergiodj+buildbot
  2019-02-13  4:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 22:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT efac4bfe0b2bdd21a27c94ca3464046e9c23f0e4 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: efac4bfe0b2bdd21a27c94ca3464046e9c23f0e4

Add a new function child_path.

child_path returns a pointer to the first component in a child path
that comes after a parent path.  This does not depend on trying to
stat() the paths since they may describe remote paths but instead
relies on filename parsing.  The function requires that the child path
describe a filename that contains at least one component below the
parent path and returns a pointer to the first component.

gdb/ChangeLog:

	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
	unittests/child-path-selftests.c.
	* common/pathstuff.c (child_path): New function.
	* common/pathstuff.h (child_path): New prototype.
	* unittests/child-path-selftests.c: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Try to use the canonical version of a sysroot for debug file links.
@ 2019-02-12 22:44 sergiodj+buildbot
  2019-02-13  7:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-12 22:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f62318e98d84e79e457920c74515fb73bb013b23 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: f62318e98d84e79e457920c74515fb73bb013b23

Try to use the canonical version of a sysroot for debug file links.

Object file paths passed to find_separate_debug_file are always
canonical paths with symbolic links resolved.  If a sysroot path
traverses a symbolic link, it will not match the object file paths.
Generate a canonical version of the sysroot directory.  If it is
valid, use it instead of gdb_sysroot with child_path to determine if
an object file is under a system root.

gdb/ChangeLog:

	* symfile.c (find_separate_debug_file): Use canonical path of
	sysroot with child_path instead of gdb_sysroot if it is valid.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use child_path to determine if an object file is under a sysroot.
@ 2019-02-13  3:05 sergiodj+buildbot
  2019-02-13  6:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-13  3:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd4b78483c3b0e4bd7737b67ed5074b7c252faa4 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: cd4b78483c3b0e4bd7737b67ed5074b7c252faa4

Use child_path to determine if an object file is under a sysroot.

This fixes the case where the sysroot happens to end in a trailing
'/'.  Note that the path returned from child_path always skips over
the directory separator at the start of the base path, so a separator
must always be explicitly added before the base path.

gdb/ChangeLog:

	* symfile.c (find_separate_debug_file): Use child_path to
	determine if an object file is under a sysroot.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Adding a test case
@ 2019-02-13  6:14 sergiodj+buildbot
  2019-02-13  8:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-13  6:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 01c7ae818bd6c0b5d797091ec1664bcaed705d40 ***

Author: Weimin Pan <weimin.pan@oracle.com>
Branch: master
Commit: 01c7ae818bd6c0b5d797091ec1664bcaed705d40

Adding a test case

gdb/testsuite/ChangeLog
2019-02-12  Weimin Pan  <weimin.pan@oracle.com>

            PR breakpoints/21870
            * gdb.arch/aarch64-dbreg-contents.exp: New file.
            * gdb.arch/aarch64-dbreg-contents.c: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add Andrew Burgess as global maintainer of gdb/ and sim/
@ 2019-02-13 22:36 sergiodj+buildbot
  2019-02-13 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-13 22:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 007024cc6ae8cd1a22e328eb4150adaa4baf5731 ***

Author: Simon Marchi <simon.marchi@ericsson.com>
Branch: master
Commit: 007024cc6ae8cd1a22e328eb4150adaa4baf5731

Add Andrew Burgess as global maintainer of gdb/ and sim/


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] (Windows) remove thread notification for main thread of inferior
@ 2019-02-14  3:27 sergiodj+buildbot
  2019-02-14  4:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14  3:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c559d7096b4b1b9c4e8d78cfd67b1892c1836ffb ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: c559d7096b4b1b9c4e8d78cfd67b1892c1836ffb

(Windows) remove thread notification for main thread of inferior

This is a followup on a recent patch which, among other things
introduced the exit notification of the main thread in order
to be symetrical with the fact that a thread notification was
emitted before signaling its creation.

This patch takes the opposite approach of removing both creation
and exit notifications for that main thread, which is consistent
with what is done on other platforms such as GNU/Linux for instance.

gdb/ChangeLog

	* windows-nat.c (windows_add_thread): Add new parameter
	"main_thread_p" with default value set to false.  Update
	function documentation as well as all callers.
	(windows_delete_thread): Likewise.
	(fake_create_process): Update call to windows_add_thread.
	(get_windows_debug_event) <CREATE_THREAD_DEBUG_EVENT>
	<CREATE_PROCESS_DEBUG_EVENT>: Likewise.
	<EXIT_THREAD_DEBUG_EVENT, EXIT_PROCESS_DEBUG_EVENT>: Update
	call to windows_delete_thread.

Tested on x86-windows (MinGW) using AdaCore's testsuite.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Work around conflict between Mach's 'thread_info' function, and GDB's 'thread_info' class
@ 2019-02-14 15:26 sergiodj+buildbot
  2019-02-14 17:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 15:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cabb5f067daa9227bf0323cbf64c6065d6e4796f ***

Author: Thomas Schwinge <thomas@codesourcery.com>
Branch: master
Commit: cabb5f067daa9227bf0323cbf64c6065d6e4796f

[gdb, hurd] Work around conflict between Mach's 'thread_info' function, and GDB's 'thread_info' class

    In file included from ./nm.h:25:0,
                     from [...]/gdb/defs.h:423,
                     from [...]/gdb/gdb.c:19:
    [...]/gdb/regcache.h:35:46: warning: 'get_thread_regcache' initialized and declared 'extern'
     extern struct regcache *get_thread_regcache (thread_info *thread);
                                                  ^~~~~~~~~~~
    [...]/gdb/regcache.h:35:46: error: 'regcache* get_thread_regcache' redeclared as different kind of symbol
    [...]
    [...]/gdb/gdbarch.h:1203:69: error: 'thread_info' is not a type
     extern LONGEST gdbarch_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread);
                                                                         ^~~~~~~~~~~

Fixed with a different (self-contained, more maintainable?) approach compared
to what has been done in commit 7aabaf9d4ad52a1df1f551908fbd8cafc5e7597a
"Create private_thread_info hierarchy", and commit
75cbc781e371279f4403045be93b07fd8fe7fde5 "gdb: For macOS, s/thread_info/struct
thread_info/".  We don't want to change all the GDB code to everywhere use
'class thread_info' or 'struct thread_info' instead of plain 'thread_info'.

	gdb/
	* config/i386/nm-i386gnu.h: Don't "#include" any files.
	* gnu-nat.h (mach_thread_info): New function.
	* gnu-nat.c (thread_takeover_sc_cmd): Use it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Repair build after "Use thread_info and inferior pointers more throughout"
@ 2019-02-14 16:25 sergiodj+buildbot
  2019-02-14 21:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 16:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c29ee8d45ec2113821c006a18cfedb9023ef9ce1 ***

Author: Thomas Schwinge <thomas@codesourcery.com>
Branch: master
Commit: c29ee8d45ec2113821c006a18cfedb9023ef9ce1

[gdb, hurd] Repair build after "Use thread_info and inferior pointers more throughout"

..., that is commit 00431a78b28f913a9d5c912c49680e39cfd20847 causing:

    [...]/gdb/gnu-nat.c: In member function 'virtual void gnu_nat_target::detach(inferior*, int)':
    [...]/gdb/gnu-nat.c:2284:23: error: invalid conversion from 'int' to 'inferior*' [-fpermissive]
       detach_inferior (pid);
                           ^
    In file included from [...]/gdb/gnu-nat.c:61:0:
    [...]/gdb/inferior.h:523:13: note:   initializing argument 1 of 'void detach_inferior(inferior*)'
     extern void detach_inferior (inferior *inf);
                 ^~~~~~~~~~~~~~~

Fixed by inlining the removed code.

	gdb/
	* gnu-nat.c (gnu_nat_target::detach): Instead of
	'detach_inferior (pid)' call
	'detach_inferior (find_inferior_pid (pid))'.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Address "ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]" diagnostics
@ 2019-02-14 16:36 sergiodj+buildbot
  2019-02-14 22:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 16:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 924514e11c21ac5a5805e7a14824b6f3182b2198 ***

Author: Thomas Schwinge <thomas@codesourcery.com>
Branch: master
Commit: 924514e11c21ac5a5805e7a14824b6f3182b2198

[gdb, hurd] Address "ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]" diagnostics

... that appeared with 9bf2a700667c53003ece783c05e8b355801105f2
"-Wwrite-strings: Remove -Wno-write-strings".

	gdb/
	* gnu-nat.c (gnu_write_inferior, parse_int_arg, _parse_bool_arg)
	(check_empty): Use "const char *".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Adjust to Hurd "proc" interface changes
@ 2019-02-14 16:49 sergiodj+buildbot
  2019-02-15  0:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 16:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8071c5ce78245eff43f9977a7c3ff8328f7486da ***

Author: David Michael <fedora.dm0@gmail.com>
Branch: master
Commit: 8071c5ce78245eff43f9977a7c3ff8328f7486da

[gdb, hurd] Adjust to Hurd "proc" interface changes

Hurd's commit baf7e5c8ce176aead15c2559952d8bdf0da41ffd "hurd: Use polymorphic
port types to return some rights" causes in the GDB build:

    /usr/bin/ld: process_reply_S.o: in function `_Xproc_pid2proc_reply':
    [...]/gdb/process_reply_S.c:754: undefined reference to `S_proc_pid2proc_reply'
    /usr/bin/ld: [...]/gdb/process_reply_S.c:730: undefined reference to `S_proc_pid2proc_reply'
    /usr/bin/ld: process_reply_S.o: in function `_Xproc_task2proc_reply':
    [...]/gdb/process_reply_S.c:589: undefined reference to `S_proc_task2proc_reply'
    /usr/bin/ld: [...]/gdb/process_reply_S.c:565: undefined reference to `S_proc_task2proc_reply'
    /usr/bin/ld: process_reply_S.o: in function `_Xproc_getmsgport_reply':
    [...]/gdb/process_reply_S.c:204: undefined reference to `S_proc_getmsgport_reply'
    /usr/bin/ld: [...]/gdb/process_reply_S.c:180: undefined reference to `S_proc_getmsgport_reply'
    collect2: error: ld returned 1 exit status

	gdb/
	* gnu-nat.c (S_proc_getmsgport_reply, S_proc_task2proc_reply)
	(S_proc_pid2proc_reply): Adjust to Hurd "proc" interface changes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Avoid using 'PATH_MAX' in 'gdb/remote.c'
@ 2019-02-14 17:20 sergiodj+buildbot
  2019-02-15  1:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 17:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b671c7fb21306ce125717a44c30a71686bd24db1 ***

Author: Thomas Schwinge <thomas@codesourcery.com>
Branch: master
Commit: b671c7fb21306ce125717a44c30a71686bd24db1

[gdb, hurd] Avoid using 'PATH_MAX' in 'gdb/remote.c'

..., which is not defined in GNU/Hurd systems, and so commit
94585166dfea8232c248044f9f4b1c217dc4ac2e "Extended-remote follow-exec" caused:

    [...]/gdb/remote.c: In member function 'void remote_target::remote_parse_stop_reply(const char*, stop_reply*)':
    [...]/gdb/remote.c:7343:22: error: 'PATH_MAX' was not declared in this scope
            char pathname[PATH_MAX];
                          ^~~~~~~~

	gdb/
	* remote.c (remote_target::remote_parse_stop_reply): Avoid using
	'PATH_MAX'.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, hurd] Repair build after "Share fork_inferior et al with gdbserver" changes
@ 2019-02-14 19:25 sergiodj+buildbot
  2019-02-14 20:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-14 19:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6c6ef69fb4e95d991fa5462d067d3f71a73fedce ***

Author: Thomas Schwinge <thomas@codesourcery.com>
Branch: master
Commit: 6c6ef69fb4e95d991fa5462d067d3f71a73fedce

[gdb, hurd] Repair build after "Share fork_inferior et al with gdbserver" changes

..., that is commit 2090129c36c7e582943b7d300968d19b46160d84 causing:

    [...]/gdb/gnu-nat.c: In function 'void gnu_ptrace_me()':
    [...]/gdb/gnu-nat.c:2133:5: error: 'trace_start_error_with_name' was not declared in this scope
         trace_start_error_with_name ("ptrace");
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    [...]/gdb/gnu-nat.c:2133:5: note: suggested alternative: 'throw_perror_with_name'
         trace_start_error_with_name ("ptrace");
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
         throw_perror_with_name
    [...]/gdb/gnu-nat.c: In function 'void gnu_create_inferior(target_ops*, const char*, const string&, char**, int)':
    [...]/gdb/gnu-nat.c:2147:9: error: 'fork_inferior' was not declared in this scope
       pid = fork_inferior (exec_file, allargs, env, gnu_ptrace_me,
             ^~~~~~~~~~~~~
    [...]/gdb/gnu-nat.c:2147:9: note: suggested alternative: 'exit_inferior'
       pid = fork_inferior (exec_file, allargs, env, gnu_ptrace_me,
             ^~~~~~~~~~~~~
             exit_inferior
    [...]/gdb/gnu-nat.c:2174:30: error: 'START_INFERIOR_TRAPS_EXPECTED' was not declared in this scope
       gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    /usr/bin/ld: gnu-nat.o: in function `gnu_ptrace_me()':
    [...]/gdb/gnu-nat.c:2134: undefined reference to `trace_start_error_with_name(char const*)'
    /usr/bin/ld: gnu-nat.o: in function `gnu_create_inferior(target_ops*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, int)':
    [...]/gdb/gnu-nat.c:2148: undefined reference to `fork_inferior(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*))'
    /usr/bin/ld: fork-child.o: in function `gdb_startup_inferior(int, int)':
    [...]/gdb/fork-child.c:136: undefined reference to `startup_inferior(int, int, target_waitstatus*, ptid_t*)'
    collect2: error: ld returned 1 exit status

	gdb/
	* configure.nat [gdb_host == i386gnu] (NATDEPFILES): Add
	'nat/fork-inferior.o'.
	* gnu-nat.c: #include "nat/fork-inferior.h".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use the correct name for various MACH-O based operating systems in comments.
@ 2019-02-15 13:15 sergiodj+buildbot
  2019-02-15 14:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 13:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 91d78b8179b061cf7c9cca423e29480bc6367fc3 ***

Author: Saagar Jha <saagar@saagarjha.com>
Branch: master
Commit: 91d78b8179b061cf7c9cca423e29480bc6367fc3

Use the correct name for various MACH-O based operating systems in comments.

include	* mach-o/loader.h: Use new OS names in comments.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] C++-ify bp_location
@ 2019-02-15 20:41 sergiodj+buildbot
  2019-02-15 21:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 20:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5f486660101ab09d50fa3bb9a10555f12722f39f ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 5f486660101ab09d50fa3bb9a10555f12722f39f

C++-ify bp_location

Philippe noticed a memory leak coming from ada_catchpoint_location --
it was not freeing the "function_name" member from its base class:

==14141== 114 bytes in 4 blocks are definitely lost in loss record 1,055 of 3,424
==14141==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==14141==    by 0x405107: xmalloc (common-utils.c:44)
==14141==    by 0x7563F9: xstrdup (xstrdup.c:34)
==14141==    by 0x3B82B3: set_breakpoint_location_function(bp_location*, int) (breakpoint.c:7156)
==14141==    by 0x3C112B: add_location_to_breakpoint(breakpoint*, symtab_and_line const*) (breakpoint.c:8609)
==14141==    by 0x3C127A: init_raw_breakpoint(breakpoint*, gdbarch*, symtab_and_line, bptype, breakpoint_ops const*) (breakpoint.c:7187)
==14141==    by 0x3C1B52: init_ada_exception_breakpoint(breakpoint*, gdbarch*, symtab_and_line, char const*, breakpoint_ops const*, int, int, int) (breakpoint.c:11262)
==14141==    by 0x381C2E: create_ada_exception_catchpoint(gdbarch*, ada_exception_catchpoint_kind, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, int) (ada-lang.c:13255)

This patch fixes the problem by further C++-ifying bp_location.  In
particular, bp_location_ops is now removed, and the "dtor" function
pointer is replaced with an ordinary destructor.

gdb/ChangeLog
2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
	    Tom Tromey  <tromey@adacore.com>

	* breakpoint.c (~bp_location): Rename from bp_location_dtor.
	(bp_location_ops): Remove.
	(base_breakpoint_allocate_location): Update.
	(free_bp_location): Update.
	* ada-lang.c (class ada_catchpoint_location)
	<ada_catchpoint_location>: Remove ops parameter.
	(ada_catchpoint_location_dtor): Remove.
	(ada_catchpoint_location_ops): Remove.
	(allocate_location_exception): Update.
	* breakpoint.h (struct bp_location_ops): Remove.
	(class bp_location) <bp_location>: Remove bp_location_ops
	parameter.
	<~bp_location>: Add destructor.
	<ops>: Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix memory leak in create_ada_exception_catchpoint
@ 2019-02-15 20:53 sergiodj+buildbot
  2019-02-15 23:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 20:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cc12f4a8f97791cf9729ff9341f7c0fbd9d6a79e ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: cc12f4a8f97791cf9729ff9341f7c0fbd9d6a79e

Fix memory leak in create_ada_exception_catchpoint

Phillipe noticed that create_ada_exception_catchpoint was not freeing
the "addr_string" memory:

==14141== 114 bytes in 4 blocks are definitely lost in loss record 1,054 of 3,424
==14141==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==14141==    by 0x405107: xmalloc (common-utils.c:44)
==14141==    by 0x7563F9: xstrdup (xstrdup.c:34)
==14141==    by 0x381B21: ada_exception_sal (ada-lang.c:13217)
==14141==    by 0x381B21: create_ada_exception_catchpoint(gdbarch*, ada_exception_catchpoint_kind, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, int) (ada-lang.c:13251)
==14141==    by 0x3820A8: catch_ada_exception_command(char const*, int, cmd_list_element*) (ada-lang.c:13285)
==14141==    by 0x3F4828: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:1892)

This patch fixes the problem by changing ada_exception_sal to return a
std::string via its out parameter.

gdb/ChangeLog
2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
	    Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_exception_sal): Change addr_string to a
	std::string.
	(create_ada_exception_catchpoint): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Exception safety in ravenscar-thread.c
@ 2019-02-15 21:22 sergiodj+buildbot
  2019-02-16  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 21:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5b6ea500d554b173e63e1f8f0344d568ad347463 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 5b6ea500d554b173e63e1f8f0344d568ad347463

Exception safety in ravenscar-thread.c

This changes some code in ravenscar-thread.c to use scoped_restore.  I
am not sure if it matters in practice, but this makes these methods
exception-safe in case the methods lower in the target stack can
throw.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c (ravenscar_thread_target::stopped_by_sw_breakpoint)
	(ravenscar_thread_target::stopped_by_hw_breakpoint)
	(ravenscar_thread_target::stopped_by_watchpoint)
	(ravenscar_thread_target::stopped_data_address)
	(ravenscar_thread_target::core_of_thread): Use scoped_restore.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] C++-ify ravenscar_arch_ops
@ 2019-02-15 21:34 sergiodj+buildbot
  2019-02-16  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 21:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7657f14df7c697792b626efbd24ac44ad5642485 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 7657f14df7c697792b626efbd24ac44ad5642485

C++-ify ravenscar_arch_ops

This turns ravenscar_arch_ops into an abstract base class and updates
all the places where it is used.  This is an improvement because it
avoids any possibility of forgetting to set one of the function
pointers.  It also makes clear that these functions aren't intended to
be changed dynamically.

This version of the patch removes the prepare_to_store method, as it
is unused, and it is easy enough to add if it is ever needed.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* sparc-ravenscar-thread.c (struct sparc_ravenscar_ops): Derive
	from ravenscar_arch_ops.
	(sparc_ravenscar_ops::fetch_registers)
	(sparc_ravenscar_ops::store_registers): Now methods.
	(sparc_ravenscar_prepare_to_store): Remove.
	(sparc_ravenscar_ops): Redefine.
	* ravenscar-thread.h (struct ravenscar_arch_ops): Add virtual
	methods and destructor.  Remove members.
	* ravenscar-thread.c (ravenscar_thread_target::fetch_registers)
	(ravenscar_thread_target::store_registers)
	(ravenscar_thread_target::prepare_to_store): Update.
	* ppc-ravenscar-thread.c (ppc_ravenscar_generic_prepare_to_store):
	Remove.
	(struct ppc_ravenscar_powerpc_ops): Derive from
	ravenscar_arch_ops.
	(ppc_ravenscar_powerpc_ops::fetch_registers)
	(ppc_ravenscar_powerpc_ops::store_registers): Now methods.
	(ppc_ravenscar_powerpc_ops): Redefine.
	(struct ppc_ravenscar_e500_ops): Derive from ravenscar_arch_ops.
	(ppc_ravenscar_e500_ops::fetch_registers)
	(ppc_ravenscar_e500_ops::store_registers): Now methods.
	(ppc_ravenscar_e500_ops): Redefine.
	* aarch64-ravenscar-thread.c
	(aarch64_ravenscar_generic_prepare_to_store): Remove.
	(struct aarch64_ravenscar_ops): Derive from ravenscar_arch_ops.
	(aarch64_ravenscar_fetch_registers)
	(aarch64_ravenscar_store_registers): Now methods.
	(aarch64_ravenscar_ops): Redefine.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix formatting in ravenscar-thread.c
@ 2019-02-15 22:07 sergiodj+buildbot
  2019-02-16  4:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 22:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6cbcc006e95110b5d9168e9835e5df36782e975b ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 6cbcc006e95110b5d9168e9835e5df36782e975b

Fix formatting in ravenscar-thread.c

This fixes some incorrect formatting in ravenscar-thread.c.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c (ravenscar_runtime_initializer)
	(has_ravenscar_runtime, get_running_thread_id)
	(ravenscar_thread_target::resume): Fix indentation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Minor C++-ification in ravenscar-thread.c
@ 2019-02-15 22:17 sergiodj+buildbot
  2019-02-16  5:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 22:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 989f3c583d31e29029b1b7dd8ffd3afacbbb5c27 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 989f3c583d31e29029b1b7dd8ffd3afacbbb5c27

Minor C++-ification in ravenscar-thread.c

This changes some functions in ravenscar-thread.c to return "bool"
rather than int, where appropriate, and also changes "(void)" to "()".

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c (is_ravenscar_task)
	(ravenscar_task_is_currently_active): Return bool.
	(ravenscar_update_inferior_ptid, get_running_thread_msymbol)
	(_initialize_ravenscar): Remove "(void)".
	(has_ravenscar_runtime, ravenscar_runtime_initialized): Likewise.
	Return bool.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add push_target overload
@ 2019-02-15 22:29 sergiodj+buildbot
  2019-02-16  7:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 22:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dea57a626364698759d1525acf9109771d173811 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: dea57a626364698759d1525acf9109771d173811

Add push_target overload

This adds a push_target overload that takes a "target_ops_up &&".
This removes some calls to release a target_ops_up, and makes the
intent here clearer.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* target.h (push_target): Declare new overload.
	* target.c (push_target): New overload, taking an rvalue reference.
	* remote.c (remote_target::open_1): Use push_target overload.
	* corelow.c (core_target_open): Use push_target overload.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make the ravenscar thread target multi-target-ready
@ 2019-02-15 22:41 sergiodj+buildbot
  2019-02-16  8:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 22:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0b790b1eeb3741217d4b7b419aca1ed77a114b6c ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 0b790b1eeb3741217d4b7b419aca1ed77a114b6c

Make the ravenscar thread target multi-target-ready

This changes ravenscar-thread.c to make it ready for multi-target.
This is done by moving globals into the target, and then arranging to
allocate the target with "new" and delete the target in its "close"
method.

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c (base_ptid): Remove.
	(struct ravenscar_thread_target) <close>: New method.
	<m_base_ptid>: New member.
	<update_inferior_ptid, active_task, task_is_currently_active,
	runtime_initialized>: Declare methods.
	<ravenscar_thread_target>: Add constructor.
	(ravenscar_thread_target::task_is_currently_active)
	(ravenscar_thread_target::update_inferior_ptid)
	(ravenscar_runtime_initialized): Rename.  Now methods.
	(ravenscar_thread_target::resume, ravenscar_thread_target::wait)
	(ravenscar_thread_target::update_thread_list): Update.
	(ravenscar_thread_target::active_task): Now method.
	(ravenscar_thread_target::store_registers)
	(ravenscar_thread_target::prepare_to_store)
	(ravenscar_thread_target::prepare_to_store)
	(ravenscar_thread_target::mourn_inferior): Update.
	(ravenscar_inferior_created): Use "new" to create target.
	(ravenscar_thread_target::get_ada_task_ptid): Update.
	(_initialize_ravenscar): Don't initialize base_ptid.
	(ravenscar_ops): Remove global.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Special-case wildcard requests in ravenscar-thread.c
@ 2019-02-15 22:54 sergiodj+buildbot
  2019-02-16  9:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-15 22:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 485b851b68ea035e3c49234dafcddb97c4f54a30 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 485b851b68ea035e3c49234dafcddb97c4f54a30

Special-case wildcard requests in ravenscar-thread.c

ravenscar-thread.c intercepts resume and wait target requests and
replaces the requested ptid with the ptid of the underlying CPU.
However, this is incorrect when a request is made with a wildcard
ptid.

This patch adds a special case to ravenscar-thread.c for
minus_one_ptid.  I don't believe a special case for process wildcards
is necessary, so I have not added that.

Joel's description explains the bug well:

At the user level, we noticed the issue because we had a test were
we insert a breakpoint one some code which is only run from, say,
CPU #2, whereas we unfortunately resumed the execution after having
stopped somewhere in CPU #1. As a result, we sent an order to resume
CPU #1, which starves CPU #2 forever, because the code in CPU #1
waits for some of the Ada tasks allocated to CPU #2 (and we never
reach our breakpoint either).

gdb/ChangeLog
2019-02-15  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c (ravenscar_thread_target::resume)
	(ravenscar_thread_target::wait): Special case wildcard requests.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] type_align: handle range types the same as ints and enums
@ 2019-02-17 15:18 sergiodj+buildbot
  2019-02-17 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-17 15:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 75ba10dc558a450c7dbcdc24f816f6709f2b29f7 ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 75ba10dc558a450c7dbcdc24f816f6709f2b29f7

type_align: handle range types the same as ints and enums

This commit enhances type_align to handle TYPE_CODE_RANGE types
the same as integers and enums, rather than returning zero,
which means for this function that it could not determine its
alignment.

gdb/ChangeLog:

	* gdbtypes.c (type_align): Handle TYPE_CODE_RANGE the same as
        integers and enumeration types.

Tested on x86_64-linux. Also tested on a variety of platforms
(with CPUs being ARM, AArch64, Leon3 (SPARC-like), PowerPC,
PowerPC64, RV64, Visium, x86, x86_64).


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add styling to macro commands
@ 2019-02-17 23:50 sergiodj+buildbot
  2019-02-18  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-17 23:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6506371f0671dd5ca11127fee4db8d8d7fec157f ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6506371f0671dd5ca11127fee4db8d8d7fec157f

Add styling to macro commands

This adds filename styling to "info macro".

gdb/ChangeLog
2019-02-17  Tom Tromey  <tom@tromey.com>

	* macrocmd.c (show_pp_source_pos): Style the file names.

gdb/testsuite/ChangeLog
2019-02-17  Tom Tromey  <tom@tromey.com>

	* gdb.base/style.exp: Use -g3 to compile when possible.  Add test
	for macro styling.
	* gdb.base/style.c (SOME_MACRO): New macro.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change macro_source_fullname to return a std::string
@ 2019-02-18  0:02 sergiodj+buildbot
  2019-02-18  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-18  0:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9409233b0ec8a052eacc5846ee054f224f7e7213 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 9409233b0ec8a052eacc5846ee054f224f7e7213

Change macro_source_fullname to return a std::string

While working on the previous patch, I noticed that if
macro_source_fullname returned a std::string, then the callers would
be simplified.  This patch implements this idea.

gdb/ChangeLog
2019-02-17  Tom Tromey  <tom@tromey.com>

	* macrotab.h (macro_source_fullname): Return a std::string.
	* macrotab.c (macro_include, check_for_redefinition)
	(macro_undef, macro_lookup_definition, foreach_macro)
	(foreach_macro_in_scope): Update.
	(macro_source_fullname): Return a std::string.
	* macrocmd.c (show_pp_source_pos): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24225, nios2 buffer overflow
@ 2019-02-18  6:37 sergiodj+buildbot
  2019-02-18  6:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-18  6:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a31b8bd9a054b494fd6ab18f14d84a2f0690f8a1 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: a31b8bd9a054b494fd6ab18f14d84a2f0690f8a1

PR24225, nios2 buffer overflow

	PR 24225
	* elf32-nios2.c (nios2_elf32_relocate_section): Use asprintf and
	PRIx64 to generate warning messages.  Print local sym names too.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leaks of 'per program space' and 'per inferior' ada task data.
@ 2019-02-18 21:50 sergiodj+buildbot
  2019-02-18 22:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-18 21:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 040b3e95e41f7af82e95c781aadc56a16019fd68 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 040b3e95e41f7af82e95c781aadc56a16019fd68

Fix leaks of 'per program space' and 'per inferior' ada task data.

Valgrind reports leaks such as the below.
Fix these leaks by changing ada_tasks_pspace_data_handle
and ada_tasks_inferior_data_handle to use the 'with_cleanup' register variant.

Tested on debian/amd64 natively and under Valgrind.

==26346== 56 bytes in 1 blocks are definitely lost in loss record 631 of 3,249
==26346==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==26346==    by 0x38F911: get_ada_tasks_inferior_data(inferior*) (ada-tasks.c:281)
==26346==    by 0x38FA3F: ada_tasks_invalidate_inferior_data (ada-tasks.c:1362)
==26346==    by 0x38FA3F: ada_tasks_new_objfile_observer(objfile*) (ada-tasks.c:1411)
==26346==    by 0x60CBC5: operator() (functional:2127)
==26346==    by 0x60CBC5: notify (observable.h:106)
==26346==    by 0x60CBC5: clear_symtab_users(enum_flags<symfile_add_flag>) (symfile.c:2903)
...

==26346== 104 bytes in 1 blocks are definitely lost in loss record 984 of 3,249
==26346==    at 0x4C2E0BC: calloc (vg_replace_malloc.c:762)
==26346==    by 0x4056F0: xcalloc (common-utils.c:84)
==26346==    by 0x38F8AE: xcnew<ada_tasks_pspace_data> (poison.h:122)
==26346==    by 0x38F8AE: get_ada_tasks_pspace_data(program_space*) (ada-tasks.c:253)
==26346==    by 0x38FA77: ada_tasks_invalidate_pspace_data (ada-tasks.c:1354)
==26346==    by 0x38FA77: ada_tasks_new_objfile_observer(objfile*) (ada-tasks.c:1394)
==26346==    by 0x60CBC5: operator() (functional:2127)
==26346==    by 0x60CBC5: notify (observable.h:106)
...

gdb/ChangeLog
2019-02-18  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* ada-task.c (_initialize_tasks): Use 'with_cleanup' register
	variant for ada_tasks_pspace_data_handle and
	ada_tasks_inferior_data_handle.
	(ada_tasks_pspace_data_cleanup): New function.
	(ada_tasks_inferior_data_cleanup): New function.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24235, Read memory violation in pei-x86_64.c
@ 2019-02-19 12:37 sergiodj+buildbot
  2019-02-19 13:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-19 12:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 179f2db0d9c397d7dd8a59907b84208b79f7f48c ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 179f2db0d9c397d7dd8a59907b84208b79f7f48c

PR24235, Read memory violation in pei-x86_64.c

	PR 24235
	* pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
	attempting to prevent read past end of section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Minor Ada task cleanups
@ 2019-02-19 19:45 sergiodj+buildbot
  2019-02-19 20:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-19 19:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 98814c6c111a0681e691a72834c8dcc5b8d1bb3a ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 98814c6c111a0681e691a72834c8dcc5b8d1bb3a

Minor Ada task cleanups

While working on the Ada task code, I noticed a few things that could
be cleaned up:

* task_list_valid_p was not set in all cases in ada_build_task_list.
  This causes many needless re-fetches of the task list.

* task_list_valid_p can be bool, and various functions can also return
  bool.

* Nothing checks the return value of read_known_tasks, so it can be
  changed to return void.

* The call to ada_build_task_list in
  ravenscar_thread_target::update_thread_list is redundant, because
  this is the first thing done by iterate_over_live_ada_tasks.

Tested using the internal AdaCore test suite against a ravenscar
target.

gdb/ChangeLog
2019-02-19  Tom Tromey  <tromey@adacore.com>

	* ravenscar-thread.c
	(ravenscar_thread_target::update_thread_list): Don't call
	ada_build_task_list.
	* ada-lang.h (ada_build_task_list): Don't declare.
	* ada-tasks.c (struct ada_tasks_inferior_data)
	<task_list_valid_p>: Now bool.
	(read_known_tasks, ada_task_list_changed)
	(ada_tasks_invalidate_inferior_data): Update.
	(read_known_tasks_array): Return bool.
	(read_known_tasks_list): Likewise.
	(read_known_tasks): Return void.
	(ada_build_task_list): Now static.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix error message and use-after-free on errors in nested sourced files
@ 2019-02-20  2:30 sergiodj+buildbot
  2019-02-20  4:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20  2:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6caa91b6e58a563be7eeb2844fd2622158d78354 ***

Author: Simon Marchi <simon.marchi@polymtl.ca>
Branch: master
Commit: 6caa91b6e58a563be7eeb2844fd2622158d78354

Fix error message and use-after-free on errors in nested sourced files

Errors that happen in nested sourced files (when a sourced file sources
another file) lead to a wrong error message, or use-after-free.

For example, if I put this in "a.gdb":

    command_that_doesnt_exist

and this in "b.gdb":

   source a.gdb

and try to "source b.gdb" in GDB, the result may look like this:

    (gdb) source b.gdb
    b.gdb:1: Error in sourced command file:
    _that_doesnt_exist:1: Error in sourced command file:
    Undefined command: "command_that_doesnt_exist".  Try "help".

Notice the wrong file name where "a.gdb" should be.  The exact result
may differ, depending on the feelings of the memory allocator.

What happens is:

- The "source a.gdb" command is saved by command_line_append_input_line
  in command_line_input's static buffer.
- Since we are sourcing a file, the script_from_file function stores the
  script name (a.gdb) in the source_file_name global.  However, it doesn't
  do a copy, it just saves a pointer to command_line_input's static buffer.
- The "command_that_doesnt_exist" command is saved by
  command_line_append_input_line in command_line_input's static buffer.
  Depending on what xrealloc does, source_file_name may now point to
  freed memory, or at the minimum the data it was pointing to was
  overwritten.
- When the error is handled in script_from_file, we dererence
  source_file_name to print the name of the file in which the error
  occured.

To fix it, I made source_file_name an std::string, so that keeps a copy of
the file name instead of pointing to a buffer with a too small
lifetime.

With this patch, the expected filename is printed, and no use-after-free
occurs:

    (gdb) source b.gdb
    b.gdb:1: Error in sourced command file:
    a.gdb:1: Error in sourced command file:
    Undefined command: "command_that_doesnt_exist".  Try "help".

I passed explicit template parameters to make_scoped_restore
(<std::string, const std::string &>), so that the second parameter is
passed by reference and avoid a copy.

It was not as obvious as I first thought to change gdb.base/source.exp
to test this, because source commands inside sourced files are
interpreted relative to GDB's current working directory, not the
directory of the currently sourced file.  As a workaround, I moved the
snippet that tests errors after the snippet that adds the source
directory to the search path.  This way, the "source source-error-1.gdb"
line in source-error.exp manages to find the file.

For reference, here is what ASAN reports when use-after-free occurs:

(gdb) source b.gdb
=================================================================
==18498==ERROR: AddressSanitizer: heap-use-after-free on address 0x60c000019847 at pc 0x7f1d3645de8e bp 0x7ffdcb892e50 sp 0x7ffdcb8925c8
READ of size 6 at 0x60c000019847 thread T0
    #0 0x7f1d3645de8d in printf_common /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc:546
    #1 0x7f1d36477175 in __interceptor_vasprintf /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1525
    #2 0x5632eaffa277 in xstrvprintf(char const*, __va_list_tag*) /home/simark/src/binutils-gdb/gdb/common/common-utils.c:122
    #3 0x5632eaff96d1 in throw_it /home/simark/src/binutils-gdb/gdb/common/common-exceptions.c:351
    #4 0x5632eaff98df in throw_verror(errors, char const*, __va_list_tag*) /home/simark/src/binutils-gdb/gdb/common/common-exceptions.c:379
    #5 0x5632eaff9a2a in throw_error(errors, char const*, ...) /home/simark/src/binutils-gdb/gdb/common/common-exceptions.c:394
    #6 0x5632eafca21a in script_from_file(_IO_FILE*, char const*) /home/simark/src/binutils-gdb/gdb/cli/cli-script.c:1553
    #7 0x5632eaf8a500 in source_script_from_stream /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:569
    #8 0x5632eaf8a735 in source_script_with_search /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:605
    #9 0x5632eaf8ab20 in source_command /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:664
    #10 0x5632eafa8b4a in do_const_cfunc /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:106
    #11 0x5632eafb0687 in cmd_func(cmd_list_element*, char const*, int) /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:1892
    #12 0x5632ebf3dd87 in execute_command(char const*, int) /home/simark/src/binutils-gdb/gdb/top.c:630
    #13 0x5632eb3b25d3 in command_handler(char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:583
    #14 0x5632ebf3cf09 in read_command_file(_IO_FILE*) /home/simark/src/binutils-gdb/gdb/top.c:425
    #15 0x5632eafca054 in script_from_file(_IO_FILE*, char const*) /home/simark/src/binutils-gdb/gdb/cli/cli-script.c:1547
    #16 0x5632eaf8a500 in source_script_from_stream /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:569
    #17 0x5632eaf8a735 in source_script_with_search /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:605
    #18 0x5632eaf8ab20 in source_command /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:664
    #19 0x5632eafa8b4a in do_const_cfunc /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:106
    #20 0x5632eafb0687 in cmd_func(cmd_list_element*, char const*, int) /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:1892
    #21 0x5632ebf3dd87 in execute_command(char const*, int) /home/simark/src/binutils-gdb/gdb/top.c:630
    #22 0x5632eb3b25d3 in command_handler(char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:583
    #23 0x5632eb3b2f87 in command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) /home/simark/src/binutils-gdb/gdb/event-top.c:770
    #24 0x5632eb3b0fe1 in gdb_rl_callback_handler /home/simark/src/binutils-gdb/gdb/event-top.c:213
    #25 0x5632ec1c8729 in rl_callback_read_char /home/simark/src/binutils-gdb/readline/callback.c:220
    #26 0x5632eb3b0b8f in gdb_rl_callback_read_char_wrapper_noexcept /home/simark/src/binutils-gdb/gdb/event-top.c:175
    #27 0x5632eb3b0da1 in gdb_rl_callback_read_char_wrapper /home/simark/src/binutils-gdb/gdb/event-top.c:192
    #28 0x5632eb3b2186 in stdin_event_handler(int, void*) /home/simark/src/binutils-gdb/gdb/event-top.c:511
    #29 0x5632eb3aa6a9 in handle_file_event /home/simark/src/binutils-gdb/gdb/event-loop.c:733
    #30 0x5632eb3aaf41 in gdb_wait_for_event /home/simark/src/binutils-gdb/gdb/event-loop.c:859
    #31 0x5632eb3a88ea in gdb_do_one_event() /home/simark/src/binutils-gdb/gdb/event-loop.c:347
    #32 0x5632eb3a89bf in start_event_loop() /home/simark/src/binutils-gdb/gdb/event-loop.c:371
    #33 0x5632eb76fbfc in captured_command_loop /home/simark/src/binutils-gdb/gdb/main.c:330
    #34 0x5632eb772ea8 in captured_main /home/simark/src/binutils-gdb/gdb/main.c:1176
    #35 0x5632eb773071 in gdb_main(captured_main_args*) /home/simark/src/binutils-gdb/gdb/main.c:1192
    #36 0x5632eabfe7f9 in main /home/simark/src/binutils-gdb/gdb/gdb.c:32
    #37 0x7f1d3554f222 in __libc_start_main (/usr/lib/libc.so.6+0x24222)
    #38 0x5632eabfe5dd in _start (/home/simark/build/binutils-gdb/gdb/gdb+0x195d5dd)

0x60c000019847 is located 7 bytes inside of 128-byte region [0x60c000019840,0x60c0000198c0)
freed by thread T0 here:
    #0 0x7f1d36502491 in __interceptor_realloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:105
    #1 0x5632eaff9f47 in xrealloc /home/simark/src/binutils-gdb/gdb/common/common-utils.c:62
    #2 0x5632eaff6b44 in buffer_grow(buffer*, char const*, unsigned long) /home/simark/src/binutils-gdb/gdb/common/buffer.c:40
    #3 0x5632eb3b271d in command_line_append_input_line /home/simark/src/binutils-gdb/gdb/event-top.c:614
    #4 0x5632eb3b28c6 in handle_line_of_input(buffer*, char const*, int, char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:654
    #5 0x5632ebf402a6 in command_line_input(char const*, char const*) /home/simark/src/binutils-gdb/gdb/top.c:1252
    #6 0x5632ebf3cee9 in read_command_file(_IO_FILE*) /home/simark/src/binutils-gdb/gdb/top.c:422
    #7 0x5632eafca054 in script_from_file(_IO_FILE*, char const*) /home/simark/src/binutils-gdb/gdb/cli/cli-script.c:1547
    #8 0x5632eaf8a500 in source_script_from_stream /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:569
    #9 0x5632eaf8a735 in source_script_with_search /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:605
    #10 0x5632eaf8ab20 in source_command /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:664
    #11 0x5632eafa8b4a in do_const_cfunc /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:106
    #12 0x5632eafb0687 in cmd_func(cmd_list_element*, char const*, int) /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:1892
    #13 0x5632ebf3dd87 in execute_command(char const*, int) /home/simark/src/binutils-gdb/gdb/top.c:630
    #14 0x5632eb3b25d3 in command_handler(char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:583
    #15 0x5632ebf3cf09 in read_command_file(_IO_FILE*) /home/simark/src/binutils-gdb/gdb/top.c:425
    #16 0x5632eafca054 in script_from_file(_IO_FILE*, char const*) /home/simark/src/binutils-gdb/gdb/cli/cli-script.c:1547
    #17 0x5632eaf8a500 in source_script_from_stream /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:569
    #18 0x5632eaf8a735 in source_script_with_search /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:605
    #19 0x5632eaf8ab20 in source_command /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:664
    #20 0x5632eafa8b4a in do_const_cfunc /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:106
    #21 0x5632eafb0687 in cmd_func(cmd_list_element*, char const*, int) /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:1892
    #22 0x5632ebf3dd87 in execute_command(char const*, int) /home/simark/src/binutils-gdb/gdb/top.c:630
    #23 0x5632eb3b25d3 in command_handler(char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:583
    #24 0x5632eb3b2f87 in command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) /home/simark/src/binutils-gdb/gdb/event-top.c:770
    #25 0x5632eb3b0fe1 in gdb_rl_callback_handler /home/simark/src/binutils-gdb/gdb/event-top.c:213
    #26 0x5632ec1c8729 in rl_callback_read_char /home/simark/src/binutils-gdb/readline/callback.c:220
    #27 0x5632eb3b0b8f in gdb_rl_callback_read_char_wrapper_noexcept /home/simark/src/binutils-gdb/gdb/event-top.c:175
    #28 0x5632eb3b0da1 in gdb_rl_callback_read_char_wrapper /home/simark/src/binutils-gdb/gdb/event-top.c:192
    #29 0x5632eb3b2186 in stdin_event_handler(int, void*) /home/simark/src/binutils-gdb/gdb/event-top.c:511

previously allocated by thread T0 here:
    #0 0x7f1d36502491 in __interceptor_realloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:105
    #1 0x5632eaff9f47 in xrealloc /home/simark/src/binutils-gdb/gdb/common/common-utils.c:62
    #2 0x5632eaff6b44 in buffer_grow(buffer*, char const*, unsigned long) /home/simark/src/binutils-gdb/gdb/common/buffer.c:40
    #3 0x5632eb3b271d in command_line_append_input_line /home/simark/src/binutils-gdb/gdb/event-top.c:614
    #4 0x5632eb3b28c6 in handle_line_of_input(buffer*, char const*, int, char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:654
    #5 0x5632ebf402a6 in command_line_input(char const*, char const*) /home/simark/src/binutils-gdb/gdb/top.c:1252
    #6 0x5632ebf3cee9 in read_command_file(_IO_FILE*) /home/simark/src/binutils-gdb/gdb/top.c:422
    #7 0x5632eafca054 in script_from_file(_IO_FILE*, char const*) /home/simark/src/binutils-gdb/gdb/cli/cli-script.c:1547
    #8 0x5632eaf8a500 in source_script_from_stream /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:569
    #9 0x5632eaf8a735 in source_script_with_search /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:605
    #10 0x5632eaf8ab20 in source_command /home/simark/src/binutils-gdb/gdb/cli/cli-cmds.c:664
    #11 0x5632eafa8b4a in do_const_cfunc /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:106
    #12 0x5632eafb0687 in cmd_func(cmd_list_element*, char const*, int) /home/simark/src/binutils-gdb/gdb/cli/cli-decode.c:1892
    #13 0x5632ebf3dd87 in execute_command(char const*, int) /home/simark/src/binutils-gdb/gdb/top.c:630
    #14 0x5632eb3b25d3 in command_handler(char const*) /home/simark/src/binutils-gdb/gdb/event-top.c:583
    #15 0x5632eb3b2f87 in command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) /home/simark/src/binutils-gdb/gdb/event-top.c:770
    #16 0x5632eb3b0fe1 in gdb_rl_callback_handler /home/simark/src/binutils-gdb/gdb/event-top.c:213
    #17 0x5632ec1c8729 in rl_callback_read_char /home/simark/src/binutils-gdb/readline/callback.c:220
    #18 0x5632eb3b0b8f in gdb_rl_callback_read_char_wrapper_noexcept /home/simark/src/binutils-gdb/gdb/event-top.c:175
    #19 0x5632eb3b0da1 in gdb_rl_callback_read_char_wrapper /home/simark/src/binutils-gdb/gdb/event-top.c:192
    #20 0x5632eb3b2186 in stdin_event_handler(int, void*) /home/simark/src/binutils-gdb/gdb/event-top.c:511
    #21 0x5632eb3aa6a9 in handle_file_event /home/simark/src/binutils-gdb/gdb/event-loop.c:733
    #22 0x5632eb3aaf41 in gdb_wait_for_event /home/simark/src/binutils-gdb/gdb/event-loop.c:859
    #23 0x5632eb3a88ea in gdb_do_one_event() /home/simark/src/binutils-gdb/gdb/event-loop.c:347
    #24 0x5632eb3a89bf in start_event_loop() /home/simark/src/binutils-gdb/gdb/event-loop.c:371
    #25 0x5632eb76fbfc in captured_command_loop /home/simark/src/binutils-gdb/gdb/main.c:330
    #26 0x5632eb772ea8 in captured_main /home/simark/src/binutils-gdb/gdb/main.c:1176
    #27 0x5632eb773071 in gdb_main(captured_main_args*) /home/simark/src/binutils-gdb/gdb/main.c:1192
    #28 0x5632eabfe7f9 in main /home/simark/src/binutils-gdb/gdb/gdb.c:32
    #29 0x7f1d3554f222 in __libc_start_main (/usr/lib/libc.so.6+0x24222)

SUMMARY: AddressSanitizer: heap-use-after-free /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc:546 in printf_common

gdb/ChangeLog:

	* top.h (source_file_name): Change to std::string.
	* top.c (source_file_name): Likewise.
	(command_line_input): Adjust.
	* cli/cli-script.c (script_from_file): Adjust.

gdb/testsuite/ChangeLog:

	* gdb.base/source.exp: Move "error in sourced script" code to
	the end.
	* gdb.base/source-error.gdb: Move contents to
	source-error-1.gdb.  Add new code to source source-error-1.gdb.
	* gdb.base/source-error-1.gdb: New file, from previous
	source-error.gdb.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use or1k-darwin host SHARED_LIBADD for *-darwin.
@ 2019-02-20  4:32 sergiodj+buildbot
  2019-02-20  5:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20  4:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT edd01d077c5f7a0f76ec4fb77b5b9f5b151fa50a ***

Author: Michael Roitzsch <reactorcontrol@icloud.com>
Branch: master
Commit: edd01d077c5f7a0f76ec4fb77b5b9f5b151fa50a

Use or1k-darwin host SHARED_LIBADD for *-darwin.

	* configure.ac (SHARED_LIBADD): Add -liberty -lintl for all
	Darwin hosts, not just or1k.
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Check asprintf return value
@ 2019-02-20  8:48 sergiodj+buildbot
  2019-02-20 10:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20  8:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 34d75fb5c419a23922174c520e124523e01114c4 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 34d75fb5c419a23922174c520e124523e01114c4

Check asprintf return value

git a31b8bd9a05 introduced a warning (depending on your system
headers).

	PR 24225
	* elf32-nios2.c (nios2_elf32_relocate_section): Check asprintf
	return value.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Add pauth core file section
@ 2019-02-20 10:57 sergiodj+buildbot
  2019-02-20 12:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20 10:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e6c3b5bfb449d1a02d26f3c4bae5b732951479fc ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: e6c3b5bfb449d1a02d26f3c4bae5b732951479fc

AArch64: Add pauth core file section

Used for the AArch64 pointer authentication code mask registers in Arm v8.3-a.

NT_ARM_PAC_MASK matches the value in Linux include/uapi/linux/elf.h

include/ChangeLog:

	* elf/common.h (NT_ARM_PAC_MASK): Add define.

bfd/ChangeLog:

	* elf-bfd.h (elfcore_write_aarch_pauth): Add declaration.
	* elf.c (elfcore_grok_aarch_pauth): New function.
	(elfcore_grok_note): Check for NT_ARM_PAC_MASK.
	(elfcore_write_aarch_pauth): New function.
	(elfcore_write_register_note): Check for AArch64 pauth section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd: xtensa: fix callx relaxation
@ 2019-02-20 11:09 sergiodj+buildbot
  2019-02-20 13:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20 11:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT eed62915fd5b733632af343fbf3d47c7364f8e36 ***

Author: Max Filippov <jcmvbkbc@gmail.com>
Branch: master
Commit: eed62915fd5b733632af343fbf3d47c7364f8e36

bfd: xtensa: fix callx relaxation

Big section alignment requirements between source and destination of a
long call can result in making call range bigger than what's reachable
by the call opcode. Add biggest section alignment of sections between
the call site and call destination to the call distance when making
long call relaxation decision.

2019-02-20  Eric Tsai  <erictsai@cadence.com>
bfd/
	* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
	sections between the call site and call destination and adjust
	call distance by the largest alignment.

ld/
	* testsuite/ld-xtensa/call_overflow.d: New test definition.
	* testsuite/ld-xtensa/call_overflow1.s: New test source.
	* testsuite/ld-xtensa/call_overflow2.s: New test source.
	* testsuite/ld-xtensa/call_overflow3.s: New test source.
	* testsuite/ld-xtensa/xtensa.exp: Add call_overflow test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix typos in symtab_symbol_info
@ 2019-02-20 19:48 sergiodj+buildbot
  2019-02-20 20:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-20 19:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0c95f9ed6c0978ae421048552c15065d32c45c30 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 0c95f9ed6c0978ae421048552c15065d32c45c30

Fix typos in symtab_symbol_info

symtab_symbol_info has a couple of messages that say "regulation
expression".  I think "regular expression" was meant, so this patch
changes it.

gdb/ChangeLog
2019-02-20  Tom Tromey  <tom@tromey.com>

	* symtab.c (symtab_symbol_info): Fix typos.

gdb/testsuite/ChangeLog
2019-02-20  Tom Tromey  <tom@tromey.com>

	* gdb.base/info_qt.exp: Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Document style behavior in batch mode.
@ 2019-02-21 18:38 sergiodj+buildbot
  2019-02-21 19:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-21 18:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7557a51431744346c5d281e1b3a55b1fb985cbad ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 7557a51431744346c5d281e1b3a55b1fb985cbad

Document style behavior in batch mode.

Style is disabled when running in batch mode.

gdb/ChangeLog:

	* NEWS: Update style defaults.

gdb/doc/ChangeLog:

	* gdb.texinfo: Update style defaults.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix symtab/23853: symlinked default symtab
@ 2019-02-22 20:22 sergiodj+buildbot
  2019-02-22 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-22 20:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bb995d00b3eef2f48d0be895c3509a7ddd8280a1 ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: bb995d00b3eef2f48d0be895c3509a7ddd8280a1

Fix symtab/23853: symlinked default symtab

This patch attempts to fix a bug dealing with setting breakpoints
in default symtabs that are symlinks.  For example:

(gdb) list
11	   GNU General Public License for more details.
12
13	   You should have received a copy of the GNU General Public License
14	   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
15
16	static int
17	foo (void)
18	{
19	  return 0; /* break here  */
20	}
(gdb)
21
22	int
23	main (void)
24	{
25	  return foo ();
26	}
(gdb) b 19
No line 19 in the current file.
Make breakpoint pending on future shared library load? (y or [n])

The problem here is that when create_sals_line_offset sets the default
symtab, it immediately calls symtab_to_fullname, passing that fullname
to collect_symtabs_from_filename to find all matching symtabs.  This
fails because we end up looking for a symtab with the name of the
actual file on disk (which is different in this case because of the
symlink) instead of the one stored in the debug info.

Since we already have the lookup name of the default symtab, use it
instead of the fullname. [This fullname thing was originally added
in 2007 in a series dealing with *displaying* absolute file names.
Clearly, this instance has nothing to do with the display of file names.]

gdb/ChangeLog

	PR symtab/23853
	* linespec.c (create_sals_line_offset): Search for the default
	symtab's filename instead of its fullname.

gdb/testsuite/ChangeLog

	PR symtab/23853
	* gdb.base/symlink-sourcefile.c: New file.
	* gdb.base/symlink-sourcefile.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Look for build-id-based separate debug files under the sysroot
@ 2019-02-22 21:06 sergiodj+buildbot
  2019-02-23  0:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-22 21:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 07bc701d03167b8006835da583a03d98177cd4b6 ***

Author: Simon Marchi <simon.marchi@polymtl.ca>
Branch: master
Commit: 07bc701d03167b8006835da583a03d98177cd4b6

Look for build-id-based separate debug files under the sysroot

When looking for a separate debug file that matches a given build-id,
GDB only looks in the host's debug dir (typically /usr/lib/debug).  This
patch makes it look in the sysroot as well.  This is to match the
behavior of GDB when using debuglink-based separate debug files,
introduced in :

402d2bfec42 ("Look for separate debug files in debug directories under a sysroot.")

In the following example, my sysroot is "/tmp/sysroot" and I am trying
to load symbols for
/tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so.  This is
the current behavior:

    (gdb) file /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so
    Reading symbols from /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so...

    Looking for separate debug info (build-id) for /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so
      Trying /usr/lib/debug/.build-id/f3/d6594d2600e985812cd4ba2ad083ac2aceae22.debug... no, unable to compute real path

    <snip>
    (No debugging symbols found in /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so)

With this patch:

    (gdb) file /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so
    Reading symbols from /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so...

    Looking for separate debug info (build-id) for /tmp/sysroot/usr/lib/arm-linux-gnueabihf/gconv/EBCDIC-AT-DE.so
      Trying /usr/lib/debug/.build-id/f3/d6594d2600e985812cd4ba2ad083ac2aceae22.debug... no, unable to compute real path
      Trying /tmp/sysroot/usr/lib/debug/.build-id/f3/d6594d2600e985812cd4ba2ad083ac2aceae22.debug... yes!
    Reading symbols from /tmp/sysroot/usr/lib/debug/.build-id/f3/d6594d2600e985812cd4ba2ad083ac2aceae22.debug...

In the original code, there is a suspicious "abfd.release ()" in
build_id_to_debug_bfd, that I don't understand.  If a file with the
right name exists but its build-id note doesn't match, we release (leak)
our reference, meaning the file will stay open?  I removed it in the new
code, so that the reference is dropped if we end up not using that file.
I tested briefly by corrupting a separate debug file to trigger this
code, nothing exploded.

gdb/ChangeLog:

	* build-id.c (build_id_to_debug_bfd_1): New function.
	(build_id_to_debug_bfd): Look for separate debug file in
	sysroot.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use '--readnever' when invoking GDB from gcore.in
@ 2019-02-23 15:20 sergiodj+buildbot
  2019-02-23 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-23 15:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8a6a85134d78531c6adb72a888844f7cfa3a5c56 ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: 8a6a85134d78531c6adb72a888844f7cfa3a5c56

Use '--readnever' when invoking GDB from gcore.in

Back when I proposed the '--readnever' feature, I somehow forgot or
decided not to include the bits related to gcore.in in the original
patch.  This patch finally updates the gcore script to invoke GDB
using '--readnever'.

We've been carrying this patch on Fedora GDB for quite some time, and
as expected the corefiles generated by gcore on Fedora don't have
problems, which I think is the best indicator that the it's safe to
generate corefiles using '--readnever'.

gdb/ChangeLog:
2019-02-23  Sergio Durigan Junior  <sergiodj@redhat.com>

	* gcore.in: Add '--readnever' option when invoking GDB.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24144, pdp11-ld overwriting section data with zeros
@ 2019-02-24 11:25 sergiodj+buildbot
  2019-02-24 11:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-24 11:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f616c36b79d0776e51213b177e45a0f5d386cc58 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: f616c36b79d0776e51213b177e45a0f5d386cc58

PR24144, pdp11-ld overwriting section data with zeros

bfd/
	PR 24144
	* pdp11.c (set_section_contents): Revert 2015-02-24 change.
gas/
	PR 24144
	* config/obj-aout.c (obj_aout_frob_file_before_fix): Write to end
	of section to ensure file contents cover aligned section size.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix BFD leak in solib-darwin.c
@ 2019-02-25 16:02 sergiodj+buildbot
  2019-02-25 16:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-25 16:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd5a152cebb201e98f3dbeca510aa39e838a1f62 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: cd5a152cebb201e98f3dbeca510aa39e838a1f62

Fix BFD leak in solib-darwin.c

commit 192b62ce0b4bb5c61188f570e127a26d2c32f716 ("Use class to manage
BFD reference counts") changed darwin_get_dyld_bfd to use:

+	dyld_bfd.release ();

rather than

-      do_cleanups (cleanup);

However, using release here leaks the BFD.  Instead, simply assigning
"sub" to "dyld_bfd" achieves what was meant.

gdb/ChangeLog
2019-02-25  Tom Tromey  <tromey@adacore.com>

	* solib-darwin.c (darwin_get_dyld_bfd): Don't release dyld_bfd.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix crash when loading dwp files
@ 2019-02-25 21:09 sergiodj+buildbot
  2019-02-25 22:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-25 21:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0a0f4c0179106ee4b8e56649c549f4175ebba994 ***

Author: Jordan Rupprecht <rupprecht@google.com>
Branch: master
Commit: 0a0f4c0179106ee4b8e56649c549f4175ebba994

Fix crash when loading dwp files

When loading dwp files, we create an array of ELF sections indexed by the ELF
section index in the dwp file. The size of this array is calculated by
section_count, as returned by bfd_count_sections, plus 1 (to account for the
null section at index 0). However, when loading the bfd file, strtab/symtab
sections are not added to the list, nor do they increment section_count, so
section_count is actually smaller than the number of ELF sections.

This happens to work when using GNU dwp, which lays out .debug section first,
with sections like .shstrtab coming at the end. Other tools, like llvm-dwp, put
.strtab first, and gdb crashes when loading those dwp files.

For instance, with the current state of gdb, loading a file like this:
$ readelf -SW <file.dwp>
[ 0] <empty>
[ 1] .debug_foo PROGBITS ...
[ 2] .strtab    STRTAB ...

... results in section_count = 2 (.debug is the only thing placed into
bfd->sections, so section_count + 1 == 2), and sectp->this_idx = 1 when mapping
over .debug_foo in dwarf2_locate_common_dwp_sections, which passes the
assertion that 1 < 2.

However, using a dwp file produced by llvm-dwp:
$ readelf -SW <file.dwp>
[ 0] <empty>
[ 1] .strtab    STRTAB ...
[ 2] .debug_foo PROGBITS ...

... results in section_count = 2 (.debug is the only thing placed into
bfd->sections, so section_count + 1 == 2), and sectp->this_idx = 2 when mapping
over .debug_foo in dwarf2_locate_common_dwp_sections, which fails the assertion
that 2 < 2.

The assertion hit is:

gdb/dwarf2read.c:13009: internal-error: void dwarf2_locate_common_dwp_sections(bfd*, asection*, void*): Assertion `elf_section_nr < dwp_file->num_sections' failed.

This patch changes the calculation of section_count to use elf_numsections,
which should return the actual number of ELF sections.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix BFD leak in dwarf2_get_dwz_file.
@ 2019-02-25 22:54 sergiodj+buildbot
  2019-02-26  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-25 22:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0f58c9e88ebee636206b946b00ea52b47056b320 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 0f58c9e88ebee636206b946b00ea52b47056b320

Fix BFD leak in dwarf2_get_dwz_file.

Previously if build_id_verify failed, dwz_bfd was cleared to NULL via
release(), but the BFD object was not destroyed.  Use reset() with
nullptr instead to delete the BFD.

gdb/ChangeLog:

	* dwarf2read.c (dwarf2_get_dwz_file): Reset dwz_bfd to nullptr
	instead of releasing ownership.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add tests for gdb.Value(bufobj, type) constructor
@ 2019-02-26 18:09 sergiodj+buildbot
  2019-02-26 23:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-26 18:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bc2a507e6e90fc5766bd68d368441f5b511c2ef1 ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: bc2a507e6e90fc5766bd68d368441f5b511c2ef1

Add tests for gdb.Value(bufobj, type) constructor

gdb/testsuite/ChangeLog:

	* gdb.python/py-value.exp (test_value_from_buffer): New proc with
	call from main program.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Define gdb.Value(bufobj, type) constructor
@ 2019-02-26 19:28 sergiodj+buildbot
  2019-02-26 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-26 19:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fe07eca59d0544eb6c56c3559da9ceece23cae6e ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: fe07eca59d0544eb6c56c3559da9ceece23cae6e

Define gdb.Value(bufobj, type) constructor

Provided a buffer BUFOBJ and a type TYPE, construct a gdb.Value object
with type TYPE, where the value's contents are taken from BUFOBJ.

E.g...

(gdb) python import struct
(gdb) python unsigned_int_type=gdb.lookup_type('unsigned int')
(gdb) python b=struct.pack('=I',0xdeadbeef)
(gdb) python v=gdb.Value(b, unsigned_int_type) ; print("%#x" % v)
0xdeadbeef

This two argument form of the gdb.Value constructor may also be used
to obtain gdb values from selected portions of buffers read with
Inferior.read_memory().  The test case (which is in a separate patch)
demonstrates this use case.

gdb/ChangeLog:

	* python/py-value.c (convert_buffer_and_type_to_value): New
	function.
	(valpy_new): Parse arguments via gdb_PyArg_ParseTupleAndKeywords.
	Add support for handling an optional second argument.  Call
	convert_buffer_and_type_to_value as appropriate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix new py-value.exp test case
@ 2019-02-26 19:57 sergiodj+buildbot
  2019-02-27  3:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-26 19:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8791793caa9a3186d4922cc786b6344e6093be73 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 8791793caa9a3186d4922cc786b6344e6093be73

Fix new py-value.exp test case

The new test case in py-value.exp fails -- the code was changed to
throw ValueError, but the test still checks for TypeError.  This patch
fixes the problem.

I'm checking this in.  Tested on x86-64 Fedora 29.

gdb/testsuite/ChangeLog
2019-02-26  Tom Tromey  <tromey@adacore.com>

	* gdb.python/py-value.exp (test_value_from_buffer): Check for
	ValueError, not TypeError.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/riscv: Use legacy register numbers in default target description
@ 2019-02-27  4:51 sergiodj+buildbot
  2019-02-27  5:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27  4:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 172fb711a2336b62cf8d58bbb4b27dc71ca8c02d ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 172fb711a2336b62cf8d58bbb4b27dc71ca8c02d

gdb/riscv: Use legacy register numbers in default target description

When the target description support was added to RISC-V, the register
numbers assigned to the fflags, frm, and fcsr control registers in the
default target descriptions didn't match the register numbers used by
GDB before the target description support was added.

What this means is that if a tools exists in the wild that is using
hard-coded register number, setup to match GDB's old numbering, then
this will have been broken (for fflags, frm, and fcsr) by the move to
target descriptions.  QEMU is such a tool.

There are a couple of solutions that could be used to work around this
issue:

 - The user can create their own xml description file with the
   register numbers setup to match their old tool, then load this by
   telling GDB 'set tdesc filename FILENAME'.

 - Update their old tool to use the newer default numbering scheme, or
   better yet add proper target description support to their tool.

 - We could have RISC-V GDB change to maintain the old defaults.

This patch changes GDB back to using the old numbering scheme.

This change is only visible to remote targets that don't supply their
own xml description file and instead rely on GDB's default numbering.

Note that even though 32bit-cpu.xml and 64bit-cpu.xml have changed,
the corresponding .c file has not, this is because the numbering added
to the registers in the xml files is number 0, this doesn't result in
any new C code being generated .

gdb/ChangeLog:

	* features/riscv/32bit-cpu.xml: Add register numbers.
	* features/riscv/32bit-fpu.c: Regenerate.
	* features/riscv/32bit-fpu.xml: Add register numbers.
	* features/riscv/64bit-cpu.xml: Add register numbers.
	* features/riscv/64bit-fpu.c: Regenerate.
	* features/riscv/64bit-fpu.xml: Add register numbers.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix build errors in aix-thread.c
@ 2019-02-27  5:00 sergiodj+buildbot
  2019-02-27  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27  5:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 143420fb0d5ae54323ba9953f0818c194635228d ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 143420fb0d5ae54323ba9953f0818c194635228d

Fix build errors in aix-thread.c

This patch fixes a few instances of unused variable and shadowed local
variable errors.

gdb/ChangeLog:

	* aix-thread.c (ptid_cmp): Remove unused variable.
	(get_signaled_thread): Likewise.
	(store_regs_user_thread): Likewise.
	(store_regs_kernel_thread): Likewise.
	(fetch_regs_kernel_thread): Remove shadowed variable.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Bump version to 8.3.50.DATE-git.
@ 2019-02-27  5:37 sergiodj+buildbot
  2019-02-27 10:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27  5:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d34d8de5e10623652ab9f1eda2ff3456f64d13b ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 3d34d8de5e10623652ab9f1eda2ff3456f64d13b

Bump version to 8.3.50.DATE-git.

Now that the GDB 8.3 branch has been created, we can
bump the version number.

gdb/ChangeLog:

	GDB 8.3 branch created (143420fb0d5ae54323ba9953f0818c194635228d):
	* version.in: Bump version to 8.3.50.DATE-git.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update NEWS post GDB 8.3 branch creation.
@ 2019-02-27  5:47 sergiodj+buildbot
  2019-02-27 12:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27  5:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9335e75a6170fbf76f60548690d5724198cf0440 ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 9335e75a6170fbf76f60548690d5724198cf0440

Update NEWS post GDB 8.3 branch creation.

gdb/ChangeLog:

	* NEWS: Create a new section for the next release branch.
	Rename the section of the current branch, now that it has
	been cut.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Restructure type_align and gdbarch_type_align
@ 2019-02-27 11:28 sergiodj+buildbot
  2019-02-27 17:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 11:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5561fc304ff2a93a33a42df63eaf18b92483b307 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 5561fc304ff2a93a33a42df63eaf18b92483b307

gdb: Restructure type_align and gdbarch_type_align

This commit restructures the relationship between the type_align
function and the gdbarch_type_align method.

The problem being addressed with this commit is this; previously the
type_align function was structured so that for "basic" types (int,
float, etc) the gdbarch_type_align hook was called, which for
"compound" types (arrays, structs, etc) the common type_align code has
a fixed method for how to extract a "basic" type and would then call
itself on that "basic" type.

The problem is that if an architecture wants to modify the alignment
rules for a "compound" type then this is not currently possible.

In the revised structure, all types pass through the
gdbarch_type_align method.  If this method returns 0 then this
indicates that the architecture has no special rules for this type,
and GDB should apply the default rules for alignment.  However, the
architecture is free to provide an alignment for any type, both
"basic" and "compound".

After this commit the default alignment rules now all live in the
type_align function, the default_type_align only ever returns 0,
meaning apply the default rules.

I've updated the 3 targets (arc, i386, and nios2) that already
override the gdbarch_type_align method to fit the new scheme.

Tested on X86-64/GNU Linux with no regressions.

gdb/ChangeLog:

	* arc-tdep.c (arc_type_align): Provide alignment for basic types,
	return 0 for other types.
	* arch-utils.c (default_type_align): Always return 0.
	* gdbarch.h: Regenerate.
	* gdbarch.sh (type_align): Extend comment.
	* gdbtypes.c (type_align): Add additional comments, always call
	gdbarch_type_align before applying the default rules.
	* i386-tdep.c (i386_type_align): Return 0 as the default rule,
	generic code will then apply a suitable default.
	* nios2-tdep.c (nios2_type_align): Provide alignment for basic
	types, return 0 for other types.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/aarch64: Use default gdbarch methods where possible
@ 2019-02-27 15:09 sergiodj+buildbot
  2019-02-27 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 15:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7a995095f35f024517ddaa07b8a8ad04463e3ce5 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 7a995095f35f024517ddaa07b8a8ad04463e3ce5

gdb/aarch64: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/aarch64-tdep.c (aarch64_dummy_id): Delete.
	(aarch64_unwind_pc): Delete.
	(aarch64_unwind_sp): Delete.
	(aarch64_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/alpha: Use default gdbarch methods where possible
@ 2019-02-27 15:21 sergiodj+buildbot
  2019-02-27 23:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 15:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 480e46cfc5cf4976c1f1a00bc6254d78e9c45447 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 480e46cfc5cf4976c1f1a00bc6254d78e9c45447

gdb/alpha: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id, and
gdbarch_unwind_pc.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/alpha-tdep.c (alpha_dummy_id): Delete.
	(alpha_unwind_pc): Delete.
	(alpha_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/arm: Use default gdbarch methods where possible
@ 2019-02-27 15:43 sergiodj+buildbot
  2019-02-28  2:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 15:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a19a650fcca359a02bfadb201c9b032ce7479525 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: a19a650fcca359a02bfadb201c9b032ce7479525

gdb/arm: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/arm-tdep.c (arm_dummy_id): Delete.
	(arm_unwind_pc): Delete.
	(arm_unwind_sp): Delete.
	(arm_gdbarch_init): Don't register deleted functions with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/bfin: Use default gdbarch methods where possible
@ 2019-02-27 15:55 sergiodj+buildbot
  2019-02-28  4:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 15:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b56bf084434de08080875134e983f8b46eb2328f ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: b56bf084434de08080875134e983f8b46eb2328f

gdb/bfin: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
and gdbarch_unwind_pc.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/bfin-tdep.c (bfin_dummy_id): Delete.
	(bfin_unwind_pc): Delete.
	(bfin_gdbarch_init): Don't register deleted functions with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/csky: Use default gdbarch methods where possible
@ 2019-02-27 16:18 sergiodj+buildbot
  2019-02-28  6:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4133e5a13f15d86bb1f834090de98cca4c34759d ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 4133e5a13f15d86bb1f834090de98cca4c34759d

gdb/csky: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/csky-tdep.c (csky_dummy_id): Delete.
	(csky_unwind_pc): Delete.
	(csky_unwind_sp): Delete.
	(csky_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/ft32: Use default gdbarch methods where possible
@ 2019-02-27 16:53 sergiodj+buildbot
  2019-02-28 10:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 16:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 68b867f30eeca7e9585e9ee16e824f5a18e2bc6c ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 68b867f30eeca7e9585e9ee16e824f5a18e2bc6c

gdb/ft32: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/ft32-tdep.c (ft32_dummy_id): Delete.
	(ft32_unwind_pc): Delete.
	(ft32_unwind_sp): Delete.
	(ft32_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/h8300: Use default gdbarch methods where possible
@ 2019-02-27 17:04 sergiodj+buildbot
  2019-02-28 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 17:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9734a586671fa95a06a2e10323c14d0157805057 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 9734a586671fa95a06a2e10323c14d0157805057

gdb/h8300: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/h8300-tdep.c (h8300_unwind_pc): Delete.
	(h8300_unwind_sp): Delete.
	(h8300_dummy_id): Delete.
	(h8300_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use Python 2.[67] / 3.X / PEP 3118 buffer protocol
@ 2019-02-27 18:29 sergiodj+buildbot
  2019-02-28 14:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 18:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6ca622222193bc29a2780f6f02f0d8b96da65a4b ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: 6ca622222193bc29a2780f6f02f0d8b96da65a4b

Use Python 2.[67] / 3.X / PEP 3118 buffer protocol

This patch removes the non-IS_PY3K code in infpy_write_memory()
and infpy_search_memory().  In both cases, the remaining code
from these ifdefs is related to use of the PEP 3118 buffer protocol.
(Deleted code is either due to simplification or related to use of the
old buffer protocol.)  PEP 3118 is sometimes referred to as the "new"
buffer protocol, though it's not that new anymore.

The link below describes new features in Python 2.6.  In particular,
it says that the buffer protocol described by PEP 3118 is in Python
2.6.  It also says (at the top of the page) that Python 2.6 was
released on Oct 1, 2008.

https://docs.python.org/3/whatsnew/2.6.html#pep-3118-revised-buffer-protocol

The last security release for the Python 2.6 series was 2.6.9.  It was
released on Oct 29, 2013.  According to this document...

https://www.python.org/download/releases/2.6.9/

...support for the 2.6 series has ended:

    With the 2.6.9 release, and five years after its first release,
    the Python 2.6 series is now officially retired.  All official
    maintenance for Python 2.6, including security patches, has ended.
    For ongoing maintenance releases, please see the Python 2.7
    series.

As noted earlier, Python 2.6, Python 2.7, and Python 3.X all have
support for the PEP 3118 buffer protocol.  Python releases prior
to 2.6 use an older buffer protocol.  Since Python 2.6 has been
retired for a good while now, it seems reasonable to me to remove
code using the older buffer protocol from GDB.

I have also simplified some of the code via use of the Py_buffer
unique_ptr specialization which I introduced in the two argument
gdb.Value constructor patch series.  Therefore, there is a dependency
on patch #1 from that series.

I have tested against both Python 2.7.15 and 3.7.2.  I see no
regressions among the non-racy tests.  I've also verified that
PyBuffer_Release is being called when the affected functions exit
while running the tests in gdb.python/py-inferior.exp by hand.  I've
also tried running valgrind on GDB while running this test, but I'm
puzzled by the results that I'm seeing - I'm seeing no additional
leaks when I comment out the Py_buffer_up lines that I introduced.
That said, I'm not seeing any leaks that obviously originate from
either infpy_write_memory() or infpy_search_memory().

gdb/ChangeLog:

	* python/py-inferior.c (infpy_write_memory): Remove non-IS_PY3K
	code from these functions.  Remove corresponding ifdefs.  Use
	Py_buffer_up instead of explicit calls to PyBuffer_Release.
	Remove gotos and target of gotos.
	(infpy_search_memory): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Prevent overflow in rl_set_screen_size
@ 2019-02-27 19:11 sergiodj+buildbot
  2019-02-28 20:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 19:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 23031e319207140e76a9c18e308995fe28322b58 ***

Author: Saagar Jha <saagar@saagarjha.com>
Branch: master
Commit: 23031e319207140e76a9c18e308995fe28322b58

Prevent overflow in rl_set_screen_size

GDB calls rl_set_screen_size in readline with the current screen size,
measured in rows and columns.  To represent "infinite" sizes, GDB
passes in INT_MAX; however, since rl_set_screen_size internally
multiplies the number of rows and columns, this causes a signed
integer overflow.  To prevent this we can instead pass in the
approximate square root of INT_MAX (which is still reasonably large),
so that even when the number of rows and columns is "infinite" we
don't overflow.

gdb/ChangeLog:
2019-02-27  Saagar Jha  <saagar@saagarjha.com>
	    Pedro Alves  <palves@redhat.com>

	* utils.c (set_screen_size): Reduce "infinite" rows and columns
	before calling rl_set_screen_size.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Test "set width/height -1"
@ 2019-02-27 19:37 sergiodj+buildbot
  2019-02-28 22:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 19:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5862844d0f443b9f65e8dd0d85c43f8818d3f355 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 5862844d0f443b9f65e8dd0d85c43f8818d3f355

Test "set width/height -1"

As a follow up to the previous commit, add a test for "set
width/height -1", to make sure we don't overflow in readline with
negative values either.

gdb/testsuite/ChangeLog:
2019-02-27  Pedro Alves  <palves@redhat.com>

	* gdb.base/page.exp: Add tests for "set width/height -1".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Handle \r\n in gdbreplay
@ 2019-02-27 20:01 sergiodj+buildbot
  2019-03-01  1:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 20:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 43ac54fca353ea8d77d56dc5ad9e049bbb9a81fb ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 43ac54fca353ea8d77d56dc5ad9e049bbb9a81fb

Handle \r\n in gdbreplay

I tried gdbreplay yesterday, but the remotelogfile I received was made
on Windows, so the lines were terminated with \r\n rather than plain
\n.

This patch changes gdbreplay to allow \r\n line termination when
reading the log file.

gdb/gdbserver/ChangeLog
2019-02-27  Tom Tromey  <tromey@adacore.com>

	* gdbreplay.c (logchar): Handle \r\n.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86-64: Skip protected check on symbol defined by linker
@ 2019-02-27 20:22 sergiodj+buildbot
  2019-03-01  2:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 20:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5cfe428cd1788be52a0af540f02b8f2705354d50 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 5cfe428cd1788be52a0af540f02b8f2705354d50

x86-64: Skip protected check on symbol defined by linker

Skip symbol defined by linker when checking copy reloc on protected
symbol.

bfd/

	PR ld/24276
	* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
	by linker when checking copy reloc on protected symbol.

ld/

	PR ld/24276
	* testsuite/ld-i386/i386.exp: Run PR ld/24276 test.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/pr24276.dso: New file.
	* testsuite/ld-i386/pr24276.warn: Likewise.
	* testsuite/ld-x86-64/pr24276.dso: Likewise.
	* testsuite/ld-x86-64/pr24276.warn: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix regcache leak, and avoid possible regcache access after detach.
@ 2019-02-27 21:57 sergiodj+buildbot
  2019-03-01  4:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-27 21:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 799efbe8e01ab8292c01f46ac59a6fb2349d4535 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 799efbe8e01ab8292c01f46ac59a6fb2349d4535

Fix regcache leak, and avoid possible regcache access after detach.

Valgrind reports leaks like the below in various tests,
e.g. gdb.threads/attach-slow-waitpid.exp, gdb.ada/task_switch_in_core.exp, ...

Fix the leak by clearing the regcache when detaching from an inferior.
Note that these leaks are 'created' when GDB exits,
when the regcache::current_regcache is destroyed : the elements
of the forward_list are pointers, and the 'pointed to' memory is not
deleted by the forward_list destructor.

Nevertheless, fixing this leak is good as it makes a bunch of
tests 'leak clean'.

Also, it seems strange to keep a register cache for a process from
which GDB detached : it is not clear if this cache is still valid
after detach.  And effectively, when clearing only the regcache,
(and not the frame cache), then the frame cache was still 'pointing'
at this regcache and was used when switching to the child process
in the test gdb.threads/watchpoint-fork.exp, which seems strange.

So, we solve the leak and avoid possible accesses to the regcache
and frame cache of the detached inferior, by clearing both the
regcache and the frame cache.

Tested on debian/amd64, natively, under Valgrind,
and with make check RUNTESTFLAGS="--target_board=native-gdbserver".

==27679== VALGRIND_GDB_ERROR_BEGIN
==27679== 1,123 (72 direct, 1,051 indirect) bytes in 1 blocks are definitely lost in loss record 2,942 of 3,400
==27679==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==27679==    by 0x5CDF71: get_thread_arch_aspace_regcache(ptid_t, gdbarch*, address_space*) (regcache.c:330)
==27679==    by 0x5CE12A: get_thread_regcache (regcache.c:366)
==27679==    by 0x5CE12A: get_current_regcache() (regcache.c:372)
==27679==    by 0x4FF63D: post_create_inferior(target_ops*, int) (infcmd.c:452)
==27679==    by 0x43AF62: core_target_open(char const*, int) (corelow.c:458)
==27679==    by 0x408B68: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:1892)
...

gdb/ChangeLog
2019-02-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* target.c (target_detach): Clear the regcache and the
	frame cache.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/arc: Use default gdbarch methods where possible
@ 2019-02-28  0:52 sergiodj+buildbot
  2019-02-28  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28  0:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f8278c3c7e0212e810fa7d65f6202b607c9cf3ca ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: f8278c3c7e0212e810fa7d65f6202b607c9cf3ca

gdb/arc: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.  The
only difference is that the old ARC specific methods had additional
debugging, however, this was discussed on the mailing list[1] and it
was agreed these methods could be removed.

[1] https://sourceware.org/ml/gdb-patches/2018-12/msg00386.html

gdb/ChangeLog:

	* gdb/arc-tdep.c (arc_dummy_id): Delete.
	(arc_unwind_pc): Delete.
	(arc_unwind_sp): Delete.
	(arc_gdbarch_init): Don't register deleted functions with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/cris: Use default gdbarch methods where possible
@ 2019-02-28  4:51 sergiodj+buildbot
  2019-02-28  5:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28  4:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8010f576414759bf5bdcfeaa64226bf03586b763 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 8010f576414759bf5bdcfeaa64226bf03586b763

gdb/cris: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/cris-tdep.c (cris_dummy_id): Delete.
	(cris_unwind_pc): Delete.
	(cris_unwind_sp): Delete.
	(cris_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] (gdb/sim) Move Mike Frysinger to past maintainers section
@ 2019-02-28  7:38 sergiodj+buildbot
  2019-03-01  5:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28  7:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9c4c331816b14d7020a8a15eed9dac5e5babdb0e ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 9c4c331816b14d7020a8a15eed9dac5e5babdb0e

(gdb/sim) Move Mike Frysinger to past maintainers section

sim/ChangeLog:

	* MAINTAINERS: Move Mike Frysinger to past maintainers' section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/frv: Use default gdbarch methods where possible
@ 2019-02-28  8:46 sergiodj+buildbot
  2019-02-28  9:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28  8:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2fbe7ad059d9ec2a8a378a5c2b973a1188677422 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 2fbe7ad059d9ec2a8a378a5c2b973a1188677422

gdb/frv: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/frv-tdep.c (frv_dummy_id): Delete.
	(frv_unwind_pc): Delete.
	(frv_unwind_sp): Delete.
	(frv_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/hppa: Use default gdbarch method default_dummy_id.
@ 2019-02-28 12:41 sergiodj+buildbot
  2019-02-28 13:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28 12:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f4bc7d2cde9189249d41ac9c63235c128da4d2f2 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: f4bc7d2cde9189249d41ac9c63235c128da4d2f2

gdb/hppa: Use default gdbarch method default_dummy_id.

Make use of the default gdbarch method for gdbarch_dummy_id.

I have not tested this change but, by inspecting the code, I believe
the default method is equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/hppa-tdep.c (hppa_dummy_id): Delete.
	(hppa_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Prevent a buffer overrun error when attempting to parse a corrupt ELF file.
@ 2019-02-28 14:43 sergiodj+buildbot
  2019-03-01  6:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28 14:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT eed5def8d0b7b64c3592be75a9b22bb4ce1a78f4 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: eed5def8d0b7b64c3592be75a9b22bb4ce1a78f4

Prevent a buffer overrun error when attempting to parse a corrupt ELF file.

	PR 24273
	* elf.c (bfd_elf_string_from_elf_section): Check for a string
	section that is not NUL terminated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Document fact that mininum Python version is now 2.6
@ 2019-02-28 16:12 sergiodj+buildbot
  2019-02-28 16:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28 16:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2c3fc25dd18d3afb4b4cb494c4803fdfbf00ae9b ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: 2c3fc25dd18d3afb4b4cb494c4803fdfbf00ae9b

Document fact that mininum Python version is now 2.6

gdb/ChangeLog:

	* NEWS: Note minimum Python version.

gdb/doc/ChangeLog:

	* gdb.texinfo (Configure Options): Document minimum python
	version.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Catch gdbserver socket listen errors
@ 2019-02-28 17:36 sergiodj+buildbot
  2019-03-01  9:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-02-28 17:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 01abb042af3f118a8820517a3b45b19e65c7bbd4 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 01abb042af3f118a8820517a3b45b19e65c7bbd4

Testsuite: Catch gdbserver socket listen errors

When launching gdbserver, the testsuite checks for binding failure but
does not check for failure to listen to socket error (which can happen
due to another gdbserver binding to the socket at the same time).

When this error occurs, the test will ignore the error and connect GDB
to the failed port.  This may succeed and GDB will now be connected to
the gdbserver from another test.  This eventually causes both tests to
fail.

When running the tests suite with native-gdbserver across many cores,
this issue may happen once or twice, each causing random failures for
two .exp testscripts.

Example gdb.log output for the failure:

The testsuite sucessfully notices a failure to connect to port 2348.
It launches again with port 2349, which also fails.  The testsuite
ignores this error and uses gdb to connect to the port - which succeeds.

spawn /work/build/gdb/testsuite/../gdbserver/gdbserver --once localhost:2348 /work/build/gdb/testsuite/outputs/gdb.ada/arrayidx/p^M
Can't bind address: Address already in use.^M
Exiting^M
Port 2348 is already in use.
spawn /work/build/gdb/testsuite/../gdbserver/gdbserver --once localhost:2349 /work/build/gdb/testsuite/outputs/gdb.ada/arrayidx/p^M
Can't listen on socket: Address already in use.^M
Exiting^M
target remote localhost:2349^M
Remote debugging using localhost:2349^M
Reading /lib/ld-linux-aarch64.so.1 from remote target...^M
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.^M
Reading /lib/ld-linux-aarch64.so.1 from remote target...^M
Reading symbols from target:/lib/ld-linux-aarch64.so.1...^M
Reading /lib/ld-2.23.so from remote target...^M
Reading /lib/.debug/ld-2.23.so from remote target...^M
Reading /work/build/install/lib/debug//lib/ld-2.23.so from remote target...^M
Reading /work/build/install/lib/debug/lib//ld-2.23.so from remote target...^M
Reading target:/work/build/install/lib/debug/lib//ld-2.23.so from remote target...^M
(No debugging symbols found in target:/lib/ld-linux-aarch64.so.1)^M
0x0000ffffbf6d2cc0 in ?? () from target:/lib/ld-linux-aarch64.so.1^M
(gdb) continue^M
Continuing.^M
Reading /lib/aarch64-linux-gnu/libc.so.6 from remote target...^M
Reading /lib/aarch64-linux-gnu/libc-2.23.so from remote target...^M
Reading /lib/aarch64-linux-gnu/.debug/libc-2.23.so from remote target...^M
Reading /work/build/install/lib/debug//lib/aarch64-linux-gnu/libc-2.23.so from remote target...^M
Reading /work/build/install/lib/debug/lib/aarch64-linux-gnu//libc-2.23.so from remote target...^M
Reading target:/work/build/install/lib/debug/lib/aarch64-linux-gnu//libc-2.23.so from remote target...^M
[Inferior 1 (process 35351) exited normally]^M
(gdb) FAIL: gdb.ada/arrayidx.exp: can't run to main

Meanwhile, at the same time, in another test, gdbserver successfully
connects to port 2349.  GDB then tries to connect to the port, but it
times out because the GDB in the test above has already connected to it.

spawn /work/build/gdb/testsuite/../gdbserver/gdbserver --once localhost:2348 /work/build/gdb/testsuite/outputs/gdb.ada/rdv_wait/foo^M
Can't bind address: Address already in use.^M
Exiting^M
Port 2348 is already in use.
spawn /work/build/gdb/testsuite/../gdbserver/gdbserver --once localhost:2349 /work/build/gdb/testsuite/outputs/gdb.ada/rdv_wait/foo^M
Process /work/build/gdb/testsuite/outputs/gdb.ada/rdv_wait/foo created; pid = 65162^M
Listening on port 2349^M
Remote debugging from host 127.0.0.1, port 45154^M
target remote localhost:2349^M
localhost:2349: Connection timed out.^M
(gdb) ^CQuit^M
(gdb) task 2^M
Cannot inspect Ada tasks when program is not running^M

gdb/testsuite/ChangeLog:

	* lib/gdbserver-support.exp (gdbserver_start): Check for listen
	failure.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24272, out-of-bounds read in pex64_xdata_print_uwd_codes
@ 2019-03-01  3:16 sergiodj+buildbot
  2019-03-01 10:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-01  3:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b24cc4146e4de9f3b66e2e2fb8379db46eff89c9 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: b24cc4146e4de9f3b66e2e2fb8379db46eff89c9

PR24272, out-of-bounds read in pex64_xdata_print_uwd_codes

The fix here is to use an unsigned comparison for
    if (a->NumberOfRvaAndSizes > IMAGE_NUMBEROF_DIRECTORY_ENTRIES)

include/
	PR 24272
	* coff/internal.h (struct internal_extra_pe_aouthdr): Change type
	of SizeOfCode, SizeOfInitializedData, and SizeOfUninitializedData
	to bfd_vma.  Change type of SectionAlignment, FileAlignment,
	Reserved1, SizeOfImage, SizeOfHeaders, CheckSum, LoaderFlags,
	and NumberOfRvaAndSizes to uint32_t.
bfd/
	PR 24272
	* peXXigen.c (_bfd_XXi_swap_aouthdr_in): Use unsigned index.
	(_bfd_XX_print_private_bfd_data_common): Adjust for type changes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Can't interrupt process without controlling terminal on Solaris (PR gdb/8527)
@ 2019-03-01  7:20 sergiodj+buildbot
  2019-03-01  8:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-01  7:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 92137da015d301fec4b7878467d053d379a2f489 ***

Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Branch: master
Commit: 92137da015d301fec4b7878467d053d379a2f489

Can't interrupt process without controlling terminal on Solaris (PR gdb/8527)

If gdb attaches to a process that either has no controlling terminal,
or the controlling terminal differs from the one gdb is running under,
break/^C doesn't interrupt the debugged process on Solaris.

Fixed as follows, analogous to what all all other targets do.  Patch from
the PR, recently re-submitted by Brian Vandenberg.

Tested on amd64-pc-solaris2.11, sparcv9-sun-solaris2.11, and
x86_64-pc-linux-gnu.

2019-02-28  Brian Vandenberg  <phantall@gmail.com>
	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gdb:
	PR gdb/8527
	* procfs.c (proc_wait_for_stop): Wrap write of PCWSTOP in
	set_sigint_trap, clear_sigint_trap.

	gdb/testsuite:
	PR gdb/8527
	* gdb.base/interrupt-daemon-attach.c,
	gdb.base/interrupt-daemon-attach.exp: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix coff_start_symtab resource leak found by Coverity
@ 2019-03-01 14:29 sergiodj+buildbot
  2019-03-01 15:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-01 14:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 827f438f664809b13ea59e8fabc43070dbd17645 ***

Author: Gary Benson <gbenson@redhat.com>
Branch: master
Commit: 827f438f664809b13ea59e8fabc43070dbd17645

Fix coff_start_symtab resource leak found by Coverity

This commit fixes a resource leak found by Coverity, where
coff_start_symtab performs an xstrdup that is now performed
within start_symtab by buildsym_compunit::buildsym_compunit.

gdb/ChangeLog:

	* coffread.c (coff_start_symtab): Remove unnecessary xstrdup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix GDB compilation on MinGW (PR gdb/24292)
@ 2019-03-02 13:35 sergiodj+buildbot
  2019-03-02 14:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-02 13:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41fa577fbc326402be49b3f03bc828e52dba8b88 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 41fa577fbc326402be49b3f03bc828e52dba8b88

Fix GDB compilation on MinGW (PR gdb/24292)

gdb/ChangeLog:

2019-03-02  Eli Zaretskii  <eliz@gnu.org>

	PR gdb/24292
	* common/netstuff.c:
	* gdbserver/gdbreplay.c
	* gdbserver/remote-utils.c:
	* ser-tcp.c:
	* unittests/parse-connection-spec-selftests.c [USE_WIN32API]:
	Include ws2tcpip.h instead of wsiapi.h and winsock2.h.  Redefine
	_WIN32_WINNT to 0x0501 if defined to a smaller value, as
	'getaddrinfo' and 'freeaddrinfo' were not available before
	Windows XP, and mingw.org's MinGW headers by default define
	_WIN32_WINNT to 0x500.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] GDB no longer supports Windows before XP.
@ 2019-03-02 15:19 sergiodj+buildbot
  2019-03-02 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-02 15:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 742a7df5f4a149f0818aaccfc432c4c0c9a6e26d ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 742a7df5f4a149f0818aaccfc432c4c0c9a6e26d

GDB no longer supports Windows before XP.

gdb/ChangeLog:
2019-03-02  Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Mention end of support for native debugging on MS-Windows
	before XP.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Avoid compilation warnings on MinGW.
@ 2019-03-02 16:38 sergiodj+buildbot
  2019-03-02 17:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-02 16:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a6a4b2c636b29de09dea890b448f99804ef7bc18 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: a6a4b2c636b29de09dea890b448f99804ef7bc18

Avoid compilation warnings on MinGW.

gdb/ChangeLog:
2019-03-02  Eli Zaretskii  <eliz@gnu.org>

	* xml-syscall.c (xml_list_syscalls_by_group): Drop 'struct' from
	for-loop range, to avoid compiler warnings.

	* tui/tui.c (tui_enable) [__MINGW32__]: Don't declare 'cap', to
	avoid compiler warnings about unused variables.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use '$enable_unittest' instead of '$development' on gdbserver/configure.srv (for 'aarch64*-*-linux*' case)
@ 2019-03-04 22:17 sergiodj+buildbot
  2019-03-04 23:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-04 22:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 45950eb60008c70fb79306012e76a024a8790ca3 ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: 45950eb60008c70fb79306012e76a024a8790ca3

Use '$enable_unittest' instead of '$development' on gdbserver/configure.srv (for 'aarch64*-*-linux*' case)

On commit 8ecfd7bd4acd69213c06fac6de9af38299123547 ("Add parameter to
allow enabling/disabling selftests via configure") it seems that I
forgot to use the proper '$enable_unittest' variable when checking to
see whether to add selftest-related objects to 'srv_regobj'.  This
causes a build failure on Aarch64 when 'development=false' (which is
the case for the 8.3 branch) and 'enable_unittest=true'.

This patch fixes the problem by using '$enable_unittest' instead of
'$development' when performing the check.  As a reminder, it's
important to notice that '$enable_unittest's default value (i.e., when
the option '--enable-unit-tests' is not passed to configure) is the
same as '$development', so this patch doesn't affect the current
build.

I'd like to install this patch both on master and on the 8.3 branch.

OK?

gdb/gdbserver/ChangeLog:
2019-03-04  Sergio Durigan Junior  <sergiodj@redhat.com>

	* configure.srv: Use '$enable_unittest' instead of '$development'
	when checking whether to fill 'srv_regobj' on 'aarch64*-*-linux*'
	case.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to macro_buffer
@ 2019-03-05 16:49 sergiodj+buildbot
  2019-03-05 22:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-05 16:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4e4a8b932b7ae8e239eebb597fbb6cfcb7278a64 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 4e4a8b932b7ae8e239eebb597fbb6cfcb7278a64

Add ATTRIBUTE_UNUSED_RESULT to macro_buffer

This applies ATTRIBUTE_UNUSED_RESULT to macro_buffer::release.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

	* macroexp.c (struct macro_buffer) <release>: Add
	ATTRIBUTE_UNUSED_RESULT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to ref_ptr::release
@ 2019-03-05 17:17 sergiodj+buildbot
  2019-03-06  1:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-05 17:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 895dafa679db7af79576dcd177a6d91d65657ee8 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 895dafa679db7af79576dcd177a6d91d65657ee8

Add ATTRIBUTE_UNUSED_RESULT to ref_ptr::release

This applies ATTRIBUTE_UNUSED_RESULT to ref_ptr::release and updates a
few spots to comply.  I believe one use in install_default_visualizer
was in error, fixed by this patch.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

	* varobj.c (update_dynamic_varobj_children): Update.
	(install_default_visualizer): Use reset, not release.
	* value.c (set_internalvar): Update.
	* dwarf2loc.c (value_of_dwarf_reg_entry): Update.
	* common/gdb_ref_ptr.h (class ref_ptr) <release>: Add
	ATTRIBUTE_UNUSED_RESULT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to parser_state
@ 2019-03-05 17:35 sergiodj+buildbot
  2019-03-05 18:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-05 17:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41e3300aa7d31ddb3618e160c6b7e61351ee2af5 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 41e3300aa7d31ddb3618e160c6b7e61351ee2af5

Add ATTRIBUTE_UNUSED_RESULT to parser_state

This applies ATTRIBUTE_UNUSED_RESULT to parser_state::release.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

	* parser-defs.h (struct parser_state) <release>: Add
	ATTRIBUTE_UNUSED_RESULT.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove gdb_bfd_fdopenr
@ 2019-03-05 17:41 sergiodj+buildbot
  2019-03-06  4:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-05 17:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT edbd9e45a906970852cee1999ab27c18c18a5ff5 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: edbd9e45a906970852cee1999ab27c18c18a5ff5

Remove gdb_bfd_fdopenr

I noticed that gdb_bfd_fdopenr is no longer used, so this patch
removes it.  Tested by rebuilding and by grep.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

	* gdb_bfd.c (gdb_bfd_fdopenr): Remove.
	* gdb_bfd.h (gdb_bfd_fdopenr): Don't declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change the_dummy_target to be a global
@ 2019-03-05 21:27 sergiodj+buildbot
  2019-03-06  6:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-05 21:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 06b5b831a09417bac37b44599dc35d4b904700c5 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 06b5b831a09417bac37b44599dc35d4b904700c5

Change the_dummy_target to be a global

While debugging gdb, I printed the target stack and got:

    (top-gdb) p g_target_stack
    $10 = {
      m_top = thread_stratum,
      m_stack = {0x142b0b0, 0x13da600 <exec_ops>, 0x1c70690, 0x13d63b0 <ravenscar_ops>, 0x0, 0x0, 0x0}
    }

(This is clearly from before the change to make ravenscar
multi-target-capable.)

Here, 0x142b0b0 is the singleton dummy target.  It seems to me that
since this is always a singleton, it would be a bit nicer if it were a
global, so that it would be noted in the above.

This patch implements this idea, and now I get:

    (top-gdb) p g_target_stack
    $2 = {
      m_top = dummy_stratum,
      m_stack = {0x1f1b040 <the_dummy_target>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
    }

I did not do the same for the debug target.  It didn't seem as useful
to me.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

	* target.c (the_dummy_target): Move later.  Change type to
	"dummy_target".
	(initialize_targets): Don't initialize the_dummy_target.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fortran function calls with arguments
@ 2019-03-06  8:50 sergiodj+buildbot
  2019-03-06 10:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06  8:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aa3cfbda2f2af71044949b5692ce51cafb023d13 ***

Author: Richard Bunt <richard.bunt@arm.com>
Branch: master
Commit: aa3cfbda2f2af71044949b5692ce51cafb023d13

Fortran function calls with arguments

Prior to this patch, calling functions on the inferior with arguments and
then using these arguments within a function resulted in an invalid
memory access. This is because Fortran arguments are typically passed as
pointers to values.

It is possible to call Fortran functions, but memory must be allocated in
the inferior, so a pointer can be passed to the function, and the
language must be set to C to enable C-style casting. This is cumbersome
and not a pleasant debug experience.

This patch implements the GNU Fortran argument passing conventions with
caveats. Firstly, it does not handle the VALUE attribute as there is
insufficient DWARF information to determine when this is the case.
Secondly, functions with optional parameters can only be called with all
parameters present. Both these cases are marked as KFAILS in the test.

Since the GNU Fortran argument passing convention has been implemented,
there is no guarantee that this patch will work correctly, in all cases,
with other compilers.

Despite these limitations, this patch improves the ease with which
functions can be called in many cases, without taking away the existing
approach of calling with the language set to C.

Regression tested on x86_64, aarch64 and POWER9 with GCC 7.3.0.
Regression tested with Ada on x86_64.
Regression tested with native-extended-gdbserver target board.

gdb/ChangeLog:

	* eval.c (evaluate_subexp_standard): Call Fortran argument
	wrapping logic.
	* f-lang.c (struct value): A value which can be passed into a
	Fortran function call.
	(fortran_argument_convert): Wrap Fortran arguments in a pointer
	where appropriate.
	(struct type): Value ready for a Fortran function call.
	(fortran_preserve_arg_pointer): Undo check_typedef, the pointer
	is needed.
	* f-lang.h (fortran_argument_convert): Declaration.
	(fortran_preserve_arg_pointer): Declaration.
	* infcall.c (value_arg_coerce): Call Fortran argument logic.

gdb/testsuite/ChangeLog:

	* gdb.fortran/function-calls.exp: New file.
	* gdb.fortran/function-calls.f90: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix a segmentation fault triggered by disassembling an EFi file with source included.
@ 2019-03-06  9:57 sergiodj+buildbot
  2019-03-06 11:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06  9:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 219d6836e939d2cd1a8c5574bfa3a101daa31cbb ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 219d6836e939d2cd1a8c5574bfa3a101daa31cbb

Fix a segmentation fault triggered by disassembling an EFi file with source included.

	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Check for a NULL symbol
	table pointer.
	* coffgen.c (coff_find_nearest_line_with_names): Do not call
	_bfd_dwarf2_find_symbol_bias if there is no symbol table available.

https://bugzilla.redhat.com/show_bug.cgi?id=1685727


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Ensure changing directory does not break the log file
@ 2019-03-06 10:16 sergiodj+buildbot
  2019-03-06 12:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 10:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c3734e093aab1cea90a76b107cdda4a5870dd1b8 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: c3734e093aab1cea90a76b107cdda4a5870dd1b8

Testsuite: Ensure changing directory does not break the log file

get_compiler_info switches to a new log file before checking the compiler
to ensure the checks are not logged. Afterwards it restores back to using
the original log file. However, the logfile uses a relative path name -
if the current test has changed the current directory then all further
output for the test will be lost.  This can confuse the code that collates
the main gdb.log file at the end of a FORCE_PARALLEL run.

fullpath-expand.exp calls gdb_compile after changing the current directory.

The "Ensure stack protection is off for GCC" patch added a call to
get_compiler_info from inside of gdb_compile, causing log file collection
to break for FORCE_PARALLEL runs.

The ideal solution would be to ensure the log file is always created using
an absolute path name. However, this is set at multiple points in
Makefile.in and in some instances just relies on dejagnu common code to set
the log file directory to "."

The simpler and safer solution is to override the builtin cd function. The
new function checks the current log file and if the path is relative, then
it resets the logging using an absolute path. Finally it calls the builtin
cd.  This ensures get_compiler_info (and any other code) can correctly
backup and restore the current log file.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (builtin_cd): rename of cd.
	(cd): Override builtin.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix remote-sim.c build after warn-unused-result change
@ 2019-03-06 16:26 sergiodj+buildbot
  2019-03-06 16:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 16:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 67a3048c0fe804ab1e36d4074e7fd2dadeb8bc0b ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 67a3048c0fe804ab1e36d4074e7fd2dadeb8bc0b

Fix remote-sim.c build after warn-unused-result change

John Darrington pointed out that commit 18cb7c9f3 ("Introduce
ATTRIBUTE_UNUSED_RESULT and use it") broke the build:

/home/john/binutils-gdb/gdb/remote-sim.c: In function 'void gdbsim_target_open(const char*, int)':
/home/john/binutils-gdb/gdb/remote-sim.c:765:18: error: ignoring return value of 'char** gdb_argv::release()', declared with attribute warn_unused_result [-Werror=unused-result]

This patch fixes the problem by arranging to use the result of the
release method.

Tested by rebuilding with a simulator enabled.

gdb/ChangeLog
2019-03-06  Tom Tromey  <tromey@adacore.com>

	* remote-sim.c (gdbsim_target_open): Use result of
	gdb_argv::release.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Add new function to evaluate Fortran expressions
@ 2019-03-06 19:04 sergiodj+buildbot
  2019-03-06 23:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 19:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9dad4a58a1bddeb1cc2ec8b3782d7463b03b7b4b ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 9dad4a58a1bddeb1cc2ec8b3782d7463b03b7b4b

gdb/fortran: Add new function to evaluate Fortran expressions

This is an initial restructure, it adds a new function in which
Fortran specific expressions can be evaluated.  No Fortran specific
expressions are added with this commit though, so for now, the new
function just forwards all expressions to the default expression
handler, as such, there should be no user visible changes after this
commit.  However, the new function will be useful in later commits.

gdb/ChangeLog:

	* f-lang.c (evaluate_subexp_f): New function.
	(exp_descriptor_f): New global.
	(f_language_defn): Use exp_descriptor_f instead of
	exp_descriptor_standard.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Enable debugging of the Fortran parser
@ 2019-03-06 19:17 sergiodj+buildbot
  2019-03-07  1:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 19:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e454224fa82aa52a1288a3d6a2e26e8d224d732a ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: e454224fa82aa52a1288a3d6a2e26e8d224d732a

gdb/fortran: Enable debugging of the Fortran parser

This commit allows 'set debug parser on' to work for the Fortran
parser.

gdb/ChangeLog:

	* f-exp.y (f_parse): Set yydebug.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Add Fortran 'kind' intrinsic and keyword
@ 2019-03-06 19:30 sergiodj+buildbot
  2019-03-07  2:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 19:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4d00f5d8f6c4a1c9f334b1abb45b9ce05fb45b0a ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 4d00f5d8f6c4a1c9f334b1abb45b9ce05fb45b0a

gdb/fortran: Add Fortran 'kind' intrinsic and keyword

The 'kind' keyword has two uses in Fortran, it is the name of a
builtin intrinsic function, and it is also a keyword used to create a
type of a specific kind.

This commit adds support for using kind as an intrinsic function, and
also adds some initial support for using kind to create types of a
specific kind.

This commit only allows the creation of the type 'character(kind=1)',
however, it will be easy enough to extend this in future to support
more type kinds.

The kind of any expression can be queried using the kind intrinsic
function.  At the moment the kind returned corresponds to the size of
the type, this matches how gfortran handles kinds.  However, the
correspondence between kind and type size depends on the compiler
and/or the specific target, so this might not be correct for
everyone.  If we want to support different compilers/targets in future
the code to compute the kind from a type will need to be updated.

gdb/ChangeLog:

	* expprint.c (dump_subexp_body_standard): Support UNOP_KIND.
	* f-exp.y: Define 'KIND' token.
	(exp): New pattern for KIND expressions.
	(ptype): Handle types with a kind extension.
	(direct_abs_decl): Extend to spot kind extensions.
	(f77_keywords): Add 'kind' to the list.
	(push_kind_type): New function.
	(convert_to_kind_type): New function.
	* f-lang.c (evaluate_subexp_f): Support UNOP_KIND.
	* parse.c (operator_length_standard): Likewise.
	* parser-defs.h (enum type_pieces): Add tp_kind.
	* std-operator.def: Add UNOP_KIND.

gdb/testsuite/ChangeLog:

	* gdb.fortran/intrinsics.exp: New file.
	* gdb.fortran/intrinsics.f90: New file.
	* gdb.fortran/type-kinds.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Add builtin 8-byte integer type with (kind=8) support
@ 2019-03-06 19:54 sergiodj+buildbot
  2019-03-07  5:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 19:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 067630bdb553bb889104e3b064e4551531ddcedc ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 067630bdb553bb889104e3b064e4551531ddcedc

gdb/fortran: Add builtin 8-byte integer type with (kind=8) support

Add a new builtin type, an 8-byte integer, and allow GDB to parse
'integer (kind=8)', returning the new 8-byte integer.

gdb/ChangeLog:

	* f-exp.y (convert_to_kind_type): Handle integer (kind=8).
	* f-lang.c (build_fortran_types): Setup builtin_integer_s8.
	* f-lang.h (struct builtin_f_type): Add builtin_integer_s8 field.

gdb/testsuite/ChangeLog:

	* gdb.fortran/type-kinds.exp: Test new integer type kind.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] C++ify fork_info, use std::list
@ 2019-03-06 20:58 sergiodj+buildbot
  2019-03-07 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 20:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 06974e6c05556edb7122f45239c95045e882dc76 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 06974e6c05556edb7122f45239c95045e882dc76

C++ify fork_info, use std::list

- Convert new_fork and free_fork to fork_info ctor/dtor.
- Use std::list.

gdb/ChangeLog:
2019-03-06  Pedro Alves  <palves@redhat.com>

	* linux-fork.c: Include <list>.
	(fork_list): Now a std::list instance.
	(fork_info): Add ctor, dtor, and in-class initialize all fields.
	(forks_exist_p, find_last_fork): Adjust.
	(new_fork): Delete.
	(one_fork_p): New.
	(add_fork): Adjust.
	(free_fork): Delete, folded into fork_info::~fork_info().
	(delete_fork, find_fork_ptid, find_fork_id, find_fork_pid):
	Adjust.
	(init_fork_list): Delete.
	(linux_fork_killall, linux_fork_mourn_inferior)
	(linux_fork_detach, info_checkpoints_command): Adjust.
	(_initialize_linux_fork): No longer call init_fork_list.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] linux-fork.c: rewrite inf_has_multiple_threads
@ 2019-03-06 21:11 sergiodj+buildbot
  2019-03-07 15:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 21:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e52c971f17ac747a065388b54a909f44b5582cd9 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: e52c971f17ac747a065388b54a909f44b5582cd9

linux-fork.c: rewrite inf_has_multiple_threads

There's no need to iterate over all threads of all inferiors here.

gdb/ChangeLog:
2019-03-06  Pedro Alves  <palves@redhat.com>

	* linux-fork.c (inf_has_multiple_thread_cb): Delete.
	(inf_has_multiple_threads): Return 'bool' and rewrite using
	inferior_info::threads().


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanups from coffread.c
@ 2019-03-06 23:22 sergiodj+buildbot
  2019-03-07 18:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-06 23:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e2a035485a80651a5dc1711fee5a811e41ab131b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e2a035485a80651a5dc1711fee5a811e41ab131b

Remove cleanups from coffread.c

This removes the remaining cleanups from coffread.c.

Tested by the buildbot and also some manual testing.

This version includes the fix provided by Joel.

gdb/ChangeLog
2019-03-06  Joel Brobecker  <brobecker@adacore.com>
	    Tom Tromey  <tom@tromey.com>

	* stabsread.h (struct stab_section_list): Remove.
	(coffstab_build_psymtabs): Update.
	* dbxread.c (symbuf_sections): Now a std::vector.
	(sect_idx): New global.
	(fill_symbuf): Update.
	(coffstab_build_psymtabs): Change type of stabsects parameter.
	Update.
	* coffread.c (struct coff_symfile_info) <stabsects>: Now a
	std::vector.
	(linetab, linetab_offset, linetab_size, stringtab): Move earlier.
	(coff_locate_sections): Update.
	(coff_symfile_read): Remove cleanups.  Update.
	(init_stringtab): Add storage parameter.
	(free_stringtab, free_stringtab_cleanup): Remove.
	(init_lineno): Add storage parameter.
	(free_linetab, free_linetab_cleanup): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove cleanup from solib-svr4.c
@ 2019-03-07  0:25 sergiodj+buildbot
  2019-03-08  2:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07  0:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d01c5877664024043f4e5920d072c5f62fc7f89a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d01c5877664024043f4e5920d072c5f62fc7f89a

Remove cleanup from solib-svr4.c

This removes a cleanup from solib-svr4.c, replacing it with
make_scope_exit.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* solib-svr4.c (disable_probes_interface): Remove parameter.
	(svr4_handle_solib_event): Use make_scope_exit.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove last cleanups from solib-svr4.c
@ 2019-03-07  0:38 sergiodj+buildbot
  2019-03-08  4:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07  0:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2b6ff1c0474fca286b95be7ae9dcc5a22ff2a0b9 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 2b6ff1c0474fca286b95be7ae9dcc5a22ff2a0b9

Remove last cleanups from solib-svr4.c

This removes the last cleanups from solib-svr4.c, replacing them with
uses of make_scope_exit.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* solib-svr4.c (svr4_parse_libraries, svr4_current_sos_direct):
	Use make_scope_exit.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use unique_xmalloc_ptr in remote.c
@ 2019-03-07  1:30 sergiodj+buildbot
  2019-03-08  9:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07  1:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c6321f19c5414c2a34db3cf5979834d081c32abd ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: c6321f19c5414c2a34db3cf5979834d081c32abd

Use unique_xmalloc_ptr in remote.c

This removes a cleanup from remote.c, replacing it with
unique_xmalloc_ptr.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* remote.c (remote_target::remote_parse_stop_reply): Use
	unique_xmalloc_ptr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove basic cleanup code
@ 2019-03-07  1:42 sergiodj+buildbot
  2019-03-08 10:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07  1:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fe7b42e5843ef82f97959e0e18122c164449a8ea ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: fe7b42e5843ef82f97959e0e18122c164449a8ea

Remove basic cleanup code

This removes the basic cleanup code: make_cleanups, do_cleanups,
discard_cleanups, and friends.  This code is no longer needed, as
nothing in gdb makes an ordinary cleanup.  Final cleanups are still
needed.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* top.c (quit_force): Update.
	* main.c (captured_command_loop): Update.
	* common/new-op.c (operator new): Update.
	* common/common-exceptions.c (struct catcher)
	<save_cleanup_chain>: Remove member.
	(exceptions_state_mc_init): Update.
	(exception_try_scope_entry): Return nullptr.
	(exception_try_scope_exit, exception_rethrow)
	(throw_exception_sjlj, throw_exception_cxx): Update.
	* common/cleanups.h (make_cleanup, make_cleanup_dtor)
	(all_cleanups, do_cleanups, discard_cleanups)
	(discard_final_cleanups, save_cleanups, save_final_cleanups)
	(restore_cleanups, restore_final_cleanups): Don't declare.
	(do_final_cleanups): Remove parameter.
	* common/cleanups.c (cleanup_chain, make_cleanup)
	(make_cleanup_dtor, all_cleanups, do_cleanups)
	(discard_my_cleanups, discard_cleanups)
	(discard_final_cleanups, save_my_cleanups, save_cleanups)
	(save_final_cleanups, restore_my_cleanups, restore_cleanups)
	(null_cleanup): Remove.
	(do_final_cleanups): Remove parameter.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Use TYPE_CODE_CHAR for character types
@ 2019-03-07  6:24 sergiodj+buildbot
  2019-03-07  6:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07  6:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4a270568d93263e4970099456b4efb58466134a6 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 4a270568d93263e4970099456b4efb58466134a6

gdb/fortran: Use TYPE_CODE_CHAR for character types

Switch to using TYPE_CODE_CHAR for character types.  This appears to
have little impact on the test results as gFortran uses the
DW_TAG_string_type to represent all character variables (as far as I
can see).  The only place this has an impact is when the user casts a
variable to a character type, in which case GDB does now use the CHAR
type, and prints the variable as both a value and a character, for
example, before:

    (gdb) p ((character) 97)
    $1 = 97

and after:

    (gdb) p ((character) 97)
    $1 = 97 'a'

gdb/ChangeLog:

	* f-lang.c (build_fortran_types): Use TYPE_CODE_CHAR for character
	types.

gdb/testsuite/ChangeLog:

	* gdb.fortran/type-kinds.exp: Update expected results.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "checkpoint" not rely on inferior_ptid
@ 2019-03-07 10:35 sergiodj+buildbot
  2019-03-07 10:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 10:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 72f31aea9e6c158f442239abedaf351465ebcb41 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 72f31aea9e6c158f442239abedaf351465ebcb41

Make "checkpoint" not rely on inferior_ptid

Don't rely on "inferior_ptid" deep within add_fork.  In the
multi-target branch, I'm forcing inferior_ptid to null_ptid early in
infrun event handling to make sure we don't inadvertently rely on the
current thread/target when we shouldn't, and that caught some bad or
unnecessary assumptions throughout.

gdb/ChangeLog:
2019-03-06  Pedro Alves  <palves@redhat.com>

	* linux-fork.c (new_fork): New, split out of ...
	(add_fork): ... this.  Return void.  Move "first fork" special
	case from here, to ...
	(checkpoint_command): ... here.
	* linux-linux.h (add_fork): Return void.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Eliminate fork_info::clobber_regs
@ 2019-03-07 16:22 sergiodj+buildbot
  2019-03-07 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 16:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b7e60d85da12a1819671473db8550c9f076e8f38 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: b7e60d85da12a1819671473db8550c9f076e8f38

Eliminate fork_info::clobber_regs

All fork_save_infrun_state callers pass '1' as CLOBBER_REGS nowadays.

The larger hunk in fork_save_infrun_state is just a reindentation.

gdb/ChangeLog:
2019-03-06  Pedro Alves  <palves@redhat.com>

	* linux-fork.c (fork_info::clobber_regs): Delete.
	(fork_load_infrun_state): Remove reference to 'clobber_regs'.
	(fork_save_infrun_state): Remove 'clobber_regs' parameter.  Update
	comment.  Adjust.
	(scoped_switch_fork_info::scoped_switch_fork_info)
	(checkpoint_command, linux_fork_context): Adjust
	fork_save_infrun_state calls.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Move value_from_host_double into value.c and make more use of it
@ 2019-03-07 16:42 sergiodj+buildbot
  2019-03-08 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 16:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7584bb30cf380cff9cc3914b1b523c5a1a5b4302 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 7584bb30cf380cff9cc3914b1b523c5a1a5b4302

gdb: Move value_from_host_double into value.c and make more use of it

The function value_from_host_double can be moved from f-lang.c into
value.c as a generally useful function, and then used more widely.

Tested on X86-64/GNU Linux with no regressions.

gdb/ChangeLog:

	* f-lang.c (value_from_host_double): Moved to...
	* value.c (value_from_host_double): ...here.
	* value.h (value_from_host_double): Declare.
	* guile/scm-math.c (vlscm_convert_typed_number): Use
	value_from_host_double.
	(vlscm_convert_number): Likewise.
	* guile/scm-value.c (gdbscm_value_to_real): Likewise.
	* python/py-value.c (convert_value_from_python): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update two cleanup comments
@ 2019-03-07 18:41 sergiodj+buildbot
  2019-03-07 19:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 18:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 09e3c4ca13e39b797b91b07280ac025327a8a526 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 09e3c4ca13e39b797b91b07280ac025327a8a526

Update two cleanup comments

This updates another couple of comments to remove mentions of
cleanups.

gdb/ChangeLog
2019-03-06  Tom Tromey  <tom@tromey.com>

	* inferior.h (class inferior): Update comment.
	* gdbthread.h (class thread_info): Update comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change displaced_step_clear_cleanup to a forward_scope_exit
@ 2019-03-07 21:16 sergiodj+buildbot
  2019-03-07 21:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 21:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9799571ecb648ea2e911498cfdc7fafe3237c94a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 9799571ecb648ea2e911498cfdc7fafe3237c94a

Change displaced_step_clear_cleanup to a forward_scope_exit

This changes displaced_step_clear_cleanup to be a forward_scope_exit
and updates the callers.

gdb/ChangeLog
2019-03-06  Tom Tromey  <tom@tromey.com>

	* infrun.c (displaced_step_clear_cleanup): Now a
	forward_scope_exit type.
	(displaced_step_prepare_throw): Update.
	(displaced_step_fixup): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] C++ify remote notification code
@ 2019-03-07 22:57 sergiodj+buildbot
  2019-03-07 23:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-07 22:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 32603266e5688718faad35b7502aa0b72a42764a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 32603266e5688718faad35b7502aa0b72a42764a

C++ify remote notification code

This C++ifies the remote notification code -- replacing function
pointers with virtual methods and using unique_ptr.  This allows for
the removal of some cleanups.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* remote.c (struct stop_reply_deleter): Remove.
	(stop_reply_up): Update.
	(struct stop_reply): Derive from notif_event.  Don't typedef.
	<regcache>: Now a std::vector.
	(stop_reply_xfree): Remove.
	(stop_reply::~stop_reply): Rename from stop_reply_dtr.
	(remote_notif_stop_alloc_reply): Return a unique_ptr.  Use new.
	(remote_target::discard_pending_stop_replies): Use delete.
	(remote_target::remote_parse_stop_reply): Update.
	(remote_target::process_stop_reply): Update.
	* remote-notif.h (struct notif_event): Add virtual destructor.
	Remove "dtr" member.
	(struct notif_client) <alloc_event>: Return a unique_ptr.
	(notif_event_xfree): Don't declare.
	(notif_event_up): New typedef.
	* remote-notif.c (remote_notif_ack, remote_notif_parse): Update.
	(notif_event_xfree, do_notif_event_xfree): Remove.
	(remote_notif_state_xfree): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove last cleanups from stabsread.c
@ 2019-03-08  7:15 sergiodj+buildbot
  2019-03-08  8:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-08  7:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 61b30099702a76fb7e6a9c5dba7c03b95f9eb0f2 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 61b30099702a76fb7e6a9c5dba7c03b95f9eb0f2

Remove last cleanups from stabsread.c

This removes the last cleanups from stabsread.c.  Similar code in
dwarf2read.c was C++-ified, but considering that stabs are deprecated,
it seemed simpler to just change these allocations to use an obstack
and leave the data structures in place.

This patch renames field_info to stabs_field_info -- adding a
constructor here provoked a bug due to the resulting ODR violation.

2019-03-06  Tom Tromey  <tom@tromey.com>

	* stabsread.c (struct stabs_field_info): Rename from field_info.
	<list, fnlist>: Add initializers.
	<obstack>: New member.
	(read_member_functions, read_struct_fields, read_baseclasses):
	Allocate on obstack.  Don't use cleanups.
	(read_one_struct_field, read_member_functions, read_struct_fields)
	(read_baseclasses, read_tilde_fields, attach_fn_fields_to_type)
	(attach_fields_to_type, read_cpp_abbrev, read_member_functions)
	(read_struct_type): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24311, FAIL: S-records with constructors
@ 2019-03-08 13:11 sergiodj+buildbot
  2019-03-08 20:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-08 13:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e

PR24311, FAIL: S-records with constructors

Not padding string merge section output to its alignment can cause
failures of the S-record tests when input string merge sections are
padded, since the ELF linker output for the single string section
would shrink compared to the SREC linker output.  That might result in
following sections having different addresses.
On the other hand, padding string merge section output when input
string merge sections are *not* padded can also cause failures, in
this case due to the ELF linker output for the string section being
larger (due to padding) than the SREC linker output.

It would be better to write a more robust test, but it is also nice
to leave input unchanged when no string merges occur.

	PR 24311
	* merge.c (merge_strings): Return secinfo.  Don't pad section
	to alignment here.
	(_bfd_merge_sections): Pad section to alignment here, if input
	sections contributing to merged output all pad to alignment.
	Formatting.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Support styling on native MS-Windows console
@ 2019-03-09  7:02 sergiodj+buildbot
  2019-03-09  8:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09  7:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e4adb93903d4ae0b7ab2b5004364e50627df95f7 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: e4adb93903d4ae0b7ab2b5004364e50627df95f7

Support styling on native MS-Windows console

gdb/ChangeLog:
2019-03-08  Eli Zaretskii  <eliz@gnu.org>

	PR/24315
	* utils.c (can_emit_style_escape) [_WIN32]: Don't disable styling
	on MS-Windows if $TERM is not defined.

	* cli/cli-style.c: Set cli_styling to 1 in the MinGW build.

	* posix-hdep.c (gdb_console_fputs):
	* mingw-hdep.c (rgb_to_16colors, gdb_console_fputs): New
	functions.
	* ui-file.h (gdb_console_fputs): Add prototype.

	* ui-file.c (stdio_file::puts): Call gdb_console_fputs, and fall
	back to fputs only if the former returns zero.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_array from rank_one_type
@ 2019-03-09 13:57 sergiodj+buildbot
  2019-03-09 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 13:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b9f4512f250f7fa685f1f888b6fcbe2e34dc9733 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: b9f4512f250f7fa685f1f888b6fcbe2e34dc9733

Split rank_one_type_parm_array from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_array): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_int from rank_one_type
@ 2019-03-09 14:21 sergiodj+buildbot
  2019-03-09 19:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 14:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 34910087ebf8fb3f1646d9177d7c961a1b3231da ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 34910087ebf8fb3f1646d9177d7c961a1b3231da

Split rank_one_type_parm_int from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_int): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_range from rank_one_type
@ 2019-03-09 14:58 sergiodj+buildbot
  2019-03-09 23:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 14:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0dd322dc1345d1b8809f20a674c977276f0c0430 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 0dd322dc1345d1b8809f20a674c977276f0c0430

Split rank_one_type_parm_range from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_range): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_bool from rank_one_type
@ 2019-03-09 15:10 sergiodj+buildbot
  2019-03-10  0:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 15:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2c50903575cec09d1748612fd0355b766ec04a19 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 2c50903575cec09d1748612fd0355b766ec04a19

Split rank_one_type_parm_bool from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_bool): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_complex from rank_one_type
@ 2019-03-09 15:36 sergiodj+buildbot
  2019-03-10  3:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 15:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2598a94b1e23c148a8f84d796e92de3a10d6e4e5 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 2598a94b1e23c148a8f84d796e92de3a10d6e4e5

Split rank_one_type_parm_complex from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_complex): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_struct from rank_one_type
@ 2019-03-09 15:50 sergiodj+buildbot
  2019-03-10  4:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 15:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 595f96a94448d1327aeac8783622e390794a722c ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 595f96a94448d1327aeac8783622e390794a722c

Split rank_one_type_parm_struct from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_struct): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_char from rank_one_type
@ 2019-03-09 21:01 sergiodj+buildbot
  2019-03-09 21:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-09 21:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41ea472809e1eaabd3858b41c9189717e9c69323 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 41ea472809e1eaabd3858b41c9189717e9c69323

Split rank_one_type_parm_char from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_char): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Split rank_one_type_parm_float from rank_one_type
@ 2019-03-10  1:16 sergiodj+buildbot
  2019-03-10  2:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-10  1:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7f17b20d6020f2a40369ef0568501ebcda952243 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 7f17b20d6020f2a40369ef0568501ebcda952243

Split rank_one_type_parm_float from rank_one_type

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type_parm_float): New function extracted
	from...
	(rank_one_type): ... this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove unnecessary cases from rank_one_type's switch
@ 2019-03-10  6:46 sergiodj+buildbot
  2019-03-10  7:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-10  6:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 568c0683da0a5d1cf5c62c9deb8abb8513875eee ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 568c0683da0a5d1cf5c62c9deb8abb8513875eee

Remove unnecessary cases from rank_one_type's switch

We return INCOMPATIBLE_TYPE_BADNESS for all these type codes, so we might as
well just let them go to the default case.

Incidentally, this patch also makes this false positive error go away when
compiling with gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0, default compiler on
Ubuntu 18.04.

  CXX    gdbtypes.o
/home/smarchi/src/binutils-gdb/gdb/gdbtypes.c: In function rank rank_one_type(type*, type*, value*):
/home/smarchi/src/binutils-gdb/gdb/gdbtypes.c:4259:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^

gdb/ChangeLog:

	* gdbtypes.c (rank_one_type): Remove unnecessary cases from switch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove redundant assignment from dwarf2_find_containing_comp_unit
@ 2019-03-11 17:36 sergiodj+buildbot
  2019-03-11 18:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-11 17:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 82cb27ff6b4e1ae811e72a02dddc3db4c9ff97b8 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 82cb27ff6b4e1ae811e72a02dddc3db4c9ff97b8

Remove redundant assignment from dwarf2_find_containing_comp_unit

dwarf2_find_containing_comp_unit has two assignments to "this_cu" in
quick succession, both of which are just:

  this_cu = dwarf2_per_objfile->all_comp_units[low];

... with no intervening assignments.

This patch removes the second assignment.  I'm checking this in as
obvious.  Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-11  Tom Tromey  <tromey@adacore.com>

	* dwarf2read.c (dwarf2_find_containing_comp_unit): Remove
	redundant assignment to "this_cu".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S/390: arch13: Adjust to recent changes
@ 2019-03-12 13:40 sergiodj+buildbot
  2019-03-12 16:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 13:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 40f382e88d0391ffaa4098c92cbf339a7924a629 ***

Author: Andreas Krebbel <krebbel@linux.ibm.com>
Branch: master
Commit: 40f382e88d0391ffaa4098c92cbf339a7924a629

S/390: arch13: Adjust to recent changes

opcodes/ChangeLog:

2019-03-12  Andreas Krebbel  <krebbel@linux.ibm.com>

	* s390-opc.txt: Rename selhhhr to selfhr.  Remove optional operand
	from vstrszb, vstrszh, and vstrszf.

gas/ChangeLog:

2019-03-12  Andreas Krebbel  <krebbel@linux.ibm.com>

	* testsuite/gas/s390/zarch-arch13.s: Adjust testcase to optable changes.
	* testsuite/gas/s390/zarch-arch13.d: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make null_ptid and minus_one_ptid "const"
@ 2019-03-12 17:21 sergiodj+buildbot
  2019-03-12 20:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 17:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 17547186c25aa96d078a6ff9d61a55880fa009f4 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 17547186c25aa96d078a6ff9d61a55880fa009f4

Make null_ptid and minus_one_ptid "const"

This makes null_ptid and minus_one_ptid "const".  I think this is an
improvement because it means they can't be accidentally modified.

2019-03-12  Tom Tromey  <tromey@adacore.com>

	* common/ptid.c (null_ptid, minus_one_ptid): Now const.
	* common/ptid.h (null_ptid, minus_one_ptid): Now const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix test-cp-name-parser build, unused variable
@ 2019-03-12 17:34 sergiodj+buildbot
  2019-03-12 21:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 17:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3276427003bd1fc676d1cb913c4d09a9f7b1c74f ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 3276427003bd1fc676d1cb913c4d09a9f7b1c74f

Fix test-cp-name-parser build, unused variable

  $ make test-cp-name-parser
  ...
  CXX    test-cp-name-parser.o
  src/gdb/cp-name-parser.y: In function int gdb::main(int, char**):
  src/gdb/cp-name-parser.y:2137:6: error: unused variable len [-Werror=unused-variable]
    int len;
	^~~
  cc1plus: all warnings being treated as errors

gdb/ChangeLog:
2019-03-12  Pedro Alves  <palves@redhat.com>

	* cp-name-parser.y (main): Remove unused 'len' variable.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make remote.c ptid constants "const"
@ 2019-03-12 17:59 sergiodj+buildbot
  2019-03-13  0:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 17:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ffdd69cf7840f3b158de16819591361c8dae3a4d ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: ffdd69cf7840f3b158de16819591361c8dae3a4d

Make remote.c ptid constants "const"

This changes magic_null_ptid, not_sent_ptid, and any_thread_ptid to be
"const".  This is a minor improvement that makes it so these can't be
accidentally modified.

Tested by rebuilding.  I'm checking this in.

gdb/ChangeLog
2019-03-12  Tom Tromey  <tromey@adacore.com>

	* remote.c (magic_null_ptid, not_sent_ptid, any_thread_ptid): Now
	const.  Add initializers.
	(_initialize_remote): Don't initialize ptid globals.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Prepare for DejaGnu 1.6.2
@ 2019-03-12 20:07 sergiodj+buildbot
  2019-03-13  4:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 20:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7cde5fc2ec2e32e8a81ac613d26cf86bf8623816 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 7cde5fc2ec2e32e8a81ac613d26cf86bf8623816

gdb/testsuite: Prepare for DejaGnu 1.6.2

Changes in DejaGnu 1.6.2 mean that our testsuite will no longer run.
This is because of some confusion over how the gdb.exp file is
handled.

The gdb.exp file is really the tool init file, which is loaded from
within the DejaGnu core, and it should not be loaded directly from any
other file in the testsuite.

DejaGnu tries to prevent the same library being loaded twice by
remembering the names of library files as they are loaded.  Until
recently loading the tool init file in DejaGnu was very similar to
loading a library file, as a result, loading the gdb.exp tool init
file simply recorded 'gdb.exp' as having been loaded, future attempts
to load 'gdb.exp' as a library would then be ignored (as the file was
marked as already loaded).

DejaGnu has now changed so that it supports having both a tool init
file and a library with the same name, something that was not possible
before.  What this means however is that when the core loads the
'gdb.exp' tool init file it no longer marks the library 'gdb.exp' as
having been loaded.  When we then execute 'load_lib gdb.exp' we then
try to reload the 'gdb.exp' file.

Unfortunately our gdb.exp file can only be loaded once.  It use of
'rename cd builtin_cd' means that a second attempt to load this file
will fail.

This was discussed on the DejaGnu list here:
   http://lists.gnu.org/archive/html/dejagnu/2019-03/msg00000.html

and the suggested advice is that, unless we have some real requirement
to load the tool init file twice, we should remove calls to 'load_lib
gdb.exp' and rely on DejaGnu to load the file for us, which is what
this patch does.

I've tested with native X86-64/GNU Linux and see no regressions.

gdb/testsuite/ChangeLog:

	* config/default.exp: Remove 'load_lib gdb.exp'.
	* config/monitor.exp: Likewise.
	* config/sid.exp: Likewise.
	* config/sim.exp: Likewise.
	* config/slite.exp: Likewise.
	* config/unix.exp: Likewise.
	* gdb.base/default.exp: Remove unhelpful comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Handle an edge case for minisym TLS variable lookups.
@ 2019-03-12 21:26 sergiodj+buildbot
  2019-03-13  8:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 21:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT df22c1e5d53c38f38bce6072bb46de240f9e0e2b ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: df22c1e5d53c38f38bce6072bb46de240f9e0e2b

Handle an edge case for minisym TLS variable lookups.

If a TLS variable is provided by a minisym from a separate debug file,
the separate debug file is passed to
gdbarch_fetch_tls_load_module_address.  However, the object files
stored in the shared object list are the original object files, not
the separate debug object files.  In this case,
svr4_fetch_objfile_link_map was failing to find the link map entry
since the debug object file is not in its internal list, only the
original object file.

gdb/ChangeLog:

	* solib-svr4.c (svr4_fetch_objfile_link_map): Look for
	objfile->separate_debug_objfile_backlink if not NULL.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a new gdbarch method to resolve the address of TLS variables.
@ 2019-03-12 21:52 sergiodj+buildbot
  2019-03-13 11:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 21:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6e056c817845f3d736a1be6b68c69b439c6c6d25 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 6e056c817845f3d736a1be6b68c69b439c6c6d25

Add a new gdbarch method to resolve the address of TLS variables.

Permit TLS variable addresses to be resolved purely by an ABI rather
than requiring a target method.  This doesn't try the target method if
the ABI function is present (even if the ABI function fails) to
simplify error handling.

gdb/ChangeLog:

	* gdbarch.sh (get_thread_local_address): New method.
	* gdbarch.h, gdbarch.c: Regenerate.
	* target.c (target_translate_tls_address): Use
	gdbarch_get_thread_local_address if present instead of
	target::get_thread_local_address.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove code disabled since at least 1999 from lookup_struct_elt_type.
@ 2019-03-12 22:06 sergiodj+buildbot
  2019-03-13 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 22:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 36c53a0262f84ad11d738471789dadfa9c4eb320 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 36c53a0262f84ad11d738471789dadfa9c4eb320

Remove code disabled since at least 1999 from lookup_struct_elt_type.

Update the comment above the function to reflect the code removal and
document the existing behavior.

gdb/ChangeLog:

	* gdbtypes.c (lookup_struct_elt_type): Update comment and
	remove disabled code block.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Support TLS variables on FreeBSD/i386.
@ 2019-03-12 22:59 sergiodj+buildbot
  2019-03-13 18:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 22:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ce25aa57a3cdd028be5868423e6e55506ccd1053 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: ce25aa57a3cdd028be5868423e6e55506ccd1053

Support TLS variables on FreeBSD/i386.

Derive the pointer to the DTV array from the gs_base register.  As
with FreeBSD/amd64, gs_base is currently only available via the native
target.

gdb/ChangeLog:

	* i386-fbsd-tdep.c (i386fbsd_get_thread_local_address): New.
	(i386fbsd_init_abi): Install gdbarch
	"fetch_tls_load_module_address" and "get_thread_local_address"
	methods.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Support TLS variables on FreeBSD/powerpc.
@ 2019-03-12 23:25 sergiodj+buildbot
  2019-03-13 21:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 23:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8399425f5f472ad8e630bb30ad2dbefeddbb68b7 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 8399425f5f472ad8e630bb30ad2dbefeddbb68b7

Support TLS variables on FreeBSD/powerpc.

Derive the pointer to the DTV array from the %r2 register on 32-bit
powerpc and %r13 on 64-bit powerpc.

gdb/ChangeLog:

	* ppc-fbsd-tdep.c (ppcfbsd_get_thread_local_address): New.
	(ppcfbsd_init_abi): Install gdbarch
	"fetch_tls_load_module_address" and "get_thread_local_address"
	methods.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] The NEWS file had two "New targets" sections for 8.3.
@ 2019-03-12 23:39 sergiodj+buildbot
  2019-03-13 22:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-12 23:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 197df35ec4f370e9902892ff8339232869cf86ce ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: 197df35ec4f370e9902892ff8339232869cf86ce

The NEWS file had two "New targets" sections for 8.3.

gdb/ChangeLog:

	* NEWS: Combine separate "New targets" sections for 8.3.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update comment for target::get_thread_local_address.
@ 2019-03-13  9:31 sergiodj+buildbot
  2019-03-13 10:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13  9:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd250a1898bb6fdb41f4a1063dbcfac04affcd11 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: cd250a1898bb6fdb41f4a1063dbcfac04affcd11

Update comment for target::get_thread_local_address.

There isn't an 'objfile' parameter, instead 'load_module_addr' is used
to indicate the executable or shared library.  Also, the function
throws errors rather than returning error values.

gdb/ChangeLog:

	* target.h (target::get_thread_local_address): Update comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs
@ 2019-03-13 12:16 sergiodj+buildbot
  2019-03-14  3:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13 12:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 37c18eedffe3926a330149ca93e7407917e2be38 ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: 37c18eedffe3926a330149ca93e7407917e2be38

[BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs

This is part of the patch series to add support for BTI and
PAC in AArch64 linker.

1) This patch adds a new ld command line option: --force-bti.
In the presence of this option, the linker enables BTI with the
GNU_PROPERTY_AARCH64_FEATURE_1_BTI feature. This gives out warning
in case of missing gnu notes for BTI in inputs.
2) It also defines a new set of BTI enabled PLTs. These are used either
when all the inputs are marked with GNU_PROPERTY_AARCH64_FEATURE_1_BTI
or when the new --force-bti option is used. This required adding new
fields in elf_aarch64_link_hash_table so that we could make the PLT
related information more generic.
3) It also defines a dynamic tag DT_AARCH64_BTI_PLT. The linker uses
this whenever it picks BTI enabled PLTs.
All these are made according to the new AArch64 ELF ABI
https://developer.arm.com/docs/ihi0056/latest/elf-for-the-arm-64-bit-architecture-aarch64-abi-2018q4

*** bfd/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* bfd-in.h (aarch64_plt_type, aarch64_enable_bti_type): New.
	(aarch64_bti_pac_info): New.
	(bfd_elf64_aarch64_set_options): Add aarch64_bti_pac_info argument.
	(bfd_elf32_aarch64_set_options): Likewise.
	* bfd-in2.h: Regenerate
	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): New.
	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_BTI_TLSDESC_ENTRY_SIZE): New.
	(elfNN_aarch64_small_plt0_bti_entry): New.
	(elfNN_aarch64_small_plt_bti_entry): New.
	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): New.
	(elf_aarch64_obj_tdata): Add no_bti_warn and plt_type fields.
	(elf_aarch64_link_hash_table): Add plt0_entry, plt_entry and
	tlsdesc_plt_entry_size fields.
	(elfNN_aarch64_link_hash_table_create): Initialise the new fields.
	(setup_plt_values): New helper function.
	(bfd_elfNN_aarch64_set_options): Use new bp_info to set plt sizes and
	bti enable type.
	(elfNN_aarch64_allocate_dynrelocs): Use new size members instead of
	fixed macros.
	(elfNN_aarch64_size_dynamic_sections): Likewise and add checks.
	(elfNN_aarch64_create_small_pltn_entry): Use new generic pointers
	to plt stubs instead of fixed ones and update filling them according
	to the need for bti.
	(elfNN_aarch64_init_small_plt0_entry): Likewise.
	(elfNN_aarch64_finish_dynamic_sections): Likewise.
	(get_plt_type, elfNN_aarch64_get_synthetic_symtab): New.
	(elfNN_aarch64_plt_sym_val): Update size accordingly.
	(elfNN_aarch64_link_setup_gnu_properties): Set up plts if BTI GNU NOTE
	is set.
	(bfd_elfNN_get_synthetic_symtab): Define.
	(elfNN_aarch64_merge_gnu_properties): Give out warning with --force-bti
	and mising BTI NOTE SECTION.

*** binutils/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* readelf.c (get_aarch64_dynamic_type): New.
	(get_dynamic_type): Use above for EM_AARCH64.
	(dynamic_section_aarch64_val): New.
	(process_dynamic_section): Use above for EM_AARCH64.

*** include/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* elf/aarch64.h (DT_AARCH64_BTI_PLT): New.

*** ld/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* NEWS: Document --force-bti.
	* emultempl/aarch64elf.em (plt_type, bti_type, OPTION_FORCE_BTI): New.
	(PARSE_AND_LIST_SHORTOPTS, PARSE_AND_LIST_OPTIONS): Add force-bti.
	(PARSE_AND_LIST_ARGS_CASES): Handle OPTION_FORCE_BTI.
	* testsuite/ld-aarch64/aarch64-elf.exp: Add all the tests below.
	* testsuite/ld-aarch64/bti-plt-1.d: New test.
	* testsuite/ld-aarch64/bti-plt-1.s: New test.
	* testsuite/ld-aarch64/bti-plt-2.s: New test.
	* testsuite/ld-aarch64/bti-plt-2.d: New test.
	* testsuite/ld-aarch64/bti-plt-3.d: New test.
	* testsuite/ld-aarch64/bti-plt-4.d: New test.
	* testsuite/ld-aarch64/bti-plt-5.d: New test.
	* testsuite/ld-aarch64/bti-plt-6.d: New test.
	* testsuite/ld-aarch64/bti-plt-7.d: New test.
	* testsuite/ld-aarch64/bti-plt-so.s: New test.
	* testsuite/ld-aarch64/bti-plt.ld: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BFD, LD, AArch64, 3/3] Add --pac-plt to enable PLTs protected with PAC.
@ 2019-03-13 12:28 sergiodj+buildbot
  2019-03-14  4:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13 12:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1dbade7441b9f32d6ba9aa1d44da5f28c44282fa ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: 1dbade7441b9f32d6ba9aa1d44da5f28c44282fa

[BFD, LD, AArch64, 3/3] Add --pac-plt to enable PLTs protected with PAC.

This is part of the patch series to add support for BTI and
PAC in AArch64 linker.

1) This patch adds new definitions of PAC enabled PLTs
and both BTI and PAC enabled PLTs.
2) It also defines the new dynamic tag DT_AARCH64_PAC_PLT
for the PAC enabled PLTs.
3) This patch adds a new ld command line option: --pac-plt.
In the presence of this option, the linker uses the PAC
enabled PLTs and marks with DT_AARCH64_PAC_PLT.
4) In case both BTI and PAC are enabled the linker should
pick PLTs enabled with both and also use dynamic tags for both.
All these are made according to the new AArch64 ELF ABI
https://developer.arm.com/docs/ihi0056/latest/elf-for-the-arm-64-bit-architecture-aarch64-abi-2018q4

*** bfd/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>

	* elfnn-aarch64.c (PLT_PAC_ENTRY_SIZE, PLT_PAC_SMALL_ENTRY_SIZE): New.
	(PLT_BTI_PAC_ENTRY_SIZE, PLT_BTI_PAC_SMALL_ENTRY_SIZE): New.
	(setup_plt_values): Account for PAC or PAC and BTI enabled PLTs.
	(elfNN_aarch64_size_dynamic_sections): Add checks for PLT_BTI_PAC
	and PLT_PAC_PLT.
	(elfNN_aarch64_finish_dynamic_sections): Account for PLT_BTI_PAC.
	(get_plt_type): Add case for DT_AARCH64_PAC_PLT.
	(elfNN_aarch64_plt_sym_val): Add cases for PLT_BTI_PAC and PLT_PAC.

*** binutils/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>

	* readelf.c (get_aarch64_dynamic_type): Add case for
	DT_AARCH64_PAC_PLT.
	(dynamic_section_aarch64_val): Likewise.

*** include/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>

	* elf/aarch64.h (DT_AARCH64_PAC_PLT): New.

*** ld/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>

	* NEWS: Document --pac-plt.
	* emultempl/aarch64elf.em (OPTION_PAC_PLT): New.
	(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add pac-plt.
	(PARSE_AND_LIST_ARGS_CASES): Handle OPTION_PAC_PLT.
	* testsuite/ld-aarch64/aarch64-elf.exp: Add the following tests.
	* testsuite/ld-aarch64/bti-pac-plt-1.d: New test.
	* testsuite/ld-aarch64/bti-pac-plt-2.d: New test.
	* testsuite/ld-aarch64/pac-plt-1.d: New test.
	* testsuite/ld-aarch64/pac-plt-2.d: New test.
	* testsuite/ld-aarch64/bti-plt-1.s: Add .ifndef directive.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a more general version of lookup_struct_elt_type.
@ 2019-03-13 13:37 sergiodj+buildbot
  2019-03-13 14:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13 13:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ef0bd2046f58fac69577892c2d3b44b20d027476 ***

Author: John Baldwin <jhb@FreeBSD.org>
Branch: master
Commit: ef0bd2046f58fac69577892c2d3b44b20d027476

Add a more general version of lookup_struct_elt_type.

lookup_struct_elt is a new function which returns a tuple of
information about a component of a structure or union.  The returned
tuple contains a pointer to the struct field object for the component
as well as a bit offset of that field within the structure.  If the
field names a field in an anonymous substructure, the offset is the
"global" offset relative to the original structure type.  If noerr is
set, then the returned tuple will set the field pointer to NULL to
indicate a missing component rather than throwing an error.

lookup_struct_elt_type is now reimplemented in terms of this new
function.  It simply returns the type of the returned field.

gdb/ChangeLog:

	* gdbtypes.c (lookup_struct_elt): New function.
	(lookup_struct_elt_type): Reimplement via lookup_struct_elt.
	* gdbtypes.h (struct struct_elt): New type.
	(lookup_struct_elt): New prototype.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Factor out mi_ui_out instantiation logic
@ 2019-03-13 17:50 sergiodj+buildbot
  2019-03-14  5:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13 17:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8e5e5494f8653dd83ce1413d141e26c09dddab7b ***

Author: Simon Marchi <simon.marchi@polymtl.ca>
Branch: master
Commit: 8e5e5494f8653dd83ce1413d141e26c09dddab7b

Factor out mi_ui_out instantiation logic

When re-reviewing this [1] I noticed that there were two spots encoding
the logic of instantiating an mi_ui_out object based on the interpreter
name ("mi", "mi1", "mi2" or "mi3"):

 - mi_interp::init
 - mi_load_progress

Both encode the logic to choose what the default version is when the
interpreter name is "mi".  I had forgotten the one in mi_load_progress.

Therefore, I propose extracting that logic to a single function.  I
started to add a new overload of mi_out_new, then realized the current
mi_out_new wasn't very useful, being just a thing wrapper around "new
mi_ui_out".  So I ended up with just an mi_out_new function taking the
interp name as parameter.

I ran the gdb.mi tests, and verified manually the behavior (including
the load command).

[1] https://sourceware.org/ml/gdb-patches/2019-01/msg00427.html

gdb/ChangeLog:

	* mi/mi-out.h (mi_out_new): Change parameter to const char *.
	* mi/mi-out.c (mi_out_new): Change parameter to const char *,
	instantiate mi_ui_out based on interpreter name.
	* mi/mi-interp.c (mi_interp::init): Use the new mi_out_new.
	* mi/mi-main.c (mi_load_progress): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change pid_to_str to return std::string
@ 2019-03-13 20:07 sergiodj+buildbot
  2019-03-14  8:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-13 20:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a068643d69ce0f25d5f7cbdaa1d0a3211d72c081 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a068643d69ce0f25d5f7cbdaa1d0a3211d72c081

Change pid_to_str to return std::string

Currently the target pid_to_str method returns a const char *, so many
implementations have a static buffer that they update.  This patch
changes these methods to return a std::string instead.  I think this
is cleaner and avoids possible gotchas when calling pid_to_str on
different ptids in a single statement.  (Though no such calls exist
currently.)

This also updates various helper functions, and the gdbarch pid_to_str
methods.

I also made a best effort to fix all the callers, but I can't build
some of the *-nat.c files.

Tested by the buildbot.

gdb/ChangeLog
2019-03-13  Tom Tromey  <tromey@adacore.com>

	* i386-gnu-nat.c (i386_gnu_nat_target::fetch_registers)
	(i386_gnu_nat_target::store_registers): Update.
	* target-debug.h (target_debug_print_std_string): New macro.
	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
	* windows-tdep.c (display_one_tib): Update.
	* tui/tui-stack.c (tui_make_status_line): Update.
	* top.c (print_inferior_quit_action): Update.
	* thread.c (thr_try_catch_cmd): Update.
	(add_thread_with_info): Update.
	(thread_target_id_str): Update.
	(thr_try_catch_cmd): Update.
	(thread_command): Update.
	(thread_find_command): Update.
	* record-btrace.c (record_btrace_target::info_record)
	(record_btrace_resume_thread, record_btrace_target::resume)
	(record_btrace_cancel_resume, record_btrace_step_thread)
	(record_btrace_target::wait, record_btrace_target::wait)
	(record_btrace_target::wait, record_btrace_target::stop): Update.
	* progspace.c (print_program_space): Update.
	* process-stratum-target.c
	(process_stratum_target::thread_address_space): Update.
	* linux-fork.c (linux_fork_mourn_inferior)
	(detach_checkpoint_command, info_checkpoints_command)
	(linux_fork_context): Update.
	(linux_fork_detach): Update.
	(class scoped_switch_fork_info): Update.
	(delete_checkpoint_command): Update.
	* infrun.c (follow_fork_inferior): Update.
	(follow_fork_inferior): Update.
	(proceed_after_vfork_done): Update.
	(handle_vfork_child_exec_or_exit): Update.
	(follow_exec): Update.
	(displaced_step_prepare_throw): Update.
	(displaced_step_restore): Update.
	(start_step_over): Update.
	(resume_1): Update.
	(clear_proceed_status_thread): Update.
	(proceed): Update.
	(print_target_wait_results): Update.
	(do_target_wait): Update.
	(context_switch): Update.
	(stop_all_threads): Update.
	(restart_threads): Update.
	(finish_step_over): Update.
	(handle_signal_stop): Update.
	(switch_back_to_stepped_thread): Update.
	(keep_going_pass_signal): Update.
	(print_exited_reason): Update.
	(normal_stop): Update.
	* inferior.c (inferior_pid_to_str): Change return type.
	(print_selected_inferior): Update.
	(add_inferior): Update.
	(detach_inferior): Update.
	* dummy-frame.c (fprint_dummy_frames): Update.
	* dcache.c (dcache_info_1): Update.
	* btrace.c (btrace_enable, btrace_disable, btrace_teardown)
	(btrace_fetch, btrace_clear): Update.
	* linux-tdep.c (linux_core_pid_to_str): Change return type.
	* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): Change return
	type.
	* fbsd-tdep.c (fbsd_core_pid_to_str): Change return type.
	* sol2-tdep.h (sol2_core_pid_to_str): Change return type.
	* sol2-tdep.c (sol2_core_pid_to_str): Change return type.
	* gdbarch.c, gdbarch.h: Rebuild.
	* gdbarch.sh (core_pid_to_str): Change return type.
	* windows-nat.c (struct windows_nat_target) <pid_to_str>: Change
	return type.
	(windows_nat_target::pid_to_str): Change return type.
	(windows_delete_thread): Update.
	(windows_nat_target::attach): Update.
	(windows_nat_target::files_info): Update.
	* target-delegates.c: Rebuild.
	* sol-thread.c (class sol_thread_target) <pid_to_str>: Change
	return type.
	(sol_thread_target::pid_to_str): Change return type.
	* remote.c (class remote_target) <pid_to_str>: Change return
	type.
	(remote_target::pid_to_str): Change return type.
	(extended_remote_target::attach, remote_target::remote_stop_ns)
	(remote_target::remote_notif_remove_queued_reply)
	(remote_target::push_stop_reply, remote_target::disable_btrace):
	Update.
	(extended_remote_target::attach): Update.
	* remote-sim.c (struct gdbsim_target) <pid_to_str>: Change return
	type.
	(gdbsim_target::pid_to_str): Change return type.
	* ravenscar-thread.c (struct ravenscar_thread_target)
	<pid_to_str>: Change return type.
	(ravenscar_thread_target::pid_to_str): Change return type.
	* procfs.c (class procfs_target) <pid_to_str>: Change return
	type.
	(procfs_target::pid_to_str): Change return type.
	(procfs_target::attach): Update.
	(procfs_target::detach): Update.
	(procfs_target::fetch_registers): Update.
	(procfs_target::store_registers): Update.
	(procfs_target::wait): Update.
	(procfs_target::files_info): Update.
	* obsd-nat.c (obsd_nat_target::pid_to_str): Change return type.
	* nto-procfs.c (struct nto_procfs_target) <pid_to_str>: Change
	return type.
	(nto_procfs_target::pid_to_str): Change return type.
	(nto_procfs_target::files_info, nto_procfs_target::attach): Update.
	* linux-thread-db.c (class thread_db_target) <pid_to_str>: Change
	return type.
	* linux-nat.c (linux_nat_target::pid_to_str): Change return type.
	(exit_lwp): Update.
	(attach_proc_task_lwp_callback, get_detach_signal)
	(detach_one_lwp, resume_lwp, linux_nat_target::resume)
	(linux_nat_target::resume, wait_lwp, stop_callback)
	(maybe_clear_ignore_sigint, stop_wait_callback, status_callback)
	(save_stop_reason, select_event_lwp, linux_nat_filter_event)
	(linux_nat_wait_1, resume_stopped_resumed_lwps)
	(linux_nat_target::wait, linux_nat_stop_lwp): Update.
	* inf-ptrace.c (inf_ptrace_target::pid_to_str): Change return
	type.
	(inf_ptrace_target::attach): Update.
	(inf_ptrace_target::files_info): Update.
	* go32-nat.c (struct go32_nat_target) <pid_to_str>: Change return
	type.
	(go32_nat_target::pid_to_str): Change return type.
	* gnu-nat.c (gnu_nat_target::pid_to_str): Change return type.
	(gnu_nat_target::wait): Update.
	(gnu_nat_target::wait): Update.
	(gnu_nat_target::resume): Update.
	* fbsd-nat.c (fbsd_nat_target::pid_to_str): Change return type.
	(fbsd_nat_target::wait): Update.
	* darwin-nat.c (darwin_nat_target::pid_to_str): Change return
	type.
	(darwin_nat_target::attach): Update.
	* corelow.c (class core_target) <pid_to_str>: Change return type.
	(core_target::pid_to_str): Change return type.
	* target.c (normal_pid_to_str): Change return type.
	(default_pid_to_str): Likewise.
	(target_pid_to_str): Change return type.
	(target_translate_tls_address): Update.
	(target_announce_detach): Update.
	* bsd-uthread.c (struct bsd_uthread_target) <pid_to_str>: Change
	return type.
	(bsd_uthread_target::pid_to_str): Change return type.
	* bsd-kvm.c (class bsd_kvm_target) <pid_to_str>: Change return
	type.
	(bsd_kvm_target::pid_to_str): Change return type.
	* aix-thread.c (class aix_thread_target) <pid_to_str>: Change
	return type.
	(aix_thread_target::pid_to_str): Change return type.
	* target.h (struct target_ops) <pid_to_str>: Change return type.
	(target_pid_to_str, normal_pid_to_str): Likewise.
	* obsd-nat.h (class obsd_nat_target) <pid_to_str>: Change return
	type.
	* linux-nat.h (class linux_nat_target) <pid_to_str>: Change return
	type.
	* inf-ptrace.h (struct inf_ptrace_target) <pid_to_str>: Change
	return type.
	* gnu-nat.h (struct gnu_nat_target) <pid_to_str>: Change return
	type.
	* fbsd-nat.h (class fbsd_nat_target) <pid_to_str>: Change return
	type.
	* darwin-nat.h (class darwin_nat_target) <pid_to_str>: Change
	return type.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Properly set IBT and SHSTK properties for -z ibt/shstk
@ 2019-03-14  0:03 sergiodj+buildbot
  2019-03-14  0:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-14  0:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 44b27f959abf267fc9ec228f4131c932597b01d4 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 44b27f959abf267fc9ec228f4131c932597b01d4

x86: Properly set IBT and SHSTK properties for -z ibt/shstk

There should be no AND properties if some input doesn't have them.  We
should set IBT and SHSTK properties for -z ibt and -z shstk if needed.

bfd/

	PR ld/24322
	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Properly
	merge GNU_PROPERTY_X86_FEATURE_1_[IBT|SHSTK].

ld/

	PR ld/24322
	* testsuite/ld-i386/i386.exp: Run PR ld/24322 tests.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/pr24322a.d: New file.
	* testsuite/ld-i386/pr24322b.d: Likewise.
	* testsuite/ld-x86-64/pr24322a-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24322a.d: Likewise.
	* testsuite/ld-x86-64/pr24322b-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24322b.d: Likewise.
	* testsuite/ld-x86-64/pr24322a.s: Likewise.
	* testsuite/ld-x86-64/pr24322b.s: Likewise.
	* testsuite/ld-x86-64/pr24322c.s: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add the "set style source" command
@ 2019-03-14 12:15 sergiodj+buildbot
  2019-03-14 14:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-14 12:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d085f98901ccd6c9764b93d3983f3c7797addc4f ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: d085f98901ccd6c9764b93d3983f3c7797addc4f

Add the "set style source" command

This adds "set style source" (and "show style source") commands.  This
gives the user control over whether source code is highlighted.

gdb/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* NEWS: Add item for "style sources" commands.
	* source-cache.c (source_cache::get_source_lines): Check
	source_styling.
	* cli/cli-style.c (source_styling): New global.
	(_initialize_cli_style): Add "style sources" commands.
	(show_style_sources): New function.
	* cli/cli-style.h (source_styling): Declare.

gdb/doc/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.texinfo (Output Styling): Document "set style source" and
	"show style source".

gdb/testsuite/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.base/style.exp: Add "set style sources" test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix illegal memory access parsing a corrupt ELF file.
@ 2019-03-14 15:01 sergiodj+buildbot
  2019-03-14 21:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-14 15:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT be22c732bf873e0c7e8a08564c97cafdfcf153bb ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: be22c732bf873e0c7e8a08564c97cafdfcf153bb

Fix illegal memory access parsing a corrupt ELF file.

	PR 24332
	* elflink.c (elf_link_add_object_symbols): Add new local variable
	extversym_end.  Initialise it to point to the end of the version
	symbol table, if present.  Check it when initialising and updating
	the ever pointer.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix colors in TUI mode in MS-Windows build with ncurses
@ 2019-03-14 16:03 sergiodj+buildbot
  2019-03-15  0:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-14 16:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3fff2c370cd658877be8107bfe9dde8dd0470b46 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 3fff2c370cd658877be8107bfe9dde8dd0470b46

Fix colors in TUI mode in MS-Windows build with ncurses

The MS-Windows port of ncurses fails to switch to a color pair if
one or both of the colors are the implicit default colors.  This
change records the default colors when TUI is initialized, and
then specifies them explicitly when a color pair uses the default
colors.  This allows color styling in TUI mode on MS-Windows.

gdb/ChangeLog:
2019-03-14  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-io.c [__MINGW32__]: Include windows.h.  Declare
	ncurses_norm_attr.
	(tui_initialize_io) [__MINGW32__]: Record the default terminal
	colors in ncurses_norm_attr.
	(apply_ansi_escape) [__MINGW32__]: If a color in a color pair is
	"none", replace it with the default color recorded in
	ncurses_norm_attr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix an illegal memory access when parsing a corrupt ELF file.
@ 2019-03-14 16:19 sergiodj+buildbot
  2019-03-15  1:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-14 16:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6cc71b820cc70b63711e9d7f584550b56e172b0a ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 6cc71b820cc70b63711e9d7f584550b56e172b0a

Fix an illegal memory access when parsing a corrupt ELF file.

	PR 24333
	* elflink.c (_bfd_elf_add_default_symbol): Add a check for a NULL
	section owner pointer when adding the default symbol.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Re-indent elf_x86_64_relocate_section
@ 2019-03-15  7:19 sergiodj+buildbot
  2019-03-15  8:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15  7:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT da0d12d2bd46730ad8327b9fac1371182996017c ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: da0d12d2bd46730ad8327b9fac1371182996017c

Re-indent elf_x86_64_relocate_section

	* elf64-x86-64.c (elf_x86_64_relocate_section): Re-indent.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86-64: Check for corrupt input with bad relocation
@ 2019-03-15  8:02 sergiodj+buildbot
  2019-03-15  9:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15  8:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 418d4036ee37807b97b8040ebe7e2c15e9db726d ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 418d4036ee37807b97b8040ebe7e2c15e9db726d

x86-64: Check for corrupt input with bad relocation

	PR ld/24338
	* elf64-x86-64.c (elf_x86_64_relocate_section): Check for corrupt
	input with bad relocation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24337, segfault in _bfd_elf_rela_local_sym
@ 2019-03-15 10:22 sergiodj+buildbot
  2019-03-15 12:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 10:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1ff31e135f04b2773e10d3e5072776c1072edbfb ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 1ff31e135f04b2773e10d3e5072776c1072edbfb

PR24337, segfault in _bfd_elf_rela_local_sym

	PR 24337
	* elf.c (_bfd_elf_rela_local_sym): Don't segfault on NULL sec.
	(_bfd_elf_rel_local_sym): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24339, segfault on NULL symbol section
@ 2019-03-15 10:35 sergiodj+buildbot
  2019-03-15 14:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 10:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fe3fef62ad11115fc3b03c0c0dcb9c38b2f544cb ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: fe3fef62ad11115fc3b03c0c0dcb9c38b2f544cb

PR24339, segfault on NULL symbol section

	PR 24339
	* elflink.c (elf_link_add_object_symbols): Bail out on a local
	symbol after globals if elf_bad_symtab is not set.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] COFF: Check for symbols defined in discarded section
@ 2019-03-15 15:15 sergiodj+buildbot
  2019-03-15 16:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 15:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2219ae0b0ebe14373850b000c2abaa31dab1d741 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 2219ae0b0ebe14373850b000c2abaa31dab1d741

COFF: Check for symbols defined in discarded section

For LTO, a symbol may defined in discarded section.  We should mark it
as undefined so that LTO plugin will make IR definition available.

	PR ld/24267
	* coffgen.c (_bfd_coff_section_already_linked): Skip discarded
	section.
	* cofflink.c (coff_link_add_symbols): Check for symbols defined
	in discarded section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use bitset for demangled_hash_languages
@ 2019-03-15 22:36 sergiodj+buildbot
  2019-03-16  6:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 22:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1b7a07cba0aa096c2eb66895ef339aa5143e9995 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1b7a07cba0aa096c2eb66895ef339aa5143e9995

Use bitset for demangled_hash_languages

I noticed that objfile_per_bfd_storage::demangled_hash_languages is a
std::vector, which seemed quite large for something that,
fundamentally, can be represented as a bitset.  This patch
reimplements it as a std::bitset.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage)
	<demangled_hash_languages>: Now a bitset.
	* minsyms.c (add_minsym_to_demangled_hash_table): Update.
	(lookup_minimal_symbol): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Slightly simplify minsym creation
@ 2019-03-15 22:44 sergiodj+buildbot
  2019-03-16  0:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 22:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3db066bcd5bac9a8d6be85ea4cfa8f52dbdcc600 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 3db066bcd5bac9a8d6be85ea4cfa8f52dbdcc600

Slightly simplify minsym creation

Only one caller of minimal_symbol_reader::record_with_info was using
the return value, so this patch simplifies this code by having it
return void and changing that caller to use record_full instead.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.h (class minimal_symbol_reader) <record_with_info>:
	Don't return the symbol.
	* coffread.c (record_minimal_symbol): Use record_full.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some unneeded initializations in minimal_symbol_reader
@ 2019-03-15 22:51 sergiodj+buildbot
  2019-03-16  8:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-15 22:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 788c80d1aff685e66b8105ddc7451cfa6a03bf1d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 788c80d1aff685e66b8105ddc7451cfa6a03bf1d

Remove some unneeded initializations in minimal_symbol_reader

minimal_symbol_reader::record_full does not need to initialize any
minsym fields to 0, because that was already done implicitly via the
use of XCNEW when allocating the msym_bunch.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.c (minimal_symbol_reader::record_full): Remove some
	initializations.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use htab_up for demangled hash
@ 2019-03-16  0:25 sergiodj+buildbot
  2019-03-16 13:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16  0:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT db92718b541158d4782dbc9f48401c20f2bbad6d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: db92718b541158d4782dbc9f48401c20f2bbad6d

Use htab_up for demangled hash

This changes objfile_per_bfd_storage::demangled_names_hash to be an
htab_up.  This lets us remove some manual management code from the
objfile_per_bfd_storage destructor.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* symtab.c (create_demangled_names_hash): Update.
	(symbol_set_names): Update.
	* objfiles.h (struct objfile_per_bfd_storage)
	<demangled_names_hash>: Now an htab_up.
	* objfiles.c (objfile_per_bfd_storage): Simplify.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Allocate minimal symbols with malloc
@ 2019-03-16  0:38 sergiodj+buildbot
  2019-03-16 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16  0:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 042d75e42c5572f333e0e06dabd3c5c4afab486c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 042d75e42c5572f333e0e06dabd3c5c4afab486c

Allocate minimal symbols with malloc

Currently, minimal symbols are allocated on the per-BFD obstack.
However, it is also possible for multiple symbol readers to create
minimal symbols for a given objfile.  In this case, the minimal
symbols will be reallocated on the obstack, leading to some waste of
storage.

This is a memory leak, but I think it won't be caught by tools like
valgrind, because valgrind doesn't know about obstacks.

This patch fixes the problem by using malloc to allocate the storage
for minimal symbols.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage) <msymbols>: Now a
	unique_xmalloc_ptr.
	(objfile::msymbols_range::begin, objfile::msymbols_range::end):
	Update.
	* minsyms.c (lookup_minimal_symbol_by_pc_section)
	(build_minimal_symbol_hash_tables)
	(minimal_symbol_reader::install): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use memcpy in minimal_symbol_reader::install
@ 2019-03-16  0:52 sergiodj+buildbot
  2019-03-16 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16  0:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0de2420c4b023e644f91a409803fedfb235bfc0b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 0de2420c4b023e644f91a409803fedfb235bfc0b

Use memcpy in minimal_symbol_reader::install

minimal_symbol_reader::install copies minsyms from the msym_bunch
objects into the allocated memory.  It seemed better to me to do this
via memcpy, as that is frequently optimized in libc.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.c (minimal_symbol_reader::install): Use memcpy.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change minimal_symbol inheritance
@ 2019-03-16  1:07 sergiodj+buildbot
  2019-03-16 17:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16  1:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT eefba3da27c23db67cc0e1707fcedd96f1c0860d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: eefba3da27c23db67cc0e1707fcedd96f1c0860d

Change minimal_symbol inheritance

This changes struct minimal_symbol to inherit from general_symbol_info
and updates various macros to cope.

Because MSYMBOL_SET_LANGUAGE and MSYMBOL_SET_NAMES were only used from
a single spot, this patch removes them in favor of simply inlining
their definitions.  I consider this to be somewhat cleaner, not least
because the "phony polymorphism" provided by such macros is not useful
in practice.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* symtab.h (struct minimal_symbol): Derive from
	general_symbol_info.
	(MSYMBOL_VALUE, MSYMBOL_VALUE_RAW_ADDRESS)
	(MSYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_BYTES)
	(MSYMBOL_BLOCK_VALUE, MSYMBOL_VALUE_CHAIN, MSYMBOL_LANGUAGE)
	(MSYMBOL_SECTION, MSYMBOL_OBJ_SECTION, MSYMBOL_NATURAL_NAME)
	(MSYMBOL_LINKAGE_NAME, MSYMBOL_DEMANGLED_NAME)
	(MSYMBOL_SEARCH_NAME): Update.
	(MSYMBOL_SET_LANGUAGE, MSYMBOL_SET_NAMES): Remove.
	* solib.c (gdb_bfd_lookup_symbol_from_symtab): Don't use memset.
	* minsyms.c (minimal_symbol_reader::record_full): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24337, segfault in _bfd_elf_rela_local_sym, again
@ 2019-03-16  4:16 sergiodj+buildbot
  2019-03-16 19:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16  4:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6835821be8bab8702e41e6946a7d8ee9441f0eee ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 6835821be8bab8702e41e6946a7d8ee9441f0eee

PR24337, segfault in _bfd_elf_rela_local_sym, again

Reverts commit 1ff31e135f, fixing the problem more generally.  There
are likely other place that will segfault on a NULL section.

	PR 24337
	* elf.c (_bfd_elf_rela_local_sym): Revert last change.
	(_bfd_elf_rel_local_sym): Likewise.
	* elflink.c (elf_link_input_bfd): Use bfd_und_section for
	section of symbols with unrecognized shndx.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify per-BFD storage management
@ 2019-03-16 11:07 sergiodj+buildbot
  2019-03-16 11:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16 11:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d6797f465c3f67b41a0db38870bbd33384b6551f ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d6797f465c3f67b41a0db38870bbd33384b6551f

Simplify per-BFD storage management

There's no reason that the objfile_per_bfd_storage must be allocated
via bfd_alloc.  This patch changes objfile_per_bfd_storage to be
managed more simply, via ordinary new and delete; and moves some code
into its (new) destructor.

While doing this I also noticed an extra initialization of
language_of_main, and removed it.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage): Declare
	destructor.
	* objfiles.c (objfile_per_bfd_storage::~objfile_per_bfd_storage):
	New.
	(get_objfile_bfd_data): Use new.  Don't initialize
	language_of_main.
	(free_objfile_per_bfd_storage): Remove.
	(objfile_bfd_data_free, objfile::~objfile): Use delete.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Revert "Use wclrtoeol in tui_show_source_line"
@ 2019-03-16 12:31 sergiodj+buildbot
  2019-03-16 21:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16 12:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 798e1c302af509c31839c5c3b50c058b61206ee7 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 798e1c302af509c31839c5c3b50c058b61206ee7

Revert "Use wclrtoeol in tui_show_source_line"

gdb/ChangeLog:
2019-03-16  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-winsource.c (tui_show_source_line): Revert "Use
	wclrtoeol in tui_show_source_line".  This reverts changes made in
	commit 4a3045920bbe4e50a0f4920b0fdc4e88ef23015c.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix vertical scrolling of TUI source window
@ 2019-03-16 18:13 sergiodj+buildbot
  2019-03-17  2:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-16 18:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ab42892fb7d265e72a85e918d4f5c6dfeee3fcd8 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: ab42892fb7d265e72a85e918d4f5c6dfeee3fcd8

Fix vertical scrolling of TUI source window

gdb/ChangeLog:
2019-03-16  Eli Zaretskii  <eliz@gnu.org>

	* source-cache.c (source_cache::get_source_lines): Call
	find_source_lines to initialize s->nlines.  This fixes vertical
	scrolling of TUI source window when the DOWN arrow is pressed.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix redisplay of the current line in GDB TUI mode
@ 2019-03-17 17:41 sergiodj+buildbot
  2019-03-17 17:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-17 17:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f7f0a12390fc514a5b7b38d1b23397d87532ce05 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: f7f0a12390fc514a5b7b38d1b23397d87532ce05

Fix redisplay of the current line in GDB TUI mode

Without this change, when the current line is longer than the source
window width, redisplaying that line overwrites the window frame and
also portions of the next line.

gdb/ChangeLog:
2019-03-17  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-winsource.c (tui_set_is_exec_point_at): Call
	tui_refill_source_window instead of tui_refresh_win, to update the
	current execution line.  This fixes redisplay of the current line
	when stepping through very long lines with "next" or "step".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove unused variable from windows_make_so
@ 2019-03-17 21:37 sergiodj+buildbot
  2019-03-17 22:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-17 21:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d4cbef22ba406707a4fcb30a7a57308447626f14 ***

Author:   <vilgeforce@gmail.com>
Branch: master
Commit: d4cbef22ba406707a4fcb30a7a57308447626f14

Remove unused variable from windows_make_so

There is unused variable text_vma in function windows_make_so. This
leads to build error on Windows using Cygwin.

gdb/ChangeLog:
2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>

    PR gdb/24350
    * windows-nat.c (windows_make_so): Remove unused text_vma variable.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: unconditionally define _initialize_string_view_selftests
@ 2019-03-18  4:18 sergiodj+buildbot
  2019-03-18  5:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18  4:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 58785d9888c699770154ef1d42fcea7598e8d704 ***

Author: Sergei Trofimovich <siarheit@google.com>
Branch: master
Commit: 58785d9888c699770154ef1d42fcea7598e8d704

gdb: unconditionally define _initialize_string_view_selftests

The build failure was noticed by Helmut Jarausch in
https://bugs.gentoo.org/680232:
    $ ./configure CXXFLAGS='-std=c++17 -Os'
    ...
      CXXLD  gdb
    ld: init.o: in function `initialize_all_files()':
    init.c:(.text+0x113): undefined reference to `_initialize_string_view_selftests()'

It happens because '_initialize_string_view_selftests()' is
conditionally defined based on C++ default.

The change defines '_initialize_string_view_selftests()'
unconditionally and leaves implementation a no-op on c++17
compilers.

gdb/ChangeLog:
2019-03-17  Sergei Trofimovich <siarheit@google.com>

	* unittests/string_view-selftests.c: Define
	_initialize_string_view_selftests unconditionally.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24355, segmentation fault in function called from ppc_finish_symbols
@ 2019-03-18 12:30 sergiodj+buildbot
  2019-03-18 13:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 12:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8cd1fe1bf525b59f4d07e5790d11d49eee7e8494 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 8cd1fe1bf525b59f4d07e5790d11d49eee7e8494

PR24355, segmentation fault in function called from ppc_finish_symbols

This one looks to be a bug going back to 2009, git commit e054468f6c
"STT_GNU_IFUNC support for PowerPC".  That bug was carried over with
git commit 49c09209d0 "Rearrange PLT reloc output on powerpc".

If the refcount for an ifunc local sym plt entry was zero,
ppc_elf_size_dynamic_sections would correctly set plt.offset to -1 but
leave glink_offset uninitialized.  That leads to occasional segfaults
(which can be made solid with MALLOC_PERTURB_=1 when using glibc).
So, guard the write_glink_stub call with plt.offset != -1.  Also,
remove the totally ineffective attempt at writing multiple-use glink
stubs only once.

	PR 24355
	* elf32-ppc.c (ppc_finish_symbols): Don't call write_glink_stub
	for local iplt syms with ent->plt.offset == -1.  Remove ineffective
	attempt at writing glink stubs only once.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Improve/fix the TUI's current source line highlight
@ 2019-03-18 14:57 sergiodj+buildbot
  2019-03-18 19:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 14:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 55c10aca2e93cc7a4301aa1635ef9d6d73a804b1 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 55c10aca2e93cc7a4301aa1635ef9d6d73a804b1

Improve/fix the TUI's current source line highlight

With styling enabled, I think the way we display the TUI's
highlighted/current line is very ugly and distracting.  The problem in
my view is that we reverse foreground/background in colored text as
well, leading to rainbow of background colors.

This patch changes that to something that I find much more sensible --
only reverse the default foreground/background colors, leave styled
text colors alone.  If the foreground color is not the default
(because the text was styled), leave the foreground color as is.  If
e.g., the terminal is fg=BLACK, and bg=WHITE, and the style wants to
print text in RED, reverse the background color (print in BLACK), but
still print the text in RED.

Note: The new ui_file_style::set_fg method isn't called set_foreground
instead, because set_foreground is a macro in /usr/lib/term.h (ncurses).

gdb/ChangeLog:
2019-03-18  Pedro Alves  <palves@redhat.com>

	* tui/tui-io.c (reverse_mode_p, reverse_save_bg, reverse_save_fg):
	New globals.
	(apply_style): New, factored out from ...
	(apply_ansi_escape): ... this.  Handle reverse video mode.
	(tui_set_reverse_mode): New function.
	* tui/tui-io.h (tui_set_reverse_mode): New declaration.
	* tui/tui-winsource.c (tui_show_source_line): Use
	tui_set_reverse_mode instead of setting A_STANDOUT.
	* ui-style.h (struct ui_file_style) <set_reverse, set_fg, set_bg>:
	New setter methods.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix Ada "ptype" bug with array types
@ 2019-03-18 15:12 sergiodj+buildbot
  2019-03-18 15:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 15:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bff8c71fd8dece639e69b399883f90b3404a2a48 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: bff8c71fd8dece639e69b399883f90b3404a2a48

Fix Ada "ptype" bug with array types

Using ptype on an array type in Ada can sometimes show an incorrect
high bound.  This happens because ada_evaluate_subexp will create an
array with an incorrect upper bound in the EVAL_AVOID_SIDE_EFFECTS
case.

This patch fixes the problem by arranging to always create such an
array with valid bounds.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-18  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (empty_array): Add "high" parameter.
	(ada_evaluate_subexp): Update.

gdb/testsuite/ChangeLog
2019-03-18  Joel Brobecker  <brobecker@adacore.com>
	    Tom Tromey  <tromey@adacore.com>

	* gdb.ada/ptype_array/pck.adb: New file.
	* gdb.ada/ptype_array/pck.ads: New file.
	* gdb.ada/ptype_array/foo.adb: New file.
	* gdb.ada/ptype_array.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix gdb/TUI behavior in response to [Enter] keypress
@ 2019-03-18 18:23 sergiodj+buildbot
  2019-03-19  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 18:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b17c4cd078e2d1d8951951016815e474fb133780 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: b17c4cd078e2d1d8951951016815e474fb133780

Fix gdb/TUI behavior in response to [Enter] keypress

gdb/ChangeLog:
2019-03-18  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-io.c (gdb_wgetch): Don't echo CR.
	(tui_getc): When gdb_wgetch returns a CR, behave the same as when
	it returns a newline.  This fixes a regression in TUI mode, whereby
	the next line is output on the same screen line as the user input.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix first time you type UP or DOWN in TUI's command window
@ 2019-03-18 19:14 sergiodj+buildbot
  2019-03-19  4:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 19:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5371b8502ab414aea510f65ce1acb9f090bf0340 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 5371b8502ab414aea510f65ce1acb9f090bf0340

Fix first time you type UP or DOWN in TUI's command window

The first time you type UP or DOWN arrow in the command window, GDB
should scroll the source window, but instead it displays the line
number and the file name in the command window(?).

What happens there is that the first time we call
tui_ui_out::do_field_int, it doesn't initialize m_line, because
m_start_of_line is -1, as set by the constructor; and then the
following call to tui_ui_out::do_field_string falls back to
cli_ui_out::do_field_string because m_line is zero.

The problem is caused by a typo in the C++ification of tui_ui_out,
commit 112e8700a6f, where m_line and m_start_of_line's initial values
were swapped from what they used to be:

 -struct ui_out *
 -tui_out_new (struct ui_file *stream)
 +tui_ui_out::tui_ui_out (ui_file *stream)
 +: cli_ui_out (stream, 0),
 +  m_line (0),
 +  m_start_of_line (-1)
  {
 -
 -  /* Initialize our fields.  */
 -  data->line = -1;
 -  data->start_of_line = 0;

This commit fixes it.

gdb/ChangeLog:
2019-03-18  Pedro Alves  <palves@redhat.com>
	    Eli Zaretskii <eliz@gnu.org>

	* tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
	m_line and m_start_of_line.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix regression caused by minimal symbol changes
@ 2019-03-18 23:59 sergiodj+buildbot
  2019-03-18 23:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-18 23:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4bd56d18cc9799f283715a96ba61fd4b958b2f71 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 4bd56d18cc9799f283715a96ba61fd4b958b2f71

Fix regression caused by minimal symbol changes

The earlier patch to change minimal symbol allocations to use xmalloc
erroneously left a call to obstack_blank in
minimal_symbol_reader::install.  Because obstack_blank does not finish
the object allocation on an obstack, this in turn could cause invalid
memory reads in some situations.

This patch fixes the problem by removing the call.  Tested on x86-64
Fedora 29; also verified with valgrind.

gdb/ChangeLog
2019-03-18  Tom Tromey  <tromey@adacore.com>

	* minsyms.c (minimal_symbol_reader::install): Remove call to
	obstack_blank.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ix86: Disable AVX512F when disabling AVX2
@ 2019-03-19 13:27 sergiodj+buildbot
  2019-03-19 14:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-19 13:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89199bb5a027d21c56dafd2cd898487118949ecf ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 89199bb5a027d21c56dafd2cd898487118949ecf

ix86: Disable AVX512F when disabling AVX2

Since AVX2 is required for AVX512F, we should disable AVX512F when AVX2
is disabled.

gas/

	PR gas/24359
	* testsuite/gas/i386/i386.exp: Change optimize-6a, optimize-7,
	x86-64-optimize-7a and x86-64-optimize-8 tests to run_list_test.
	Remove optimize-6c and x86-64-optimize-7c tests.
	* testsuite/gas/i386/noavx-3.l: Updated.
	* testsuite/gas/i386/noavx-4.d: Likewise.
	* testsuite/gas/i386/noavx-5.d: Likewise.
	* testsuite/gas/i386/noavx-3.s: Add AVX512F tests.
	* testsuite/gas/i386/noavx-4.s: Remove AVX512F tests.
	* testsuite/gas/i386/nosse-5.s: Likewise.
	* testsuite/gas/i386/optimize-6a.d: Removed.
	* testsuite/gas/i386/optimize-6c.d: Likewise.
	* testsuite/gas/i386/optimize-7.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7c.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.d: Likewise.
	* testsuite/gas/i386/optimize-6a.l: New file.
	* testsuite/gas/i386/optimize-6a.s: Likewise.
	* testsuite/gas/i386/optimize-7.l: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.l: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.l: Likewise.

opcodes/

	PR gas/24359
	* i386-gen.c (cpu_flag_init): Add CPU_ANY_AVX512F_FLAGS to
	CPU_ANY_AVX2_FLAGS.
	* i386-init.h: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BFD, AArch64] Define elf_backend_fixup_gnu_properties in AArch64
@ 2019-03-20 18:17 sergiodj+buildbot
  2019-03-20 20:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-20 18:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT acde6c6b431a8c38ab18a47bb56f65f515448195 ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: acde6c6b431a8c38ab18a47bb56f65f515448195

[BFD, AArch64] Define elf_backend_fixup_gnu_properties in AArch64

This patch add support for elf_backend_fixup_gnu_properties for GNU
property support for AArch64. The new AArch64 specific definition
_bfd_aarch64_elf_link_fixup_gnu_properties goes through the property
list to find AArch64 type properties and removes the properties that
are marked as "property_remove".

*** bfd/ChangeLog ***

2019-03-20  Sudakshina Das  <sudi.das@arm.com>

	* elfxx-aarch64.c (_bfd_aarch64_elf_link_fixup_gnu_properties): Define.
	* elfxx-aarch64.h (_bfd_aarch64_elf_link_fixup_gnu_properties): Declare.
	(elf_backend_fixup_gnu_properties): Define for AArch64.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Merge handle_inferior_event and handle_inferior_event_1
@ 2019-03-20 18:24 sergiodj+buildbot
  2019-03-20 18:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-20 18:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 595915c1c135a77afa01d30a888a48fcc55a08ec ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 595915c1c135a77afa01d30a888a48fcc55a08ec

Merge handle_inferior_event and handle_inferior_event_1

I noticed that handle_inferior_event is just a small wrapper that
frees the value chain.  This patch replaces it with a
scoped_value_mark, reducing the number of lines of code here.

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-20  Tom Tromey  <tromey@adacore.com>

	* infrun.c (handle_inferior_event): Rename from
	handle_inferior_event_1.  Create a scoped_value_mark.
	(handle_inferior_event): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BFD, AArch64, x86] Improve warning for --force-bti
@ 2019-03-21 17:04 sergiodj+buildbot
  2019-03-21 18:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-21 17:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4e5391148d51c58785aad637f1a92d47b91b3ae6 ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: 4e5391148d51c58785aad637f1a92d47b91b3ae6

[BFD, AArch64, x86] Improve warning for --force-bti

The AArch64 linker option to turn on BTI (--force-bti) warns in case there are
input objects which have a missing GNU NOTE section for BTI. This patch is trying
to improve the warnings that come out.

In order to do so, I propose adding a new argument to elf_merge_gnu_properties
and the backend function merge_gnu_properties. This new argument makes sure
that we now pass both the objects along with the properties to which they
belong to. The x86 backend function has also been updated to match this
change.

*** bfd/ChangeLog ***

2019-03-21  Sudakshina Das  <sudi.das@arm.com>

	* elf-bfd.h (struct elf_backend_data): Add argument to
	merge_gnu_properties.
	* elf-properties.c (elf_merge_gnu_properties): Add argument to
	itself and while calling bed->merge_gnu_properties.
	(elf_merge_gnu_property_list): Update the calls for
	elf_merge_gnu_properties.
	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update handling
	of --force-bti warning and add argument.
	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Add
	warning.
	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Add argument.
	* elfxx-x86.h (_bfd_x86_elf_merge_gnu_properties): Likewise in
	declaration.

*** ld/ChangeLog ***

2019-03-21  Sudakshina Das  <sudi.das@arm.com>

	* testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
	* testsuite/ld-aarch64/bti-plt-1.s: Add .ifdef for PAC note section.
	* testsuite/ld-aarch64/bti-plt-6.d: Update warning.
	* testsuite/ld-aarch64/bti-plt-7.d: Likewise.
	* testsuite/ld-aarch64/bti-warn.d: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Fix linker crash in section symbol check.
@ 2019-03-21 22:32 sergiodj+buildbot
  2019-03-21 23:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-21 22:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a9f5a5517fb7df640f0fcd4cb0f9961818b6505b ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: a9f5a5517fb7df640f0fcd4cb0f9961818b6505b

RISC-V: Fix linker crash in section symbol check.

sym is only set for local symbols.  h is only set for global symbols.  Gas
won't let me create a global section symbol, but bfd appears to have some
support for that, and I can't rule out that other assemblers might do this.
So we need to support both, and verify sym and h are non-NULL before using.

	bfd/
	PR 24365
	* elfnn-riscv.c (riscv_elf_relocate_section): For STT_SECTION check,
	verify sym non-NULL before using.  Add identical check using h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Ensure pie is disabled on some tests
@ 2019-03-22 10:00 sergiodj+buildbot
  2019-03-22 11:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 10:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 968aa7ae389d9e6cecb5fda6826bf889ed959fce ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 968aa7ae389d9e6cecb5fda6826bf889ed959fce

Testsuite: Ensure pie is disabled on some tests

Recent versions of Ubuntu and Debian default GCC to enable pie.

In dump.exp, pie will causes addresses to be out of range for IHEX.

In break-interp.exp, pie is explicitly set for some tests and assumed
to be disabled for the remainder.

Ensure pie is disabled for these tests when required.

In addition, add a pie option to gdb_compile to match the nopie option
and simplify use.

gdb/testsuite/ChangeLog:

	* README: Add pie options.
	* gdb.base/break-interp.exp: Ensure pie is disabled.
	* gdb.base/dump.exp: Likewise.
	* lib/gdb.exp (gdb_compile): Add pie option.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Add pointer authentication feature
@ 2019-03-22 12:22 sergiodj+buildbot
  2019-03-22 13:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 12:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6dc0ebde59dfb73eae507ced718bafa54023bf33 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 6dc0ebde59dfb73eae507ced718bafa54023bf33

AArch64: Add pointer authentication feature

Pointer Authentication is a new feature in AArch64 v8.3-a. When enabled in
the compiler, function return addresses will be mangled by the kernel.

Add register description xml and wire up to aarch64_linux_read_description.
This description includes the two pauth user registers.

Nothing yet uses the feature - that is added in later patches.

gdb/ChangeLog:

	* aarch64-linux-nat.c
	(aarch64_linux_nat_target::read_description): Add pauth param.
	* aarch64-linux-tdep.c
	(aarch64_linux_core_read_description): Likewise.
	* aarch64-tdep.c (struct target_desc): Add in pauth.
	(aarch64_read_description): Add pauth param.
	(aarch64_gdbarch_init): Likewise.
	* aarch64-tdep.h (aarch64_read_description): Likewise.
	* arch/aarch64.c (aarch64_create_target_description): Likewise.
	* arch/aarch64.h (aarch64_create_target_description): Likewise.
	* features/Makefile: Add new files.
	* features/aarch64-pauth.c: New file.
	* features/aarch64-pauth.xml: New file.

gdb/doc/ChangeLog:

	* gdb.texinfo: Describe pauth feature.

gdb/gdbserver/ChangeLog:

	* linux-aarch64-ipa.c (get_ipa_tdesc): Add pauth param.
	(initialize_low_tracepoint): Likewise.
	* linux-aarch64-low.c (aarch64_arch_setup): Likewise.
	* linux-aarch64-tdesc-selftest.c (aarch64_tdesc_test): Likewise.
	* linux-aarch64-tdesc.c (struct target_desc): Likewise.
	(aarch64_linux_read_description): Likewise.
	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Read pauth registers
@ 2019-03-22 12:49 sergiodj+buildbot
  2019-03-22 17:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 12:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 76bed0fd9493868889929ca9dcd32350c1d864be ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 76bed0fd9493868889929ca9dcd32350c1d864be

AArch64: Read pauth registers

Initialise the pauth registers when creating a target description, and store
the regnum of the first pauth register.

Use ptrace to read the registers in the pauth feature.

Do not allow the registers to be written.

gdb/ChangeLog:

	* aarch64-linux-nat.c (fetch_pauth_masks_from_thread): New
	function.
	(aarch64_linux_nat_target::fetch_registers): Read pauth registers.
	* aarch64-tdep.c (aarch64_cannot_store_register): New function.
	(aarch64_gdbarch_init): Add puth registers.
	* aarch64-tdep.h (struct gdbarch_tdep): Add pauth features.
	* arch/aarch64.h (AARCH64_PAUTH_DMASK_REGNUM): New define.
	(AARCH64_PAUTH_CMASK_REGNUM): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Add pauth DWARF registers
@ 2019-03-22 13:17 sergiodj+buildbot
  2019-03-22 20:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 13:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 34dcc7cf95f756862bdfebb753ab2de39fec4c9e ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 34dcc7cf95f756862bdfebb753ab2de39fec4c9e

AArch64: Add pauth DWARF registers

Map the pauth registers to DWARF.

Add a new pseudo register ra_state and also map this to DWARF.  This register
is hidden from the user - prevent it from being read or written to.  It will
be used for the unmangling of addresses.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_dwarf_reg_to_regnum): Check for pauth
	registers.
	(aarch64_pseudo_register_name): Likewise.
	(aarch64_pseudo_register_type): Likewise.
	(aarch64_pseudo_register_reggroup_p): Likewise.
	(aarch64_gdbarch_init): Add pauth registers.
	* aarch64-tdep.h (AARCH64_DWARF_PAUTH_RA_STATE): New define.
	(AARCH64_DWARF_PAUTH_DMASK): Likewise.
	(AARCH64_DWARF_PAUTH_CMASK): Likewise.
	(struct gdbarch_tdep): Add regnum for ra_state.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Prologue scan unwinder support for signed return addresses
@ 2019-03-22 13:48 sergiodj+buildbot
  2019-03-23  0:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 13:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 17e116a7d1501a46cf4e45ec181148dc6a1e3e2b ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 17e116a7d1501a46cf4e45ec181148dc6a1e3e2b

AArch64: Prologue scan unwinder support for signed return addresses

Pauth address signing is enabled at binary compile time.  When enabled the
return addresses for functions may be mangled.  This patch adds functionality
to restore the original address for use in the prologue scan unwinder.

In the prologue analyzer, check for PACIASP/PACIBSP (enable address mangling)
and AUTIASP/AUTIBSP (disable address mangling).

When unwinding the PC from the prologue, unmask the register if required.

Add a test case to the prologue tests.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_analyze_prologue): Check for pauth
	instructions.
	(aarch64_analyze_prologue_test): Add PACIASP test.
	(aarch64_prologue_prev_register): Unmask PC value.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Use HWCAP to detect pauth feature
@ 2019-03-22 15:25 sergiodj+buildbot
  2019-03-22 15:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 15:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ee4fbcfa26eb4a2a3666f7c1cc31447c3cffa023 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: ee4fbcfa26eb4a2a3666f7c1cc31447c3cffa023

AArch64: Use HWCAP to detect pauth feature

Add aarch64_get_hwcap functions for reading the HWCAP.
>From this extract the PACA value and use this to enable pauth.

gdb/ChangeLog:

	* aarch64-linux-nat.c
	(aarch64_linux_nat_target::read_description): Read PACA hwcap.
	* aarch64-linux-tdep.c
	(aarch64_linux_core_read_description): Likewise.
	(aarch64_linux_get_hwcap): New function.
	* aarch64-linux-tdep.h (AARCH64_HWCAP_PACA): New define.
	(aarch64_linux_get_hwcap): New declaration.

gdb/gdbserver/ChangeLog:

	* linux-aarch64-low.c (AARCH64_HWCAP_PACA): New define.
	(aarch64_get_hwcap): New function.
	(aarch64_arch_setup): Read APIA hwcap.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: gdbserver: read pauth registers
@ 2019-03-22 18:18 sergiodj+buildbot
  2019-03-22 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-22 18:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1ef53e6b8328acd5b7d54ee2fe288836ce12992e ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 1ef53e6b8328acd5b7d54ee2fe288836ce12992e

AArch64: gdbserver: read pauth registers

Add the pauth registers to the regset lists.

Add a new regset type OPTIONAL_REGS which allows for the regset read to fail.
Once the read fails, it will not be checked again.  This allows targets with
optional features to keep a single static regset_info structure.

gdb/ChangeLog:

	* arch/aarch64.h (AARCH64_PAUTH_REGS_SIZE): New define.

gdb/gdbserver/ChangeLog:

	* linux-aarch64-low.c (aarch64_store_pauthregset): New function.
	* linux-low.c (regsets_store_inferior_registers): Allow optional reads
	to fail.
	* linux-low.h (enum regset_type): Add OPTIONAL_REGS.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use scoped_restore_current_language in two places
@ 2019-03-23 16:58 sergiodj+buildbot
  2019-03-23 20:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-23 16:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9bb9b2f9d6d5aa90f579494d8407375a87a9ad0b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 9bb9b2f9d6d5aa90f579494d8407375a87a9ad0b

Use scoped_restore_current_language in two places

I found a couple of spots that manually saved and restored the current
language.  This patch changes them to use
scoped_restore_current_language.

Tested by the buildbot.

gdb/ChangeLog
2019-03-23  Tom Tromey  <tom@tromey.com>

	* linespec.c (get_current_search_block): Use
	scoped_restore_current_language.
	* symmisc.c (dump_symtab): Use scoped_restore_current_language.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove null_block_symbol
@ 2019-03-25  6:17 sergiodj+buildbot
  2019-03-25 12:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25  6:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6640a367bf5427779856e7c80ae4b4bd88c19d3c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6640a367bf5427779856e7c80ae4b4bd88c19d3c

Remove null_block_symbol

This removes null_block_symbol.  It seemed simpler to me to change
initializations and returns to use value initialization rather than
null_block_symbol.  This also fixes up a few spots where
initialization was done piecemeal.

gdb/ChangeLog
2019-03-24  Tom Tromey  <tom@tromey.com>

	* ada-lang.c (standard_lookup): Simplify initialization.
	(ada_lookup_symbol_nonlocal): Simplify return.
	* solib-spu.c (spu_lookup_lib_symbol): Simplify return.
	* solib-darwin.c (darwin_lookup_lib_symbol): Simplify return.
	* solib-svr4.c (elf_lookup_lib_symbol): Simplify return.
	* rust-lang.c (rust_lookup_symbol_nonlocal): Simplify
	initialization.
	* solib.c (solib_global_lookup): Simplify.
	* symtab.c (null_block_symbol): Remove.
	(symbol_cache_lookup): Simplify returns.
	(lookup_language_this): Simplify returns.
	(lookup_symbol_aux): Simplify return.
	(lookup_local_symbol): Simplify returns.
	(lookup_global_symbol_from_objfile): Simplify return.
	(lookup_symbol_in_objfile_symtabs)
	(lookup_symbol_in_objfile_from_linkage_name): Simplify return.
	(lookup_symbol_via_quick_fns, lookup_symbol_in_static_block)
	(lookup_static_symbol, lookup_global_symbol): Simplify return.
	* cp-namespace.c (cp_lookup_bare_symbol)
	(cp_search_static_and_baseclasses, cp_lookup_symbol_via_imports)
	(cp_lookup_symbol_via_all_imports, cp_lookup_nested_symbol_1)
	(cp_lookup_nested_symbol): Don't use null_block_symbol.
	(cp_lookup_symbol_via_imports): Simplify initialization.
	(find_symbol_in_baseclass): Likewise.
	* symtab.h (null_block_symbol): Remove.
	* d-namespace.c (d_lookup_symbol): Don't use null_block_symbol.
	(d_lookup_nested_symbol, d_lookup_symbol_imports)
	(d_lookup_symbol_module): Likewise.
	(find_symbol_in_baseclass): Simplify initialization.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] More block constification
@ 2019-03-25  6:17 sergiodj+buildbot
  2019-03-25  7:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25  6:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 582942f4560f1c8d2a60c2557267f9d3ad8dd6aa ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 582942f4560f1c8d2a60c2557267f9d3ad8dd6aa

More block constification

I noticed that there are still many places referring to non-const
blocks.  This constifies all the remaining ones that I found that
could be constified.

In a few spots, this search found unused variables or fields.  I
removed these.  I've also removed some unnecessary casts to
"struct block *".

gdb/ChangeLog
2019-03-24  Tom Tromey  <tom@tromey.com>

	* c-exp.y (typebase): Remove casts.
	* gdbtypes.c (lookup_unsigned_typename, )
	(lookup_signed_typename): Remove cast.
	* eval.c (parse_to_comma_and_eval): Remove cast.
	* parse.c (write_dollar_variable): Remove cast.
	* block.h (struct block) <superblock>: Now const.
	* symfile-debug.c (debug_qf_map_matching_symbols): Update.
	* psymtab.c (psym_map_matching_symbols): Make "block" const.
	(map_block): Make "block" const.
	* symfile.h (struct quick_symbol_functions)
	<map_matching_symbols>: Constify block argument to "callback".
	* symtab.c (basic_lookup_transparent_type_quick): Make "block"
	const.
	(find_pc_sect_compunit_symtab): Make "b" const.
	(find_symbol_at_address): Likewise.
	(search_symbols): Likewise.
	* dwarf2read.c (dw2_lookup_symbol): Make "block" const.
	(dw2_debug_names_lookup_symbol): Likewise.
	(dw2_map_matching_symbols): Update.
	* p-valprint.c (pascal_val_print): Remove "block".
	* ada-lang.c (ada_add_global_exceptions): Make "b" const.
	(aux_add_nonlocal_symbols): Make "block" const.
	(resolve_subexp): Remove cast.
	* linespec.c (iterate_over_all_matching_symtabs): Make "block"
	const.
	(iterate_over_file_blocks): Likewise.
	* f-exp.y (%union) <bval>: Remove.
	* coffread.c (patch_opaque_types): Make "b" const.
	* spu-tdep.c (spu_catch_start): Make "block" const.
	* c-valprint.c (print_unpacked_pointer): Remove "block".
	* symmisc.c (dump_symtab_1): Make "b" const.
	(block_depth): Make "block" const.
	* d-exp.y (%union) <bval>: Remove.
	* cp-support.h (cp_lookup_rtti_type): Update.
	* cp-support.c (cp_lookup_rtti_type): Make "block" const.
	* psymtab.c (psym_lookup_symbol): Make "block" const.
	(maintenance_check_psymtabs): Make "b" const.
	* python/py-framefilter.c (extract_sym): Make "sym_block" const.
	(enumerate_locals, enumerate_args): Update.
	* python/py-symtab.c (stpy_global_block): Make "block" const.
	(stpy_static_block): Likewise.
	* inline-frame.c (block_starting_point_at): Make "new_block"
	const.
	* block.c (find_block_in_blockvector): Make return type const.
	(blockvector_for_pc_sect): Make "b" const.
	(find_block_in_blockvector): Make "b" const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't include symtab.h from expression.h
@ 2019-03-25  7:53 sergiodj+buildbot
  2019-03-25 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25  7:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a930ebcdf9594d6b6f91b634dceec1b2425a76a0 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: a930ebcdf9594d6b6f91b634dceec1b2425a76a0

Don't include symtab.h from expression.h

expression.h includes symtab.h, but apparently only for the
declaration of struct block.  This patch changes it to foward-declare
the structure, and remove the include.

gdb/ChangeLog
2019-03-24  Tom Tromey  <tom@tromey.com>

	* expression.h: Don't include symtab.h.
	(struct block): Forward declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix testsuite hangs when gdb_test_multiple body errors out
@ 2019-03-25 14:22 sergiodj+buildbot
  2019-03-25 15:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 14:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9a93502fa81734d39f213ccb33b497bc40e1423d ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 9a93502fa81734d39f213ccb33b497bc40e1423d

Fix testsuite hangs when gdb_test_multiple body errors out

This commit fixes a regression in the testsuite itself, triggered by
errors being raised from within gdb_test_multiple, originally reported
by Pedro Franco de Carvalho's at
<https://sourceware.org/ml/gdb-patches/2019-03/msg00160.html>.  Parts
of the commit message are based on his report.

This started happening due to a commit that was introduced recently,
and it can cause the testsuite to hang.

The commit that triggers this is:

 fe1a5cad302b5535030cdf62895e79512713d738
 [gdb/testsuite] Log wait status on process no longer exists error

That commit introduces a new "eof" block in gdb_test_multiple.  That
is not incorrect itself, but dejagnu's remote_expect is picking that
block as the "default" action when an error is raised from within the
commands inside a call to gdb_test_multiple:

  # remote_expect works basically the same as standard expect, but it
  # also takes care of getting the file descriptor from the specified
  # host and also calling the timeout/eof/default section if there is an
  # error on the expect call.
  #
  proc remote_expect { board timeout args } {

I find that "feature" surprising, and I don't really know why it
exists, but this means that the eof section that remote_expect picks
as the error block can be executed even when there was no actual eof
and the GDB process is still running, so the wait introduced in the
commit that tries to get the exit status of GDB hangs forever, while
GDB itself waits for input.

This only happens when there are internal testsuite errors (not
testcase failures).  This can be reproduced easily with a testcase
such as:

  gdb_start
  gdb_test_multiple "show version" "show version" {
    -re ".*" {
       error "forced error"
    }
  }

I think that working around this in GDB is useful so that the
testsuite doesn't hang in these cases.

Adding an empty "default" block at the end of the expect body in
gdb_test_multiple doesn't work, because dejagnu gives preference to
"eof" blocks:

	    if { $x eq "eof" } {
		set save_next 1
	    } elseif { $x eq "default" || $x eq "timeout" } {
		if { $error_sect eq "" } {
		    set save_next 1
		}
	    }

And we do have "eof" blocks.  So we need to make sure that the last
"eof" block is safe to use as the default error block.  It's also
pedantically incorrect to print

 "ERROR: Process no longer exists"

which is what we'd get if the last eof block we have was selected
(more below on this).

So this commit solves this by appending an "eof" with an empty
spawn_id list, so that it won't ever match.

Now, why is the first "eof" block selected today as the error block,
instead of the last one?

The reason is that remote_expect, while parsing the body to select the
default block to execute after an error, is affected by the comments
in the body (since they are also parsed).

If this comment in gdb_test_multiple

 # patterns below apply to any spawn id specified.

is changed to

 # The patterns below apply to any spawn id specified.

then the second eof block is selected and there is no hang.

Any comment at that same place with an even number of tokens also
works.

This is IMO a coincidence caused by how comments work in TCL.
Comments should only appear in places where a command can appear.  And
here, remote_expect is parsing a list of options, not commands, so
it's not unreasonable to not parse comments, similarly to how this:

  set a_list {
     an_element
     # another_element
  }

results in a list with three elements, not one element.

The fact that comments with an even number of tokens work is just a
coincidence of how remote_expect's little state machine is
implemented.

I thought we could solve this by stripping out comment lines in
gdb_expect, but I didn't find an easy way to do that.  Particularly, a
couple naive approaches I tried run into complications.  For example,
we have gdb_test calls with regular expressions that include sequences
like "\r\n#", and by the time we get to gdb_expect, the \r\n have
already been expanded to a real newline, so just splitting the whole
body at newline boundaries, looking for lines that start with #
results in incorrectly stripping out half of the gdb_text regexp.  I
think it's better (at least in this commit), to move the comments out
of the list, because it's much simpler and risk free.

gdb/testsuite/ChangeLog:
2019-03-25  Pedro Alves  <palves@redhat.com>

	* lib/gdb.exp (gdb_test_multiple): Split appends to $code and
	move comments outside list.  Append '-i "" eof' section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Have -D override mapping symbol as documented.
@ 2019-03-25 15:52 sergiodj+buildbot
  2019-03-25 20:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 15:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 60df3720d77c8415158f3eaa166e0b7162f9d3b4 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: 60df3720d77c8415158f3eaa166e0b7162f9d3b4

AArch64: Have -D override mapping symbol as documented.

The documentation for -D says that on Arm platforms -D should disassemble
data as instructions.

"If the target is an ARM architecture this switch also has the effect of
forcing the disassembler to decode pieces of data found in code sections
as if they were instructions. "

This makes it do as it says on the tincan so it's more consistent with
aarch32.  The usecase here is for baremetal developers who have created
their instructions using .word directives instead if .insn.

Though for Linux users I do find this behavior somewhat non-optimal.
Perhaps there should be a new flag that just disassembles the values
following the actual mapping symbol?

binutils/ChangeLog:

	* testsuite/binutils-all/aarch64/in-order-all.d: New test.
	* testsuite/binutils-all/aarch64/out-of-order-all.d: New test.
	* testsuite/binutils-all/aarch64/out-of-order.d:

opcodes/ChangeLog:

	* aarch64-dis.c (print_insn_aarch64):
	Implement override.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Fix disassembler bug with out-of-order sections
@ 2019-03-25 15:59 sergiodj+buildbot
  2019-03-25 17:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 15:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 53b2f36bf6aa939feab6f82f05d7dad52f82660d ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: 53b2f36bf6aa939feab6f82f05d7dad52f82660d

AArch64: Fix disassembler bug with out-of-order sections

The AArch64 disassembler has an optimization that it uses to reduce the amount
it has to search for mapping symbols during disassembly.  This optimization
assumes that sections are listed in the section header in monotonic increasing
VMAs.  However this is not a requirement for the ELF specification.

Because of this when such "out of order" sections occur the disassembler would
pick the wrong mapping symbol to disassemble the section with.

This fixes it by explicitly passing along the stop offset for the current
disassembly glob and when this changes compared to the previous one we've seen
the optimization won't be performed.  In effect this restarts the search from
a well defined starting point.  Usually the symbol's address.

The existing stop_vma can't be used for this as it is allowed to be unset and
setting this unconditionally would change the semantics of this field.

binutils/ChangeLog:

	* objdump.c (disassemble_bytes): Pass stop_offset.
	* testsuite/binutils-all/aarch64/out-of-order.T: New test.
	* testsuite/binutils-all/aarch64/out-of-order.d: New test.
	* testsuite/binutils-all/aarch64/out-of-order.s: New test.

include/ChangeLog:

	* dis-asm.h (struct disassemble_info): Add stop_offset.

opcodes/ChangeLog:

	* aarch64-dis.c (last_stop_offset): New.
	(print_insn_aarch64): Use stop_offset.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix s390 build
@ 2019-03-25 17:24 sergiodj+buildbot
  2019-03-26  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 17:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d45963c2b26369e3b375cf5b3b6f52f50f767ef3 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: d45963c2b26369e3b375cf5b3b6f52f50f767ef3

Fix s390 build

Add missing include.

2019-03-25  Alan Hayward  <alan.hayward@arm.com>

        * s390-linux-nat.c: Add include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Clean up some comments in minsyms.c
@ 2019-03-25 20:06 sergiodj+buildbot
  2019-03-26  3:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 20:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 79e7ae11c71c1682c0d4b707eadc714ec4efc929 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 79e7ae11c71c1682c0d4b707eadc714ec4efc929

Clean up some comments in minsyms.c

Philippe pointed out that some comments in minsyms.c still referred to
obstack allocation.  This patch fixes these up.

In most cases here, my view is that the comments were more misleading
than helpful.  So, I've generally removed text.

gdb/ChangeLog
2019-03-25  Tom Tromey  <tromey@adacore.com>

	* minsyms.c (BUNCH_SIZE): Update comment.
	(~minimal_symbol_reader): Remove old comment.
	(compact_minimal_symbols): Update comment.
	(minimal_symbol_reader::install): Remove old comment.  Update
	other comments.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Arm: Fix Arm disassembler mapping symbol search.
@ 2019-03-25 22:26 sergiodj+buildbot
  2019-03-25 23:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-25 22:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 796d6298bb11deab06814cc38cfe74a1bfc57551 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: 796d6298bb11deab06814cc38cfe74a1bfc57551

Arm: Fix Arm disassembler mapping symbol search.

Similar to the AArch64 patches the Arm disassembler has the same issues with
out of order sections but also a few short comings.

For one thing there are multiple code blocks to determine mapping symbols, and
they all work slightly different, and neither fully correct.  The first thing
this patch does is centralise the mapping symbols search into one function
mapping_symbol_for_insn.  This function is then updated to perform a search in
a similar way as AArch64.

Their used to be a value has_mapping_symbols which was used to determine the
default disassembly for objects that have no mapping symbols.  The problem with
the approach was that it was determining this value in the same loop that needed
it, which is why this field could take on the states -1, 0, 1 where -1 means
"don't know".  However this means that until you actually find a mapping symbol
or reach the end of the disassembly glob, you don't know if you did the right
action or not, and if you didn't you can't correct it anymore.

This is why the two jump-reloc-veneers-* testcases end up disassembling some
insn as data when they shouldn't.

Out of order here refers to an object file where sections are not listed in a
monotonic increasing VMA order.

The ELF ABI for Arm [1] specifies the following for mapping symbols:

  1) A text section must always have a corresponding mapping symbol at it's
     start.
  2) Data sections do not require any mapping symbols.
  3) The range of a mapping symbol extends from the address it starts on up to
     the next mapping symbol (exclusive) or section end (inclusive).

However there is no defined order between a symbol and it's corresponding
mapping symbol in the symbol table.  This means that while in general we look
up for a corresponding mapping symbol, we have to make at least one check of
the symbol below the address being disassembled.

When disassembling different PCs within the same section, the search for mapping
symbol can be cached somewhat.  We know that the mapping symbol corresponding to
the current PC is either the previous one used, or one at the same address as
the current PC.

However this optimization and mapping symbol search must stop as soon as we
reach the end or start of the section.  Furthermore if we're only disassembling
a part of a section, the search is a allowed to search further than the current
chunk, but is not allowed to search past it (The mapping symbol if there, must
be at the same address, so in practice we usually stop at PC+4).

lastly, since only data sections don't require a mapping symbol the default
mapping type should be DATA and not INSN as previously defined, however if the
binary has had all its symbols stripped than this isn't very useful.  To fix
this we determine the default based on the section flags.  This will allow the
disassembler to be more useful on stripped binaries.  If there is no section
than we assume you to be disassembling INSN.

[1] https://developer.arm.com/docs/ihi0044/latest/elf-for-the-arm-architecture-abi-2018q4-documentation#aaelf32-table4-7

binutils/ChangeLog:

	* testsuite/binutils-all/arm/in-order-all.d: New test.
	* testsuite/binutils-all/arm/in-order.d: New test.
	* testsuite/binutils-all/arm/objdump.exp: Support .d tests.
	* testsuite/binutils-all/arm/out-of-order-all.d: New test.
	* testsuite/binutils-all/arm/out-of-order.T: New test.
	* testsuite/binutils-all/arm/out-of-order.d: New test.
	* testsuite/binutils-all/arm/out-of-order.s: New test.

ld/ChangeLog:

	* testsuite/ld-arm/jump-reloc-veneers-cond-long.d: Update disassembly.
	* testsuite/ld-arm/jump-reloc-veneers-long.d: Update disassembly.

opcodes/ChangeLog:

	* arm-dis.c (struct arm_private_data): Remove has_mapping_symbols.
	(mapping_symbol_for_insn): Implement new algorithm.
	(print_insn): Remove duplicate code.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix Arm build
@ 2019-03-26 13:23 sergiodj+buildbot
  2019-03-26 14:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 13:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2fe7bab775f6acbfa1255d3504cd9e53a109e132 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 2fe7bab775f6acbfa1255d3504cd9e53a109e132

Fix Arm build

Add missing include.

2019-03-26  Alan Hayward  <alan.hayward@arm.com>

        * arm-linux-nat.c: Add include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: Add linux_get_hwcap
@ 2019-03-26 17:26 sergiodj+buildbot
  2019-03-26 19:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 17:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 974c89e0882ddb03e294eca76a9e3d3bef90eacf ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 974c89e0882ddb03e294eca76a9e3d3bef90eacf

gdbserver: Add linux_get_hwcap

In gdbserver, Tidy up calls to read HWCAP (and HWCAP2) by adding common
functions, removing the Arm, AArch64, PPC and S390 specific versions.

No functionality differences.

gdb/gdbserver/ChangeLog:

	* linux-aarch64-low.c (aarch64_get_hwcap): Remove function.
	(aarch64_arch_setup): Call linux_get_hwcap.
	* linux-arm-low.c (arm_get_hwcap): Remove function.
	(arm_read_description): Call linux_get_hwcap.
	* linux-low.c (linux_get_auxv): New function.
	(linux_get_hwcap): Likewise.
	(linux_get_hwcap2): Likewise.
	* linux-low.h (linux_get_hwcap): New declaration.
	(linux_get_hwcap2): Likewise.
	* linux-ppc-low.c (ppc_get_auxv): Remove function.
	(ppc_arch_setup): Call linux_get_hwcap.
	* linux-s390-low.c (s390_get_hwcap): Remove function.
	(s390_arch_setup): Call linux_get_hwcap.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add AArch64 Pointer Authentication to the NEWS file
@ 2019-03-26 17:40 sergiodj+buildbot
  2019-03-26 19:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 17:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d851aa7170c09fb903dd1bdafa6df526f1951863 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: d851aa7170c09fb903dd1bdafa6df526f1951863

Add AArch64 Pointer Authentication to the NEWS file

gdb/ChangeLog:

        * NEWS: Mention AArch64 Pointer Authentication.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Avoid trailing whitespace when pretty printing
@ 2019-03-26 20:13 sergiodj+buildbot
  2019-03-27  0:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 20:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 18c77628b1e97e412561029ec20195c1ffa61b2d ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 18c77628b1e97e412561029ec20195c1ffa61b2d

gdb: Avoid trailing whitespace when pretty printing

While writing a new test for 'set print pretty on' I spotted that GDB
will sometimes add a trailing whitespace character when pretty
printing.  This commit removes the trailing whitespace and updates the
expected results in one tests where this was an issue.

I've added an extra test for 'set print pretty on' as it doesn't seem
to have much testing.

gdb/ChangeLog:

	* cp-valprint.c (cp_print_value_fields): Don't print trailing
	whitespace when pretty printing is on.

gdb/testsuite/ChangeLog:

	* gdb.base/finish-pretty.exp: Update expected results.
	* gdb.base/pretty-print.c: New file.
	* gdb.base/pretty-print.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Make python display_hint None handling defined behaviour
@ 2019-03-26 20:22 sergiodj+buildbot
  2019-03-27  7:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 20:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9f9aa85206ab31d2c583e7fef568700d31eb577e ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 9f9aa85206ab31d2c583e7fef568700d31eb577e

gdb: Make python display_hint None handling defined behaviour

The documentation say that the display_hint method must return a
string to serve as a display hint, and then goes on to list some
acceptable strings.

However, if we don't supply the display_hint method then we get a
default display style behaviour and there's currently no way (in the
python api) to force this default behaviour.

The guile api allows #f to be used in order to force the default
display style behaviour, and this is documented.

Currently, using None in the python api also forces the default
display behaviour.

This commit extends the documentation to make returning None from the
display_hint method an official mechanism by which the user can get
the default display style.

I've extended one of the existing tests to cover this case.

gdb/doc/ChangeLog:

	* python.texi (Pretty Printing API): Document use of None for the
	display_hint.

gdb/testsuite/ChangeLog:

	* gdb.python/py-prettyprint.c (struct container) <is_map_p>: New
	field.
	(make_container): Initialise new field.
	* gdb.python/py-prettyprint.exp: Add new tests.
	* gdb.python/py-prettyprint.py (class ContainerPrinter)
	<display_hint>: New method.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix Powerpc build
@ 2019-03-26 20:58 sergiodj+buildbot
  2019-03-26 21:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-26 20:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 53c973f200e39c4122e0db06a94e3a0079e6de80 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 53c973f200e39c4122e0db06a94e3a0079e6de80

Fix Powerpc build

gdb/ChangeLog:

        * ppc-linux-nat.c: Add include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Make test names unique in gdb.python/py-prettyprint.exp
@ 2019-03-27  3:29 sergiodj+buildbot
  2019-03-27  5:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-27  3:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3714a195e08a5cc7713b27def7a3c3b534da53e8 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 3714a195e08a5cc7713b27def7a3c3b534da53e8

gdb/testsuite: Make test names unique in gdb.python/py-prettyprint.exp

This makes the test names unique in gdb.python/py-prettyprint.exp, it
also switches to use gdb_breakpoint and gdb_continue_to_breakpoint
more so that we avoid test names with the source line number in - this
is bad if the test source ever changes as the test names will then
change.

One final change is to switch from using gdb_py_test_silent_cmd to use
gdb_test_no_output, the former should be used for running python
commands and can catch any thrown exception.  However, in this case
the command being run is not a python command, its just a normal GDB
CLI command that produces no output, so lets use the appropriate
wrapper function.

gdb/testsuite/ChangeLog:

	* gdb.python/py-prettyprint.exp: Use gdb_breakpoint and
	gdb_continue_to_breakpoint more throughout this test.
	(run_lang_tests) Supply unique test names, and use
	gdb_test_no_output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb-gdb.py.in: Fix error when printing range type
@ 2019-03-27 10:21 sergiodj+buildbot
  2019-03-27 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-27 10:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7f5331a885c2e8b8cb8be5b27dc4bcfa290ad6c0 ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 7f5331a885c2e8b8cb8be5b27dc4bcfa290ad6c0

gdb-gdb.py.in: Fix error when printing range type

I noticed that trying to print the contents of a struct main_type
would fail when the type was a TYPE_CODE_RANGE:

    (gdb) p *type.main_type
    $1 = Python Exception <class 'gdb.error'> There is no member named low_undefined.:

And indeed, Python is right, fields "low_undefined" has been removed
from struct range_bounds back in ... 2014! It was done when we introduced
dynamic bounds handling. This patch fixes gdb-gdb.py.in according to
the new structure.

gdb/ChangeLog:

	* gdb-gdb.py.in (StructMainTypePrettyPrinter.bound_img): New method.
	(StructMainTypePrettyPrinter.bounds_img): Use new "bound_img"
	method to compute the bounds of range types. Also print "[evaluated]"
	if the bounds' values come from a dynamic evaluation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Ensure interrupt-daemon-attach doesn't run forever
@ 2019-03-27 12:22 sergiodj+buildbot
  2019-03-28  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-27 12:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 933aebfae6b1a2b83c3eb958ebf6e43fc7fdaed1 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 933aebfae6b1a2b83c3eb958ebf6e43fc7fdaed1

Testsuite: Ensure interrupt-daemon-attach doesn't run forever

Looking at the AArch64 buildbot, I noticed about two dozen old instances of
interrupt-daemon-attach taking up a full 100% cpu each.

If the test fails then the test binary relies on an alarm to ensure it dies
after 60 seconds.

As per the Linux man page for alarm:
  Alarms created by alarm() ... are not inherited by children created via fork.

Update the test to add an alarm in the child and also put a sleep in the
child loop so it does not constantly consume cpu.

Note I haven't managed to re-create why the test failed.  This fix will just
stop it hanging and consuming cpu when it does.

gdb/testsuite/ChangeLog:

	* gdb.base/interrupt-daemon-attach.c (main): Add alarm and sleep
	in child.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix buffer overflow regression due to minsym malloc-ed instead of obstack-ed.
@ 2019-03-27 16:06 sergiodj+buildbot
  2019-03-28  4:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-27 16:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 20dc7e9b059edff1d0fab3bd197c460c11cc7a06 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 20dc7e9b059edff1d0fab3bd197c460c11cc7a06

Fix buffer overflow regression due to minsym malloc-ed instead of obstack-ed.

Valgrind detects the following error in a bunch of tests,
e.g. in gdb.base/foll-fork.exp.

==15155== VALGRIND_GDB_ERROR_BEGIN
==15155== Invalid read of size 8
==15155==    at 0x55BE04: minimal_symbol_upper_bound(bound_minimal_symbol) (minsyms.c:1504)
==15155==    by 0x3B2E9C: find_pc_partial_function(unsigned long, char const**, unsigned long*, unsigned long*, block const**) (blockframe.c:340)
==15155==    by 0x3B3135: find_function_entry_range_from_pc(unsigned long, char const**, unsigned long*, unsigned long*) (blockframe.c:385)
==15155==    by 0x4F5597: fill_in_stop_func(gdbarch*, execution_control_state*) [clone .part.16] (infrun.c:4124)
==15155==    by 0x4FBE01: fill_in_stop_func (infrun.c:7636)
==15155==    by 0x4FBE01: process_event_stop_test(execution_control_state*) (infrun.c:6279)
...
==15155==  Address 0x715bec8 is 0 bytes after a block of size 2,952 alloc'd
==15155==    at 0x4C2E2B3: realloc (vg_replace_malloc.c:836)
==15155==    by 0x405F2C: xrealloc (common-utils.c:62)
==15155==    by 0x55BA4E: xresizevec<minimal_symbol> (poison.h:170)
==15155==    by 0x55BA4E: minimal_symbol_reader::install() (minsyms.c:1399)
==15155==    by 0x4981C7: elf_read_minimal_symbols (elfread.c:1165)
...

This seems to be a regression created by:
    commit 042d75e42c5572f333e0e06dabd3c5c4afab486c
    Author:     Tom Tromey <tom@tromey.com>
    AuthorDate: Sat Mar 2 12:29:48 2019 -0700
    Commit:     Tom Tromey <tom@tromey.com>
    CommitDate: Fri Mar 15 16:02:10 2019 -0600

        Allocate minimal symbols with malloc

Before this commit, the array of 'struct minimal_symbol'
contained a last element that was a "null symbol".  The comment in
minimal_symbol_reader::install was:
      /* We also terminate the minimal symbol table with a "null symbol",
         which is *not* included in the size of the table.  This makes it
         easier to find the end of the table when we are handed a pointer
         to some symbol in the middle of it.  Zero out the fields in the
         "null symbol" allocated at the end of the array.  Note that the
         symbol count does *not* include this null symbol, which is why it
         is indexed by mcount and not mcount-1.  */

      memset (&msymbols[mcount], 0, sizeof (struct minimal_symbol));

However, minimal_symbol_upper_bound was still based on the assumption
that the array of minsym is terminated by a minsym with a null symbol:
it is looping with:
  for (i = 1; MSYMBOL_LINKAGE_NAME (msymbol + i) != NULL; i++)

Replace this NULL comparison by a logic that calculates how
many msymbol are following the msymbols from which we are starting from.

(Re-)tested on debian/amd64, natively and under valgrind.

gdb/ChangeLog
2019-03-24  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
	    Tom Tromey  <tromey@adacore.com>

	* minsyms.c (minimal_symbol_upper_bound): Fix buffer overflow.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/common: convert sim-arange to use sim-inline
@ 2019-03-27 22:18 sergiodj+buildbot
  2019-03-28  5:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-27 22:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ef9866970ce6683d40465fb7c3168f87a1dcd1b7 ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: ef9866970ce6683d40465fb7c3168f87a1dcd1b7

sim/common: convert sim-arange to use sim-inline

This fixes a TODO item and also fixes an error which we get when
building with no optimizations (-O0) in at least gcc 8.2.1.

Tested with sims that use cgen code lm32, or1k, cris, m32r and inlining
is working corretly.

Reference Error:

gcc -DHAVE_CONFIG_H -DWITH_DEFAULT_MODEL='"or1200"' -DWITH_ALIGNMENT=STRICT_ALIGNMENT \
 -DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31 -DWITH_TARGET_ADDRESS_BITSIZE=32 \
 -DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG   -DDEFAULT_INLINE=0  -DWITH_SCACHE=16384 \
 -I. -I../../../binutils-gdb/sim/or1k -I../common -I../../../binutils-gdb/sim/or1k/../common \
 -I../../include -I../../../binutils-gdb/sim/or1k/../../include -I../../bfd \
 -I../../../binutils-gdb/sim/or1k/../../bfd -I../../opcodes -I../../../binutils-gdb/sim/or1k/../../opcodes \
 -g -o run nrun.o libsim.a ../../bfd/libbfd.a ../../opcodes/libopcodes.a  ../../libiberty/libiberty.a \
 -ldl  -lz -lm

/usr/bin/ld: libsim.a(mloop.o): in function `extract':
/home/shorne/work/openrisc/gdb-musl/sim/or1k/mloop.c:82: undefined reference to `sim_addr_range_hit_p'
/usr/bin/ld: /home/shorne/work/openrisc/gdb-musl/sim/or1k/mloop.c:83: undefined reference to `sim_addr_range_hit_p'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:305: run] Error 1

sim/common/ChangeLog:

	* Make-common.in (sim-arange_h): Remove sim-arange.c
	* sim-arange.c: Remove SIM_ARANGE_C.
	Add ifdef for _SIM_ARANGE_C_.
	Include "sim-arange.h".
	Remove include for unused "sim-assert.h".
	Remove DEFINE_INLINE_P.  Remove DEFINE_NON_INLINE_P.
	(sim_addr_range_add): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_delete): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_hit_p): Change from SIM_ARANGE_INLINE to
	INLINE_SIM_ARANGE.
	* sim-arange.h (sim_addr_range_add): Declare as
	INLINE_SIM_ARANGE.
	(sim_addr_range_delete): Declare as INLINE_SIM_ARANGE.
	(sim_addr_range_hit_p) Declare as INLINE_SIM_ARANGE.
	Remove definition of SIM_ARANGE_INLINE.
	Remove [HAVE_INLINE].
	Wrap include "sim-arange.c" in H_REVEALS_MODULE_P.
	* sim-base.h: Include "sim-arange.h"
	* sim-basics.h: Remove include of "sim-arange.h"
	* sim-inline.c: Include "sim-arange.c"
	* sim-inline.h: Define INLINE_SIM_ARANGE.
	Define SIM_ARANGE_INLINE.  Define EXTERN_SIM_ARANGE_P.
	Define STATIC_INLINE_SIM_ARANGE.  Define STATIC_SIM_ARANGE.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/common: Fix warnings: "warning: implicit declaration of function..."
@ 2019-03-28  0:24 sergiodj+buildbot
  2019-03-28  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28  0:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b6061d4d383b08966d16a0b0f72c69f35fc4beb9 ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: b6061d4d383b08966d16a0b0f72c69f35fc4beb9

sim/common: Fix warnings: "warning: implicit declaration of function..."

During building of several cgen simulator's I notices the below
warnings.  Adding includes fixes these.

Including config.h allows stdio.h to properly configure itself to expose
asprintf().

The other warnings for abort, free, memset, strlen are trivial.

Warnings:

../../../binutils-gdb/sim/or1k/../common/sim-watch.c: In function sim_watchpoint_install:
../../../binutils-gdb/sim/or1k/../common/sim-watch.c:415:10: warning: implicit declaration of function asprintf; did you mean vasprintf? [-Wimplicit-function-declaration]
      if (asprintf (&name, "watch-%s-%s",
          ^~~~~~~~
          vasprintf

../../../binutils-gdb/sim/lm32/../common/hw-device.c: In function hw_strdup:
../../../binutils-gdb/sim/lm32/../common/hw-device.c:59:34: warning: implicit declaration of function strlen [-Wimplicit-function-declaration]
       char *dup = hw_zalloc (me, strlen (str) + 1);
                                  ^~~~~~

../../../binutils-gdb/sim/lm32/../common/hw-events.c: In function hw_event_queue_schedule:
../../../binutils-gdb/sim/lm32/../common/hw-events.c:92:3: warning: implicit declaration of function memset [-Wimplicit-function-declaration]
   memset (&dummy, 0, sizeof dummy);
   ^~~~~~

../../../binutils-gdb/sim/lm32/../common/hw-handles.c: In function hw_handle_remove_ihandle:
../../../binutils-gdb/sim/lm32/../common/hw-handles.c:211:4: warning: implicit declaration of function free [-Wimplicit-function-declaration]
    free (delete);
    ^~~~

../../../binutils-gdb/sim/lm32/../common/sim-fpu.c: In function pack_fpu:
../../../binutils-gdb/sim/lm32/../common/sim-fpu.c:292:7: warning: implicit declaration of function abort [-Wimplicit-function-declaration]
       abort ();
       ^~~~~

sim/common/ChangeLog:

	* sim-options.c: Include "config.h".
	Include <stdio.h>.
	* sim-watch.c: Include "config.h".
	Include <stdio.h>.
	* hw-device.c: Include <string.h>.
	* hw-events.c: Include <string.h>.
	* hw-handles.c: Include <stdlib.h>.
	* sim-fpu.c: Include <stdlib.h>.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24390, Don't decode mtfsb field as a cr field
@ 2019-03-28  7:20 sergiodj+buildbot
  2019-03-28  9:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28  7:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 96a86c01d119372f4af5aff2501d3104e6c1a8e3 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 96a86c01d119372f4af5aff2501d3104e6c1a8e3

PR24390, Don't decode mtfsb field as a cr field

"mtfsb0 4*cr7+lt" doesn't make all that much sense, but unfortunately
glibc uses just that instead of "mtfsb0 28" to clear the fpscr xe bit.
So for backwards compatibility accept cr field expressions when
assembling mtfsb operands, but disassemble to a plain number.

	PR 24390
include/
	* opcode/ppc.h (PPC_OPERAND_CR_REG): Comment.
opcodes/
	* ppc-opc.c (BTF): Define.
	(powerpc_opcodes): Use for mtfsb*.
	* ppc-dis.c (print_insn_powerpc): Print fields with both
	PPC_OPERAND_CR_REG and PPC_OPERAND_CR_BIT as a plain number.
gas/
	* testsuite/gas/ppc/476.d: Update mtfsb*.
	* testsuite/gas/ppc/a2.d: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24392, Clang warning Wtautological-constant-out-of-range-compare
@ 2019-03-28  7:37 sergiodj+buildbot
  2019-03-28 12:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28  7:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 242a115951fe55e62036bac555017eb817ca1aa6 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 242a115951fe55e62036bac555017eb817ca1aa6

PR24392, Clang warning Wtautological-constant-out-of-range-compare

	PR 24392
	* configure.ac: Invoke AC_CHECK_SIZEOF(int).
	* configure: Regenerate.
	* coffgen.c (coff_get_reloc_upper_bound): Replace gcc diagnostic
	workaround with SIZEOF_LONG vs. SIZEOF_INT check.
	* elf.c (_bfd_elf_get_reloc_upper_bound): Likewise.
	* elf64-sparc.c (elf64_sparc_get_reloc_upper_bound): Likewise.
	* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: Ensure AT_HWCAP2 is defined
@ 2019-03-28 12:45 sergiodj+buildbot
  2019-03-28 15:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 12:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 69f4c9cc037f2226982a21fae63ffbc5e866fcca ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 69f4c9cc037f2226982a21fae63ffbc5e866fcca

gdbserver: Ensure AT_HWCAP2 is defined

When using older compilers, AT_HWCAP2 may not be be defined.
It is defined in elf/common.h, however including this in
gdbserver/linux-low.c causes conflicts.

Manually add the define if it does not exist.

gdb/gdbserver/ChangeLog:

	* linux-low.c (AT_HWCAP2): Add define if not already included.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: 128bit views for SVE registers
@ 2019-03-28 13:40 sergiodj+buildbot
  2019-03-28 17:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 13:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fc96163a3ea7761f5353591c825027090942e330 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: fc96163a3ea7761f5353591c825027090942e330

AArch64: 128bit views for SVE registers

SVE can view Z registers as 128bit values using .q prefix.

Add this view to the SVE feature.

gdb/ChangeLog:

	* features/aarch64-sve.c (create_feature_aarch64_sve): Add q view.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: set sysroot when using gdbserver
@ 2019-03-28 16:51 sergiodj+buildbot
  2019-03-29  0:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 16:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c92df149c29518f6e1d4a3174b3e29162fcd3ad6 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: c92df149c29518f6e1d4a3174b3e29162fcd3ad6

Testsuite: set sysroot when using gdbserver

When testing using native-gdbserver and native-extended-gdbserver, the sysroot
is not set.  This results in a warning from GDB and files are sent via the
remote protocol, which can be slow.

On Ubuntu 18.04 (unlike most distros) the debug versions of the standard
libraries are included by default in /usr/lib/debug/.

These file reads are causing a complete native-gdbserver run on the AArch64
buildbot slave to timeout after 2.5 hours.  This is also causing the builds
to back up on the slave.

The solution is to ensure the sysroot is set to / for all local boards.

This drastically reduces the time of a test. For example, gdb.base/sigall.exp
drops from 23 seconds to 4 seconds.
A full native-gdbserver run on the AArch64 slave now takes 8 minutes.

gdb/testsuite/ChangeLog:

	* boards/local-board.exp: set sysroot to /.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix stepping past unwritable kernel helper on nios2-linux-gnu.
@ 2019-03-28 17:41 sergiodj+buildbot
  2019-03-29  5:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 17:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f489207efde922e436b1b420d4de071927e3b9d5 ***

Author: Sandra Loosemore <sandra@codesourcery.com>
Branch: master
Commit: f489207efde922e436b1b420d4de071927e3b9d5

Fix stepping past unwritable kernel helper on nios2-linux-gnu.

This patch fixes a problem on nios2-linux-gnu with stepping past the
kernel helper __kuser_cmpxchg, which was exposed by the testcase
gdb.threads/watchpoint-fork.exp.  The kernel maps this function into
user space on an unwritable page.  In this testcase, the cmpxchg
helper is invoked indirectly from the setbuf call in the test program.
Since this target lacks hardware breakpoint/watchpoint support, GDB
tries to single-step through the program by setting software
breakpoints, and was just giving an error when it reached the function
on the unwritable page.

The solution here is to always step over the call instead of stepping
into it; cmpxchg is supposed to be an atomic operation so this
behavior seems reasonable.  The hook in nios2_get_next_pc is somewhat
generic, but at present cmpxchg is the only helper provided by the
Linux kernel that is invoked by an ordinary function call.  (Signal
return trampolines also go through the unwritable page but not by a
function call.)

Fixing this issue also revealed that the testcase needs a much larger
timeout factor when software single-stepping is used.  That has also
been fixed in this patch.

gdb/ChangeLog

2019-03-28  Sandra Loosemore  <sandra@codesourcery.com>

        * nios2-tdep.h (struct gdbarch_tdep): Add is_kernel_helper.
        * nios2-tdep.c (nios2_get_next_pc): Skip over kernel helpers.
        * nios2-linux-tdep.c (nios2_linux_is_kernel_helper): New.
        (nios2_linux_init_abi): Install it.

gdb/testsuite/ChangeLog

2019-03-28  Sandra Loosemore  <sandra@codesourcery.com>

        * gdb.threads/watchpoint-fork.exp (test): Use large timeout
        factor when no hardware watchpoint support.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix GDB being suspended SIGTTOU when running gdb.multi/multi-arch-exec.exp
@ 2019-03-28 20:57 sergiodj+buildbot
  2019-03-29  9:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 20:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 65d2b333a830b3f36c8b7ae9d9ed6c77f8be9270 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 65d2b333a830b3f36c8b7ae9d9ed6c77f8be9270

Fix GDB being suspended SIGTTOU when running gdb.multi/multi-arch-exec.exp

When running under valgrind, multi-arch-exec.exp blocks forever.
Some (painful) investigation shows this is due to valgrind slowing
down GDB, and GDB has to output some messages at a different time,
when GDB does not have the terminal for output.

To reproduce the problem, you need to slow down GDB.
It can be reproduced by:
cd gdb/testsuite/outputs/gdb.multi/multi-arch-exec/
../../../../gdb -ex 'set debug lin-lwp 1' -ex 'break all_started' -ex 'run' ./2-multi-arch-exec

The above stops at a breakpoint.  Do continue.
GDB is then suspended because of SIGTTOU.
The stacktrace that leads to the hanging GDB is:
(top-gdb) bt
    at ../../binutils-gdb/gdb/exceptions.c:130
....

Alternatively, the same happens when doing
strace -o s.out ../../../../gdb  -ex 'break all_started' -ex 'run' ./2-multi-arch-exec

And of course, valgrind is also sufficiently slowing down GDB to
reproduce this :).

Fix this by calling target_terminal::ours_for_output ();
at the beginning of follow_exec.

Note that all this terminal handling is not very clear to me:
  * Some code takes the terminal, and then takes care to give it back to the inferior
    if the terminal was belonging to the inferior.
    (e.g. annotate_breakpoints_invalid).
  * some code takes the terminal, but does not give it back
    (e.g. update_inserted_breakpoint_locations).
  * some code takes it, and unconditionally gives it back
    (e.g. handle_jit_event)
  * here and there, we also find
    gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
    before a (sometimes optional) call to ours_for_output.
    And such calls to ours_for_output is sometimes protected by:
       if (target_supports_terminal_ours ())
    (e.g. exceptions.c: print_flush).
    but most of the code calls it without checking if the target supports it.
  * some code is outputting some errors, but only takes the terminal
    after. E.g. infcmd.c: prepare_one_step

gdb/ChangeLog
2019-03-28  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* infrun.c (follow_exec): Call target_terminal::ours_for_output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix gdb.multi/multi-arch-exec.exp blocking under high load/slow gdb
@ 2019-03-28 21:16 sergiodj+buildbot
  2019-03-29 10:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 21:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 80047cfc27459d4d31fe275ddd02231d812ddb61 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 80047cfc27459d4d31fe275ddd02231d812ddb61

Fix gdb.multi/multi-arch-exec.exp blocking under high load/slow gdb

When running multi-arch-exec.exp under valgrind, the test succeeds
when the machine is not loaded, but blocks when the machine is highly
loaded (e.g. when running the testsuite with valgrind with -j X
where X is one more than the nr of available cores).

The problem is that the hello program dies too early due to the alarm (30).

So, increase the alarm timer.
Note that this does not make the test take longer (it takes about
3.5 seconds on my system).  As I understand, the alarm is just there
to avoid hello staying there forever in case of another problem.

2019-03-28  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.multi/hello.c (main): Increase alarm timer.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix gdb.multi/multi-term-settings.exp blocking under high load/slow gdb
@ 2019-03-28 21:38 sergiodj+buildbot
  2019-03-29 12:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 21:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 077cad8ec1ca069d8981ecdbfa68c24b12597f67 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 077cad8ec1ca069d8981ecdbfa68c24b12597f67

Fix gdb.multi/multi-term-settings.exp blocking under high load/slow gdb

Similarly to multi-arch-exec.exp, increase the alarm timer to avoid
test blocking under high load or with a slow gdb.

2019-03-28  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.multi/multi-term-settings.c (main): Increase alarm timer.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix format specification in display_selector() (again)
@ 2019-03-28 21:40 sergiodj+buildbot
  2019-03-29 13:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 21:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e432ccf1cb4685b990f9cf10cb84626f52239806 ***

Author: Jon Turney <jon.turney@dronecode.org.uk>
Branch: master
Commit: e432ccf1cb4685b990f9cf10cb84626f52239806

Fix format specification in display_selector() (again)

DWORD type is not a long on 64-bit Cygwin, because that it is LP64.
Explicitly cast DWORD values to unsigned long and use an appropriate
format.

gdb/ChangeLog:

2019-03-28  Jon Turney  <jon.turney@dronecode.org.uk>

	* windows-nat.c (display_selector): Fixed format specifications
	for 64-bit Cygwin.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim: fix aarch64 sim build
@ 2019-03-28 22:28 sergiodj+buildbot
  2019-03-28 22:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 22:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd5b60741993f9e075d3f2492e2251da5bdf260f ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: cd5b60741993f9e075d3f2492e2251da5bdf260f

sim: fix aarch64 sim build

This commit:

  commit ef9866970ce6683d40465fb7c3168f87a1dcd1b7
  Date:   Thu Mar 28 06:40:30 2019 +0900

      sim/common: convert sim-arange to use sim-inline

Broke the simulator build for aarch64 - some required macros are no
longer included where needed, fixed in this commit.

sim/aarch64/ChangeLog:

	* cpustate.c: Add 'libiberty.h' include.
	* interp.c: Add 'sim-assert.h' include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim: fix all sim builds
@ 2019-03-28 23:33 sergiodj+buildbot
  2019-03-29 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-28 23:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d3fe0d7bb8a3101df6f052aa54e4cfedcc2fee94 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: d3fe0d7bb8a3101df6f052aa54e4cfedcc2fee94

sim: fix all sim builds

This commit:

  commit ef9866970ce6683d40465fb7c3168f87a1dcd1b7
  Date:   Thu Mar 28 06:40:30 2019 +0900

      sim/common: convert sim-arange to use sim-inline

broke many simulator targets.  I fixed aarch64 in a previous commit
without realising how many other target were also broken.

This commit adds the missing includes (sim-assert.h and libiberty.h),
which seem to be needed by many simulator targets, in a central
location, this should fix most builds.

sim/common/ChangeLog:

	* sim-base.h: Add 'sim-assert.h' include.
	* sim-basics.h: Add 'libiberty.h' include.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd: xtensa: fix shrink_dynamic_reloc_sections for export-dynamic
@ 2019-03-29 17:39 sergiodj+buildbot
  2019-03-29 20:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-29 17:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2487ef07c28b961c6e2b8c51161f88f93b181d07 ***

Author: Max Filippov <jcmvbkbc@gmail.com>
Branch: master
Commit: 2487ef07c28b961c6e2b8c51161f88f93b181d07

bfd: xtensa: fix shrink_dynamic_reloc_sections for export-dynamic

shrink_dynamic_reloc_sections must remove PLT entry that was created for
an undefined weak symbol in the presence of --export-dynamic option when
relaxation coalesces literals pointing to that symbol. This fixes the
following assertion:

  ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at
  elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections

2019-03-29  Max Filippov  <jcmvbkbc@gmail.com>
bfd/
	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add
	info->export_dynamic to the conditional.

ld/
	* testsuite/ld-xtensa/relax-undef-weak-pie-export-dynamic.d: New
	test definition.
	* testsuite/ld-xtensa/xtensa.exp
	(relax-undef-weak-pie-export-dynamic): Add new test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Allow really large fortran array bounds: TYPE_LENGTH to ULONGEST
@ 2019-03-29 18:45 sergiodj+buildbot
  2019-03-29 21:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-29 18:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cc1defb1dcb5f1ca23a82bca233a48ab2657de6c ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: cc1defb1dcb5f1ca23a82bca233a48ab2657de6c

Allow really large fortran array bounds: TYPE_LENGTH to ULONGEST

This series is revisit of Siddhesh Poyarekar's patch from back in
2012. The last status on the patch is in the following gdb-patches
thread:

  https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html

It appears that Tom approved the patch, but Jan had some issues
with a compiler error that made the test fail on -m32 test runs.
He wrote up a hand-tweaked .S file to deal with it. Siddesh said
he would update tests. Then nothing.

Siddesh and Jan have both moved on since.

The patch originally required a large precursor patch to work.
I have whittled this down to/rewritten the bare minimum, and this
first patch is the result, changing the type of TYPE_LENGTH
to ULONGEST from unsigned int.

The majority of the changes involve changing printf format
strings to use %s and pulongest instead of %d.

gdb/ChangeLog:

	* ada-lang.c (ada_template_to_fixed_record_type_1): Use
	%s/pulongest for TYPE_LENGTH instead of %d in format
	strings.
	* ada-typerint.c (ada_print_type): Likewise.
	* amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
	* compile/compile-c-support.c (generate_register_struct): Likewise.
	* gdbtypes.c (recursive_dump_type): Likewise.
	* gdbtypes.h (struct type) <length>: Change type to ULONGEST.
	* m2-typeprint.c (m2_array):  Use %s/pulongest for TYPE_LENGTH
	instead of %d in format strings.
	* riscv-tdep.c (riscv_type_alignment): Cast second argument
	to std::min to ULONGEST.
	* symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
	instead of %d in format strings.
	* tracepoint.c (info_scope_command): Likewise.
	* typeprint.c (print_offset_data::update)
	(print_offset_data::finish): Likewise.
	* xtensa-tdep.c (xtensa_store_return_value)
	(xtensa_push_dummy_call): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Allow really large fortran array bounds: fortran type/value printers
@ 2019-03-29 18:49 sergiodj+buildbot
  2019-03-30  0:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-29 18:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2880242dd0b8538b68aece7d9e8b1678dcdfd0ab ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: 2880242dd0b8538b68aece7d9e8b1678dcdfd0ab

Allow really large fortran array bounds: fortran type/value printers

This is the fortran part of the patch, including tests, which
are essentially unchanged from Siddhesh's original 2012 submission:

  https://sourceware.org/ml/gdb-patches/2012-08/msg00562.html

There is, however, one large departure.  In the above thread,
Jan pointed out problems with GCC debuginfo for -m32 builds
(filed usptream as gcc/54934).  After investigating the issue,
I am dropping the hand-tweaked assembler source file to workaround
this case.

While I would normally do something to accommodate this, in
this case, given the ubiquity of 64-bit systems today (where
the tests pass) and the apparent lack of urgency on the compiler
side (by users), I don't think the additional complexity and
maintenance costs are worth it. It will be very routinely tested
on 64-bit systems. [For example, at Red Hat, we always
test -m64 and -m32 configurations for all GDB releases.]

gdb/ChangeLog:

	From Siddhesh Poyarekar:
	* f-lang.h (f77_get_upperbound): Return LONGEST.
	(f77_get_lowerbound): Likewise.
	* f-typeprint.c (f_type_print_varspec_suffix): Expand
	UPPER_BOUND and LOWER_BOUND to LONGEST.  Use plongest to format
	print them.
	(f_type_print_base): Expand UPPER_BOUND to LONGEST.  Use
	plongest to format print it.
	* f-valprint.c (f77_get_lowerbound): Return LONGEST.
	(f77_get_upperbound): Likewise.
	(f77_get_dynamic_length_of_aggregate): Expand UPPER_BOUND,
	LOWER_BOUND to LONGEST.
	(f77_create_arrayprint_offset_tbl): Likewise.

gdb/testsuite/ChangeLog:

	* gdb.fortran/array-bounds.exp: New file.
	* gdb.fortran/array-bounds.f90: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add usage for commands in printcmd.c
@ 2019-03-29 21:07 sergiodj+buildbot
  2019-03-30  2:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-29 21:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 188e1fa9ac09b0a764e19c1afc0fb5fcdb688e65 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 188e1fa9ac09b0a764e19c1afc0fb5fcdb688e65

Add usage for commands in printcmd.c

I noticed that the help for "info addr" did not include a "usage"
line; and when adding it I went through and fixed a few minor issues
in printcmd.c:

* Added usage lines to all commands
* Updated the help text for some commands
* Changed some help to use upper case metasyntactic variables
* Removed some dead code

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-29  Tom Tromey  <tromey@adacore.com>

	* printcmd.c (_initialize_printcmd): Add usage lines.  Update some
	help text.  Remove dead code.

gdb/testsuite/ChangeLog
2019-03-29  Tom Tromey  <tromey@adacore.com>

	* gdb.base/help.exp: Tighten apropos regexp.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce new convenience variables $_gdb_major and $_gdb_minor
@ 2019-03-30 10:38 sergiodj+buildbot
  2019-03-30 12:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-30 10:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7734102d6d8b5a0ccea166f8e944f84dc896b9ae ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 7734102d6d8b5a0ccea166f8e944f84dc896b9ae

Introduce new convenience variables $_gdb_major and $_gdb_minor

gdb/ChangeLog:
2019-03-30  Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Announce $_gdb_major and $_gdb_minor.

	* top.c (init_gdb_version_vars): New function.
	(gdb_init): Call init_gdb_version_vars.

gdb/testsuite/ChangeLog:
2019-03-30  Simon Marchi <simark@simark.ca>

	* gdb.base/default.exp: Add values for $_gdb_major and
	$_gdb_minor.

gdb/doc/ChangeLog:
2019-03-30  Eli Zaretskii  <eliz@gnu.org>

	* gdb.texinfo (Convenience Vars): Document $_gdb_major and
	$_gdb_minor.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Relax tail/j to c.j for RV64.
@ 2019-03-30 17:50 sergiodj+buildbot
  2019-03-30 19:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-03-30 17:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ae2b14c73cd42b067e9687219155ed044210f0c1 ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: ae2b14c73cd42b067e9687219155ed044210f0c1

RISC-V: Relax tail/j to c.j for RV64.

	2019-03-30  Andrew Waterman  <andrew@sifive.com>
	bfd/
	* elfnn-riscv.c (_bfd_riscv_relax_call): Only check ARCH_SIZE for
	rd == X_RA case.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add gdb.Value.format_string ()
@ 2019-04-01  8:39 sergiodj+buildbot
  2019-04-01 12:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-01  8:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 52093e1b936fa4f3f8bb3868c5a44d0df25c8db4 ***

Author: Marco Barisione <mbarisione@undo.io>
Branch: master
Commit: 52093e1b936fa4f3f8bb3868c5a44d0df25c8db4

Add gdb.Value.format_string ()

The str () function, called on a gdb.Value instance, produces a string
representation similar to what can be achieved with the print command,
but it doesn't allow to specify additional formatting settings, for
instance disabling pretty printers.

This patch introduces a new format_string () method to gdb.Value which
allows specifying more formatting options, thus giving access to more
features provided by the internal C function common_val_print ().

gdb/ChangeLog:

2019-04-01  Marco Barisione  <mbarisione@undo.io>

	Add gdb.Value.format_string ().
	* python/py-value.c (copy_py_bool_obj):
	(valpy_format_string): Add gdb.Value.format_string ().
	* NEWS: Document the addition of gdb.Value.format_string ().

gdb/doc/ChangeLog:

2019-04-01  Marco Barisione  <mbarisione@undo.io>

	* python.texi (Values From Inferior): Document
	gdb.Value.format_string ().

gdb/testsuite/ChangeLog:

2019-04-01  Marco Barisione  <mbarisione@undo.io>

	Test gdb.Value.format_string ().
	* gdb.python/py-format-string.exp: New test.
	* gdb.python/py-format-string.c: New file.
	* gdb.python/py-format-string.py: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [GAS, Arm] CLI with architecture sensitive extensions
@ 2019-04-01 10:06 sergiodj+buildbot
  2019-04-01 13:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-01 10:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 34ef62f46541d423b991850b2b7ba34d8749a6ba ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 34ef62f46541d423b991850b2b7ba34d8749a6ba

[GAS, Arm] CLI with architecture sensitive extensions

This patch adds a new framework to add architecture sensitive extensions, like
GCC does.  This patch also implements all architecture extensions currently
available in GCC.

This framework works as follows.  To enable architecture sensitive extensions
for a particular architecture, that architecture must contain an ARM_ARCH_OPT2
entry in the 'arm_archs' table.  All fields here are the same as previous, with
the addition of a new extra field at the end to <name> it's extension table.
This <name>, corresponds to a <name>_ext_table of type 'struct arm_ext_table'.
This struct can be filled with three types of entries:

  ARM_ADD (string <ext>, arm_feature_set <enable_bits>), which means +<ext> will
      enable <enable_bits>
  ARM_REMOVE (string <ext>, arm_feature_set <disable_bits>), which means
      +no<ext> will disable <disable_bits>
  ARM_EXT (string <ext>, arm_feature_set <enable_bits>, arm_feature_set
      <disable_bits>), which means +<ext> will enable <enable_bits> and +no<ext>
      will disable <disable_bits> (this is to be used instead of adding an
      ARM_ADD and ARM_REMOVE for the same <ext>)

This patch does not disable the use of the old extensions, even if some of them
are duplicated in the new tables.  This is a "in-between-step" as we may want to
deprecate the old table of extensions in later patches.  For now, GAS will first
look for the +<ext> or +no<ext> in the new table and if no entry is found it
will continue searching in the old table, following old behaviour.  If only an
ARM_ADD or an ARM_REMOVE is defined for <ext> and +no<ext> or +<ext> resp. is
used then it also continues to search the old table for it.

A couple of caveats:
- This patch does not enable the use of these architecture extensions with the
'.arch_extension' directive.  This is future work that I will tend to later.
- This patch does not enable the use of these architecture extensions with the
-mcpu option.  This is future work that I will tend to later.
- This patch does not change the current behaviour when combining an
architecture extension and using -mfpu on the command-line.  The current
behaviour of GAS is to stage the union of feature bits enabled by both -march
and -mfpu.  GCC behaves differently here, so this is something we may want to
revisit on a later date.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Destroy allocated values when exiting GDB
@ 2019-04-01 15:18 sergiodj+buildbot
  2019-04-01 16:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-01 15:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9d1447e09d4aa673826039321163b5a684e8e043 ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: 9d1447e09d4aa673826039321163b5a684e8e043

Destroy allocated values when exiting GDB

When the user exits GDB, we might still have some allocated values in
the chain, which, in specific scenarios, can cause problems when GDB
attempts to destroy them in "quit_force".  For example, see the bug
reported at:

  https://bugzilla.redhat.com/show_bug.cgi?id=1690120

And the thread starting at:

  https://sourceware.org/ml/gdb-patches/2019-03/msg00475.html
  Message-ID: <87r2azkhmq.fsf@redhat.com>

In order to avoid that, and to be more aware of our allocated
resources, this commit implements a new function "finalize_values" and
calls it from inside "quit_force".

Tested by the BuildBot.

2019-04-01  Sergio Durigan Junior  <sergiodj@redhat.com>
	    Pedro Alves  <palves@redhat.com>

	* top.c (quit_force): Call 'finalize_values'.
	* value.c (finalize_values): New function.
	* value.h (finalize_values): Declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Handle DW_AT_ranges when reading partial symtabs
@ 2019-04-01 17:31 sergiodj+buildbot
  2019-04-01 18:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-01 17:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 05caa1d236440cd8967f8804be8dbcf27fb490b6 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 05caa1d236440cd8967f8804be8dbcf27fb490b6

Handle DW_AT_ranges when reading partial symtabs

add_partial_subprogram does not handle DW_AT_ranges, while the full
symtab reader does.  This can lead to discrepancies where a function
is not put into a partial symtab, and so is not available to "break"
and the like -- but is available if the full symtab has somehow been
read.

This patch fixes the bug by arranging to read DW_AT_ranges when
reading partial DIEs.

This is PR symtab/23331.

The new test case is derived from dw2-ranges-func.exp, which is why I
kept the copyright dates.

gdb/ChangeLog
2019-04-01  Tom Tromey  <tromey@adacore.com>

	PR symtab/23331:
	* dwarf2read.c (partial_die_info::read): Handle DW_AT_ranges.

gdb/testsuite/ChangeLog
2019-04-01  Tom Tromey  <tromey@adacore.com>

	PR symtab/23331:
	* gdb.dwarf2/dw2-ranges-main.c: New file.
	* gdb.dwarf2/dw2-ranges-psym.c: New file.
	* gdb.dwarf2/dw2-ranges-psym.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Handle internal function calls
@ 2019-04-01 21:51 sergiodj+buildbot
  2019-04-02  0:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-01 21:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d7df654955c2423190b05b2507caf624ce3d65bc ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: d7df654955c2423190b05b2507caf624ce3d65bc

gdb/fortran: Handle internal function calls

If an convenience function is defined in python (or guile), then
currently this will not work in Fortran, instead the user is given
this message:

  (gdb) set language fortran
  (gdb) p $myfunc (3)
  Cannot perform substring on this type

Compare this to C:

  (gdb) set language c
  (gdb) p $myfunc (3)
  $1 = 1

After this patch we see the same behaviour in both C and Fortran.
I've extended the test to check that all languages can call the
convenience functions - only Fortran was broken.

When calling convenience functions in Fortran we don't need to perform
the same value preparation (passing by pointer) that we would for
calling a native function - passing the real value is fine.

gdb/ChangeLog:

	* eval.c (evaluate_subexp_standard): Handle internal functions
	during Fortran function call handling.

gdb/testsuite/ChangeLog:

	* gdb.python/py-function.exp: Check calling helper function from
	all languages.
	* lib/gdb.exp (gdb_supported_languages): New proc.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Don't check ABI flags if no code section.
@ 2019-04-02 20:51 sergiodj+buildbot
  2019-04-02 23:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-02 20:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 87f98bacb76001157d5a26555a41738ac3841a56 ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: 87f98bacb76001157d5a26555a41738ac3841a56

RISC-V: Don't check ABI flags if no code section.

This fixes a glib build failure reported in PR 24389.  Using ld -b binary
creates an object file with no elf header flags set which has the wrong ABI
info for riscv64-linux.  But the file also has no code sections, so I added
code borrowed from the arm port that only checks the ELF header ABI flags if
there is a code section.

	bfd/
	PR 24389
	* elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Move read of
	ELF header flags to after check for ELF object file.  Loop through
	sections looking for code sections, if none, then skip ABI checks.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] BFD whitespace fixes
@ 2019-04-03  4:24 sergiodj+buildbot
  2019-04-03  5:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-03  4:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4b24dd1acad5c133d12aab6a575c83269336e47f ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 4b24dd1acad5c133d12aab6a575c83269336e47f

BFD whitespace fixes

	* coff-i386.c, * coff-x86_64.c, * coffgen.c, * dwarf2.c,
	* elf-m10200.c, * elf.c, * elf32-arm.c, * elf32-bfin.c,
	* elf32-csky.c, * elf32-m32r.c, * elf32-microblaze.c, * elf32-pru.c,
	* elf32-rx.c, * elf32-xgate.c, * elf64-sparc.c, * elfnn-ia64.c,
	* elfxx-riscv.c, * elfxx-sparc.c, * linker.c, * mach-o.c,
	* pe-x86_64.c, * pei-x86_64.c, * plugin.c: Whitespace fixes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC disassembler: Don't emit trailing spaces
@ 2019-04-05  2:09 sergiodj+buildbot
  2019-04-09 11:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  2:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c2b1c2754526acff8aae2fe8f5a56c2dd11d0b7f ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: c2b1c2754526acff8aae2fe8f5a56c2dd11d0b7f

PowerPC disassembler: Don't emit trailing spaces

When an instruction has operands, the PowerPC disassembler prints
spaces after the opcode so as to line up operands.  If the operands
are all optional and all default value, then no operands are printed,
leaving trailing spaces.  This patch fixes that.

opcodes/
	* ppc-dis.c (print_insn_powerpc): Delay printing spaces after
	opcode until first operand is output.
gas/
	* testsuite/gas/ppc/476.d: Remove trailing spaces.
	* testsuite/gas/ppc/a2.d: Likewise.
	* testsuite/gas/ppc/booke.d: Likewise.
	* testsuite/gas/ppc/booke_xcoff.d: Likewise.
	* testsuite/gas/ppc/e500.d: Likewise.
	* testsuite/gas/ppc/e500mc.d: Likewise.
	* testsuite/gas/ppc/e6500.d: Likewise.
	* testsuite/gas/ppc/htm.d: Likewise.
	* testsuite/gas/ppc/power6.d: Likewise.
	* testsuite/gas/ppc/power8.d: Likewise.
	* testsuite/gas/ppc/power9.d: Likewise.
	* testsuite/gas/ppc/vle.d: Likewise.
ld/
	* testsuite/ld-powerpc/tlsexe32.d: Remove trailing spaces.
	* testsuite/ld-powerpc/tlsopt5.d: Likewise.
	* testsuite/ld-powerpc/tlsopt5_32.d: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add extended mnemonics for bctar. Fix setting of 'at' branch hints.
@ 2019-04-05  2:09 sergiodj+buildbot
  2019-04-09 10:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  2:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aae9718e4d4e8d01dcee22684e82b000203d3e52 ***

Author: Peter Bergner <bergner@vnet.ibm.com>
Branch: master
Commit: aae9718e4d4e8d01dcee22684e82b000203d3e52

Add extended mnemonics for bctar. Fix setting of 'at' branch hints.

opcodes/
	PR gas/24349
	* ppc-opc.c (valid_bo_pre_v2): Add comments.
	(valid_bo_post_v2): Add support for 'at' branch hints.
	(insert_bo): Only error on branch on ctr.
	(get_bo_hint_mask): New function.
	(insert_boe): Add new 'branch_taken' formal argument.  Add support
	for inserting 'at' branch hints.
	(extract_boe): Add new 'branch_taken' formal argument.  Add support
	for extracting 'at' branch hints.
	(insert_bom, extract_bom, insert_bop, extract_bop): New functions.
	(BOE): Delete operand.
	(BOM, BOP): New operands.
	(RM): Update value.
	(XLYLK, XLYLK_MASK, XLYBB_MASK): Delete.
	(powerpc_opcodes) <bc-, bcl-, bca-, bcla-, bclr-, bclrl-, bcctr-,
	bcctrl-, bctar-, bctarl->: Replace BOE with BOM.
	(powerpc_opcodes) <bc+, bcl+, bca+, bcla+, bclr+, bclrl+, bcctr+,
	bcctrl+, bctar+, bctarl+>: Replace BOE with BOP.
	<bdnztar, bdnztarl, bdztar, bdztarl, btar, btarl, bdnztar-, bdnztarl-,
	bdnztar+, bdnztarl+, bdztar-, bdztarl-, bdztar+, bdztarl+, bgetar,
	bnltar, bgetarl, bnltarl, bletar, bngtar, bletarl, bngtarl, bnetar,
	bnetarl, bnstar, bnutar, bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-,
	bnltarl-, bletar-, bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-,
	bnstar-, bnutar-, bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+,
	bnltarl+, bletar+, bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+,
	bnstar+, bnutar+, bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl,
	beqtar, beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
	bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
	buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
	bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
	bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
	bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
	bttarl+>: New extended mnemonics.

gas/
	PR gas/24349
	* testsuite/gas/ppc/power8.s: (bdnztar, bdnztarl, bdztar, bdztarl,
	btar, btarl, bdnztar-, bdnztarl-, bdnztar+, bdnztarl+, bdztar-,
	bdztarl-, bdztar+, bdztarl+, bgetar, bnltar, bgetarl, bnltarl,
	bletar, bngtar, bletarl, bngtarl, bnetar, bnetarl, bnstar, bnutar,
	bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-, bnltarl-, bletar-,
	bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-, bnstar-, bnutar-,
	bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+, bnltarl+, bletar+,
	bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+, bnstar+, bnutar+,
	bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl, beqtar,
	beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
	bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
	buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
	bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
	bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
	bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
	bttarl+): Add tests of extended mnemonics.
	* testsuite/gas/ppc/power8.d: Likewise.  Update previous bctar tests
	to expect new extended mnemonics.
	* testsuite/gas/ppc/a2.s: <bc, bc-, bc+, bcl, bcl-, bcl+>: Update test
	to not use illegal BO value.  Use a more convenient BI value.
	* testsuite/gas/ppc/a2.d: Update tests for new expect output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make increase_expout_size static
@ 2019-04-05  2:42 sergiodj+buildbot
  2019-04-09 16:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  2:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e3980ce2a9bf19ade17fdd9817765f2d1e17a0d8 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e3980ce2a9bf19ade17fdd9817765f2d1e17a0d8

Make increase_expout_size static

increase_expout_size is only called from parse.c, and probably only
should be.  This makes it "static".  Tested by rebuilding.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* parser-defs.h (increase_expout_size): Don't declare.
	* parse.c (increase_expout_size): Now static.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Turn parse_gdbarch into a method
@ 2019-04-05  3:47 sergiodj+buildbot
  2019-04-09 19:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  3:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fa9f5be6830e9245ee1ad1eab9725cc039d45d07 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: fa9f5be6830e9245ee1ad1eab9725cc039d45d07

Turn parse_gdbarch into a method

This changes parse_gdbarch into a method of parser_state.  This patch
was written by a script.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* rust-exp.y: Replace "parse_gdbarch" with method call.
	* parse.c (write_dollar_variable, insert_type_address_space):
	Replace "parse_gdbarch" with method call.
	* p-exp.y (parse_type, yylex): Replace "parse_gdbarch" with method
	call.
	* objc-lang.c (end_msglist): Replace "parse_gdbarch" with method
	call.
	* m2-exp.y (parse_type, parse_m2_type, yylex): Replace
	"parse_gdbarch" with method call.
	* go-exp.y (parse_type, classify_name): Replace "parse_gdbarch"
	with method call.
	* f-exp.y (parse_type, parse_f_type, yylex): Replace
	"parse_gdbarch" with method call.
	* d-exp.y (parse_type, parse_d_type, lex_one_token): Replace
	"parse_gdbarch" with method call.
	* c-exp.y (parse_type, parse_number, classify_name): Replace
	"parse_gdbarch" with method call.
	* ada-lex.l: Replace "parse_gdbarch" with method call.
	* ada-exp.y (parse_type, find_primitive_type, type_char)
	(type_system_address): Replace "parse_gdbarch" with method call.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make base class for parser_state
@ 2019-04-05  3:47 sergiodj+buildbot
  2019-04-09 22:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  3:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 37eedb39824dc26c82a92b5515a352d7de0c9b5b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 37eedb39824dc26c82a92b5515a352d7de0c9b5b

Make base class for parser_state

This makes a new base class, expr_builder, for parser_state.  This
separates the state needed to construct an expression from the state
needed by the parsers.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* gdbarch.h, gdbarch.c: Rebuild.
	* gdbarch.sh (dtrace_parse_probe_argument): Change type.
	* stap-probe.h:
	(struct stap_parse_info): Replace "parser_state" with
	"expr_builder".
	* parser-defs.h (struct expr_builder): Rename from "parser_state".
	(parser_state): New class.
	* parse.c (expr_builder): Rename.
	(expr_builder::release): Rename.
	(write_exp_elt, write_exp_elt_opcode, write_exp_elt_sym)
	(write_exp_elt_msym, write_exp_elt_block, write_exp_elt_objfile)
	(write_exp_elt_longcst, write_exp_elt_floatcst)
	(write_exp_elt_type, write_exp_elt_intern, write_exp_string)
	(write_exp_string_vector, write_exp_bitstring)
	(write_exp_msymbol, mark_struct_expression)
	(write_dollar_variable)
	(insert_type_address_space, increase_expout_size): Replace
	"parser_state" with "expr_builder".
	* dtrace-probe.c: Replace "parser_state" with "expr_builder".
	* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Replace
	"parser_state" with "expr_builder".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move expression_context_* globals to parser_state
@ 2019-04-05  4:17 sergiodj+buildbot
  2019-04-10  0:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  4:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1e58a4a4db997cf09315c22f3da725d1da7f9ee7 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1e58a4a4db997cf09315c22f3da725d1da7f9ee7

Move expression_context_* globals to parser_state

This moves the expression_context_block and expression_context_pc
globals to be members of parser_state and updates the parsers.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* rust-exp.y (rust_parser::crate_name, rust_parser::super_name)
	(rust_parser::convert_ast_to_type)
	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
	* parser-defs.h (struct parser_state) <parser_state>: Add
	parameters.  Initialize new members.
	<expression_context_block, expression_context_pc>: New members.
	* parse.c (expression_context_block, expression_context_pc):
	Remove globals.
	(parse_exp_in_context): Update.
	* p-exp.y: Update all rules.
	(yylex): Update.
	* m2-exp.y: Update all rules.
	(yylex): Update.
	* go-exp.y (yylex): Update.
	* f-exp.y (yylex): Update.
	* d-exp.y: Update all rules.
	(yylex): Update.
	* c-exp.y: Update all rules.
	(lex_one_token, classify_name, yylex, c_parse): Update.
	* ada-exp.y (write_var_or_type, write_name_assoc): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move comma_terminates global to parser_state
@ 2019-04-05  4:32 sergiodj+buildbot
  2019-04-10  4:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  4:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8621b685bfdcb8773b8177fb2b89e45499902868 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8621b685bfdcb8773b8177fb2b89e45499902868

Move comma_terminates global to parser_state

This moves the comma_terminates global to parser_state.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* rust-exp.y (rustyylex, rust_lex_tests): Update.
	* parser-defs.h (struct parser_state) <parser_state>: Add new
	parameter.
	<comma_terminates>: New member.
	(comma_terminates): Don't declare global.
	* parse.c (comma_terminates): Remove global.
	(parse_exp_in_context): Update.
	* p-exp.y (yylex): Update.
	* m2-exp.y (yylex): Update.
	* go-exp.y (lex_one_token): Update.
	* f-exp.y (yylex): Update.
	* d-exp.y (lex_one_token): Update.
	* c-exp.y (lex_one_token): Update.
	* ada-lex.l: Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move completion parsing to parser_state
@ 2019-04-05  5:20 sergiodj+buildbot
  2019-04-10  8:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  5:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2a61252965c91540133bece7deb92eb22e3cf929 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 2a61252965c91540133bece7deb92eb22e3cf929

Move completion parsing to parser_state

This moves the globals and functions related to parsing for completion
to parser_state.  A new structure is introduced in order to return
completion results from the parse back to
parse_expression_for_completion.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* rust-exp.y (rust_parser::lex_identifier, rustyylex)
	(rust_parser::convert_ast_to_expression, rust_parse)
	(rust_lex_test_completion, rust_lex_tests): Update.
	* parser-defs.h (struct expr_completion_state): New.
	(struct parser_state) <parser_state>: Add completion parameter.
	<mark_struct_expression, mark_completion_tag>: New methods.
	<parse_completion, m_completion_state>: New members.
	(prefixify_expression, null_post_parser): Update.
	(mark_struct_expression, mark_completion_tag): Don't declare.
	* parse.c (parse_completion, expout_last_struct)
	(expout_tag_completion_type, expout_completion_name): Remove
	globals.
	(parser_state::mark_struct_expression)
	(parser_state::mark_completion_tag): Now methods.
	(prefixify_expression): Add last_struct parameter.
	(prefixify_subexp): Likewise.
	(parse_exp_1): Update.
	(parse_exp_in_context): Add cstate parameter.  Update.
	(parse_expression_for_completion): Create an
	expr_completion_state.
	(null_post_parser): Add "completion" parameter.
	* p-exp.y: Update rules.
	(yylex): Update.
	* language.h (struct language_defn) <la_post_parser>: Add
	"completing" parameter.
	* go-exp.y: Update rules.
	(lex_one_token): Update.
	* expression.h (parse_completion): Don't declare.
	* d-exp.y: Update rules.
	(lex_one_token): Update rules.
	* c-exp.y: Update rules.
	(lex_one_token): Update.
	* ada-lang.c (resolve): Add "parse_completion" parameter.
	(resolve_subexp): Likewise.
	(ada_resolve_function): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move innermost_block_tracker global to parse_state
@ 2019-04-05  5:50 sergiodj+buildbot
  2019-04-10 12:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05  5:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 699bd4cfa8895d0767d491a3e44ac09d3f4d1801 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 699bd4cfa8895d0767d491a3e44ac09d3f4d1801

Move innermost_block_tracker global to parse_state

This changes the parsing API so that callers that are interested in
tracking the innermost block must instantiate an
innermost_block_tracker and pass it in.  Then, a pointer to this
object is stored in the parser_state.

2019-04-04  Tom Tromey  <tom@tromey.com>

	* varobj.c (varobj_create): Update.
	* rust-exp.y (struct rust_parser) <update_innermost_block,
	lookup_symbol>: New methods.
	(rust_parser::update_innermost_block, rust_parser::lookup_symbol):
	Rename.
	(rust_parser::rust_lookup_type)
	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
	* printcmd.c (display_command, do_one_display): Update.
	* parser-defs.h (struct parser_state) <parser_state>: Add
	"tracker" parameter.
	(block_tracker): New member.
	(class innermost_block_tracker) <innermost_block_tracker>: Add
	"types" parameter.
	<reset>: Remove method.
	(innermost_block): Don't declare.
	(null_post_parser): Update.
	* parse.c (innermost_block): Remove global.
	(write_dollar_variable): Update.
	(parse_exp_1, parse_exp_in_context): Add "tracker" parameter.
	Remove "tracker_types" parameter.
	(parse_expression): Add "tracker" parameter.
	(parse_expression_for_completion): Update.
	(null_post_parser): Add "tracker" parameter.
	* p-exp.y: Update rules.
	* m2-exp.y: Update rules.
	* language.h (struct language_defn) <la_post_parser>: Add
	"tracker" parameter.
	* go-exp.y: Update rules.
	* f-exp.y: Update rules.
	* expression.h (parse_expression, parse_exp_1): Add "tracker"
	parameter.
	* d-exp.y: Update rules.
	* c-exp.y: Update rules.
	* breakpoint.c (set_breakpoint_condition): Create an
	innermost_block_tracker.
	(watch_command_1): Likewise.
	* ada-lang.c (resolve): Add "tracker" parameter.
	(resolve_subexp): Likewise.
	* ada-exp.y (write_var_from_sym): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use linux_get_auxv to get AT_PHDR in the PPC stub
@ 2019-04-05 17:49 sergiodj+buildbot
  2019-04-10 15:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-05 17:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0570503dd31bc20294e228339fcbdd39b19608cc ***

Author: Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
Branch: master
Commit: 0570503dd31bc20294e228339fcbdd39b19608cc

Use linux_get_auxv to get AT_PHDR in the PPC stub

This patch fixes a build error due to a call to ppc_get_auxv that was
left over after linux_get_hwcap and linux_get_hwcap2 were introduced
in:

974c89e0882ddb03e294eca76a9e3d3bef90eacf gdbserver: Add
linux_get_hwcap

Because the missing call fetched AT_PHDR and not AT_HWCAP,
linux_get_auxv is now visible.

This use also required ppc_get_auxv to return a status variable
indicating that the AT_PHDR entry was not found separately from the
actual value of of the auxv entry.  Therefore, the new linux_get_auxv
function is changed to return a status variable and write the entry
value to a pointer passed as an argument.

Note that linux_get_hwcap and linux_get_hwcap2 still use the return
value as both an indicator of that the entry wasn't found and as the
actual value of the entry.

gdb/gdbserver/ChangeLog:
2019-04-05  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* linux-low.c (linux_get_auxv): Remove static.  Return auxv entry
	value in argument pointer, return 1 if the entry is found and 0
	otherwise.  Move comment.
	(linux_get_hwcap, linux_get_hwcap2): Use modified linux_get_auxv.
	* linux-low.h (linux_get_auxv): Declare.
	* linux-ppc-low.c (is_elfv2_inferior): Use linux_get_auxv.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Sort includes for files gdb/[a-f]*.[chyl].
@ 2019-04-06  4:55 sergiodj+buildbot
  2019-04-10 19:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-06  4:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d55e5aa6b29906346c51ad00e6a9b112590aa294 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d55e5aa6b29906346c51ad00e6a9b112590aa294

Sort includes for files gdb/[a-f]*.[chyl].

This patch sorts the include files for the files [a-f]*.[chyl].
The patch was written by a script.

Tested by the buildbot.

I will follow up with patches to sort the remaining files, by sorting
a subset, testing them, and then checking them in.

gdb/ChangeLog
2019-04-05  Tom Tromey  <tom@tromey.com>

	* ft32-tdep.c: Sort headers.
	* frv-tdep.c: Sort headers.
	* frv-linux-tdep.c: Sort headers.
	* frame.c: Sort headers.
	* frame-unwind.c: Sort headers.
	* frame-base.c: Sort headers.
	* fork-child.c: Sort headers.
	* findvar.c: Sort headers.
	* findcmd.c: Sort headers.
	* filesystem.c: Sort headers.
	* filename-seen-cache.h: Sort headers.
	* filename-seen-cache.c: Sort headers.
	* fbsd-tdep.c: Sort headers.
	* fbsd-nat.h: Sort headers.
	* fbsd-nat.c: Sort headers.
	* f-valprint.c: Sort headers.
	* f-typeprint.c: Sort headers.
	* f-lang.c: Sort headers.
	* extension.h: Sort headers.
	* extension.c: Sort headers.
	* extension-priv.h: Sort headers.
	* expprint.c: Sort headers.
	* exec.h: Sort headers.
	* exec.c: Sort headers.
	* exceptions.c: Sort headers.
	* event-top.c: Sort headers.
	* event-loop.c: Sort headers.
	* eval.c: Sort headers.
	* elfread.c: Sort headers.
	* dwarf2read.h: Sort headers.
	* dwarf2read.c: Sort headers.
	* dwarf2loc.c: Sort headers.
	* dwarf2expr.h: Sort headers.
	* dwarf2expr.c: Sort headers.
	* dwarf2-frame.c: Sort headers.
	* dwarf2-frame-tailcall.c: Sort headers.
	* dwarf-index-write.h: Sort headers.
	* dwarf-index-write.c: Sort headers.
	* dwarf-index-common.c: Sort headers.
	* dwarf-index-cache.h: Sort headers.
	* dwarf-index-cache.c: Sort headers.
	* dummy-frame.c: Sort headers.
	* dtrace-probe.c: Sort headers.
	* disasm.h: Sort headers.
	* disasm.c: Sort headers.
	* disasm-selftests.c: Sort headers.
	* dictionary.c: Sort headers.
	* dicos-tdep.c: Sort headers.
	* demangle.c: Sort headers.
	* dcache.h: Sort headers.
	* dcache.c: Sort headers.
	* darwin-nat.h: Sort headers.
	* darwin-nat.c: Sort headers.
	* darwin-nat-info.c: Sort headers.
	* d-valprint.c: Sort headers.
	* d-namespace.c: Sort headers.
	* d-lang.c: Sort headers.
	* ctf.c: Sort headers.
	* csky-tdep.c: Sort headers.
	* csky-linux-tdep.c: Sort headers.
	* cris-tdep.c: Sort headers.
	* cris-linux-tdep.c: Sort headers.
	* cp-valprint.c: Sort headers.
	* cp-support.c: Sort headers.
	* cp-namespace.c: Sort headers.
	* cp-abi.c: Sort headers.
	* corelow.c: Sort headers.
	* corefile.c: Sort headers.
	* continuations.c: Sort headers.
	* completer.h: Sort headers.
	* completer.c: Sort headers.
	* complaints.c: Sort headers.
	* coffread.c: Sort headers.
	* coff-pe-read.c: Sort headers.
	* cli-out.h: Sort headers.
	* cli-out.c: Sort headers.
	* charset.c: Sort headers.
	* c-varobj.c: Sort headers.
	* c-valprint.c: Sort headers.
	* c-typeprint.c: Sort headers.
	* c-lang.c: Sort headers.
	* buildsym.c: Sort headers.
	* buildsym-legacy.c: Sort headers.
	* build-id.h: Sort headers.
	* build-id.c: Sort headers.
	* btrace.c: Sort headers.
	* bsd-uthread.c: Sort headers.
	* breakpoint.h: Sort headers.
	* breakpoint.c: Sort headers.
	* break-catch-throw.c: Sort headers.
	* break-catch-syscall.c: Sort headers.
	* break-catch-sig.c: Sort headers.
	* blockframe.c: Sort headers.
	* block.c: Sort headers.
	* bfin-tdep.c: Sort headers.
	* bfin-linux-tdep.c: Sort headers.
	* bfd-target.c: Sort headers.
	* bcache.c: Sort headers.
	* ax-general.c: Sort headers.
	* ax-gdb.h: Sort headers.
	* ax-gdb.c: Sort headers.
	* avr-tdep.c: Sort headers.
	* auxv.c: Sort headers.
	* auto-load.c: Sort headers.
	* arm-wince-tdep.c: Sort headers.
	* arm-tdep.c: Sort headers.
	* arm-symbian-tdep.c: Sort headers.
	* arm-pikeos-tdep.c: Sort headers.
	* arm-obsd-tdep.c: Sort headers.
	* arm-nbsd-tdep.c: Sort headers.
	* arm-nbsd-nat.c: Sort headers.
	* arm-linux-tdep.c: Sort headers.
	* arm-linux-nat.c: Sort headers.
	* arm-fbsd-tdep.c: Sort headers.
	* arm-fbsd-nat.c: Sort headers.
	* arm-bsd-tdep.c: Sort headers.
	* arch-utils.c: Sort headers.
	* arc-tdep.c: Sort headers.
	* arc-newlib-tdep.c: Sort headers.
	* annotate.h: Sort headers.
	* annotate.c: Sort headers.
	* amd64-windows-tdep.c: Sort headers.
	* amd64-windows-nat.c: Sort headers.
	* amd64-tdep.c: Sort headers.
	* amd64-sol2-tdep.c: Sort headers.
	* amd64-obsd-tdep.c: Sort headers.
	* amd64-obsd-nat.c: Sort headers.
	* amd64-nbsd-tdep.c: Sort headers.
	* amd64-nbsd-nat.c: Sort headers.
	* amd64-nat.c: Sort headers.
	* amd64-linux-tdep.c: Sort headers.
	* amd64-linux-nat.c: Sort headers.
	* amd64-fbsd-tdep.c: Sort headers.
	* amd64-fbsd-nat.c: Sort headers.
	* amd64-dicos-tdep.c: Sort headers.
	* amd64-darwin-tdep.c: Sort headers.
	* amd64-bsd-nat.c: Sort headers.
	* alpha-tdep.c: Sort headers.
	* alpha-obsd-tdep.c: Sort headers.
	* alpha-nbsd-tdep.c: Sort headers.
	* alpha-mdebug-tdep.c: Sort headers.
	* alpha-linux-tdep.c: Sort headers.
	* alpha-linux-nat.c: Sort headers.
	* alpha-bsd-tdep.c: Sort headers.
	* alpha-bsd-nat.c: Sort headers.
	* aix-thread.c: Sort headers.
	* agent.c: Sort headers.
	* addrmap.c: Sort headers.
	* ada-varobj.c: Sort headers.
	* ada-valprint.c: Sort headers.
	* ada-typeprint.c: Sort headers.
	* ada-tasks.c: Sort headers.
	* ada-lang.c: Sort headers.
	* aarch64-tdep.c: Sort headers.
	* aarch64-ravenscar-thread.c: Sort headers.
	* aarch64-newlib-tdep.c: Sort headers.
	* aarch64-linux-tdep.c: Sort headers.
	* aarch64-linux-nat.c: Sort headers.
	* aarch64-fbsd-tdep.c: Sort headers.
	* aarch64-fbsd-nat.c: Sort headers.
	* aarch32-linux-nat.c: Sort headers.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Move x86-specific linker options to elf_linker_x86_params
@ 2019-04-06 14:44 sergiodj+buildbot
  2019-04-10 21:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-06 14:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5b9c07b2782fb9368f06c2561b7329c384ec5da0 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 5b9c07b2782fb9368f06c2561b7329c384ec5da0

x86: Move x86-specific linker options to elf_linker_x86_params

Remove x86-specific linker options from bfd_link_info and put them in
elf_linker_x86_params.  Add _bfd_elf_linker_x86_set_options to pass
x86-specific linker options from ld to bfd.

bfd/

	* elf-linker-x86.h: New file.
	* elf32-i386.c (elf_i386_convert_load_reloc): Use htab->params
	to get x86-specific linker options.
	* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise.
	(elf_x86_64_check_relocs): Likewise.
	(elf_x86_64_relocate_section): Likewise.
	(elf_x86_64_link_setup_gnu_properties): Likewise.
	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Likewise.
	(_bfd_x86_elf_link_setup_gnu_properties): Likewise.
	(_bfd_elf_linker_x86_set_options): New function.
	* elfxx-x86.h: Include "elf-linker-x86.h".
	(elf_x86_link_hash_table): Add params.

include/

	* bfdlink.h (bfd_link_info): Remove x86-specific linker options.

ld/

	* Makefile.am (ELF_X86_DEPS): Add $(srcdir)/emultempl/elf-x86.em.
	(eelf_i386_sol2.c): Also depend on
	$(srcdir)/emultempl/solaris2-x86.em.
	(eelf_x86_64_sol2.c): Likewise.
	* Makefile.in: Regenerated.
	* emulparams/call_nop.sh: Set x86-specific linker options via
	params.
	* emulparams/cet.sh: Likewise.
	* emulparams/reloc_overflow.sh: Likewise.
	* emulparams/elf32_x86_64.sh (EXTRA_EM_FILE): New.  Set to
	"elf-x86".
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_i386_be.sh: Likewise.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/elf_i386_vxworks.sh: Likewise.
	* emulparams/elf_iamcu.sh: Likewise.
	* emulparams/elf_k1om.sh: Likewise.
	* emulparams/elf_l1om.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emulparams/elf_i386_sol2.sh (EXTRA_EM_FILE): Changed to
	"solaris2-x86".
	* emulparams/elf_x86_64_sol2.sh: Likewise.
	* emultempl/elf-x86.em: New file.
	* emultempl/solaris2-x86.em: Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Don't
	set link_info.call_nop_byte.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Revert the header-sorting patch
@ 2019-04-06 20:05 sergiodj+buildbot
  2019-04-10 23:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-06 20:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4de283e4b5f21207fe12f99913d1f28d4f07843c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 4de283e4b5f21207fe12f99913d1f28d4f07843c

Revert the header-sorting patch

Andreas Schwab and John Baldwin pointed out some bugs in the header
sorting patch; and I noticed that the output was not correct when
limited to a subset of files (a bug in my script).

So, I'm reverting the patch.  I may try again after fixing the issues
pointed out.

gdb/ChangeLog
2019-04-05  Tom Tromey  <tom@tromey.com>

	Revert the header-sorting patch.
	* ft32-tdep.c: Revert.
	* frv-tdep.c: Revert.
	* frv-linux-tdep.c: Revert.
	* frame.c: Revert.
	* frame-unwind.c: Revert.
	* frame-base.c: Revert.
	* fork-child.c: Revert.
	* findvar.c: Revert.
	* findcmd.c: Revert.
	* filesystem.c: Revert.
	* filename-seen-cache.h: Revert.
	* filename-seen-cache.c: Revert.
	* fbsd-tdep.c: Revert.
	* fbsd-nat.h: Revert.
	* fbsd-nat.c: Revert.
	* f-valprint.c: Revert.
	* f-typeprint.c: Revert.
	* f-lang.c: Revert.
	* extension.h: Revert.
	* extension.c: Revert.
	* extension-priv.h: Revert.
	* expprint.c: Revert.
	* exec.h: Revert.
	* exec.c: Revert.
	* exceptions.c: Revert.
	* event-top.c: Revert.
	* event-loop.c: Revert.
	* eval.c: Revert.
	* elfread.c: Revert.
	* dwarf2read.h: Revert.
	* dwarf2read.c: Revert.
	* dwarf2loc.c: Revert.
	* dwarf2expr.h: Revert.
	* dwarf2expr.c: Revert.
	* dwarf2-frame.c: Revert.
	* dwarf2-frame-tailcall.c: Revert.
	* dwarf-index-write.h: Revert.
	* dwarf-index-write.c: Revert.
	* dwarf-index-common.c: Revert.
	* dwarf-index-cache.h: Revert.
	* dwarf-index-cache.c: Revert.
	* dummy-frame.c: Revert.
	* dtrace-probe.c: Revert.
	* disasm.h: Revert.
	* disasm.c: Revert.
	* disasm-selftests.c: Revert.
	* dictionary.c: Revert.
	* dicos-tdep.c: Revert.
	* demangle.c: Revert.
	* dcache.h: Revert.
	* dcache.c: Revert.
	* darwin-nat.h: Revert.
	* darwin-nat.c: Revert.
	* darwin-nat-info.c: Revert.
	* d-valprint.c: Revert.
	* d-namespace.c: Revert.
	* d-lang.c: Revert.
	* ctf.c: Revert.
	* csky-tdep.c: Revert.
	* csky-linux-tdep.c: Revert.
	* cris-tdep.c: Revert.
	* cris-linux-tdep.c: Revert.
	* cp-valprint.c: Revert.
	* cp-support.c: Revert.
	* cp-namespace.c: Revert.
	* cp-abi.c: Revert.
	* corelow.c: Revert.
	* corefile.c: Revert.
	* continuations.c: Revert.
	* completer.h: Revert.
	* completer.c: Revert.
	* complaints.c: Revert.
	* coffread.c: Revert.
	* coff-pe-read.c: Revert.
	* cli-out.h: Revert.
	* cli-out.c: Revert.
	* charset.c: Revert.
	* c-varobj.c: Revert.
	* c-valprint.c: Revert.
	* c-typeprint.c: Revert.
	* c-lang.c: Revert.
	* buildsym.c: Revert.
	* buildsym-legacy.c: Revert.
	* build-id.h: Revert.
	* build-id.c: Revert.
	* btrace.c: Revert.
	* bsd-uthread.c: Revert.
	* breakpoint.h: Revert.
	* breakpoint.c: Revert.
	* break-catch-throw.c: Revert.
	* break-catch-syscall.c: Revert.
	* break-catch-sig.c: Revert.
	* blockframe.c: Revert.
	* block.c: Revert.
	* bfin-tdep.c: Revert.
	* bfin-linux-tdep.c: Revert.
	* bfd-target.c: Revert.
	* bcache.c: Revert.
	* ax-general.c: Revert.
	* ax-gdb.h: Revert.
	* ax-gdb.c: Revert.
	* avr-tdep.c: Revert.
	* auxv.c: Revert.
	* auto-load.c: Revert.
	* arm-wince-tdep.c: Revert.
	* arm-tdep.c: Revert.
	* arm-symbian-tdep.c: Revert.
	* arm-pikeos-tdep.c: Revert.
	* arm-obsd-tdep.c: Revert.
	* arm-nbsd-tdep.c: Revert.
	* arm-nbsd-nat.c: Revert.
	* arm-linux-tdep.c: Revert.
	* arm-linux-nat.c: Revert.
	* arm-fbsd-tdep.c: Revert.
	* arm-fbsd-nat.c: Revert.
	* arm-bsd-tdep.c: Revert.
	* arch-utils.c: Revert.
	* arc-tdep.c: Revert.
	* arc-newlib-tdep.c: Revert.
	* annotate.h: Revert.
	* annotate.c: Revert.
	* amd64-windows-tdep.c: Revert.
	* amd64-windows-nat.c: Revert.
	* amd64-tdep.c: Revert.
	* amd64-sol2-tdep.c: Revert.
	* amd64-obsd-tdep.c: Revert.
	* amd64-obsd-nat.c: Revert.
	* amd64-nbsd-tdep.c: Revert.
	* amd64-nbsd-nat.c: Revert.
	* amd64-nat.c: Revert.
	* amd64-linux-tdep.c: Revert.
	* amd64-linux-nat.c: Revert.
	* amd64-fbsd-tdep.c: Revert.
	* amd64-fbsd-nat.c: Revert.
	* amd64-dicos-tdep.c: Revert.
	* amd64-darwin-tdep.c: Revert.
	* amd64-bsd-nat.c: Revert.
	* alpha-tdep.c: Revert.
	* alpha-obsd-tdep.c: Revert.
	* alpha-nbsd-tdep.c: Revert.
	* alpha-mdebug-tdep.c: Revert.
	* alpha-linux-tdep.c: Revert.
	* alpha-linux-nat.c: Revert.
	* alpha-bsd-tdep.c: Revert.
	* alpha-bsd-nat.c: Revert.
	* aix-thread.c: Revert.
	* agent.c: Revert.
	* addrmap.c: Revert.
	* ada-varobj.c: Revert.
	* ada-valprint.c: Revert.
	* ada-typeprint.c: Revert.
	* ada-tasks.c: Revert.
	* ada-lang.c: Revert.
	* aarch64-tdep.c: Revert.
	* aarch64-ravenscar-thread.c: Revert.
	* aarch64-newlib-tdep.c: Revert.
	* aarch64-linux-tdep.c: Revert.
	* aarch64-linux-nat.c: Revert.
	* aarch64-fbsd-tdep.c: Revert.
	* aarch64-fbsd-nat.c: Revert.
	* aarch32-linux-nat.c: Revert.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Merge libiberty from gcc
@ 2019-04-07 13:25 sergiodj+buildbot
  2019-04-11  7:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-07 13:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 07ffcfecac22d21774a110db0f65f0387c8f1102 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 07ffcfecac22d21774a110db0f65f0387c8f1102

Merge libiberty from gcc


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24421, Wrong brackets in opcodes/arm-dis.c
@ 2019-04-07 13:40 sergiodj+buildbot
  2019-04-11  8:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-07 13:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dffaa15c481cea4081732d616334e24abc557fd1 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: dffaa15c481cea4081732d616334e24abc557fd1

PR24421, Wrong brackets in opcodes/arm-dis.c

	PR 24421
	* arm-dis.c (print_insn_coprocessor): Correct bracket placement.
	(print_insn_neon, print_insn_arm): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix x86_64-rdos build fail
@ 2019-04-08  4:59 sergiodj+buildbot
  2019-04-11 12:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08  4:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5f2a6b85105b51f2963aaeb1212c724cab678050 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 5f2a6b85105b51f2963aaeb1212c724cab678050

Fix x86_64-rdos build fail

x86_64-rdos is one of the few x86_64 targets that is 64-bit only and
the x86_64 configure entries don't depend on elf-vxworks.lo.  This
results in undefined references from elfxx-x86.o.

	* configure.ac (elfxx_x86): Define and use.
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify exception handling
@ 2019-04-08 15:37 sergiodj+buildbot
  2019-04-11 14:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 15:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c5c10118216867e133c132b4f46e19fb6aa9258a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: c5c10118216867e133c132b4f46e19fb6aa9258a

Simplify exception handling

Now that cleanups have been removed, TRY/CATCH can't be SJLJ-based any
more.  This patch simplifies the exception handling code, by removing
the non-working variants.

Note that the "pure" C++ exception handling code is removed as well; I
think the route forward must be to change exceptions to be
self-destructing, so that try_scope_depth can simply be removed.

Some longjmp-based code remains, as it is needed to throw an exception
through readline.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* common/common-exceptions.h (GDB_XCPT_SJMP, GDB_XCPT_TRY)
	(GDB_XCPT_RAW_TRY, GDB_XCPT): Remove.
	(TRY, CATCH, END_CATCH): Remove some definitions.
	* common/common-exceptions.c: Don't use GDB_XCPT.
	(catcher_list_size): Remove.
	(throw_exception, throw_it): Simplify.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make exceptions use std::string and be self-managing
@ 2019-04-08 15:53 sergiodj+buildbot
  2019-04-11 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 15:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d6e9d2336c9ffcedb10f89631981a23dd518e8e ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 3d6e9d2336c9ffcedb10f89631981a23dd518e8e

Make exceptions use std::string and be self-managing

This changes the exception's "message" member to be a shared_ptr
wrapping a std::string.  This allows removing the stack of exception
messages, because now exceptions will self-destruct when needed.  This
also adds a noexcept copy constructor and operator= to gdb_exception,
plus a "what" method.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* xml-support.c (gdb_xml_parser::parse): Update.
	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
	* value.c (show_convenience): Update.
	* unittests/cli-utils-selftests.c (test_number_or_range_parser)
	(test_parse_flags_qcs): Update.
	* thread.c (thr_try_catch_cmd): Update.
	* target.c (target_translate_tls_address): Update.
	* stack.c (print_frame_arg, read_frame_local, read_frame_arg)
	(info_frame_command_core, frame_apply_command_count): Update.
	* rust-exp.y (rust_lex_exception_test): Update.
	* riscv-tdep.c (riscv_print_one_register_info): Update.
	* remote.c (remote_target::enable_btrace): Update.
	* record-btrace.c (record_btrace_enable_warn): Update.
	* python/py-utils.c (gdbpy_convert_exception): Update.
	* printcmd.c (do_one_display, print_variable_and_value): Update.
	* mi/mi-main.c (mi_print_exception): Update.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Use SCOPE_EXIT.
	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
	* linux-nat.c (linux_nat_target::attach): Update.
	* linux-fork.c (class scoped_switch_fork_info): Update.
	* infrun.c (displaced_step_prepare): Update.
	* infcall.c (call_function_by_hand_dummy): Update.
	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception): Update.
	* gnu-v3-abi.c (print_one_vtable): Update.
	* frame.c (get_prev_frame_always): Update.
	* f-valprint.c (info_common_command_for_block): Update.
	* exec.c (try_open_exec_file): Update.
	* exceptions.c (print_exception, exception_print)
	(exception_fprintf, exception_print_same): Update.
	* dwarf2-frame.c (dwarf2_build_frame_info): Update.
	* dwarf-index-cache.c (index_cache::store)
	(index_cache::lookup_gdb_index): Update.
	* darwin-nat.c (maybe_cache_shell): Update.
	* cp-valprint.c (cp_print_value_fields): Update.
	* compile/compile-cplus-symbols.c (gcc_cplus_convert_symbol)
	(gcc_cplus_symbol_address): Update.
	* compile/compile-c-symbols.c (gcc_convert_symbol)
	(gcc_symbol_address, generate_c_for_for_one_variable): Update.
	* common/selftest.c: Update.
	* common/common-exceptions.h (struct gdb_exception) <message>: Now
	a std::string.
	(exception_try_scope_entry, exception_try_scope_exit): Don't
	declare.
	(struct exception_try_scope): Remove.
	(TRY): Don't use exception_try_scope.
	(struct gdb_exception): Add constructor, operator=.
	<what>: New method.
	(struct gdb_exception_RETURN_MASK_ALL)
	(struct gdb_exception_RETURN_MASK_ERROR)
	(struct gdb_exception_RETURN_MASK_QUIT): Add constructor.
	(struct gdb_quit_bad_alloc): Update.
	* common/common-exceptions.c (exception_none): Change
	initializer.
	(struct catcher) <state, exception>: Initialize inline.
	<prev>: Remove member.
	(current_catcher): Remove.
	(catchers): New global.
	(exceptions_state_mc_init): Simplify.
	(catcher_pop): Remove.
	(exceptions_state_mc, exceptions_state_mc_catch): Update.
	(try_scope_depth, exception_try_scope_entry)
	(exception_try_scope_exit): Remove.
	(throw_exception_sjlj): Update.
	(exception_messages, exception_messages_size): Remove.
	(throw_it): Simplify.
	(gdb_exception_sliced_copy): Remove.
	(throw_exception_cxx): Update.
	* cli/cli-script.c (script_from_file): Update.
	* breakpoint.c (insert_bp_location, update_breakpoint_locations):
	Update.
	* ada-valprint.c (ada_val_print): Update.
	* ada-lang.c (ada_to_fixed_type_1, ada_exception_name_addr)
	(create_excep_cond_exprs): Update.

gdb/gdbserver/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* server.c (handle_btrace_general_set, handle_qxfer_btrace)
	(handle_qxfer_btrace_conf, detach_or_kill_for_exit_cleanup)
	(captured_main, main): Update.
	* gdbreplay.c (main): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some now-dead exception code
@ 2019-04-08 16:39 sergiodj+buildbot
  2019-04-11 21:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 16:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d272eb370a4c086a1d0f86a7a94e89328ec8d97e ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d272eb370a4c086a1d0f86a7a94e89328ec8d97e

Remove some now-dead exception code

After the rewriting to use try/catch, some of the exception code is
now unused.  This patch removes that code.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* common/common-exceptions.h (exception_rethrow): Don't declare.
	(TRY_SJLJ): Update comment.
	(TRY, CATCH, END_CATCH): Remove.
	* common/common-exceptions.c (exception_rethrow): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rewrite TRY/CATCH
@ 2019-04-08 16:39 sergiodj+buildbot
  2019-04-11 17:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 16:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a70b814420059e1f2de2130d532ddd7b2b2500fc ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: a70b814420059e1f2de2130d532ddd7b2b2500fc

Rewrite TRY/CATCH

This rewrites gdb's TRY/CATCH to plain C++ try/catch.  The patch was
largely written by script, though one change (to a comment in
common-exceptions.h) was reverted by hand.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* xml-support.c: Use C++ exception handling.
	* x86-linux-nat.c: Use C++ exception handling.
	* windows-nat.c: Use C++ exception handling.
	* varobj.c: Use C++ exception handling.
	* value.c: Use C++ exception handling.
	* valprint.c: Use C++ exception handling.
	* valops.c: Use C++ exception handling.
	* unittests/parse-connection-spec-selftests.c: Use C++ exception
	handling.
	* unittests/cli-utils-selftests.c: Use C++ exception handling.
	* typeprint.c: Use C++ exception handling.
	* tui/tui.c: Use C++ exception handling.
	* tracefile-tfile.c: Use C++ exception handling.
	* top.c: Use C++ exception handling.
	* thread.c: Use C++ exception handling.
	* target.c: Use C++ exception handling.
	* symmisc.c: Use C++ exception handling.
	* symfile-mem.c: Use C++ exception handling.
	* stack.c: Use C++ exception handling.
	* sparc64-linux-tdep.c: Use C++ exception handling.
	* solib.c: Use C++ exception handling.
	* solib-svr4.c: Use C++ exception handling.
	* solib-spu.c: Use C++ exception handling.
	* solib-frv.c: Use C++ exception handling.
	* solib-dsbt.c: Use C++ exception handling.
	* selftest-arch.c: Use C++ exception handling.
	* s390-tdep.c: Use C++ exception handling.
	* rust-lang.c: Use C++ exception handling.
	* rust-exp.y: Use C++ exception handling.
	* rs6000-tdep.c: Use C++ exception handling.
	* rs6000-aix-tdep.c: Use C++ exception handling.
	* riscv-tdep.c: Use C++ exception handling.
	* remote.c: Use C++ exception handling.
	* remote-fileio.c: Use C++ exception handling.
	* record-full.c: Use C++ exception handling.
	* record-btrace.c: Use C++ exception handling.
	* python/python.c: Use C++ exception handling.
	* python/py-value.c: Use C++ exception handling.
	* python/py-utils.c: Use C++ exception handling.
	* python/py-unwind.c: Use C++ exception handling.
	* python/py-type.c: Use C++ exception handling.
	* python/py-symbol.c: Use C++ exception handling.
	* python/py-record.c: Use C++ exception handling.
	* python/py-record-btrace.c: Use C++ exception handling.
	* python/py-progspace.c: Use C++ exception handling.
	* python/py-prettyprint.c: Use C++ exception handling.
	* python/py-param.c: Use C++ exception handling.
	* python/py-objfile.c: Use C++ exception handling.
	* python/py-linetable.c: Use C++ exception handling.
	* python/py-lazy-string.c: Use C++ exception handling.
	* python/py-infthread.c: Use C++ exception handling.
	* python/py-inferior.c: Use C++ exception handling.
	* python/py-gdb-readline.c: Use C++ exception handling.
	* python/py-framefilter.c: Use C++ exception handling.
	* python/py-frame.c: Use C++ exception handling.
	* python/py-finishbreakpoint.c: Use C++ exception handling.
	* python/py-cmd.c: Use C++ exception handling.
	* python/py-breakpoint.c: Use C++ exception handling.
	* python/py-arch.c: Use C++ exception handling.
	* printcmd.c: Use C++ exception handling.
	* ppc-linux-tdep.c: Use C++ exception handling.
	* parse.c: Use C++ exception handling.
	* p-valprint.c: Use C++ exception handling.
	* objc-lang.c: Use C++ exception handling.
	* mi/mi-main.c: Use C++ exception handling.
	* mi/mi-interp.c: Use C++ exception handling.
	* mi/mi-cmd-stack.c: Use C++ exception handling.
	* mi/mi-cmd-break.c: Use C++ exception handling.
	* main.c: Use C++ exception handling.
	* linux-thread-db.c: Use C++ exception handling.
	* linux-tdep.c: Use C++ exception handling.
	* linux-nat.c: Use C++ exception handling.
	* linux-fork.c: Use C++ exception handling.
	* linespec.c: Use C++ exception handling.
	* language.c: Use C++ exception handling.
	* jit.c: Use C++ exception handling.
	* infrun.c: Use C++ exception handling.
	* infcmd.c: Use C++ exception handling.
	* infcall.c: Use C++ exception handling.
	* inf-loop.c: Use C++ exception handling.
	* i386-tdep.c: Use C++ exception handling.
	* i386-linux-tdep.c: Use C++ exception handling.
	* guile/scm-value.c: Use C++ exception handling.
	* guile/scm-type.c: Use C++ exception handling.
	* guile/scm-symtab.c: Use C++ exception handling.
	* guile/scm-symbol.c: Use C++ exception handling.
	* guile/scm-pretty-print.c: Use C++ exception handling.
	* guile/scm-ports.c: Use C++ exception handling.
	* guile/scm-param.c: Use C++ exception handling.
	* guile/scm-math.c: Use C++ exception handling.
	* guile/scm-lazy-string.c: Use C++ exception handling.
	* guile/scm-frame.c: Use C++ exception handling.
	* guile/scm-disasm.c: Use C++ exception handling.
	* guile/scm-cmd.c: Use C++ exception handling.
	* guile/scm-breakpoint.c: Use C++ exception handling.
	* guile/scm-block.c: Use C++ exception handling.
	* guile/guile-internal.h: Use C++ exception handling.
	* gnu-v3-abi.c: Use C++ exception handling.
	* gdbtypes.c: Use C++ exception handling.
	* frame.c: Use C++ exception handling.
	* frame-unwind.c: Use C++ exception handling.
	* fbsd-tdep.c: Use C++ exception handling.
	* f-valprint.c: Use C++ exception handling.
	* exec.c: Use C++ exception handling.
	* event-top.c: Use C++ exception handling.
	* event-loop.c: Use C++ exception handling.
	* eval.c: Use C++ exception handling.
	* dwarf2read.c: Use C++ exception handling.
	* dwarf2loc.c: Use C++ exception handling.
	* dwarf2-frame.c: Use C++ exception handling.
	* dwarf2-frame-tailcall.c: Use C++ exception handling.
	* dwarf-index-write.c: Use C++ exception handling.
	* dwarf-index-cache.c: Use C++ exception handling.
	* dtrace-probe.c: Use C++ exception handling.
	* disasm-selftests.c: Use C++ exception handling.
	* darwin-nat.c: Use C++ exception handling.
	* cp-valprint.c: Use C++ exception handling.
	* cp-support.c: Use C++ exception handling.
	* cp-abi.c: Use C++ exception handling.
	* corelow.c: Use C++ exception handling.
	* completer.c: Use C++ exception handling.
	* compile/compile-object-run.c: Use C++ exception handling.
	* compile/compile-object-load.c: Use C++ exception handling.
	* compile/compile-cplus-symbols.c: Use C++ exception handling.
	* compile/compile-c-symbols.c: Use C++ exception handling.
	* common/selftest.c: Use C++ exception handling.
	* common/new-op.c: Use C++ exception handling.
	* cli/cli-script.c: Use C++ exception handling.
	* cli/cli-interp.c: Use C++ exception handling.
	* cli/cli-cmds.c: Use C++ exception handling.
	* c-varobj.c: Use C++ exception handling.
	* btrace.c: Use C++ exception handling.
	* breakpoint.c: Use C++ exception handling.
	* break-catch-throw.c: Use C++ exception handling.
	* arch-utils.c: Use C++ exception handling.
	* amd64-tdep.c: Use C++ exception handling.
	* ada-valprint.c: Use C++ exception handling.
	* ada-typeprint.c: Use C++ exception handling.
	* ada-lang.c: Use C++ exception handling.
	* aarch64-tdep.c: Use C++ exception handling.

gdb/gdbserver/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* server.c: Use C++ exception handling.
	* linux-low.c: Use C++ exception handling.
	* gdbreplay.c: Use C++ exception handling.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make exception throwing a bit more efficient
@ 2019-04-08 16:55 sergiodj+buildbot
  2019-04-11 23:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 16:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 26003a205e207db7985c32ec1964a04652b68413 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 26003a205e207db7985c32ec1964a04652b68413

Make exception throwing a bit more efficient

This makes exception throwing a bit more efficient, by removing some
copies.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* common/common-exceptions.c (throw_exception): Rename from
	throw_exception_cxx.  Remove old copy.  Make argument const.
	(throw_it): Create and throw exception objects directly.
	* common/common-exceptions.h (throw_exception): Make argument
	const.
	(struct gdb_exception_error): Add constructor.
	(struct gdb_exception_quit): Add constructor.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace throw_exception with throw in some cases
@ 2019-04-08 17:11 sergiodj+buildbot
  2019-04-12  0:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 17:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT eedc3f4f0a02c9774277bd1a34aab6ebdc32f797 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: eedc3f4f0a02c9774277bd1a34aab6ebdc32f797

Replace throw_exception with throw in some cases

This replaces throw_exception with "throw;" when possible.  This was
written by script.  The rule that is followed is that uses of the
form:

   catch (... &name)
     {
       ...
       throw_exception (name);
     }

... can be rewritten.  This should always be safe, because exceptions
are caught by const reference, and therefore can't be modified in the
body of the catch.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* valops.c (value_rtti_indirect_type): Replace throw_exception
	with throw.
	* tracefile-tfile.c (tfile_target_open): Replace throw_exception
	with throw.
	* thread.c (thr_try_catch_cmd): Replace throw_exception with
	throw.
	* target.c (target_translate_tls_address): Replace throw_exception
	with throw.
	* stack.c (frame_apply_command_count): Replace throw_exception
	with throw.
	* solib-spu.c (append_ocl_sos): Replace throw_exception with
	throw.
	* s390-tdep.c (s390_frame_unwind_cache): Replace throw_exception
	with throw.
	* rs6000-tdep.c (rs6000_frame_cache)
	(rs6000_epilogue_frame_cache): Replace throw_exception with throw.
	* remote.c: Replace throw_exception with throw.
	* record-full.c (record_full_message, record_full_wait_1)
	(record_full_restore): Replace throw_exception with throw.
	* record-btrace.c:
	(get_thread_current_frame_id, record_btrace_start_replaying)
	(cmd_record_btrace_bts_start, cmd_record_btrace_pt_start)
	(cmd_record_btrace_start): Replace throw_exception with throw.
	* parse.c (parse_exp_in_context_1): Replace throw_exception with
	throw.
	* linux-nat.c (detach_one_lwp, linux_resume_one_lwp)
	(resume_stopped_resumed_lwps): Replace throw_exception with throw.
	* linespec.c:
	(find_linespec_symbols): Replace throw_exception with throw.
	* infrun.c (displaced_step_prepare, resume): Replace
	throw_exception with throw.
	* infcmd.c (post_create_inferior): Replace throw_exception with
	throw.
	* inf-loop.c (inferior_event_handler): Replace throw_exception
	with throw.
	* i386-tdep.c (i386_frame_cache, i386_epilogue_frame_cache)
	(i386_sigtramp_frame_cache): Replace throw_exception with throw.
	* frame.c (frame_unwind_pc, get_prev_frame_if_no_cycle)
	(get_prev_frame_always, get_frame_pc_if_available)
	(get_frame_address_in_block_if_available, get_frame_language):
	Replace throw_exception with throw.
	* frame-unwind.c (frame_unwind_try_unwinder): Replace
	throw_exception with throw.
	* eval.c (fetch_subexp_value, evaluate_var_value)
	(evaluate_funcall, evaluate_subexp_standard): Replace
	throw_exception with throw.
	* dwarf2loc.c (call_site_find_chain)
	(dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval):
	Replace throw_exception with throw.
	* dwarf2-frame.c (dwarf2_frame_cache): Replace throw_exception
	with throw.
	* darwin-nat.c (darwin_attach_pid): Replace throw_exception with
	throw.
	* cp-abi.c (baseclass_offset): Replace throw_exception with throw.
	* completer.c (complete_line_internal): Replace throw_exception
	with throw.
	* compile/compile-object-run.c (compile_object_run): Replace
	throw_exception with throw.
	* cli/cli-script.c (process_next_line): Replace throw_exception
	with throw.
	* btrace.c (btrace_compute_ftrace_pt, btrace_compute_ftrace)
	(btrace_enable, btrace_maint_update_pt_packets): Replace
	throw_exception with throw.
	* breakpoint.c (create_breakpoint, save_breakpoints): Replace
	throw_exception with throw.
	* break-catch-throw.c (re_set_exception_catchpoint): Replace
	throw_exception with throw.
	* amd64-tdep.c (amd64_frame_cache, amd64_sigtramp_frame_cache)
	(amd64_epilogue_frame_cache): Replace throw_exception with throw.
	* aarch64-tdep.c (aarch64_make_prologue_cache)
	(aarch64_make_stub_cache): Replace throw_exception with throw.

gdb/gdbserver/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* linux-low.c (linux_detach_one_lwp): Replace throw_exception with
	throw.
	(linux_resume_one_lwp): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Consolidate AVX512 BF16 entries in i386-opc.tbl
@ 2019-04-08 18:38 sergiodj+buildbot
  2019-04-12  2:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 18:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6f2791d5de45a9490ba6844617feac038c8da8bd ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 6f2791d5de45a9490ba6844617feac038c8da8bd

x86: Consolidate AVX512 BF16 entries in i386-opc.tbl

1. Use single entry for vcvtne2ps2bf16 and vdpbf16ps with Disp8ShiftVL.
2. Use 5 entries, instead of 8, for vcvtneps2bf16.

	* i386-opc.tbl: Consolidate AVX512 BF16 entries.
	* i386-init.h: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Remove i386-*-kaos* and i386-*-chaos targets
@ 2019-04-08 19:19 sergiodj+buildbot
  2019-04-12  4:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 19:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3ae61bb67d62eb53d110835b8b7c3a289e6bce45 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 3ae61bb67d62eb53d110835b8b7c3a289e6bce45

x86: Remove i386-*-kaos* and i386-*-chaos targets

Remove i386-*-kaos* and i386-*-chaos targets since they are no longer
supported by config.sub:

$ .../config.sub i386-kaos
Invalid configuration `i386-kaos': system `kaos' not recognized
$ .../config.sub i386-chaos
Invalid configuration `i386-chaos': system `chaos' not recognized
$

bfd/

	* config.bfd: Remove i[3-7]86-*-kaos* and i[3-7]86-*-chaos targets.

gas/

	* configure.tgt: Remove i386-*-kaos* and i386-*-chaos targets.
	* testsuite/gas/i386/i386.exp: Remove *-*-caos* and "*-*-kaos*
	check.

ld/

	* Makefile.am (ALL_EMULATION_SOURCES): Remove eelf_i386_chaos.c.
	(eelf_i386_chaos.c): Removed.
	* Makefile.in: Regenerated.
	* configure.tgt: Remove i[3-7]86-*-kaos*.
	* emulparams/elf_i386_chaos.sh: Removed.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Some gdb_exception{,error,quit} tweaks
@ 2019-04-08 19:35 sergiodj+buildbot
  2019-04-12  6:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-08 19:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 56be6ea89cdf94078d5dff3734b8c1970dbf52fa ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 56be6ea89cdf94078d5dff3734b8c1970dbf52fa

Some gdb_exception{,error,quit} tweaks

- Explicitly include <string> for std::string.

- Use std::make_shared to construct gdb_exception::message instead of
  operator new, avoiding one heap allocation (2 instead of 3).  Add
  'const char *fmt, va_list ap' parameters to
  gdb_exception{,error,quit}'s ctors, and do the std::make_shared in
  the gdb_exception ctor.

- gdb_exception_error's constructor does not need to have an 'enum
  return_reason' parameter, since it is always RETURN_ERROR, by
  definition.

- Similarly, gdb_exception_quit's contructor does not need to have
  'enum return_reason'/'enum errors' parameters.

- In the gdb_exception_{quit,_error} ctors that take a gdb_exception
  as argument, assert that they're being passed a gdb_exception object
  of the right 'reason'.

gdb/ChangeLog:
2019-04-08  Pedro Alves  <palves@redhat.com>

	* common/common-exceptions.c (throw_exception): Don't create
	named object to throw; throw directly.
	(throw_it): Likewise.  Don't initialize gdb_exception::message
	here, with new; pass FMT and AP to the ctor instead.
	* common/common-exceptions.h: Include <string>.
	(gdb_exception::gdb_exception(enum return_reason, enum errors,
	const char *, va_list)): New ctor.  Use std::make_shared.
	(gdb_exception_error::gdb_exception_error(enum return_reason, enum
	errors)): Delete.
	(gdb_exception_error::gdb_exception_error(enum errors, const char
	*, va_list)): New.
	(gdb_exception_error::gdb_exception_error(const gdb_exception &)):
	Add assertion.
	(gdb_exception_quit::gdb_exception_quit(enum return_reason, enum
	errors)): Delete.
	(gdb_exception_quit::gdb_exception_quit(const char *, va_list)): New.
	(gdb_exception_quit::gdb_exception_quit(const gdb_exception &)):
	Add assertion.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce target_ops method thread_info_to_thread_handle
@ 2019-04-09  3:51 sergiodj+buildbot
  2019-04-12  9:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09  3:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d6c62048d8408fbfb6c66830e0c650e36259637 ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: 3d6c62048d8408fbfb6c66830e0c650e36259637

Introduce target_ops method thread_info_to_thread_handle

This patch adds a thread_info_to_thread_handle method to the target_ops
struct.  It also implements this functionality for remote targets and
linux native threads.

gdb/ChangeLog:

	* gdbthread.h (thread_to_thread_handle): Declare.
	* thread.c (gdbtypes.h): Include.
	(thread_to_thread_handle): New function.

	* target.h (struct target_ops): Add thread_info_to_thread_handle.
	(target_thread_info_to_thread_handle): Declare.
	* target.c (target_thread_info_to_thread_handle): New function.
	* target-debug.h (target_debug_print_gdb_byte_vector): Define.
	* target-delegates.c: Regenerate.

	* linux-thread-db.c (class thread_db_target): Add method
	thread_info_to_thread_handle.
	(thread_db_target::thread_info_to_thread_handle): Define.
	* remote.c (class remote_target): Add new method
	thread_info_to_thread_handle.
	(remote_target::thread_info_to_thread_handle): Define.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add python method InferiorThread.handle
@ 2019-04-09  4:09 sergiodj+buildbot
  2019-04-12 10:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09  4:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cf63b0162b6cbf74bdb056609d1ad777c6d48954 ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: cf63b0162b6cbf74bdb056609d1ad777c6d48954

Add python method InferiorThread.handle

gdb/ChangeLog:

	* python/py-infthread.c (thpy_thread_handle): New function.
	(thread_object_methods): Register thpy_thread_handle.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Tests for gdb.InferiorThread.handle
@ 2019-04-09  4:40 sergiodj+buildbot
  2019-04-12 14:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09  4:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 947210e5690c61b395ccd887bc58bcb45ccd357b ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: 947210e5690c61b395ccd887bc58bcb45ccd357b

Tests for gdb.InferiorThread.handle

gdb/testsuite/ChangeLog:

	* gdb.python/py-thrhandle.exp: Add tests for
	gdb.InferiorThread.handle.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove parser_state "initial_size" parameter
@ 2019-04-09 16:15 sergiodj+buildbot
  2019-04-09 16:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09 16:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1201a264c8fd227737342345ab54e938295188b6 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1201a264c8fd227737342345ab54e938295188b6

Remove parser_state "initial_size" parameter

All the real (not test) uses of parser_state pass 10 as the
"initial_size" parameter, and it seems to me that there's no real
reason to require callers to set this.  This patch removes this
parameter.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* dtrace-probe.c (dtrace_probe::build_arg_exprs): Update.
	* stap-probe.c (stap_parse_argument): Update.
	* stap-probe.h (struct stap_parse_info) <stap_parse_info>: Remove
	initial_size parameter.
	* rust-exp.y (rust_lex_tests): Update.
	* parse.c (parser_state): Update.
	(parse_exp_in_context): Update.
	* parser-defs.h (struct parser_state) <parser_state>: Remove
	"initial_size" parameter.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Consistently use bool for fake_pid_p
@ 2019-04-09 18:18 sergiodj+buildbot
  2019-04-12 22:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09 18:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9ab8741a48294e19d514721c710c81bba46db7f2 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 9ab8741a48294e19d514721c710c81bba46db7f2

Consistently use bool for fake_pid_p

I noticed a few spots where fake_pid_p is handled as an int, whereas
the field in struct inferior has type bool.  This patch changes the
remaining places to use bool as well.

Tested by the buildbot.

gdb/ChangeLog
2019-04-09  Tom Tromey  <tromey@adacore.com>

	* remote.c (remote_target::remote_add_inferior): Change fake_pid_p
	to bool.
	(extended_remote_target::attach): Update.
	(remote_target::remote_notice_new_inferior): Update.
	(remote_target::add_current_inferior_and_thread): Update.
	* inferior.c (exit_inferior_1): Use "false".
	* corelow.c (add_to_thread_list): Make fake_pid_p bool.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use find_thread_in_random in select_event_lwp
@ 2019-04-09 18:36 sergiodj+buildbot
  2019-04-12 23:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09 18:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b0319eaaf9d1f4e730c532058f2fff0b4e5ce682 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: b0319eaaf9d1f4e730c532058f2fff0b4e5ce682

Use find_thread_in_random in select_event_lwp

I noticed that find_thread_in_random duplicates the code in
find_thread_in_random, so this patch changes the latter to use the
former.

There are two other spots in gdb that do this, but to unify all of
them would require switching some code from using the "iterate over"
idiom to using iterators.

Another possible improvement is that find_thread_in_random could be
made single-pass using reservoir sampling.

Tested by the buildbot.

gdb/gdbserver/ChangeLog
2019-04-09  Tom Tromey  <tromey@adacore.com>

	* linux-low.c (select_event_lwp): Use find_thread_in_random.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix Rust lexer buglet
@ 2019-04-09 19:44 sergiodj+buildbot
  2019-04-13  1:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09 19:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8dc433a0fb04f8fa37530d0788053dd9bea5c37d ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 8dc433a0fb04f8fa37530d0788053dd9bea5c37d

Fix Rust lexer buglet

PR rust/24414 points out that the Rust lexer uses strtoul when lexing
an integer, and that this can give the wrong results in some
situations.

This patch changes it to use strtoulst, like most of the rest of gdb.
It also adds a self test.

Tested on x86-64 Fedora 29 using an i686 build.

gdb/ChangeLog
2019-04-09  Ivan Begert  <ivanbegert@gmail.com>
	    Tom Tromey  <tromey@adacore.com>

	PR rust/24414:
	* rust-exp.y (rust_parser::lex_number): Use strtoulst.
	(rust_lex_int_test): Change "value" to be LONGEST.
	(rust_lex_tests): Add test for long integer literal.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Turn parse_language into a method
@ 2019-04-09 19:44 sergiodj+buildbot
  2019-04-09 20:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-09 19:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 73923d7eedc7ab52144308ef7e9c12cbe4341bca ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 73923d7eedc7ab52144308ef7e9c12cbe4341bca

Turn parse_language into a method

This changes parse_language into a method of parser_state.  This patch
was written by a script.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* rust-exp.y: Replace "parse_language" with method call.
	* p-exp.y:
	(yylex): Replace "parse_language" with method call.
	* m2-exp.y:
	(yylex): Replace "parse_language" with method call.
	* go-exp.y (classify_name): Replace "parse_language" with method
	call.
	* f-exp.y (yylex): Replace "parse_language" with method call.
	* d-exp.y (lex_one_token): Replace "parse_language" with method
	call.
	* c-exp.y:
	(lex_one_token, classify_name, yylex): Replace "parse_language"
	with method call.
	* ada-exp.y (find_primitive_type, type_char)
	(type_system_address): Replace "parse_language" with method call.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move arglist_len et al to parser_state
@ 2019-04-10  5:50 sergiodj+buildbot
  2019-04-10  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10  5:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 43476f0b1b628352ad8e3064e50128cb3461d3d0 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 43476f0b1b628352ad8e3064e50128cb3461d3d0

Move arglist_len et al to parser_state

This moves arglist_len, start_arglist, and end_arglist to
parser_state.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* parser-defs.h (struct parser_state) <start_arglist,
	end_arglist>: New methods.
	<arglist_len, m_funcall_chain>: New members.
	(arglist_len, start_arglist, end_arglist): Don't declare.
	* parse.c (arglist_len, funcall_chain): Remove global.
	(start_arglist, end_arglist): Remove functions.
	(parse_exp_in_context): Update.
	* p-exp.y: Update rules.
	* m2-exp.y: Update rules.
	* go-exp.y: Update rules.
	* f-exp.y: Update rules.
	* d-exp.y: Update rules.
	* c-exp.y: Update rules.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move type stack handling to a new class
@ 2019-04-10  9:17 sergiodj+buildbot
  2019-04-10 10:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10  9:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dac43e327d002107f6bc9481749de039f410df73 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: dac43e327d002107f6bc9481749de039f410df73

Move type stack handling to a new class

This introduces a new "type_stack" class, and moves all the parser
type stack handling to this class.  Parsers that wish to use this
facility must now instantiate this class somehow.  I chose this
approach because a minority of the existing parsers require this.

gdb/ChangeLog
2019-04-04  Tom Tromey  <tom@tromey.com>

	* type-stack.h: New file.
	* type-stack.c: New file.
	* parser-defs.h (enum type_pieces, union type_stack_elt): Move to
	type-stack.h.
	(insert_into_type_stack, insert_type, push_type, push_type_int)
	(insert_type_address_space, pop_type, pop_type_int)
	(pop_typelist, pop_type_stack, append_type_stack)
	(push_type_stack, get_type_stack, push_typelist)
	(follow_type_instance_flags, follow_types): Don't declare.
	* parse.c (type_stack): Remove global.
	(parse_exp_in_context): Update.
	(insert_into_type_stack, insert_type, push_type, push_type_int)
	(insert_type_address_space, pop_type, pop_type_int)
	(pop_typelist, pop_type_stack, append_type_stack)
	(push_type_stack, get_type_stack, push_typelist)
	(follow_type_instance_flags, follow_types): Remove (moved to
	type-stack.c).
	* f-exp.y (type_stack): New global.
	Update rules.
	(push_kind_type, f_parse): Update.
	* d-exp.y (type_stack): New global.
	Update rules.
	(d_parse): Update.
	* c-exp.y (struct c_parse_state) <type_stack>: New member.
	Update rules.
	* Makefile.in (COMMON_SFILES): Add type-stack.c.
	(HFILES_NO_SRCDIR): Add type-stack.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use upper-case for metasyntactic in gdbserver help
@ 2019-04-10 12:44 sergiodj+buildbot
  2019-04-10 13:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10 12:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 227a9e65b91958cb414ade82c614717579d8849e ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 227a9e65b91958cb414ade82c614717579d8849e

Use upper-case for metasyntactic in gdbserver help

I noticed that "gdbserver --help" contains a few metasyntactic
variables that aren't in upper-case.  This patch fixes them to conform
to the GNU standard.

gdb/gdbserver/ChangeLog
2019-04-05  Tom Tromey  <tromey@adacore.com>

	* server.c (gdbserver_usage): Use upper-case for metasyntactic
	variables.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some uses of "object_files"
@ 2019-04-10 14:24 sergiodj+buildbot
  2019-04-13  4:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10 14:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bf227d6105cb3908cde816429c84569da12e829c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: bf227d6105cb3908cde816429c84569da12e829c

Remove some uses of "object_files"

The "object_files" macro is sometimes used when iterating over
objfiles.  This patch removes a few such uses in favor of the new
range adapter.

gdb/ChangeLog
2019-04-10  Tom Tromey  <tom@tromey.com>

	* ia64-tdep.c (ia64_get_dyn_info_list): Use foreach.
	* minsyms.c (lookup_minimal_symbol): Use foreach.
	(lookup_minimal_symbol_text, lookup_minimal_symbol_by_pc_name)
	(lookup_minimal_symbol_solib_trampoline): Likewise.
	* symfile.c (reread_symbols): Use foreach.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix a couple of comments
@ 2019-04-10 14:42 sergiodj+buildbot
  2019-04-13  6:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10 14:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ee3711344b6e0cffeb237fa6889aab04853f9004 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: ee3711344b6e0cffeb237fa6889aab04853f9004

Fix a couple of comments

While working on objfiles I noticed a typo in one comment, and another
comment that, as far as I can tell, has been obsolete for a very long
time.

gdb/ChangeLog
2019-04-10  Tom Tromey  <tom@tromey.com>

	* symfile.c (reread_symbols): Remove old comment.
	* objfiles.c (free_all_objfiles): Fix a typo.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Pull in patch for libiberty that fixes a stack exhaustion bug when demangling a pathalogically constructed mangled name.
@ 2019-04-10 15:14 sergiodj+buildbot
  2019-04-13 10:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10 15:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c1202057eb9161a86af27d867703235fee7b7555 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: c1202057eb9161a86af27d867703235fee7b7555

Pull in patch for libiberty that fixes a stack exhaustion bug when demangling a pathalogically constructed mangled name.

	PR 89394
	* cp-demangle.c (cplus_demangle_fill_name): Reject negative
	lengths.
	(d_count_templates_scopes): Replace num_templates and num_scopes
	parameters with a struct d_print_info pointer parameter.  Adjust
	body of the function accordingly.  Add recursion counter and check
	that the recursion limit is not reached.
	(d_print_init): Pass dpi parameter to d_count_templates_scopes.
	Reset recursion counter afterwards, unless the recursion limit was
	reached.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Support Intel AVX512 BF16
@ 2019-04-10 16:12 sergiodj+buildbot
  2019-04-10 17:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-10 16:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d6aab7a11b8bd85de43f9fe6b1cea95b504e73ad ***

Author: Xuepeng Guo <xuepeng.guo@intel.com>
Branch: master
Commit: d6aab7a11b8bd85de43f9fe6b1cea95b504e73ad

x86: Support Intel AVX512 BF16

Add assembler and disassembler support Intel AVX512 BF16:

https://software.intel.com/en-us/download/intel-architecture-instruction-set-extensions-programming-reference

gas/

2019-04-05  Xuepeng Guo  <xuepeng.guo@intel.com>

	* config/tc-i386.c (cpu_arch): Add .avx512_bf16.
	(cpu_noarch): Add noavx512_bf16.
	* doc/c-i386.texi: Document avx512_bf16.
	* testsuite/gas/i386/avx512_bf16.d: New file.
	* testsuite/gas/i386/avx512_bf16.s: Likewise.
	* testsuite/gas/i386/avx512_bf16_vl-inval.l: Likewise.
	* testsuite/gas/i386/avx512_bf16_vl-inval.s: Likewise.
	* testsuite/gas/i386/avx512_bf16_vl.d: Likewise.
	* testsuite/gas/i386/avx512_bf16_vl.s: Likewise.
	* testsuite/gas/i386/x86-64-avx512_bf16.d: Likewise.
	* testsuite/gas/i386/x86-64-avx512_bf16.s: Likewise.
	* testsuite/gas/i386/x86-64-avx512_bf16_vl-inval.l: Likesie.
	* testsuite/gas/i386/x86-64-avx512_bf16_vl-inval.s: Likewise.
	* testsuite/gas/i386/x86-64-avx512_bf16_vl.d: Likewise.
	* testsuite/gas/i386/x86-64-avx512_bf16_vl.s: Likewise.
	* testsuite/gas/i386/i386.exp: Add BF16 related tests.

opcodes/

2019-04-05  Xuepeng Guo  <xuepeng.guo@intel.com>

	* i386-dis-evex.h (evex_table): Updated to support BF16
	instructions.
	* i386-dis.c (enum): Add EVEX_W_0F3852_P_1, EVEX_W_0F3872_P_1
	and EVEX_W_0F3872_P_3.
	* i386-gen.c (cpu_flag_init): Add CPU_AVX512_BF16_FLAGS.
	(cpu_flags): Add bitfield for CpuAVX512_BF16.
	* i386-opc.h (enum): Add CpuAVX512_BF16.
	(i386_cpu_flags): Add bitfield for cpuavx512_bf16.
	* i386-opc.tbl: Add AVX512 BF16 instructions.
	* i386-init.h: Regenerated.
	* i386-tbl.h: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] print_insn_powerpc tidy
@ 2019-04-11  9:21 sergiodj+buildbot
  2019-04-11 10:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11  9:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e392bad3ec99458369723e14ded8c23b5b13073c ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: e392bad3ec99458369723e14ded8c23b5b13073c

print_insn_powerpc tidy

	* ppc-dis.c (print_insn_powerpc): Use a tiny state machine
	op_separator to control printing of spaces, comma and parens
	rather than need_comma, need_paren and spaces vars.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BINUTILS, AArch64, 2/2] Update Store Allocation Tag instructions
@ 2019-04-11  9:56 sergiodj+buildbot
  2019-04-13 17:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11  9:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bd7ceb8d26e011ff3fd23402ec2587d7c374f090 ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: bd7ceb8d26e011ff3fd23402ec2587d7c374f090

[BINUTILS, AArch64, 2/2] Update Store Allocation Tag instructions

This patch updates the Store allocation tags instructions in
Armv8.5-A Memory Tagging Extension. This is part of the changes
that have been introduced recently in the 00bet10 release

All of these instructions have an updated register operand (Xt -> <Xt|SP>)

- STG <Xt|SP>, [<Xn|SP>, #<simm>]
- STG <Xt|SP>, [<Xn|SP>, #<simm>]!
- STG <Xt|SP>, [<Xn|SP>], #<simm>
- STZG <Xt|SP>, [<Xn|SP>, #<simm>]
- STZG <Xt|SP>, [<Xn|SP>, #<simm>]!
- STZG <Xt|SP>, [<Xn|SP>], #<simm>
- ST2G <Xt|SP>, [<Xn|SP>, #<simm>]
- ST2G <Xt|SP>, [<Xn|SP>, #<simm>]!
- ST2G <Xt|SP>, [<Xn|SP>], #<simm>
- STZ2G <Xt|SP>, [<Xn|SP>, #<simm>]
- STZ2G <Xt|SP>, [<Xn|SP>, #<simm>]!
- STZ2G <Xt|SP>, [<Xn|SP>], #<simm>

In order to accept <Rt|SP> a new operand type Rt_SP is introduced which has
the same field as FLD_Rt but follows other semantics of Rn_SP.

*** gas/ChangeLog ***

2019-04-11  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-aarch64.c (process_omitted_operand): Add case for
	AARCH64_OPND_Rt_SP.
	(parse_operands): Likewise.
	* testsuite/gas/aarch64/armv8_5-a-memtag.d: Update tests.
	* testsuite/gas/aarch64/armv8_5-a-memtag.s: Likewise.
	* testsuite/gas/aarch64/illegal-memtag.l: Likewise.
	* testsuite/gas/aarch64/illegal-memtag.s: Likewise.

*** include/ChangeLog ***

2019-04-11  Sudakshina Das  <sudi.das@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): Add AARCH64_OPND_Rt_SP.

*** opcodes/ChangeLog ***

2019-04-11  Sudakshina Das  <sudi.das@arm.com>

	* aarch64-opc.c (aarch64_print_operand): Add case for
	AARCH64_OPND_Rt_SP.
	(verify_constraints): Likewise.
	* aarch64-tbl.h (QL_LDST_AT): Update to add SP qualifier.
	(struct aarch64_opcode): Update stg, stzg, st2g, stz2g instructions
	to accept Rt|SP as first operand.
	(AARCH64_OPERANDS): Add new Rt_SP.
	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: When DF_BIND_NOW don't use TLSDESC GOT value.
@ 2019-04-11 10:57 sergiodj+buildbot
  2019-04-13 20:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11 10:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ce12121b63145322b4961bbb2b94b939cb916ba7 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: ce12121b63145322b4961bbb2b94b939cb916ba7

AArch64: When DF_BIND_NOW don't use TLSDESC GOT value.

When using DF_BIND_NOW on AArch64 we don't reserve the GOT slot for a TLSDESC,
but we still emitted DT_TLSDESC_GOT and DT_TLSDESC_PLT.  This caused random
memory corruption as the "special" value of (bfd_vma)-1 would be set for
dt_tlsdesc_got.

Since we don't have a value of dt_tlsdesc_got I also don't emit DT_TLSDESC_PLT
now becuase it would point to an incomplete PLT. To be able to write the PLT
entry DT_TLSDESC_GOT is needed and since we don't have one we can't write the
PLT entry either.

It is my understanding that GLIBC doesn't need these two entries when not lazy
loading.  Conversely AArch32 does not reserve neither the GOT not the PLT slot
when doing DF_BIND_NOW.

AArch32 does not need these checks because these values are initialized to 0
and so the if (...) checks don't pass, but on AArch64 these are initialized
to (bfd_vma)-1 and thus we need some extra checks.

bfd/ChangeLog:

	PR ld/24302
	* elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections): Don't emit
	DT_TLSDESC_GOT and DT_TLSDESC_PLT when DF_BIND_NOW.
	(elfNN_aarch64_finish_dynamic_sections): Don't write PLT if DF_BIND_NOW.

ld/ChangeLog:

	PR ld/24302
	* testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
	* testsuite/ld-aarch64/tls-relax-gdesc-le-now.d: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24435, buffer overflow reading dynamic entries
@ 2019-04-11 11:45 sergiodj+buildbot
  2019-04-13 21:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11 11:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9bff840e8cc560f5096a43609ed3e0d980733fd9 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 9bff840e8cc560f5096a43609ed3e0d980733fd9

PR24435, buffer overflow reading dynamic entries

	PR 24435
	* elflink.c (elf_link_add_object_symbols): Don't read partial
	dynamic entries from fuzzed objects.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rename gdb exception types
@ 2019-04-11 17:50 sergiodj+buildbot
  2019-04-11 19:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11 17:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 230d2906b9d1d009b22fd526181bf43e1084ed59 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 230d2906b9d1d009b22fd526181bf43e1084ed59

Rename gdb exception types

This renames the gdb exception types.  The old types were only needed
due to the macros in common-exception.h that are now gone.

The intermediate layer of gdb_exception_RETURN_MASK_ALL did not seem
needed, so this patch removes it entirely.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* common/common-exceptions.h (gdb_exception_RETURN_MASK_ALL):
	Remove.
	(gdb_exception_error): Rename from
	gdb_exception_RETURN_MASK_ERROR.
	(gdb_exception_quit): Rename from gdb_exception_RETURN_MASK_QUIT.
	(gdb_quit_bad_alloc): Update.
	* aarch64-tdep.c: Update.
	* ada-lang.c: Update.
	* ada-typeprint.c: Update.
	* ada-valprint.c: Update.
	* amd64-tdep.c: Update.
	* arch-utils.c: Update.
	* break-catch-throw.c: Update.
	* breakpoint.c: Update.
	* btrace.c: Update.
	* c-varobj.c: Update.
	* cli/cli-cmds.c: Update.
	* cli/cli-interp.c: Update.
	* cli/cli-script.c: Update.
	* common/common-exceptions.c: Update.
	* common/new-op.c: Update.
	* common/selftest.c: Update.
	* compile/compile-c-symbols.c: Update.
	* compile/compile-cplus-symbols.c: Update.
	* compile/compile-object-load.c: Update.
	* compile/compile-object-run.c: Update.
	* completer.c: Update.
	* corelow.c: Update.
	* cp-abi.c: Update.
	* cp-support.c: Update.
	* cp-valprint.c: Update.
	* darwin-nat.c: Update.
	* disasm-selftests.c: Update.
	* dtrace-probe.c: Update.
	* dwarf-index-cache.c: Update.
	* dwarf-index-write.c: Update.
	* dwarf2-frame-tailcall.c: Update.
	* dwarf2-frame.c: Update.
	* dwarf2loc.c: Update.
	* dwarf2read.c: Update.
	* eval.c: Update.
	* event-loop.c: Update.
	* event-top.c: Update.
	* exec.c: Update.
	* f-valprint.c: Update.
	* fbsd-tdep.c: Update.
	* frame-unwind.c: Update.
	* frame.c: Update.
	* gdbtypes.c: Update.
	* gnu-v3-abi.c: Update.
	* guile/guile-internal.h: Update.
	* guile/scm-block.c: Update.
	* guile/scm-breakpoint.c: Update.
	* guile/scm-cmd.c: Update.
	* guile/scm-disasm.c: Update.
	* guile/scm-frame.c: Update.
	* guile/scm-lazy-string.c: Update.
	* guile/scm-math.c: Update.
	* guile/scm-param.c: Update.
	* guile/scm-ports.c: Update.
	* guile/scm-pretty-print.c: Update.
	* guile/scm-symbol.c: Update.
	* guile/scm-symtab.c: Update.
	* guile/scm-type.c: Update.
	* guile/scm-value.c: Update.
	* i386-linux-tdep.c: Update.
	* i386-tdep.c: Update.
	* inf-loop.c: Update.
	* infcall.c: Update.
	* infcmd.c: Update.
	* infrun.c: Update.
	* jit.c: Update.
	* language.c: Update.
	* linespec.c: Update.
	* linux-fork.c: Update.
	* linux-nat.c: Update.
	* linux-tdep.c: Update.
	* linux-thread-db.c: Update.
	* main.c: Update.
	* mi/mi-cmd-break.c: Update.
	* mi/mi-cmd-stack.c: Update.
	* mi/mi-interp.c: Update.
	* mi/mi-main.c: Update.
	* objc-lang.c: Update.
	* p-valprint.c: Update.
	* parse.c: Update.
	* ppc-linux-tdep.c: Update.
	* printcmd.c: Update.
	* python/py-arch.c: Update.
	* python/py-breakpoint.c: Update.
	* python/py-cmd.c: Update.
	* python/py-finishbreakpoint.c: Update.
	* python/py-frame.c: Update.
	* python/py-framefilter.c: Update.
	* python/py-gdb-readline.c: Update.
	* python/py-inferior.c: Update.
	* python/py-infthread.c: Update.
	* python/py-lazy-string.c: Update.
	* python/py-linetable.c: Update.
	* python/py-objfile.c: Update.
	* python/py-param.c: Update.
	* python/py-prettyprint.c: Update.
	* python/py-progspace.c: Update.
	* python/py-record-btrace.c: Update.
	* python/py-record.c: Update.
	* python/py-symbol.c: Update.
	* python/py-type.c: Update.
	* python/py-unwind.c: Update.
	* python/py-utils.c: Update.
	* python/py-value.c: Update.
	* python/python.c: Update.
	* record-btrace.c: Update.
	* record-full.c: Update.
	* remote-fileio.c: Update.
	* remote.c: Update.
	* riscv-tdep.c: Update.
	* rs6000-aix-tdep.c: Update.
	* rs6000-tdep.c: Update.
	* rust-exp.y: Update.
	* rust-lang.c: Update.
	* s390-tdep.c: Update.
	* selftest-arch.c: Update.
	* solib-dsbt.c: Update.
	* solib-frv.c: Update.
	* solib-spu.c: Update.
	* solib-svr4.c: Update.
	* solib.c: Update.
	* sparc64-linux-tdep.c: Update.
	* stack.c: Update.
	* symfile-mem.c: Update.
	* symmisc.c: Update.
	* target.c: Update.
	* thread.c: Update.
	* top.c: Update.
	* tracefile-tfile.c: Update.
	* tui/tui.c: Update.
	* typeprint.c: Update.
	* unittests/cli-utils-selftests.c: Update.
	* unittests/parse-connection-spec-selftests.c: Update.
	* valops.c: Update.
	* valprint.c: Update.
	* value.c: Update.
	* varobj.c: Update.
	* windows-nat.c: Update.
	* x86-linux-nat.c: Update.
	* xml-support.c: Update.

gdb/gdbserver/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

	* gdbreplay.c: Update.
	* linux-low.c: Update.
	* server.c: Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "msg" const in internal_vproblem
@ 2019-04-11 19:21 sergiodj+buildbot
  2019-04-14  3:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11 19:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 02cf60c7a42710ee0364698c436b6ca5e771374b ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 02cf60c7a42710ee0364698c436b6ca5e771374b

Make "msg" const in internal_vproblem

I noticed that the "msg" variable in internal_vproblem could be
"const".  This seems like an improvement because it can wind up in
rodata.

Tested by rebuilding.

gdb/ChangeLog
2019-04-11  Tom Tromey  <tromey@adacore.com>

	* utils.c (internal_vproblem): Make "msg" const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Fix alignment computation for structs with only static fields
@ 2019-04-11 23:12 sergiodj+buildbot
  2019-04-14  7:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-11 23:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41077b6625d16cc6c0c4b404a177a8850300b8a0 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 41077b6625d16cc6c0c4b404a177a8850300b8a0

gdb: Fix alignment computation for structs with only static fields

The current code in gdbtypes.c:type_align incorrectly returns 0 as the
alignment for a structure containing only static fields.  After this
patch the correct value of 1 is returned.  The gdb.base/align.exp test
is extended to cover this case.

gdb/ChangeLog:

	* gdbtypes.c (type_align): A struct with no non-static fields also
	has alignment of 1.

gdb/testsuite/ChangeLog:

	* gdb.base/align.exp: Extend test to cover structures containing
	only static fields.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Define GNU_PROPERTY_X86_ISA_1_AVX512_BF16
@ 2019-04-12  6:05 sergiodj+buildbot
  2019-04-12  7:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12  6:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 462cac5884ed4c38e6180b2e2769aaa5225e695b ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 462cac5884ed4c38e6180b2e2769aaa5225e695b

x86: Define GNU_PROPERTY_X86_ISA_1_AVX512_BF16

Update assembler and readelf to support

 #define GNU_PROPERTY_X86_ISA_1_AVX512_BF16  (1U << 24)

for AVX512_BF16.

binutils/

	* readelf.c (decode_x86_isa): Handle
	GNU_PROPERTY_X86_ISA_1_AVX512_BF16.
	* testsuite/binutils-all/i386/pr21231b.d: Updated.
	* testsuite/binutils-all/x86-64/pr21231b.d: Likewise.

gas/

	* config/tc-i386.c (output_insn): Support
	GNU_PROPERTY_X86_ISA_1_AVX512_BF16.
	* testsuite/gas/i386/property-2.s: Add AVX512_BF16 test.
	* testsuite/gas/i386/property-2.d: Updated.
	* testsuite/gas/i386/x86-64-property-2.d: Likewise.

include/

	* elf/common.h (GNU_PROPERTY_X86_ISA_1_AVX512_BF16): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove LANG_MAGIC
@ 2019-04-12  8:47 sergiodj+buildbot
  2019-04-14 11:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12  8:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 62253a61473764b0d084b01eff06a93fb38bb2e3 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 62253a61473764b0d084b01eff06a93fb38bb2e3

gdb: Remove LANG_MAGIC

The language_defn structure has an la_magic field, this used to be
used as a basic check that the language_defn structure had the
expected layout - at least the end of the structure was where we
expected it to be.

This feature only really makes sense if we imagine GDB dynamically
loading language support from dynamic libraries, where a version
mismatch might cause problems.

However, in current GDB language support is statically built into GDB,
and since this commit:

    commit 47e77640be31fc1a4eb3718f594ed5fd0faff065
    Date:   Thu Jul 20 18:28:01 2017 +0100

        Make language_def O(1)

the existing (if pointless) check of the la_magic field was removed.

There now appears to be no use of the la_magic field, and I propose
that we delete it.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (ada_language_defn): Remove use of LANG_MAGIC.
	* c-lang.c (c_language_defn): Likewise.
	(cplus_language_defn): Likewise.
	(asm_language_defn): Likewise.
	(minimal_language_defn): Likewise.
	* d-lang.c (d_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* go-lang.c (go_language_defn): Likewise.
	* language.c (unknown_language_defn): Likewise.
	(auto_language_defn): Likewise.
	* language.h (struct language_defn): Remove la_magic field.
	(LANG_MAGIC): Delete.
	* m2-lang.c (m2_language_defn): Remove use of LANG_MAGIC.
	* objc-lang.c (objc_language_defn): Likewise.
	* opencl-lang.c (opencl_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* rust-lang.c (rust_language_defn): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Add gdbserver sysroot test
@ 2019-04-12 10:57 sergiodj+buildbot
  2019-04-14 12:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 10:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e5a1a79a4e0ee33292d45b10a759eb41f7358b7c ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: e5a1a79a4e0ee33292d45b10a759eb41f7358b7c

Testsuite: Add gdbserver sysroot test

The local board file ensures that the sysroot is always set to load
files from the local filesystem.

Add a gdbserver test to explicitly test the sysroot set to both the
remote target and the local filesystem.

gdb/testsuite/ChangeLog:

	* gdb.server/sysroot.c: New test.
	* gdb.server/sysroot.exp: New file.
	* lib/gdbserver-support.exp (gdb_target_cmd): Add additional text
        matching param.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Another fix for GDB styling
@ 2019-04-12 12:53 sergiodj+buildbot
  2019-04-14 14:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 12:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 51196bbc5618a3741bd7bbed01ac76b25a2e6f9c ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 51196bbc5618a3741bd7bbed01ac76b25a2e6f9c

Another fix for GDB styling

gdb/ChangeLog:
2019-04-12  Eli Zaretskii  <eliz@gnu.org>

	* utils.c (prompt_for_continue): Don't restore the styling at the
	end, as applied_style has the wrong value.  This fixes styling in
	long lists of file names that are interrupted by the "Continue?"
	prompt.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rename python function thread_from_thread_handle to thread_from_handle
@ 2019-04-12 14:57 sergiodj+buildbot
  2019-04-12 16:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 14:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2b0c8b019996b23fb4717687f5e7ac8c5620c089 ***

Author: Kevin Buettner <kevinb@redhat.com>
Branch: master
Commit: 2b0c8b019996b23fb4717687f5e7ac8c5620c089

Rename python function thread_from_thread_handle to thread_from_handle

This renaming was done to stay consistent with the naming of the new
gdb.InferiorThread.handle method.  I had initially named it "thread_handle"
but Tom Tromey suggested just "handle".

The old name (thread_from_thread_handle) still works, but is marked as
deprecated in comments in the code as well as in the documentation.

I have some code which uses these functions.  I very much like the
brevity of the new names.

gdb/doc/ChangeLog:

	* python.texi (Inferiors In Python): Rename
	Inferior.thread_from_thread_handle to Inferior.thread_from_handle.
	Add note about the former being deprecated.

gdb/ChangeLog:

	* python/py-inferior.c (infpy_thread_from_thread_handle):
	Adjust comments to reflect renaming of thread_from_thread_handle
	to thread_from_handle.  Adjust keywords.  Fix type error message.
	(inferior_object_methods): Add thread_from_handle.  Retain
	thread_from_thread_handle, but mark it as deprecated.

testsuite/ChangeLog:

	* gdb.python/py-thrhandle.exp: Adjust tests to call
	thread_from_handle instead of thread_from_thread_handle.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce a separate debug objfile iterator
@ 2019-04-12 15:20 sergiodj+buildbot
  2019-04-13  8:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e9ad22ee5f0a40dfa1182ee68e3349dd72a42afe ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e9ad22ee5f0a40dfa1182ee68e3349dd72a42afe

Introduce a separate debug objfile iterator

This introduces a new iterator and range adapter for iteration over
the separate debug files of a given objfile.  As in the current
approach, the requested objfile is returned first, followed by the
separate debug objfiles.

gdb/ChangeLog
2019-04-10  Tom Tromey  <tom@tromey.com>

	* symtab.c (lookup_global_symbol_from_objfile)
	(lookup_symbol_in_objfile_from_linkage_name): Use the iterator.
	* objfiles.h (class separate_debug_iterator): New.
	(class separate_debug_range): New.
	(struct objfile) <separate_debug_objfiles>: New method.
	(objfile_separate_debug_iterate): Don't declare.
	* objfiles.c (separate_debug_iterator::operator++): Rename from
	objfile_separate_debug_iterate.
	(objfile_relocate, objfile_rebase, objfile_has_symbols): Use the
	iterator.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Use the
	iterator.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Ensure regcache is reset between tests
@ 2019-04-12 15:22 sergiodj+buildbot
  2019-04-13 13:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 68811f8ff84895ef1cad37ac6947f1a340dd2ae2 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 68811f8ff84895ef1cad37ac6947f1a340dd2ae2

AArch64: Ensure regcache is reset between tests

A recent change made the AArch64 self tests resuse the saved regs
cache, rather than creating a new one.  Ensure it is reset to default
values between tests.

Do this by splitting the reset functionality from trad_frame_alloc_saved_regs
into a new function.

Fixes selftest on AArch64.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_analyze_prologue_test): Reset saved regs.
	* trad-frame.c (trad_frame_reset_saved_regs): New function.
	(trad_frame_alloc_saved_regs): Call trad_frame_reset_saved_regs.
	* trad-frame.h (trad_frame_reset_saved_regs): New declaration.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Check corrupt VTENTRY entry in bfd_elf_gc_record_vtentry
@ 2019-04-12 15:25 sergiodj+buildbot
  2019-04-13 23:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0ea3a14dc6a6062c0c1f2bfbb7ad0373ec20843 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: a0ea3a14dc6a6062c0c1f2bfbb7ad0373ec20843

Check corrupt VTENTRY entry in bfd_elf_gc_record_vtentry

Instead of BFD_ASSERT (h != NULL) with

ld: BFD ... assertion fail .../bfd/elf64-x86-64.c:2562
ld: bad.o: invalid string offset 50331648 >= 371 for section `nterp'

check corrupt VTENTRY entry in bfd_elf_gc_record_vtentry with

ld: bad.o: section 'g': corrupt VTENTRY entry

	* elf-m10300.c (mn10300_elf_check_relocs): Remove BFD_ASSERT of
	"h != NULL".  Don't check "h != NULL" before calling.
	bfd_elf_gc_record_vtentry.
	* elf32-arm.c (elf32_arm_check_relocs): Likewise.
	* elf32-bfin.c (bfin_check_relocs): Likewise.
	* elf32-cris.c (cris_elf_check_relocs): Likewise.
	* elf32-csky.c (csky_elf_check_relocs): Likewise.
	* elf32-d10v.c (elf32_d10v_check_relocs): Likewise.
	* elf32-dlx.c (elf32_dlx_check_relocs): Likewise.
	* elf32-fr30.c (fr30_elf_check_relocs): Likewise.
	* elf32-frv.c (elf32_frv_check_relocs): Likewise.
	* elf32-hppa.c (elf32_hppa_check_relocs): Likewise.
	* elf32-i386.c (elf_i386_check_relocs): Likewise.
	* elf32-iq2000.c (iq2000_elf_check_relocs): Likewise.
	* elf32-m32r.c (m32r_elf_check_relocs): Likewise.
	* elf32-m68hc1x.c (elf32_m68hc11_check_relocs): Likewise.
	* elf32-m68k.c (elf_m68k_check_relocs): Likewise.
	* elf32-mcore.c (mcore_elf_check_relocs): Likewise.
	* elf32-metag.c (elf_metag_check_relocs): Likewise.
	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
	* elf32-ppc.c (ppc_elf_check_relocs): Likewise.
	* elf32-s390.c (elf_s390_check_relocs): Likewise.
	* elf32-sh.c (sh_elf_check_relocs): Likewise.
	* elf32-v850.c (v850_elf_check_relocs): Likewise.
	* elf32-vax.c (elf_vax_check_relocs): Likewise.
	* elf32-xstormy16.c (xstormy16_elf_check_relocs): Likewise.
	* elf32-xtensa.c (elf_xtensa_check_relocs): Likewise.
	* elf64-mmix.c (mmix_elf_check_relocs): Likewise.
	* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
	* elf64-s390.c (elf_s390_check_relocs): Likewise.
	* elf64-x86-64.c (elf_s390_check_relocs): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise.
	* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise.
	* elflink.c (bfd_elf_gc_record_vtinherit): Check for corrupt
	VTENTRY entry.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Add -z cet-report=[none|warning|error]
@ 2019-04-12 15:25 sergiodj+buildbot
  2019-04-14  0:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 233a00833b984319d5e94db3f5d5d9a735edc984 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 233a00833b984319d5e94db3f5d5d9a735edc984

x86: Add -z cet-report=[none|warning|error]

Add -z cet-report=[none|warning|error] to report the missing Intel
Indirect Branch Tracking (IBT) and Shadow Stack (SHSTK) properties
in input .note.gnu.property section.  -z cet-report=none, which is
the default, will make the linker not report missing properties in
input files.  -z cet-report=warning will make the linker issue a
warning for missing properties in input files.  -z cet-report=error
will make the linker issue an error for missing properties in input
files.  Note that -z ibt will turn off the missing IBT property report
and -z shstk will turn off the missing SHSTK property report.
Supported for Linux/i386 and Linux/x86_64.

bfd/

	* elf-linker-x86.h (elf_x86_cet_report): New.
	(elf_linker_x86_params): Add cet_report.
	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
	missing IBT and SHSTK properties if needed.

ld/

	* ld.texi: Document -z cet-report=[none|warning|error].
	* emulparams/cet.sh: Add -z cet-report=[none|warning|error].
	* testsuite/ld-i386/i386.exp: Run -z cet-report=[warning|error]
	tests.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/property-x86-cet1.d: New file.
	* testsuite/ld-i386/property-x86-cet2a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet2b.d: Likewise.
	* testsuite/ld-i386/property-x86-cet3a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet3b.d: Likewise.
	* testsuite/ld-i386/property-x86-cet4a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet4b.d: Likewise.
	* testsuite/ld-i386/property-x86-cet5a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet5b.d: Likewise.
	* testsuite/ld-i386/property-x86-cet6.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet.s: Likewise.
	* testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet1.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet3a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet3a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet3b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet3b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet4a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet4a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet4b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet4b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet6-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet6.d: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/riscv: Handle empty C++ structs during argument passing
@ 2019-04-12 15:27 sergiodj+buildbot
  2019-04-14  5:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9f0272f8548164b024ff9fd151686b2b904a5d59 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 9f0272f8548164b024ff9fd151686b2b904a5d59

gdb/riscv: Handle empty C++ structs during argument passing

This commit resolves a large number of failures in the test script
gdb.base/infcall-nested-structs.exp which were caused by GDB (for
RISC-V) incorrectly handling empty C++ structures when preparing
arguments for a dummy call, or collecting a return value.

The issue is further complicated in that there was a bug in GCC, such
that in some cases GCC would generate incorrect code when passing a
small structure that contained empty sub-structures.  This was fixed
in GCC trunk on 5-March-2019, so in order to see the best results with
this patch you'll need a recent version of GCC.

Anything that used to work should continue to work after this patch,
regardless of GCC version being used.

The fix in this commit is that GDB now pays more attention to the
offset of fields within a structure when preparing arguments as in C++
an empty structure has a non-zero size, this is an example:

  struct s1 { struct s2 { } empty; int f; };

We previously assumed that 'f' was at offset 0 inside type 's1',
however this is not the case in C++ as 's2' has size 1, and with
alignment 'f' is likely at some even bigger offset inside 's1'.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_call_arg_complex_float): Fix offset of first
	component to 0.
	(riscv_struct_info::riscv_struct_info): Initialise m_offsets
	member.
	(riscv_struct_info::analyse): New implementation using new
	analyse_inner member function.
	(riscv_struct_info::field_offset): New member function.
	(riscv_struct_info::m_offsets): New member variable.
	(riscv_struct_info::analyse_inner): New private member function,
	takes the old implementation of riscv_struct_info::analyse but
	extended to track field offsets.
	(riscv_call_arg_struct): Update the struct folding special cases
	to handle cases where empty C++ structs, which are non-zero
	length, are found.
	(riscv_arg_location): Initialise the length of each location, a
	non-zero length now indicates the location is in use.
	(riscv_push_dummy_call): Allow for the first location having a
	non-zero offset when setting up arguments.
	(riscv_return_value): Likewise, but for return values.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/riscv: Remove riscv_type_alignment function
@ 2019-04-12 15:29 sergiodj+buildbot
  2019-04-14 10:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 15:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a9158a863c18545634cb0f0462b326aeca30634c ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: a9158a863c18545634cb0f0462b326aeca30634c

gdb/riscv: Remove riscv_type_alignment function

Make use of the type_align function and remove riscv_type_alignment as
it is no longer needed.  I tested this against a number of RV32 and
RV64 targets, and I also ran the tests with an assertion in place
checking that the old riscv_type_alignment function gives the same
answer as the common type_align function - it does, and all the tests
still pass.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_type_align): New function.
	(riscv_type_alignment): Delete.
	(riscv_arg_location): Use 'type_align'.
	(riscv_gdbarch_init): Register riscv_type_align gdbarch function.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: opcodes: Replace "operator" with "optr".
@ 2019-04-12 16:44 sergiodj+buildbot
  2019-04-14 18:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-12 16:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e5a557ac01a775df64ae8149c5fe7d503f46a92f ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: e5a557ac01a775df64ae8149c5fe7d503f46a92f

S12Z: opcodes: Replace "operator" with "optr".

opcodes/
	* s12z-dis.c, s12z-opc.c, s12z-opc.h: Replace operator with optr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Fix failure in gdb.base/complex-parts.exp for x86-32
@ 2019-04-13  0:05 sergiodj+buildbot
  2019-04-14 20:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-13  0:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 35add35e85c21f02e3e5808273cb77b24069b0aa ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 35add35e85c21f02e3e5808273cb77b24069b0aa

gdb: Fix failure in gdb.base/complex-parts.exp for x86-32

The x86-32 ABI specifies 96-bit long double, this was causing a
failure on the test gdb.base/complex-parts.exp.

The problem is that GDB tries to find a builtin floating point type of
the correct size in order to reuse the name of that type as the name
for the components of the complex type being built.

Previously GDB was only aware of floating point types sized 32, 64, or
128 bits.  This patch teaches GDB how to handle 96 bit floating point
type.

gdb/ChangeLog:

	* dwarf2read.c (dwarf2_init_complex_target_type): Handle complex
	target types of size 96-bits, add some additional comments, and
	check that the builtin type we found was the correct size.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim: Use host not target byte order for merging and splitting values
@ 2019-04-13 21:26 sergiodj+buildbot
  2019-04-14 22:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-13 21:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 798066abd8e5ec2a411979fd34bfe0cd494c1813 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 798066abd8e5ec2a411979fd34bfe0cd494c1813

sim: Use host not target byte order for merging and splitting values

When using writes to memory through a struct to merge and extract
multi-word value, it is the endianness of the host, not the target
that affects which order the component words need to be written into
the structure.

Of the 5 functions adjusted here 4 of them are unused.  The 5th,
JOINSIDF will soon be used by the or1k target.

For or1k, simulated on x86-64, this change fixes this function so that
the correct bytes are now returned.

sim/common/ChangeLog:

	* cgen-ops.h (SUBWORDXFSI): Compare HOST_BYTE_ORDER not
	CURRENT_TARGET_BYTE_ORDER.
	(SUBWORDTFSI): Likewise.
	(JOINSIDF): Likewise.
	(JOINSIXF): Likewise.
	(JOINSITF): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 5/16] BF insns infrastructure with new global reloc R_ARM_THM_BF16
@ 2019-04-15 12:26 sergiodj+buildbot
  2019-04-15 17:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 12:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e5d6e09ee6cea13942a8042945e784f483a6f3af ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: e5d6e09ee6cea13942a8042945e784f483a6f3af

[binutils, ARM, 5/16] BF insns infrastructure with new global reloc R_ARM_THM_BF16

This patch is part of a series of patches to add support for Armv8.1-M Mainline instructions to binutils.
This adds infrastructure for the BF instructions which is one of the first instructions in Arm that have more than one relocations in them.

This is the third infrastructure patch that adds a new relocation R_ARM_THM_BF16.

The inconsistency between external R_ARM_THM_BF16 and internal
BFD_RELOC_ARM_THUMB_BF17 is because internally we count the static bit-0 of the immediate and we don't externally.

ChangeLog entries are as follows :

*** bfd/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_ARM_THUMB_BF17): New enum.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Regenerated.
	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF16.
	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF17
	and R_ARM_THM_BF16 together.
	(get_value_helper): New reloc helper.
	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF16.

*** elfcpp/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm.h (R_ARM_THM_BF16): New relocation code.

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (md_pcrel_from_section): New switch case for
	BFD_RELOC_ARM_THUMB_BF17.
	(md_appdy_fix): Likewise.
	(tc_gen_reloc): Likewise.

*** include/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF16.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Updated to accept new %W pattern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 6/16] New BF instruction for Armv8.1-M Mainline
@ 2019-04-15 12:41 sergiodj+buildbot
  2019-04-15 18:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 12:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4389b29a5af431eeac517272b66560e12df3c430 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 4389b29a5af431eeac517272b66560e12df3c430

[binutils, ARM, 6/16] New BF instruction for Armv8.1-M Mainline

This patch is part of a series of patches to add support for Armv8.1-M Mainline
instructions to binutils.

This patch adds the BF instruction.

ChangeLog entries are as follows:
*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>
             Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/tc-arm.c (T16_32_TAB): New entries for bf.
	(do_t_branch_future): New.
	(insns): New instruction for bf.
	* testsuite/gas/arm/armv8_1-m-bf.d: New.
	* testsuite/gas/arm/armv8_1-m-bf.s: New.
	* testsuite/gas/arm/armv8_1-m-bf-bad.s: New.
	* testsuite/gas/arm/armv8_1-m-bf-bad.l: New.
	* testsuite/gas/arm/armv8_1-m-bf-bad.d: New.
	* testsuite/gas/arm/armv8_1-m-bf-rel.d: New.
	* testsuite/gas/arm/armv8_1-m-bf-rel.s: New.

*** ld/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* testsuite/ld-arm/bf.s: New.
	* testsuite/ld-arm/bf.d: New.
	* testsuite/ld-arm/arm-elf.exp: Add above test.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (thumb32_opcodes): New instructions for bf.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 7/16] New BFX and BFLX instruction for Armv8.1-M Mainline
@ 2019-04-15 13:09 sergiodj+buildbot
  2019-04-15 21:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 13:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f1c7f42126274d48f6b0a929e4e15a32193997c6 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: f1c7f42126274d48f6b0a929e4e15a32193997c6

[binutils, ARM, 7/16] New BFX and BFLX instruction for Armv8.1-M Mainline

This patch is part of a series of patches to add support for Armv8.1-M Mainline instructions to binutils.

This patch adds the BFX and BFLX instructions.

ChangeLog entries are as follows :

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (T16_32_TAB): New entries for bfx and bflx.
	(do_t_v8_1_branch): New switch cases for bfx and bflx.
	(insns): New instruction for bfx and bflx.
	* testsuite/gas/arm/armv8_1-m-bf-exchange.d: New.
	* testsuite/gas/arm/armv8_1-m-bf-exchange.s: New.
	* testsuite/gas/arm/armv8_1-m-bf-exchange-bad.s: New
	* testsuite/gas/arm/armv8_1-m-bf-exchange-bad.l: New
	* testsuite/gas/arm/armv8_1-m-bf-exchange-bad.d: New

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Add '%<bitfield>S' to print an
	Arm register with r13 and r15 unpredictable.
	(thumb32_opcodes): New instructions for bfx and bflx.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 8/16] BFL infrastructure with new global reloc R_ARM_THM_BF18
@ 2019-04-15 13:18 sergiodj+buildbot
  2019-04-15 22:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 13:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1caf72a5849abf9a717ed3e0232abf591ff933e7 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 1caf72a5849abf9a717ed3e0232abf591ff933e7

[binutils, ARM, 8/16] BFL infrastructure with new global reloc R_ARM_THM_BF18

This patch is part of a series of patches to add support for Armv8.1-M Mainline instructions to binutils.
This adds infrastructure for the BFL instructions which is one of the first instructions in Arm that have more than one relocations in them.

This adds a new relocation R_ARM_THM_BF18.

The inconsistency between external R_ARM_THM_BF18 and internal
BFD_RELOC_ARM_THUMB_BF19 is because internally we count the static bit-0 of the immediate and we don't externally.

ChangeLog entries are as follows :

*** bfd/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_ARM_THUMB_BF19): New
	* libbfd.h: Regenerated.
	* bfd-in2.h: Regenerated.
	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF18.
	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF19
	and R_ARM_THM_BF18 together.
	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF19.

*** elfcpp/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm.h (R_ARM_THM_BF18): New relocation code.

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (md_pcrel_from_section): New switch case for
	BFD_RELOC_ARM_THUMB_BF19.
	(md_appdy_fix): Likewise.
	(tc_gen_reloc): Likewise.

*** include/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF18.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Updated to accept new %Y pattern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 9/16] New BFL instruction for Armv8.1-M Mainline
@ 2019-04-15 13:33 sergiodj+buildbot
  2019-04-16  0:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 13:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 65d1bc05e89e45b102783422c3984ed718547d5c ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 65d1bc05e89e45b102783422c3984ed718547d5c

[binutils, ARM, 9/16] New BFL instruction for Armv8.1-M Mainline

This patch is part of a series of patches to add support for Armv8.1-M Mainline
instructions to binutils.

This patch adds the BFL instruction.

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>
             Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/tc-arm.c (T16_32_TAB): New entrie for bfl.
	(do_t_v8_1_branch): New switch case for bfl.
	(insns): New instruction for bfl.
	* testsuite/gas/arm/armv8_1-m-bfl.d: New.
	* testsuite/gas/arm/armv8_1-m-bfl.s: New.
	* testsuite/gas/arm/armv8_1-m-bfl-bad.s: New.
	* testsuite/gas/arm/armv8_1-m-bfl-bad.d: New.
	* testsuite/gas/arm/armv8_1-m-bfl-bad.l: New.
	* testsuite/gas/arm/armv8_1-m-bfl-rel.d: New.
	* testsuite/gas/arm/armv8_1-m-bfl-rel.s: New.

*** ld/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* testsuite/ld-arm/bfl.s: New.
	* testsuite/ld-arm/bfl.d: New.
	* testsuite/ld-arm/arm-elf.exp: Add above test.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (thumb32_opcodes): New instruction bfl.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 10/16] BFCSEL infrastructure with new global reloc R_ARM_THM_BF12
@ 2019-04-15 13:50 sergiodj+buildbot
  2019-04-16  2:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 13:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1889da7048b310151d142b100678b6bd6053b548 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 1889da7048b310151d142b100678b6bd6053b548

[binutils, ARM, 10/16] BFCSEL infrastructure with new global reloc R_ARM_THM_BF12

This patch is part of a series of patches to add support for Armv8.1-M Mainline
instructions to binutils.
This adds infrastructure for the BFCSEL instructions which is one of the first
instructions in Arm that have more than one relocations in them.

This adds a new relocation R_ARM_THM_BF12.

The inconsistency between external R_ARM_THM_BF12 and internal
BFD_RELOC_ARM_THUMB_BF13 is because internally we count the static bit-0 of the
immediate and we don't externally.

ChangeLog entries are as follows :

ChangeLog entries are as follows :

*** bfd/ChnageLog ***

2019-04-04  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_ARM_THUMB_BF13): New.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Regenerated.
	* elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF13.
	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF13
	and R_ARM_THM_BF12 together.
	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF13.

*** elfcpp/ChangeLog ***

2019-04-04  Sudakshina Das  <sudi.das@arm.com>

	* arm.h (R_ARM_THM_BF12): New relocation code.

*** gas/ChangeLog ***

2019-04-04  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (md_pcrel_from_section): New switch case for
	BFD_RELOC_ARM_THUMB_BF13.
	(md_appdy_fix): Likewise.
	(tc_gen_reloc): Likewise.

*** include/ChangeLog ***

2019-04-04  Sudakshina Das  <sudi.das@arm.com>

	* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF12.

*** opcodes/ChangeLog ***

2019-04-04  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Updated to accept new %Z pattern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 11/16] New BFCSEL instruction for Armv8.1-M Mainline
@ 2019-04-15 14:07 sergiodj+buildbot
  2019-04-16  3:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 14:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f6b2b12db82f7b76c30ec389a67fbce5d2805323 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: f6b2b12db82f7b76c30ec389a67fbce5d2805323

[binutils, ARM, 11/16] New BFCSEL instruction for Armv8.1-M Mainline

s patch is part of a series of patches to add support for Armv8.1-M Mainline instructions to binutils.

This patch adds the BFCSEL instruction. It also adds a local relocation with a new bfd_reloc_code_real enum.

ChangeLog entries are as follows:

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_THUMB_PCREL_BFCSEL): New relocation.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Likewise.

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>
             Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/tc-arm.c (T16_32_TAB): New entriy for bfcsel.
	(do_t_v8_1_branch): New switch case for bfcsel.
	(toU): Define.
	(insns): New instruction for bfcsel.
	(md_pcrel_from_section): New switch case
	for BFD_RELOC_THUMB_PCREL_BFCSEL.
	(md_appdy_fix): Likewise
	(tc_gen_reloc): Likewise.
	* testsuite/gas/arm/armv8_1-m-bfcsel.d: New.
	* testsuite/gas/arm/armv8_1-m-bfcsel.s: New.

*** ld/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* testsuite/ld-arm/bfcsel.s: New.
	* testsuite/ld-arm/bfcsel.d: New.
	* testsuite/ld-arm/arm-elf.exp: Add above test.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (thumb32_opcodes): New instruction bfcsel.
	(print_insn_thumb32): Edit the switch case for %Z.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 13/16] Add support for CLRM
@ 2019-04-15 14:41 sergiodj+buildbot
  2019-04-16  7:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 14:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4b5a202f107b5393da30fd0b488c3eff2bc758a5 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 4b5a202f107b5393da30fd0b488c3eff2bc758a5

[binutils, ARM, 13/16] Add support for CLRM

Given the similarity between LDM/STM and CLRM register lists, most of the changes in this patch aim at sharing code between those two sets of instruction. Sharing is achieved both in parsing and encoding of those instructions.

In terms of parsing, parse_reg_list () is extended to take a type that describe what type of instruction is being parsed. The reg_list_els used for parse_vfp_reg_list () is reused for the type and that function is added an assert for the new REGLIST_CLRM and REGLIST_RN enumerators.
parse_reg_list () is then taught to accept APSR and reject SP and PC when parsing for a CLRM instruction. At last, caller of parse_reg_list () is updated accordingly and logic is added for the new OP_CLRMLST operand.

Encoding-wise, encode_thumb2_ldmstm () is reused to encode the variable bits of CLRM and is thus renamed encode_thumb2_multi (). A new do_io parameter is added to distinguish between LDM/STM and CLRM which guard all the LDM/STM specific code of the function.

Finally objdump is told how to disassemble CLRM, again reusing the logic to print the LDM/STM register list (format specifier 'm'). Tests are also added in the form of negative tests to check parsing and encoding/disassembling tests.

ChangeLog entries are as follows:

*** gas/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/tc-arm.c (enum reg_list_els): Define earlier and add
	REGLIST_RN and REGLIST_CLRM enumerators.
	(parse_reg_list): Add etype parameter to distinguish between regular
	core register list and CLRM register list.  Add logic to
	recognize CLRM register list.
	(parse_vfp_reg_list): Assert type is not for core register list.
	(s_arm_unwind_save_core): Update call to parse_reg_list to new
	prototype.
	(enum operand_parse_code): Declare OP_CLRMLST enumerator.
	(parse_operands): Update call to parse_reg_list to new prototype.  Add
	logic for OP_CLRMLST.
	(encode_thumb2_ldmstm): Rename into ...
	(encode_thumb2_multi): This.  Add do_io parameter.  Add logic to
	encode CLRM and guard LDM/STM only code by do_io.
	(do_t_ldmstm): Adapt to use encode_thumb2_multi.
	(do_t_push_pop): Likewise.
	(do_t_clrm): New function.
	(insns): Define CLRM.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.d: New file.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.l: Likewise.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.s: Likewise.
	* testsuite/gas/arm/archv8m_1m-cmse-main.d: Likewise.
	* testsuite/gas/arm/archv8m_1m-cmse-main.s: Likewise.

*** opcodes/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* arm-dis.c (thumb_opcodes): Document %n control code.  Add entry for
	CLRM.
	(print_insn_thumb32): Add logic to print %n CLRM register list.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 3/16] BF insns infrastructure with new bfd_reloc_code_real for fallback branch
@ 2019-04-15 15:06 sergiodj+buildbot
  2019-04-15 15:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 15:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e12437dc862690eeaa4a487fee35a237703d2b29 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: e12437dc862690eeaa4a487fee35a237703d2b29

[binutils, ARM, 3/16] BF insns infrastructure with new bfd_reloc_code_real for fallback branch

This patch is part of a series of patches to add support for Armv8.1-M Mainline
instructions to binutils.
This adds infrastructure for the Branch Future instructions (BF, BFX, BFL, BFLX,
BFCSEL). These are the first instructions in ARM that have more than one
relocations in them.

This is the first infrastructure patch that adds a new bfd_reloc_code_real enum
for the fallback branch offset.
This is common for all such instructions and needs to be resolvable by the
assembler.

ChangeLog entries are as follows :
*** bfd/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_THUMB_PCREL_BRANCH5): New enum.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.

*** gas/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (md_pcrel_from_section): New switch case
	for BFD_RELOC_THUMB_PCREL_BRANCH5.
	(v8_1_branch_value_check): New function to check branch
	offsets.
	(md_appdy_fix): New switch case for
	BFD_RELOC_THUMB_PCREL_BRANCH5.
	(tc_gen_reloc): Likewise.

*** opcodes/ChangeLog ***

2019-04-15  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Updated to accept new %G pattern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 15/16] Add support for VSCCLRM
@ 2019-04-15 15:14 sergiodj+buildbot
  2019-04-16 11:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 15:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT efd6b3591b4bc8440f4145dfc0e6dbfc0545f7d8 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: efd6b3591b4bc8440f4145dfc0e6dbfc0545f7d8

[binutils, ARM, 15/16] Add support for VSCCLRM

Like for CLRM, this patch aims to share as much logic with the similar looking VLDM/VSTM. This is achieved by adding 2 new enumerator values in enum reg_list_els for the single-precision and double-precision variants of VSCCLRM and extending parse_vfp_reg_list () to deal with these types.
These behave like the existing REGLIST_VFP_S and REGLIST_VFP_D types with extra logic to expect VPR as the last element in the register list.
The function is algo augmented with a new partial_match parameter to indicate if any register other than VPR had already been parsed in the register list so as to not try parsing the second variant if that's the case and return the right error message.

The rest of the patch is the usual encoding function, new disassembler table entries and format specifier and parsing, encoding and disassembling tests.

It is worth mentioning that the new entry in the disassembler table was added in the coprocessor-related table despite VSCCLRM always being available even in FPU-less configurations. The main reason for this is that VSCCLRM also match VLDMIA entry and must thus be tried first but coprocessor entries are tried before T32 entries. It also makes sense because it is in the same encoding space as coprocessor and VFP instructions and is thus the natural place for someone to look for this instruction.

Note: Both variants of VSCCLRM support D16-D31 registers but Armv8.1-M Mainline overall does not. I have thus decided not to implement support for these registers in order to keep the code simpler. It can always be added later if needed.

ChangeLog entries are as follows:

*** gas/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/tc-arm.c (arm_typed_reg_parse): Fix typo in comment.
	(enum reg_list_els): New REGLIST_VFP_S_VPR and REGLIST_VFP_D_VPR
	enumerators.
	(parse_vfp_reg_list): Add new partial_match parameter.  Set
	*partial_match to TRUE if at least one element in the register list has
	matched.  Add support for REGLIST_VFP_S_VPR and REGLIST_VFP_D_VPR
	register lists which expect VPR as last element in the list.
	(s_arm_unwind_save_vfp_armv6): Adapt call to parse_vfp_reg_list to new
	prototype.
	(s_arm_unwind_save_vfp): Likewise.
	(enum operand_parse_code): New OP_VRSDVLST enumerator.
	(parse_operands): Adapt call to parse_vfp_reg_list to new prototype.
	Handle new OP_VRSDVLST case.
	(do_t_vscclrm): New function.
	(insns): New entry for VSCCLRM instruction.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.s: Add invalid VSCCLRM
	instructions.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.l: Add error expectations
	for above instructions.
	* testsuite/gas/arm/archv8m_1m-cmse-main.s: Add tests for VSCCLRM
	instruction.
	* testsuite/gas/arm/archv8m_1m-cmse-main.d: Add expected disassembly
	for above instructions.

*** opcodes/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* arm-dis.c (coprocessor_opcodes): Document new %C format control code.
	Add new entries for VSCCLRM instruction.
	(print_insn_coprocessor): Handle new %C format control code.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 16/16] Add support to VLDR and VSTR of system registers
@ 2019-04-15 15:32 sergiodj+buildbot
  2019-04-16 13:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 15:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 32c36c3ce94becbf0b8e1adad6ff28aa9d5e0b66 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 32c36c3ce94becbf0b8e1adad6ff28aa9d5e0b66

[binutils, ARM, 16/16] Add support to VLDR and VSTR of system registers

GNU as' Arm backend assumes each mnemonic has a single entry in the instruction table but VLDR (system register) and VSTR (system register) are different instructions than VLDR and VSTR. It is thus necessary to add some form of demultiplexing in the parser. It starts by creating a new operand type OP_VLDR which indicate that the operand is either the existing OP_RVSD operand or a system register. The function parse_operands () then tries these two cases in order, calling the new parse_sys_vldr_vstr for the second case.

Since the encoding function is specified in the instruction table entry, it also need to have some sort of demultiplexing. This is done in do_vldr_vstr which either calls the existing do_neon_ldr_str () or calls the new do_t_vldr_vstr_sysreg ().

A new internal relocation is needed as well since the offset has a shorter range than in other Thumb coprocessor instructions. Disassembly also requires special care since VSTR (system register) reuse the STC encoding with the coprocessor number 15. Armv8.1-M Mainline ARM manual states that coprocessor 8, 14 and 15 are reserved for floating-point and MVE instructions a feature bit check is added if the coprocessor number is one of this value and we are trying to match a coprocessor instruction (eg. STC) to forbid the match.

ChangeLog entries are as follows:

*** bfd/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* reloc.c (BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM): New internal
	relocation.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Likewise.

*** gas/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/tc-arm.c (parse_sys_vldr_vstr): New function.
	(OP_VLDR): New enum operand_parse_code enumerator.
	(parse_operands): Add logic for OP_VLDR.
	(do_t_vldr_vstr_sysreg): New function.
	(do_vldr_vstr): Likewise.
	(insns): Guard VLDR and VSTR by arm_ext_v4t for Thumb mode.
	(md_apply_fix): Add bound check for VLDR and VSTR co-processor offset.
	Add masking logic for BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM relocation.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.s: Add examples of bad
	uses of VLDR and VSTR.
	* testsuite/gas/arm/archv8m_1m-cmse-main-bad.l: Add error messages for
	above bad uses.
	* testsuite/gas/arm/archv8m_1m-cmse-main.s: Add examples of VLDR and
	VSTR valid uses.
	* testsuite/gas/arm/archv8m_1m-cmse-main.d: Add disassembly for the
	above examples.

*** opcodes/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* arm-dis.c (coprocessor_opcodes): Document new %J and %K format
	specifier.  Add entries for VLDR and VSTR of system registers.
	(print_insn_coprocessor): Forbid coprocessor numbers 8, 14 and 15 in
	coprocessor instructions on Armv8.1-M Mainline targets.  Add handling
	of %J and %K format specifier.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Tidy up aarch64_gdbarch_init
@ 2019-04-15 15:51 sergiodj+buildbot
  2019-04-16 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 15:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ccb8d7e8194b848a6c4aa43272540eec0f4f21f2 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: ccb8d7e8194b848a6c4aa43272540eec0f4f21f2

AArch64: Tidy up aarch64_gdbarch_init

Move the lookup_by_info to the top of the function to avoid unnecessarily
creating a new feature when the gdbarch already exists.

Add some additional cleanups that have no functional effect.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_gdbarch_init): Move gdbarch lookup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix AMD64 return value ABI in expression evaluation
@ 2019-04-15 16:46 sergiodj+buildbot
  2019-04-16 19:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-15 16:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4aa866af6b13c7080c6d92201fc1a2f4ea19998e ***

Author: Leszek Swirski <leszeks@google.com>
Branch: master
Commit: 4aa866af6b13c7080c6d92201fc1a2f4ea19998e

Fix AMD64 return value ABI in expression evaluation

The AMD64 System V ABI specifies that when a function has a return type
classified as MEMORY, the caller provides space for the value and passes
the address to this space as the first argument to the function (before
even the "this" pointer). The classification of MEMORY is applied to
struct that are sufficiently large, or ones with unaligned fields.

The expression evaluator uses call_function_by_hand to call functions,
and the hand-built frame has to push arguments in a way that matches the
ABI of the called function. call_function_by_hand supports ABI-based
struct returns, based on the value of gdbarch_return_value, however on
AMD64 the implementation of the classifier incorrectly assumed that all
non-POD types (implemented as "all types with a base class") should be
classified as MEMORY and use the struct return.

This ABI mismatch resulted in issues when calling a function that returns
a class of size <16 bytes which has a base class, including issues such
as the "this" pointer being incorrect (as it was passed as the second
argument rather than the first).

This is now fixed by checking for field alignment rather than POD-ness,
and a testsuite is added to test expression evaluation for AMD64.

gdb/ChangeLog:

	* amd64-tdep.c (amd64_classify_aggregate): Use cp_pass_by_reference
	rather than a hand-rolled POD check when checking for forced MEMORY
	classification.

gdb/testsuite/ChangeLog:

	* gdb.arch/amd64-eval.cc: New file.
	* gdb.arch/amd64-eval.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM, 12/16] Scalar Low Overhead loop instructions for Armv8.1-M Mainline
@ 2019-04-16  4:47 sergiodj+buildbot
  2019-04-16  5:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-16  4:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 60f993ce170b91876ad41e8f7339c24afd63fac2 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 60f993ce170b91876ad41e8f7339c24afd63fac2

[binutils, ARM, 12/16] Scalar Low Overhead loop instructions for Armv8.1-M Mainline

s patch is part of a series of patches to add support for Armv8.1-M Mainline instructions to binutils.
This patch adds support to the Scalar low overhead loop instructions:
LE
WLS
DLS

We also add a new assembler resolvable relocation bfd_reloc_code_real enum for the 12-bit branch offset used in these instructions.

ChangeLog entries are as follows:
*** bfd/ChnageLog ***

2019-04-12  Sudakshina Das  <sudi.das@arm.com>

	* reloc.c (BFD_RELOC_ARM_THUMB_LOOP12): New.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Regenerated.

*** gas/ChangeLog ***

2019-04-12  Sudakshina Das  <sudi.das@arm.com>
             Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/tc-arm.c (operand_parse_code): Add OP_LR and OP_oLR
	for the LR operand and optional LR operand.
	(parse_operands): Add switch cases for OP_LR and OP_oLR for
	both type checking and value checking.
	(encode_thumb32_addr_mode): New entries for DLS, WLS and LE.
	(v8_1_loop_reloc): New helper function for handling labels
	for the low overhead loop instructions.
	(do_t_loloop): New function to encode DLS, WLS and LE.
	(insns): New entries for WLS, DLS and LE.
	(md_pcrel_from_section): New switch case
	for BFD_RELOC_ARM_THUMB_LOOP12.
	(md_appdy_fix): Likewise.
	(tc_gen_reloc): Likewise.
	* testsuite/gas/arm/armv8_1-m-tloop.s: New.
	* testsuite/gas/arm/armv8_1-m-tloop.d: New.
	* testsuite/gas/arm/armv8_1-m-tloop-bad.s: New.
	* testsuite/gas/arm/armv8_1-m-tloop-bad.d: New.
	* testsuite/gas/arm/armv8_1-m-tloop-bad.l: New.

*** opcodes/ChangeLog ***

2019-04-12  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (print_insn_thumb32): Updated to accept new %P
	and %Q patterns.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [opcodes, ARM, 14/16] Add mode availability to coprocessor table entries
@ 2019-04-16  7:40 sergiodj+buildbot
  2019-04-16  8:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-16  7:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6b0dd094741bc5e9963eabc64a7030783e471941 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 6b0dd094741bc5e9963eabc64a7030783e471941

[opcodes, ARM, 14/16] Add mode availability to coprocessor table entries

The coprocessor_opcodes table is used both to share commonalities in coprocessor-related instructions and to avoid duplication between Arm and Thumb mode. However, some instructions do have differences between Arm and Thumb. For instance, vldmia allows PC as base register in Arm mode but not in Thumb mode.

In that very case the distinction becomes necessary because the encoding with PC as base register is used in Thumb mode to denote a VSCCLRM. It is thus necessary to distinguish what is Arm or Thumb only from what is shared. This patch adds an extra field to the coprocessor_opcodes table entries to indicate what mode is a given instruction available in. The print_insn_coprocessor then uses that field to determine if an entry that matched the mark and value checked should be allowed to match or not given the current mode.

ChangeLog entry is as follows:

*** opcodes/ChangeLog ***

2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* arm-dis.c (enum isa): New enum.
	(struct sopcode32): New structure.
	(coprocessor_opcodes): change type of entries to struct sopcode32 and
	set isa field of all current entries to ANY.
	(print_insn_coprocessor): Change type of insn to struct sopcode32.
	Only match an entry if its isa field allows the current mode.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/riscv: Allow breakpoints to be created at invalid addresses
@ 2019-04-17  0:08 sergiodj+buildbot
  2019-04-17  3:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-17  0:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c01660c625766e848195285cc20581b9ed7ecfe2 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: c01660c625766e848195285cc20581b9ed7ecfe2

gdb/riscv: Allow breakpoints to be created at invalid addresses

Some testsuite cases (gdb.cp/nsalias.exp for example) construct dwarf2
debug info for fake functions to test that this debug info is handled
correctly.

We currently get an error trying to read from an invalid address while
creating breakpoints for these fake functions.

Other targets allow creating breakpoints on invalid addresses, and
only error when GDB actually tries to insert the breakpoints.

In order to make RISC-V behave in the same way as other targets, this
commit makes the failure to read memory during breakpoint creation
non-fatal, we then expect to see a failure when GDB tries to insert
the breakpoint, just like other targets.

Tested with a riscv64-linux native testsuite run.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_breakpoint_kind_from_pc): Hanndle case where
	code read might fail, assume 4-byte breakpoint in that case.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: Move remote_debug to a single place
@ 2019-04-17  9:15 sergiodj+buildbot
  2019-04-17 10:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-17  9:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c1bc0935a4afb513486dc0a479cd57c0924b677c ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: c1bc0935a4afb513486dc0a479cd57c0924b677c

gdbserver: Move remote_debug to a single place

A comment in debug.h (written in 2014) states: "We declare debug format
variables here, and debug_threads but no other debug content variables
(e.g., not remote_debug) because while this file is not currently used by
IPA it may be some day, and IPA may have its own set of debug content
variables".

This has resulted in remote_debug being declared in many .c/.h files
throughout gdbserver.

It would be much simplier to define it one place.  The most logical place to
define it is in debug.h, surrounded by #define guards.  If IPA is changed,
then at that point the variable can be moved elsewhere.

gdb/gdbserver/ChangeLog:

	* debug.c (remote_debug): Add definition.
	* debug.h (remote_debug): Add declaration.
	* hostio.c (remote_debug): Remove declaration.
	* remote-utils.c (struct ui_file): Likewise.
	(remote_debug): Likewise.
	* remote-utils.h (remote_debug): Likewise,
	* server.c (remote_debug): Remove definition.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Avoid crash in dwarf2_init_complex_target_type
@ 2019-04-17 13:19 sergiodj+buildbot
  2019-04-17 16:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-17 13:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92

Avoid crash in dwarf2_init_complex_target_type

After commit 35add35 ("gdb: Fix failure in gdb.base/complex-parts.exp
for x86-32"), dwarf2_init_complex_target_type can crash if "tt" is
nullptr.  This patch avoids the problem by checking for this case.

No test case because I don't know a good way to write one; it was
found by an internal AdaCore test case that apparently uses a 16 bit
floating point type.

gdb/ChangeLog:
	* dwarf2read.c (dwarf2_init_complex_target_type): Check "tt"
	against nullptr before use.

gdb/ChangeLog
2019-04-17  Tom Tromey  <tromey@adacore.com>

	* dwarf2read.c (dwarf2_init_complex_target_type): Check "tt"
	against nullptr before use.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdbserver: Ensure all debug output uses debug functions
@ 2019-04-17 13:47 sergiodj+buildbot
  2019-04-17 14:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-17 13:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a7e559cc087b10b9ea337b58e52cc13964aae3fb ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: a7e559cc087b10b9ea337b58e52cc13964aae3fb

gdbserver: Ensure all debug output uses debug functions

All debug output needs to go via debug functions to ensure it writes to the
correct output stream.

gdb/ChangeLog:

	* nat/linux-waitpid.c (linux_debug): Call debug_vprintf.

gdb/gdbserver/ChangeLog:

	* ax.c (ax_vdebug): Call debug_printf.
	* debug.c (debug_write): New function.
	* debug.h (debug_write): New declaration.
	* linux-low.c (sigchld_handler): Call debug_write.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Suggest -fPIE when not building shared object
@ 2019-04-17 17:44 sergiodj+buildbot
  2019-04-17 19:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-17 17:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9a7f0679fd3b9815b8eb938bfdad3934b8435419 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 9a7f0679fd3b9815b8eb938bfdad3934b8435419

x86: Suggest -fPIE when not building shared object

When PIC is needed, linker should suggest -fPIE, instead of -fPIC, when
not building shared object.

bfd/

	* elf64-x86-64.c (elf_x86_64_need_pic): Suggest -fPIE when not
	building shared object.
	* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Likewise.

ld/

	* testsuite/ld-i386/i386.exp: Run pr18801a and pr18801b instead
	of pr18801.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/pr18801.d: Removed.
	* testsuite/ld-x86-64/pr18801.d: Likewise.
	* testsuite/ld-i386/pr18801a.d: New file.
	* testsuite/ld-i386/pr18801b.d: Likewise.
	* testsuite/ld-x86-64/pr18801a.d: Likewise.
	* testsuite/ld-x86-64/pr18801b.d: Likewise.
	* testsuite/ld-x86-64/pie2.d: Suggest -fPIE instead of -fPIC.
	* testsuite/ld-x86-64/pie2.d: Likewise.
	* testsuite/ld-x86-64/pr19719.d: Likewise.
	* testsuite/ld-x86-64/pr19807-2a.d: Likewise.
	* testsuite/ld-x86-64/pr19969.d: Likewise.
	* testsuite/ld-x86-64/pr21997-1a.err: Likewise.
	* testsuite/ld-x86-64/pr21997-1b.err: Likewise.
	* testsuite/ld-x86-64/pr22001-1a.err: Likewise.
	* testsuite/ld-x86-64/pr22001-1b.err: Likewise.
	* testsuite/ld-x86-64/pr22791-1.err: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Handle vfork in thread with follow-fork-mode child
@ 2019-04-18 16:30 sergiodj+buildbot
  2019-04-18 18:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-18 16:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b73715df01e6e9b3de5a49cd7bf4170deef48461 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: b73715df01e6e9b3de5a49cd7bf4170deef48461

[gdb] Handle vfork in thread with follow-fork-mode child

When debugging any of the testcases added by this commit, which do a
vfork in a thread with "set follow-fork-mode child" + "set
detach-on-fork on", we run into this assertion:

...
src/gdb/nat/x86-linux-dregs.c:146: internal-error: \
  void x86_linux_update_debug_registers(lwp_info*): \
  Assertion `lwp_is_stopped (lwp)' failed.
...

The assert is caused by the following: the vfork-child exit or exec
event is handled by handle_vfork_child_exec_or_exit, which calls
target_detach to detach from the vfork parent.  During target_detach
we call linux_nat_target::detach, which:

#1 - stops all the threads
#2 - waits for all the threads to be stopped
#3 - detaches all the threads

However, during the second step we run into this code in
stop_wait_callback:

...
  /* If this is a vfork parent, bail out, it is not going to report
     any SIGSTOP until the vfork is done with.  */
  if (inf->vfork_child != NULL)
    return 0;
...

and we don't wait for the threads to be stopped, which results in this
assert in x86_linux_update_debug_registers triggering during the third
step:

...
  gdb_assert (lwp_is_stopped (lwp));
...

The fix is to reset the vfork parent's vfork_child field before
calling target_detach in handle_vfork_child_exec_or_exit.  There's
already similar code for the other paths handled by
handle_vfork_child_exec_or_exit, so this commit refactors the code a
bit so that all paths share the same code.

The new tests cover both a vfork child exiting, and a vfork child
execing, since both cases would trigger the assertion.

The new testcases also exercise following the vfork children with "set
detach-on-fork off", since it doesn't seem to be tested anywhere.

Tested on x86_64-linux, using native and native-gdbserver.

gdb/ChangeLog:
2019-04-18  Tom de Vries  <tdevries@suse.de>
	    Pedro Alves  <palves@redhat.com>

	PR gdb/24454
	* infrun.c (handle_vfork_child_exec_or_exit): Reset vfork parent's
	vfork_child field before calling target_detach.

gdb/testsuite/ChangeLog:
2019-04-18  Tom de Vries  <tdevries@suse.de>
	    Pedro Alves  <palves@redhat.com>

	PR gdb/24454
	* gdb.threads/vfork-follow-child-exec.c: New file.
	* gdb.threads/vfork-follow-child-exec.exp: New file.
	* gdb.threads/vfork-follow-child-exit.c: New file.
	* gdb.threads/vfork-follow-child-exit.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb.base/break-probes.exp with native-gdbserver
@ 2019-04-18 21:56 sergiodj+buildbot
  2019-04-18 23:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-18 21:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 36cd4ba59817473935f781174744e7883ff221ee ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 36cd4ba59817473935f781174744e7883ff221ee

[gdb/testsuite] Fix gdb.base/break-probes.exp with native-gdbserver

When running break-probes.exp with native-gdbserver, we run into:
...
FAIL: gdb.base/break-probes.exp: run til our library loads (the program exited)
FAIL: gdb.base/break-probes.exp: call (int) foo(23)
...
due to the fact that we're trying to match:
...
Inferior loaded /data/gdb_versions/devel/build/gdb/testsuite/outputs/gdb.base\
  /break-probes/break-probes-solib.so
...
using pattern:
...
Inferior loaded $sysroot$binfile_lib
...
which expands into:
...
Inferior loaded //data/gdb_versions/devel/build/gdb/testsuite/outputs/gdb.base\
  /break-probes/break-probes-solib.so
...

Fix by setting sysroot to "" in local-board.exp.

Tested on x86_64-linux with native-gdbserver.

gdb/testsuite/ChangeLog:

2019-04-18  Tom de Vries  <tdevries@suse.de>

	PR gdb/24433
	* boards/local-board.exp: Set sysroot to "".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] s12z and h8300 no-print-map-discarded fails
@ 2019-04-19  8:42 sergiodj+buildbot
  2019-04-20 15:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-19  8:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fce9773608d45757dfb26ef7783f37d432ae9a88 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: fce9773608d45757dfb26ef7783f37d432ae9a88

s12z and h8300 no-print-map-discarded fails

This tidies the remaining --no-print-map-discarded fails.  h8300-elf
warns on a section without flags, and s12z doesn't support
--gc-sections.

bfd/
	* elf32-s12z.c (elf_backend_can_gc_sections): Don't define
ld/
	* testsuite/ld-gc/skip-map-discarded.s: Add section attributes.
	* testsuite/lib/ld-lib.exp (check_gc_sections_available): Add
	s12z to list of targets not supporting --gc-sections.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] OBVIOUS move add_comm_alias "!" <=> "shell" near the add_com "shell"
@ 2019-04-20 15:04 sergiodj+buildbot
  2019-04-20 17:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 15:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d563b953142db796f61425a1a300f0feddcdcd55 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: d563b953142db796f61425a1a300f0feddcdcd55

OBVIOUS move add_comm_alias "!" <=> "shell" near the add_com "shell"

gdb/ChangeLog

2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* cli/cli-cmds.c (_initialize_cli_cmds): Move "shell" "!" alias
	close to the add_com "shell".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix GDB crash when registers cannot be modified.
@ 2019-04-20 15:36 sergiodj+buildbot
  2019-04-20 23:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 15:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ee3c5f8968e7b43854204898fa46933b3a1b5991 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: ee3c5f8968e7b43854204898fa46933b3a1b5991

Fix GDB crash when registers cannot be modified.

This crash was detected when using GDB with the valgrind gdbserver.
To reproduce:

valgrind sleep 10000

In another window:
gdb
target remote | vgdb
p printf("make sleep print something\n")
=>
terminate called after throwing an instance of 'gdb_exception_error'
Aborted

The problem is that the valgrind gdbserver does not allow to change
registers when the inferior is blocked in a system call.
GDB then raises an exception.  The exception causes the destructor
of
 typedef std::unique_ptr<infcall_suspend_state, infcall_suspend_state_deleter>
    infcall_suspend_state_up;
to be called.  This destructor itself tries to restore the value of
the registers, and fails similarly.  We must catch the exception in
the destructor to avoid crashing GDB.
If the destructor encounters a problem, no warning is produced if
there is an uncaught exception, as in this case, the user will already
be informed of a problem via this exception.

With this change, no crash anymore, and all the valgrind 3.15 tests
pass succesfully.

gdb/ChangeLog
2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* inferior.h (struct infcall_suspend_state_deleter):
	Catch exception in destructor to avoid crash.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix "list" when control characters are seen
@ 2019-04-20 15:56 sergiodj+buildbot
  2019-04-20 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 15:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 62160ec9547cdd21ac7334d9a378ca2930aac61c ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 62160ec9547cdd21ac7334d9a378ca2930aac61c

Fix "list" when control characters are seen

PR symtab/24423 points out that control characters in a source file
cause a hang in the "list" command, a regression introduced by the
styling changes.

This patch, from the PR, fixes the bug.  I've included a minimal
change to the "list" test that exercises this code.

I recall that this bug was discussed on gdb-patches, and I thought
there was a patch there as well, but I was unable to find it.

gdb/ChangeLog
2019-04-19  Ilya Yu. Malakhov  <malakhov@mcst.ru>

	PR symtab/24423:
	* source.c (print_source_lines_base): Advance "iter" when a
	control character is seen.

gdb/testsuite/ChangeLog
2019-04-19  Tom Tromey  <tromey@adacore.com>

	PR symtab/24423:
	* gdb.base/list0.h (foo): Add a control-l character.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make copy_name return std::string
@ 2019-04-20 17:12 sergiodj+buildbot
  2019-04-21 10:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 17:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 61f4b350419e91560be94e0671a760b2e4902c65 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 61f4b350419e91560be94e0671a760b2e4902c65

Make copy_name return std::string

This changes copy_name to return a std::string, updating all the
callers.  In some cases, an extra copy was removed.  This also
required a little bit of constification.

Tested by the buildbot.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* type-stack.h (struct type_stack) <insert>: Constify string.
	* type-stack.c (type_stack::insert): Constify string.
	* gdbtypes.h (lookup_template_type): Update.
	(address_space_name_to_int): Update.
	* gdbtypes.c (address_space_name_to_int): Make space_identifier
	const.
	(lookup_template_type): Make name const.
	* c-exp.y: Update rules.
	(lex_one_token, classify_name, classify_inner_name)
	(c_print_token): Update.
	* p-exp.y: Update rules.
	(yylex): Update.
	* f-exp.y: Update rules.
	(yylex): Update.
	* d-exp.y: Update rules.
	(lex_one_token, classify_name, classify_inner_name): Update.
	* parse.c (write_dollar_variable, copy_name): Return std::string.
	* parser-defs.h (copy_name): Change return type.
	* m2-exp.y: Update rules.
	(yylex): Update.
	* go-exp.y (lex_one_token): Update.
	Update rules.
	(classify_unsafe_function, classify_packaged_name)
	(classify_name, yylex): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make objfile::static_links an htab_up
@ 2019-04-20 17:28 sergiodj+buildbot
  2019-04-21 11:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 17:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cf250e36790aaa255bb486e2122bb83c95c7669b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: cf250e36790aaa255bb486e2122bb83c95c7669b

Make objfile::static_links an htab_up

This changes objfile::static_links to be an htab_up, so that ~objfile
no longer has to explicitly destroy it.

Tested by the buildbot.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* symfile.c (reread_symbols): Update.
	* objfiles.c (objfile_register_static_link)
	(objfile_lookup_static_link): Update
	(~objfile) Don't delete static_links.
	* objfiles.h (struct objfile) <static_links>: Now an htab_up.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use std::list for event notifications in gdbserver
@ 2019-04-20 17:46 sergiodj+buildbot
  2019-04-21 13:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 17:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b494cdff6922944383ef4dc20fcc90c4d823d315 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: b494cdff6922944383ef4dc20fcc90c4d823d315

Use std::list for event notifications in gdbserver

This changes gdbserver to use std::list rather than common/queue.h for
event notifications.

gdb/gdbserver/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* server.c (struct vstop_notif): Derive from notif_event.
	<base>: Remove.
	(queue_stop_reply): Update.
	(remove_all_on_match_ptid): Change type.  Rewrite.
	(discard_queued_stop_replies): Rewrite.
	(in_queued_stop_replies_ptid): Change type.
	(in_queued_stop_replies): Rewrite.
	(notif_stop): Update.
	(queue_stop_reply_callback): Update.
	(captured_main): Don't call initialize_notif.
	(push_stop_notification): Update.
	* notif.c (notif_write_event, handle_notif_ack)
	(notif_event_enque, notif_push): Update.
	(notif_event_xfree, initialize_notif): Remove.
	* notif.h (struct notif_event): Include <list>, not
	"common/queue.h".
	(struct notif_server) <queue>: Now a std::list.
	(notif_event_p): Remove typedef.
	(initialize_notif): Don't declare.
	(struct notif_event): Add virtual destructor.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove an include of common/queue.h
@ 2019-04-20 18:22 sergiodj+buildbot
  2019-04-21 16:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 18:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8732db6ceb3d5d352685199a15306dbb69c086d6 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8732db6ceb3d5d352685199a15306dbb69c086d6

Remove an include of common/queue.h

event-loop.c does not need to include common/queue.h, so this removes
it.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* event-loop.c: Don't include "common/queue.h".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove common/queue.h
@ 2019-04-20 18:38 sergiodj+buildbot
  2019-04-21 18:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-20 18:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fb8819867993ee942aacd8ea6d5027b16cecda48 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: fb8819867993ee942aacd8ea6d5027b16cecda48

Remove common/queue.h

gdb no longer needs common/queue.h, so this removes it.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* common/queue.h: Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Print non-Ada unions without crashing
@ 2019-04-21  3:01 sergiodj+buildbot
  2019-04-21  4:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-21  3:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8ecb59f8567956c1520b491ea31396363efcb1ef ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 8ecb59f8567956c1520b491ea31396363efcb1ef

Print non-Ada unions without crashing

ada-lang.c is a bit too eager trying to decode unions in the Ada style
-- looking for discriminants and such.  This causes crashes when
printing a non-Ada union in Ada mode, something that can easily happen
when printing a value from history or certain registers on AArch64.

This patch fixes the bug by changing ada-lang.c to only apply special
Ada treatment to types coming from an Ada CU.  This in turn required a
couple of surprising changes.

First, some of the Ada code was already using HAVE_GNAT_AUX_INFO to
decide whether a type had already been fixed -- such types had
INIT_CPLUS_SPECIFIC called on them.  This patch changes these spots to
use the "none" identifier instead.

This then required changing value_rtti_type to avoid changing the
language-specific object attached to an Ada type, which seems like a
good change regardless.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_is_variant_part, ada_to_fixed_type_1):
	Check ADA_TYPE_P.
	(empty_record, ada_template_to_fixed_record_type_1)
	(template_to_static_fixed_type)
	(to_record_with_fixed_variant_part): Use INIT_NONE_SPECIFIC.
	* cp-abi.c (value_rtti_type): Check HAVE_CPLUS_STRUCT.
	* gdbtypes.h (INIT_NONE_SPECIFIC, ADA_TYPE_P): New
	macros.

gdb/testsuite/ChangeLog
2019-04-19  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/ptype_union.c: New file.
	* gdb.ada/ptype_union.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/configure.ac: add --enable-source-highlight
@ 2019-04-21  4:17 sergiodj+buildbot
  2019-04-21  5:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-21  4:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 189b8c2e104017600104457b97315da74a22f549 ***

Author: Sergei Trofimovich <siarheit@google.com>
Branch: master
Commit: 189b8c2e104017600104457b97315da74a22f549

gdb/configure.ac: add --enable-source-highlight

Allow disabling source-highlight dependency autodetection even
it exists in the system. More details on problem of automatic
dependencies:
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Automagic_dependencies

Noticed by Jeroen Roovers in https://bugs.gentoo.org/680238

	* configure.ac: add --enable-source-highlight switch.
	* configure: Regenerate.
	* top.c (print_gdb_version): plumb --enable-source-highlight
	status to "show configuration".

gdb/ChangeLog
2019-04-19  Sergei Trofimovich <siarheit@google.com>

	* configure.ac: add --enable-source-highlight switch.
	* configure: Regenerate.
	* top.c (print_gdb_version): plumb --enable-source-highlight
	status to "show configuration".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use std::list for remote_notif_state::notif_queue
@ 2019-04-21 14:06 sergiodj+buildbot
  2019-04-21 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-21 14:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8

Use std::list for remote_notif_state::notif_queue

This changes remote_notif_state::notif_queue to be a std::list and
updates all the uses.

gdb/ChangeLog
2019-04-19  Tom Tromey  <tom@tromey.com>

	* remote.c (remote_target): Use delete.
	* remote-notif.h: Include <list>, not "common/queue.h".
	(notif_client_p): Remove typedef.
	(remote_notif_state): Add constructor, destructor, initializer.
	<notif_queue>: Now a std::list.
	(remote_notif_state_xfree): Don't declare.
	* remote-notif.c (remote_notif_process, handle_notification)
	(remote_notif_state_allocate): Update.
	(~remote_notif_state): Rename from remote_notif_state_xfree.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix "nosharedlibrary + continue + shared lib event" crash
@ 2019-04-22 14:57 sergiodj+buildbot
  2019-04-22 15:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-22 14:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7905fc359d6921c411999633e382330e6fd04fb6 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 7905fc359d6921c411999633e382330e6fd04fb6

Fix "nosharedlibrary + continue + shared lib event" crash

On systems that use the probes-based solib interface, GDB misbehaves
if you run the "nosharelibrary" command, continue execution, and then
the program hits the shared library event breakpoint.  On my system it
aborts like this:

 (gdb) nosharedlibrary
 (gdb) c
 Continuing.
 pure virtual method called
 terminate called without an active exception
 Aborted (core dumped)

Though it's really undefined behavior territory, caused by deferencing
a dangling solib event probe pointer.

I've observed this by running "nosharedlibrary" when stopped at the
entry point, but it should happen at any other point, if the program
does a dlopen/dlclose after.

The fix is to discard an objfile's probes from the svr4 probes table
when an objfile is about to be released.

New test included, works with both native and gdbserver testing.

Valgrind log:

 (gdb) starti
 (gdb) nosharedlibrary
 (gdb) c
 Continuing.
 ==24895== Invalid read of size 8
 ==24895==    at 0x89E5FB: solib_event_probe_action(probe_and_action*) (solib-svr4.c:1735)
 ==24895==    by 0x89E95A: svr4_handle_solib_event() (solib-svr4.c:1872)
 ==24895==    by 0x8A7198: handle_solib_event() (solib.c:1274)
 ==24895==    by 0x4E3407: bpstat_stop_status(address_space const*, unsigned long, thread_info*, target_waitstatus const*, bpstats*) (breakpoint.c:5407)
 ==24895==    by 0x721F41: handle_signal_stop(execution_control_state*) (infrun.c:5685)
 ==24895==    by 0x720B11: handle_inferior_event(execution_control_state*) (infrun.c:5129)
 ==24895==    by 0x71DD93: fetch_inferior_event(void*) (infrun.c:3748)
 ==24895==    by 0x7059C3: inferior_event_handler(inferior_event_type, void*) (inf-loop.c:43)
 ==24895==    by 0x874DF0: remote_async_serial_handler(serial*, void*) (remote.c:14039)
 ==24895==    by 0x894101: run_async_handler_and_reschedule(serial*) (ser-base.c:137)
 ==24895==    by 0x8941E6: fd_event(int, void*) (ser-base.c:188)
 ==24895==    by 0x67AFEF: handle_file_event(file_handler*, int) (event-loop.c:732)
 ==24895==  Address 0x18b63860 is 0 bytes inside a block of size 136 free'd
 ==24895==    at 0x4C2E616: operator delete(void*, unsigned long) (vg_replace_malloc.c:585)
 ==24895==    by 0x8C6A12: stap_probe::~stap_probe() (stap-probe.c:124)
 ==24895==    by 0x66F7DB: probe_key_free(bfd*, void*) (elfread.c:1382)
 ==24895==    by 0x69B705: bfdregistry_callback_adaptor(void (*)(registry_container*, void*), registry_container*, void*) (gdb_bfd.c:131)
 ==24895==    by 0x855A57: registry_clear_data(registry_data_registry*, void (*)(void (*)(registry_container*, void*), registry_container*, void*), registry_container*, registry_fields*) (registry.c:79)
 ==24895==    by 0x855B01: registry_container_free_data(registry_data_registry*, void (*)(void (*)(registry_container*, void*), registry_container*, void*), registry_container*, registry_fields*) (registry.c:92)
 ==24895==    by 0x69B783: bfd_free_data(bfd*) (gdb_bfd.c:131)
 ==24895==    by 0x69C4BA: gdb_bfd_unref(bfd*) (gdb_bfd.c:609)
 ==24895==    by 0x7CC33F: objfile::~objfile() (objfiles.c:651)
 ==24895==    by 0x7CD559: objfile_purge_solibs() (objfiles.c:1021)
 ==24895==    by 0x8A7132: no_shared_libraries(char const*, int) (solib.c:1252)
 ==24895==    by 0x548E3D: do_const_cfunc(cmd_list_element*, char const*, int) (cli-decode.c:106)
 ==24895==  Block was alloc'd at
 ==24895==    at 0x4C2D42A: operator new(unsigned long) (vg_replace_malloc.c:334)
 ==24895==    by 0x8C527C: handle_stap_probe(objfile*, sdt_note*, std::vector<probe*, std::allocator<probe*> >*, unsigned long) (stap-probe.c:1561)
 ==24895==    by 0x8C5535: stap_static_probe_ops::get_probes(std::vector<probe*, std::allocator<probe*> >*, objfile*) const (stap-probe.c:1656)
 ==24895==    by 0x66F71B: elf_get_probes(objfile*) (elfread.c:1365)
 ==24895==    by 0x7EDD85: find_probes_in_objfile(objfile*, char const*, char const*) (probe.c:227)
 ==24895==    by 0x4DF382: create_longjmp_master_breakpoint() (breakpoint.c:3275)
 ==24895==    by 0x4F6562: breakpoint_re_set() (breakpoint.c:13828)
 ==24895==    by 0x8A66AA: solib_add(char const*, int, int) (solib.c:1010)
 ==24895==    by 0x89F7C6: enable_break(svr4_info*, int) (solib-svr4.c:2360)
 ==24895==    by 0x8A104C: svr4_solib_create_inferior_hook(int) (solib-svr4.c:2992)
 ==24895==    by 0x8A70B9: solib_create_inferior_hook(int) (solib.c:1215)
 ==24895==    by 0x70C073: post_create_inferior(target_ops*, int) (infcmd.c:467)
 ==24895==
 pure virtual method called
 terminate called without an active exception
 ==24895==
 ==24895== Process terminating with default action of signal 6 (SIGABRT): dumping core
 ==24895==    at 0x7CF3750: raise (raise.c:51)
 ==24895==    by 0x7CF4D30: abort (abort.c:79)
 ==24895==    by 0xB008F4: __gnu_cxx::__verbose_terminate_handler() (in build/gdb/gdb)
 ==24895==    by 0xAFF845: __cxxabiv1::__terminate(void (*)()) (in build/gdb/gdb)
 ==24895==    by 0xAFF890: std::terminate() (in build/gdb/gdb)
 ==24895==    by 0xAFF95E: __cxa_pure_virtual (in build/gdb/gdb)
 ==24895==    by 0x89E610: solib_event_probe_action(probe_and_action*) (solib-svr4.c:1735)
 ==24895==    by 0x89E95A: svr4_handle_solib_event() (solib-svr4.c:1872)
 ==24895==    by 0x8A7198: handle_solib_event() (solib.c:1274)
 ==24895==    by 0x4E3407: bpstat_stop_status(address_space const*, unsigned long, thread_info*, target_waitstatus const*, bpstats*) (breakpoint.c:5407)
 ==24895==    by 0x721F41: handle_signal_stop(execution_control_state*) (infrun.c:5685)
 ==24895==    by 0x720B11: handle_inferior_event(execution_control_state*) (infrun.c:5129)
 ==24895==

Note, this little bit in the patch is just a cleanup that I noticed:

 -  lookup.prob = prob;
    lookup.address = address;

That line isn't necessary because hashing/comparison only looks at the
address.

gdb/ChangeLog:
2019-04-22  Pedro Alves  <palves@redhat.com>

	* solib-svr4.c (svr4_free_objfile_observer): New.
	(probe_and_action::objfile): New field.
	(probes_table_htab_remove_objfile_probes)
	(probes_table_remove_objfile_probes): New functions.
	(register_solib_event_probe): Add 'objfile' parameter.  Store it
	in the new probe_and_action.  Don't store the probe in 'lookup'.
	(svr4_create_probe_breakpoints): Pass objfile to
	register_solib_event_probe.
	(_initialize_svr4_solib): Register a free_objfile observer.

gdb/testsuite/ChangeLog:
2019-04-22  Pedro Alves  <palves@redhat.com>

	* gdb.base/solib-probes-nosharedlibrary.c,
	gdb.base/solib-probes-nosharedlibrary.exp: New files.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Enable 32-bit linux gdb core file support.
@ 2019-04-23  3:32 sergiodj+buildbot
  2019-04-23  6:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23  3:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 79b8e8ab453619cb0262e1ad18447d918a605073 ***

Author: Jim Wilson <jimw@sifive.com>
Branch: master
Commit: 79b8e8ab453619cb0262e1ad18447d918a605073

RISC-V: Enable 32-bit linux gdb core file support.

	bfd/
	* elfnn-riscv.c (PRSTATUS_SIZE) [ARCH_SIZE==32]: Change from 0 to 204.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [FYI] Add myself to gdb/MAINTAINERS
@ 2019-04-23  3:48 sergiodj+buildbot
  2019-04-23  7:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23  3:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ad9d13f8e966a844e7e647af6e82259101956f17 ***

Author: Ali Tamur <tamur@google.com>
Branch: master
Commit: ad9d13f8e966a844e7e647af6e82259101956f17

[FYI] Add myself to gdb/MAINTAINERS


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Support for DW_OP_addrx and DW_FORM_addrx tags
@ 2019-04-23  4:05 sergiodj+buildbot
  2019-04-23  9:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23  4:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 336d760da60d93ce76c4560525f65339f3403914 ***

Author: Ali Tamur <tamur@google.com>
Branch: master
Commit: 336d760da60d93ce76c4560525f65339f3403914

Support for DW_OP_addrx and DW_FORM_addrx tags

DW_OP_addrx is the new name of DW_OP_GNU_addr_index, and DW_FORM_addrx
is the name of DW_FORM_addr_index in the Dwarf 5 standard. This is a small
step towards supporting Dwarf 5 in gdb.

Note: I could not find any tests specifically for *_GNU_addr_index, and
I did not add any new tests, please advise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Testsuite: Remove pie from trace tests
@ 2019-04-23 13:32 sergiodj+buildbot
  2019-04-23 15:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 13:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ba22ff8694e366fe5f27824566aae65fc6626841 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: ba22ff8694e366fe5f27824566aae65fc6626841

Testsuite: Remove pie from trace tests

Ubuntu/Debian defaults PIE to enabled.  This causes the trace tests
to fall over due to variables being returned as "unavailable".  The
tests were never designed to work with pie.

Simply ensure the nopie flag is always used for the failing tests.

This removes 100+ failures when running native-gdbserver on Ubuntu 18.04.

gdb/testsuite/ChangeLog:

	* gdb.trace/backtrace.exp: Use nopie flag.
	* gdb.trace/circ.exp: Likewise.
	* gdb.trace/collection.exp: Likewise.
	* gdb.trace/ftrace.exp: Likewise.
	* gdb.trace/mi-trace-unavailable.exp: Likewise.
	* gdb.trace/mi-traceframe-changed.exp: Likewise.
	* gdb.trace/qtro.exp: Likewise.
	* gdb.trace/read-memory.exp: Likewise.
	* gdb.trace/report.exp: Likewise.
	* gdb.trace/tfile.exp: Likewise.
	* gdb.trace/tfind.exp: Likewise.
	* gdb.trace/unavailable.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb.btrace/reconnect.exp with native-gdbserver
@ 2019-04-23 14:16 sergiodj+buildbot
  2019-04-23 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 14:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5c565afd4c7ab6f3d287c9abd288d1d1e3e7cade ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 5c565afd4c7ab6f3d287c9abd288d1d1e3e7cade

[gdb/testsuite] Fix gdb.btrace/reconnect.exp with native-gdbserver

When running gdb.btrace/reconnect.exp with native-gdbserver, we run into:
...
FAIL: gdb.btrace/reconnect.exp: first: stepi 19
...
due to the fact that we're trying to match:
...
stepi 19^M
0x00007ffff7dd8b57 in _dl_start () from /lib64/ld-linux-x86-64.so.2^M
...
using pattern:
...
  gdb_test "stepi 19" "0x.* in .* from target.*"
...

Fix this by changing the pattern to:
...
  gdb_test "stepi 19" "0x.* in .* from .*"
...

Tested on x86_64-linux with native and native-gdbserver.

gdb/testsuite/ChangeLog:

2019-04-23  Tom de Vries  <tdevries@suse.de>

	PR gdb/24433
	* gdb.btrace/reconnect.exp: Fix stepi 19 pattern.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove unused overload of line_header::file_name_at
@ 2019-04-23 17:28 sergiodj+buildbot
  2019-04-23 22:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 17:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9e97ba436a8e59ac4574001d618240eac0328934 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 9e97ba436a8e59ac4574001d618240eac0328934

Remove unused overload of line_header::file_name_at

I noticed that one of the overloads of line_header::file_name_at is
unused.  This patch removes it.

gdb/ChangeLog
2019-04-23  Tom Tromey  <tromey@adacore.com>

	* dwarf2read.c (line_header::file_name_at): Remove unused
	overload.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/iq2000: Use default gdbarch methods where possible
@ 2019-04-23 22:28 sergiodj+buildbot
  2019-04-24 12:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 22:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bf12844a68f3f4f267846a19df6a280f53e7ec5f ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: bf12844a68f3f4f267846a19df6a280f53e7ec5f

gdb/iq2000: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* gdb/iq2000-tdep.c (iq2000_unwind_sp): Delete.
	(iq2000_unwind_pc): Delete.
	(iq2000_dummy_id): Delete.
	(iq2000_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/aarch64: Use type_align instead of aarch64_type_align
@ 2019-04-23 22:46 sergiodj+buildbot
  2019-04-24  5:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 22:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b907456c3eb8a08f6b211f66abb448df962749e1 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: b907456c3eb8a08f6b211f66abb448df962749e1

gdb/aarch64: Use type_align instead of aarch64_type_align

Replaces use of aarch64_type_align with common type_align function.

Doing this fixes a bug in aarch64_type_align where static fields are
considered as part of the alignment calculation of a struct, which
results in arguments passed on the stack being misaligned.  This bug
is exposed in the new test gdb.cp/many-args.exp.

Part of the old aarch64_type_align is retained and used as the gdbarch
type align callback in order to correctly align vectors.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_type_align): Only handle vector override
	case.
	(pass_on_stack): Use type_align.
	(aarch64_gdbarch_init): Register aarch64_type_align gdbarch
	function.

gdb/testsuite/ChangeLog:

	* gdb.cp/many-args.cc: New file.
	* gdb.cp/many-args.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/m32c: Use default gdbarch methods where possible
@ 2019-04-23 23:54 sergiodj+buildbot
  2019-04-24 16:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-23 23:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89b268d8233e11acdfbc5af196166aacc1440ff3 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 89b268d8233e11acdfbc5af196166aacc1440ff3

gdb/m32c: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* m32c-tdep.c (m32c_unwind_pc): Delete.
	(m32c_unwind_sp): Delete.
	(m32c_dummy_id): Delete.
	(m32c_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/m68hc11: Use default gdbarch methods where possible
@ 2019-04-24  0:27 sergiodj+buildbot
  2019-04-24 20:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  0:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 43cf3eded2d3ec0af6f5cf534dd89f47d4958a92 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 43cf3eded2d3ec0af6f5cf534dd89f47d4958a92

gdb/m68hc11: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_unwind_pc, and
gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* m68hc11-tdep.c (m68hc11_unwind_pc): Delete.
	(m68hc11_unwind_sp): Delete.
	(m68hc11_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/mn10300: Use default gdbarch methods where possible
@ 2019-04-24  1:00 sergiodj+buildbot
  2019-04-25  2:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  1:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aee6c3cd1fea463422f19394f95c311f239b6067 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: aee6c3cd1fea463422f19394f95c311f239b6067

gdb/mn10300: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* mn10300-tdep.c (mn10300_dummy_id): Delete.
	(mn10300_unwind_pc): Delete.
	(mn10300_unwind_sp): Delete.
	(mn10300_push_dummy_call): Use gdbarch_unwind_sp not
	mn10300_unwind_sp.
	(mn10300_frame_unwind_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/moxie: Use default gdbarch methods where possible
@ 2019-04-24  1:15 sergiodj+buildbot
  2019-04-25  4:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  1:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 27f113c8e9b2361caf3dfcf15437020306bf93b9 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 27f113c8e9b2361caf3dfcf15437020306bf93b9

gdb/moxie: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* moxie-tdep.c (moxie_unwind_sp): Delete.
	(moxie_unwind_pc): Delete.
	(moxie_dummy_id): Delete.
	(moxie_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/nds32: Use default gdbarch methods where possible
@ 2019-04-24  1:49 sergiodj+buildbot
  2019-04-25  7:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  1:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ca0ab0aa8194eda711cf52efe6c26cb821218476 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: ca0ab0aa8194eda711cf52efe6c26cb821218476

gdb/nds32: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* nds32-tdep.c (nds32_dummy_id): Delete.
	(nds32_unwind_pc): Delete.
	(nds32_unwind_sp): Delete.
	(nds32_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/nios2: Use default gdbarch methods where possible
@ 2019-04-24  2:06 sergiodj+buildbot
  2019-04-25  9:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  2:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 96acf8844a655e34de3f3b014a7f64f26266dee1 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 96acf8844a655e34de3f3b014a7f64f26266dee1

gdb/nios2: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id, and
gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* nios2-tdep.c (nios2_dummy_id): Delete.
	(nios2_unwind_sp): Delete.
	(nios2_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/or1k: Use default gdbarch methods where possible
@ 2019-04-24  2:22 sergiodj+buildbot
  2019-04-25 11:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  2:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3f2cef4945a916e3b566010340bbc70cfe927916 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 3f2cef4945a916e3b566010340bbc70cfe927916

gdb/or1k: Use default gdbarch methods where possible

Make use of the default gdbarch method gdbarch_dummy_id where
possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

This commit leaves or1k_unwind_sp and or1k_unwind_pc in place.  These
functions do match the default methods except that they add additional
debugging code.  In order to preserve the debug I have left these
functions unchanged.

gdb/ChangeLog:

	* or1k-tdep.c (or1k_dummy_id): Delete.
	(or1k_gdbarch_init): Don't register deleted function with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/rs6000: Use default gdbarch methods where possible
@ 2019-04-24  2:39 sergiodj+buildbot
  2019-04-25 12:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  2:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 833a4480dd7cadfd645d7b141168a0e22dc50665 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 833a4480dd7cadfd645d7b141168a0e22dc50665

gdb/rs6000: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* rs6000-tdep.c (rs6000_unwind_pc): Delete.
	(rs6000_dummy_id): Delete.
	(rs6000_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/sparc: Use default_unwind_pc
@ 2019-04-24  3:46 sergiodj+buildbot
  2019-04-25 20:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  3:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d31f262c36a450fe64e5886228d585c75cfecf14 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: d31f262c36a450fe64e5886228d585c75cfecf14

gdb/sparc: Use default_unwind_pc

Make use of the default gdbarch method gdbarch_unwind_pc where
possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* sparc-tdep.c (sparc_unwind_pc): Delete.
	(sparc32_gdbarch_init): Don't register deleted function with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/v850: Use default gdbarch methods where possible
@ 2019-04-24  4:34 sergiodj+buildbot
  2019-04-26  2:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  4:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 29222070e410d441108895fcc3011f576bd05461 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 29222070e410d441108895fcc3011f576bd05461

gdb/v850: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* v850-tdep.c (v850_unwind_sp): Delete.
	(v850_unwind_pc): Delete.
	(v850_dummy_id): Delete.
	(v850_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/vax: Use default gdbarch methods where possible
@ 2019-04-24  4:50 sergiodj+buildbot
  2019-04-26  4:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  4:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 541aad8ac923fa2d4a9d35fdf82b487b9f6e0ea8 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 541aad8ac923fa2d4a9d35fdf82b487b9f6e0ea8

gdb/vax: Use default gdbarch methods where possible

Make use of the default gdbarch method gdbarch_unwind_pc where
possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* vax-tdep.c (vax_unwind_pc): Delete.
	(vax_gdbarch_init): Don't register deleted function with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/rl78: Use default gdbarch methods where possible
@ 2019-04-24  5:24 sergiodj+buildbot
  2019-04-26  7:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  5:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b614e6f3f820fe08d407b57821456f672d4d1a6f ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: b614e6f3f820fe08d407b57821456f672d4d1a6f

gdb/rl78: Use default gdbarch methods where possible

Make use of the default gdbarch method gdbarch_unwind_sp where
possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* rl78-tdep.c (rl78_unwind_sp): Delete.
	(rl78_gdbarch_init): Don't register deleted function with gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/arm: Use type_align instead of arm_type_align
@ 2019-04-24  7:30 sergiodj+buildbot
  2019-04-24  9:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  7:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 030197b43cd8ccfe6869f798dd39fa27a29c0e01 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 030197b43cd8ccfe6869f798dd39fa27a29c0e01

gdb/arm: Use type_align instead of arm_type_align

Replaces use of arm_type_align with common type_align function.

Doing this fixes a bug in arm_type_align where static fields are
considered as part of the alignment calculation of a struct, which
results in arguments passed on the stack being misaligned, this bug
was causing a failure in gdb.cp/many-args.exp.

Part of the old arm_type_align is retained and used as the gdbarch
type align callback in order to correctly align vectors.

gdb/ChangeLog:

	* arm-tdep.c (arm_type_align): Only handle vector override case.
	(arm_push_dummy_call): Use type_align.
	(arm_gdbarch_init): Register arm_type_align gdbarch function.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: Opcodes: Handle bit map operations with non-canonical operands.
@ 2019-04-24  9:43 sergiodj+buildbot
  2019-04-26 13:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  9:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a679f24ecc00ff7df02c5e6e4804fc9f19cbe595 ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: a679f24ecc00ff7df02c5e6e4804fc9f19cbe595

S12Z: Opcodes: Handle bit map operations with non-canonical operands.

opcodes/
	* s12z-opc.c (bm_decode): Handle the RESERVERD0 case.

gas/
	* testsuite/gas/s12z/bit-manip-invalid.d: Extend the test.
	* testsuite/gas/s12z/bit-manip-invalid.s: Extend the test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] S12Z: s12z-opc.h: Add extern "C" bracketing
@ 2019-04-24  9:43 sergiodj+buildbot
  2019-04-26 11:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24  9:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d10be0cb9e61f29a0de368ebcc78bba22a902ad5 ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: d10be0cb9e61f29a0de368ebcc78bba22a902ad5

S12Z: s12z-opc.h: Add extern "C" bracketing

opcodes/
	* s12z-opc.h: Add extern "C" bracketing to help
	  users who wish to use this interface in c++ code.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/m32r: Use default gdbarch methods where possible
@ 2019-04-24 17:03 sergiodj+buildbot
  2019-04-24 17:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24 17:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5e79b7bb69c797c3ca401cfa0f7a616eb2e3efe8 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 5e79b7bb69c797c3ca401cfa0f7a616eb2e3efe8

gdb/m32r: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* m32r-tdep.c (m32r_unwind_sp): Delete.
	(m32r_unwind_pc): Delete.
	(m32r_dummy_id): Delete.
	(m32r_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix passing of struct with bitfields on x86-64
@ 2019-04-24 18:26 sergiodj+buildbot
  2019-04-26 15:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24 18:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a59240a41ac34d91e4ef5dd8b484763639388364 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a59240a41ac34d91e4ef5dd8b484763639388364

Fix passing of struct with bitfields on x86-64

Commit 4aa866af ("Fix AMD64 return value ABI in expression
evaluation") introduced a regression when calling a function with a
structure that contains bitfields.

Because the caller of amd64_has_unaligned_fields handles bitfields
already, it seemed to me that the simplest fix was to ignore bitfields
here.

gdb/ChangeLog
2019-04-24  Tom Tromey  <tromey@adacore.com>

	* amd64-tdep.c (amd64_has_unaligned_fields): Ignore bitfields.

gdb/testsuite/ChangeLog
2019-04-24  Tom Tromey  <tromey@adacore.com>

	* gdb.arch/amd64-eval.exp: Test bitfield return.
	* gdb.arch/amd64-eval.cc (struct Bitfields): New.
	(class Foo) <return_bitfields>: New method.
	(main): Call it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/mep: Use default gdbarch methods where possible
@ 2019-04-24 23:39 sergiodj+buildbot
  2019-04-25  0:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-24 23:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8e2b5aea9d3f16961f7fac15caec00e955c1dc81 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 8e2b5aea9d3f16961f7fac15caec00e955c1dc81

gdb/mep: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* mep-tdep.c (mep_unwind_pc): Delete.
	(mep_unwind_sp): Delete.
	(mep_dummy_id): Delete.
	(mep_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Detect invalid length field in debug frame FDE header.
@ 2019-04-25 14:51 sergiodj+buildbot
  2019-04-27  0:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-25 14:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 723adb650a31859d7cc45832cb8adca0206455ed ***

Author: Sandra Loosemore <sandra@codesourcery.com>
Branch: master
Commit: 723adb650a31859d7cc45832cb8adca0206455ed

Detect invalid length field in debug frame FDE header.

GDB was failing to catch cases where a corrupt ELF or core file
contained an invalid length value in a Dwarf debug frame FDE header.
It was checking for buffer overflow but not cases where the length was
negative or caused pointer wrap-around.

In addition to the additional validity check, this patch cleans up the
multiple signed/unsigned conversions on the length field so that an
unsigned representation is used consistently throughout.

This patch fixes CVE-2017-9778 and PR gdb/21600.

2019-04-25  Sandra Loosemore  <sandra@codesourcery.com>
	    Kang Li <kanglictf@gmail.com>

	PR gdb/21600

	* dwarf2-frame.c (read_initial_length): Be consistent about using
	unsigned representation of length.
	(decode_frame_entry_1): Likewise.  Check for wraparound of
	end pointer as well as buffer overflow.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove exception_none
@ 2019-04-25 19:27 sergiodj+buildbot
  2019-04-27  9:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-25 19:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cc06b668978e542ecbc2aff1beca40e5baff86b0 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: cc06b668978e542ecbc2aff1beca40e5baff86b0

Remove exception_none

Now that gdb_exception has a constructor, there's no need for
exception_none.  This patch removes it.

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

	* xml-support.c (gdb_xml_parser::gdb_xml_parser): Update.
	* python/py-value.c (valpy_getitem, valpy_nonzero): Update.
	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
	Update.
	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
	Update.
	* mi/mi-interp.c (mi_interp::exec): Update.
	* linespec.c (parse_linespec): Update.
	* infcall.c (run_inferior_call): Update.
	* guile/scm-value.c (gdbscm_value_to_lazy_string): Update.
	* guile/scm-symbol.c (gdbscm_lookup_symbol)
	(gdbscm_lookup_global_symbol): Update.
	* guile/scm-param.c (gdbscm_parameter_value): Update.
	* guile/scm-frame.c (gdbscm_frame_read_register)
	(gdbscm_frame_read_var): Update.
	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
	* exec.c (try_open_exec_file): Update.
	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
	(gdb_rl_callback_handler): Update.
	* common/common-exceptions.h (exception_none): Don't declare.
	* common/common-exceptions.c (exception_none): Don't define.
	(struct catcher) <exception>: Update.
	* cli/cli-interp.c (safe_execute_command): Update.
	* breakpoint.c (insert_bp_location, location_to_sals): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make SJLJ exceptions more efficient
@ 2019-04-25 19:44 sergiodj+buildbot
  2019-04-27 10:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-25 19:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c6fdd8b2052baa9b7a27d4d34f109c9622b53509 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: c6fdd8b2052baa9b7a27d4d34f109c9622b53509

Make SJLJ exceptions more efficient

This changes the SJLJ exception handling code to be a bit more
efficient, by using rvalue references and move assignment when
possible.

Tested by the buildbot.

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
	(gdb_rl_callback_handler): Use std::move.
	* common/common-exceptions.h (struct gdb_exception): Add move
	assignment operator.
	(throw_exception_sjlj): Change "exception" to const reference.
	* common/common-exceptions.c (exceptions_state_mc_catch): Update.
	(throw_exception_sjlj): Change "exception" to const reference.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] c++/24367: Infinite recursion of typedef substitution
@ 2019-04-25 20:51 sergiodj+buildbot
  2019-04-27 19:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-25 20:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 725cbb63263d27e87f5a4f9b73281e7710de53e4 ***

Author: Keith Seitz <keiths@redhat.com>
Branch: master
Commit: 725cbb63263d27e87f5a4f9b73281e7710de53e4

c++/24367: Infinite recursion of typedef substitution

This bug finds another usage where we end up segfaulting while
normalizing user input.  inspect_type and replace_type recurse,
attempting to substitute the "real" symbol name for the typedef name.
However, since the both these names are the same, they keep calling
each other until the stack overflows.

A simple reproducer for it is given by

  typedef struct foo foo;
  int qux (foo *f) { return 0; }

  (gdb) b qux(foo*)
  Segmentation fault

inspect_type already contains some special handling to prevent a
similar situation from occurring with namespaces.  I wonder, however,
whether we need be so pedantic about the exact nature of the substitution.

This patch implements this rather more aggressive assumption that these
substitutions should be avoided whenever the replacement symbol's name is
exactly the same as the one we're trying to substitute.  [In the above
example, we're trying to substitute the tyepdef named "foo" with the symbol
named "foo" (a struct).]

gdb/ChangeLog:

	PR c++/24367
	* cp-support.c (inspect_type): Don't attempt substitutions
	of symbol with the same name.

gdb/testsuite/ChangeLog:

	PR c++/24367
	* gdb.cp/meth-typedefs.cc (incomplete_struct)
	(another_incomplete_struct, test_incomplete): New definitions.
	(main): Use new definitions.
	* gdb.cp/meth-typedefs.exp: Add new tests for `test_incomplete'
	functions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/tilegx: Use default gdbarch methods where possible
@ 2019-04-25 23:25 sergiodj+buildbot
  2019-04-26  0:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-25 23:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0f534d767b257fffd8a9b231c97ff9ed33688452 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 0f534d767b257fffd8a9b231c97ff9ed33688452

gdb/tilegx: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_dummy_id,
gdbarch_unwind_pc, and gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* tilegx-tdep.c (tilegx_unwind_sp): Delete.
	(tilegx_unwind_pc): Delete.
	(tilegx_unwind_dummy_id): Delete.
	(tilegx_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/s12z: Use default gdbarch methods where possible
@ 2019-04-26  8:03 sergiodj+buildbot
  2019-04-26  9:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-26  8:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f872fdbb5b83f39f359bc1cd016dcc0456cb0c0a ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: f872fdbb5b83f39f359bc1cd016dcc0456cb0c0a

gdb/s12z: Use default gdbarch methods where possible

Make use of the default gdbarch methods for gdbarch_unwind_pc, and
gdbarch_unwind_sp where possible.

I have not tested this change but, by inspecting the code, I believe
the default methods are equivalent to the code being deleted.

gdb/ChangeLog:

	* s12z-tdep.c (s12z_unwind_pc): Delete.
	(s12z_unwind_sp): Delete.
	(s12z_gdbarch_init): Don't register deleted functions with
	gdbarch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] MIPS/include: opcode/mips.h: Update stale comment for CODE20 operand
@ 2019-04-26 19:50 sergiodj+buildbot
  2019-04-26 21:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-26 19:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd0923370be1a6412e9b8fb5c8e9e39d90f1d3ea ***

Author: Maciej W. Rozycki <macro@linux-mips.org>
Branch: master
Commit: cd0923370be1a6412e9b8fb5c8e9e39d90f1d3ea

MIPS/include: opcode/mips.h: Update stale comment for CODE20 operand

Complement commit 1586d91e32ea ("/ 0 should send SIGFPE not SIGTRAP..."),
<https://sourceware.org/ml/binutils/2004-07/msg00260.html>, and update a
stale comment referring the 20-bit code field of the BREAK and SDBBP
instructions, by making it explicit that where permitted by choosing the
MIPS32 or a later ISA the whole field can now be set with a single
operand for the SDBBP instruction only.

	include/
	* opcode/mips.h: Update comment for MIPS32 CODE20 operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Add option to capture gdbserver debug
@ 2019-04-27  0:04 sergiodj+buildbot
  2019-04-27  1:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27  0:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dd06d4d6889ee58b76255b775f52ba8e475a7a2d ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: dd06d4d6889ee58b76255b775f52ba8e475a7a2d

testsuite: Add option to capture gdbserver debug

Add both board option and environment variable which enables gdbserver
debug and sends it to the file gdbserver.debug, located in the output
directory for the current test.  Document this.

Add support for the environment variable in the Makefile.

The testsuite can be run with gdbserver debug enabled in the following way:

	make check GDBSERVER_DEBUG=all

Disable tspeed.exp when debugging to prevent the log file filling
many gigabytes then timing out.

gdb/testsuite/ChangeLog:

	* Makefile.in: Pass through GDBSERVER_DEBUG.
        * README (Testsuite Parameters): Add GDBSERVER_DEBUG.
        (gdbserver,debug): Add board setting.
        * gdb.trace/tspeed.exp: Skip when debugging.
	* lib/gdb.exp (gdbserver_debug_enabled): New procedure.
	* lib/gdbserver-support.exp: Likewise


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [MIPS] Add load-link, store-conditional paired instructions
@ 2019-04-27  1:55 sergiodj+buildbot
  2019-04-27 23:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27  1:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a45328b93bdd5399da8a9e56817e445cc2068edd ***

Author: Andrew Bennett <andrew.bennett@imgtec.com>
Branch: master
Commit: a45328b93bdd5399da8a9e56817e445cc2068edd

[MIPS] Add load-link, store-conditional paired instructions

Add several baseline MIPS32R6[1] and MIPS64R6[2] instructions
that were omitted from the initial spec.  These instructions
are optional in implementations but not associated with any
ASE or pseudo-ASE.  Their presence is indicated by the XNP bit
in the Config5 register.

[1] "MIPS Architecture for Programmers Volume II-A: The MIPS32
     Instruction Set Manual", Imagination Technologies Ltd., Document
     Number: MD00086, Revision 6.06, December 15, 2016, Section 3.2
     "Alphabetical List of Instructions", pp. 228-229, pp. 354-357.

[2] "MIPS Architecture for Programmers Volume II-A: The MIPS64
     Instruction Set Manual", Imagination Technologies Ltd., Document
     Number: MD00087, Revision 6.06, December 15, 2016, Section 3.2
     "Alphabetical List of Instructions", pp. 289-290 and pp. 458-460.

gas/
	* config/tc-mips.c (macro) <M_LLWP_AB, M_LLDP_AB, M_SCWP_AB,
	M_SCDP_AB>: New cases and expansions for paired instructions.
	* testsuite/gas/mips/llpscp-32.s: New test source.
	* testsuite/gas/mips/llpscp-64.s: Likewise.
	* testsuite/gas/mips/llpscp-32.d: New test.
	* testsuite/gas/mips/llpscp-64.d: Likewise.
	* testsuite/gas/mips/mips.exp: Run the new tests.
	* testsuite/gas/mips/r6.s: Add new instructions to test source.
	* testsuite/gas/mips/r6-64.s: Likewise.
	* testsuite/gas/mips/r6-64-n32.d: Check new instructions.
	* testsuite/gas/mips/r6-64-n64.d: Likewise.
	* testsuite/gas/mips/r6-n32.d: Likewise.
	* testsuite/gas/mips/r6-n64.d: Likwwise.
	* testsuite/gas/mips/r6.d: Likewise.

include/
	* opcode/mips.h (M_LLWP_AB, M_LLDP_AB): New enum values.
	(M_SCWP_AB, M_SCDP_AB): Likewise.

opcodes/
	* mips-opc.c (mips_builtin_opcodes): Add llwp, lldp, scwp, scdp.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Avoid undefined behavior in Guile exception handling
@ 2019-04-27 10:41 sergiodj+buildbot
  2019-04-27 12:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27 10:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 680d7fd5fcff860a31021845389d4dfeb7b42e3c ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 680d7fd5fcff860a31021845389d4dfeb7b42e3c

Avoid undefined behavior in Guile exception handling

The Guile code will longjmp (via scm_throw) when an object requiring
destruction is on the stack.  This is undefined behavior.

This changes this code to run any destructors in inner scopes, and to
pass a POD to gdbscm_throw_gdb_exception.

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception)
	(gdbscm_throw_gdb_exception): Take a gdbscm_gdb_exception.
	* guile/scm-block.c, guile/scm-breakpoint.c, guile/scm-cmd.c,
	guile/scm-disasm.c, guile/scm-frame.c, guile/scm-lazy-string.c,
	guile/scm-math.c, guile/scm-param.c, guile/scm-ports.c,
	guile/scm-symbol.c, guile/scm-symtab.c, guile/scm-type.c,
	guile/scm-value.c: Use unpack.
	* guile/guile-internal.h (gdbscm_scm_from_gdb_exception): Take a
	gdbscm_gdb_exception.
	(gdbscm_throw_gdb_exception): Likewise.
	(struct gdbscm_gdb_exception): New.
	(unpack): New function.
	(gdbscm_wrap): Use unpack.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Implement show | set may-call-functions [on|off]
@ 2019-04-27 11:41 sergiodj+buildbot
  2019-04-28  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27 11:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 136afab8c7d8a8a91dbf38e79be4f9dc4125d552 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 136afab8c7d8a8a91dbf38e79be4f9dc4125d552

Implement show | set may-call-functions [on|off]

Inferior function calls are powerful but might lead to undesired
results such as crashes when calling nested functions (frequently
used in particular in Ada).

This implements a GDB setting to disable calling inferior functions.

Note: the idea is that if/when the 'slash command' patch is pushed,
that this setting can be changed e.g. by using the shortcut /c.

This is version 2 of the patch.  It handles all the received comments,
mostly replace 'can-call' by 'may-call', and avoid using
'inferior function call' in factor of 'calling function in the program'.

2019-04-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

gdb/ChangeLog
	* NEWS: Mention the new set|show may-call-functions.
	* infcall.c (may_call_functions_p): New variable.
	(show_may_call_functions_p): New function.
	(call_function_by_hand_dummy): Throws an error if not
	may-call-functions.
	(_initialize_infcall): Call add_setshow_boolean_cmd for
	may-call-functions.

gdb/testsuite/ChangeLog
	* gdb.base/callexit.exp: Test may-call-functions off.

gdb/doc/ChangeLog
	* gdb.texinfo (Calling): Document the new
	set|show may-call-functions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make exception handling more efficient
@ 2019-04-27 12:26 sergiodj+buildbot
  2019-04-27 14:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27 12:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 94aeb44b001ab2d632806242a3bacb0a879abe15 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 94aeb44b001ab2d632806242a3bacb0a879abe15

Make exception handling more efficient

This makes exception handling more efficient in a few spots, through
the use of const- and rvalue-references.

I wrote this patch by commenting out the gdb_exception copy
constructor and then examining the resulting error messages one by
one, introducing the use of std::move where appropriate.

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

	* xml-support.c (struct gdb_xml_parser) <set_error>: Take an
	rvalue reference.
	(gdb_xml_start_element_wrapper, gdb_xml_end_element_wrapper)
	(gdb_xml_parser::parse): Use std::move.
	* python/python-internal.h (gdbpy_convert_exception): Take a const
	reference.
	* python/py-value.c (valpy_getitem, valpy_nonzero): Use
	std::move.
	* python/py-utils.c (gdbpy_convert_exception): Take a const
	reference.
	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
	Use std::move.
	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
	Use std::move.
	* mi/mi-main.c (mi_print_exception): Take a const reference.
	* main.c (handle_command_errors): Take a const reference.
	* linespec.c (parse_linespec): Use std::move.
	* infcall.c (run_inferior_call): Use std::move.
	(call_function_by_hand_dummy): Use std::move.
	* exec.c (try_open_exec_file): Use std::move.
	* exceptions.h (exception_print, exception_fprintf)
	(exception_print_same): Update.
	* exceptions.c (print_exception, exception_print)
	(exception_fprintf, exception_print_same): Change parameters to
	const reference.
	* event-top.c (gdb_rl_callback_read_char_wrapper): Update.
	* common/new-op.c: Use std::move.
	* common/common-exceptions.h (struct gdb_exception): Add move
	constructor.
	(struct gdb_exception_error, struct gdb_exception_quit, struct
	gdb_quit_bad_alloc): Change constructor to move constructor.
	(throw_exception): Change parameter to rvalue reference.
	* common/common-exceptions.c (throw_exception): Take rvalue
	reference.
	* cli/cli-interp.c (safe_execute_command): Use std::move.
	* breakpoint.c (insert_bp_location, location_to_sals): Use
	std::move.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix memory leak in exception code
@ 2019-04-27 15:51 sergiodj+buildbot
  2019-04-27 16:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27 15:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d1cbb78936fbf2985ffd2ebf074841599ead788 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 3d1cbb78936fbf2985ffd2ebf074841599ead788

Fix memory leak in exception code

PR gdb/24475 concerns a memory leak coming from gdb's exception
handling code.

The leak occurs because throw_exception_sjlj does not arrange to
destroy the exception object it is passed.  However, because
gdb_exception has a destructor, it's undefined to longjmp in this
situation.

This patch fixes the problem by avoiding the need to run any
destructors in gdb_rl_callback_handler, by making the gdb_exception
"static".

gdb/ChangeLog
2019-04-25  Tom Tromey  <tromey@adacore.com>

	PR gdb/24475:
	* event-top.c (gdb_rl_callback_handler): Make "gdb_rl_expt"
	static.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't complain undefined weak dynamic reference
@ 2019-04-27 20:23 sergiodj+buildbot
  2019-04-27 21:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-27 20:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c54f15248ee990df6cea0b4730cd61b227a0e082 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: c54f15248ee990df6cea0b4730cd61b227a0e082

Don't complain undefined weak dynamic reference

When undefined non-weak references in IR objects are optimized out
by LTO, we can have weak dynamic referencs to symbols marked with
bfd_link_hash_undefined.  We shouldn't complain such undefined weak
dynamic references.

bfd/

	PR ld/24486
	* elflink.c (elf_link_output_extsym): Don't complain undefined
	weak dynamic reference.

ld/

	PR ld/24486
	* testsuite/ld-plugin/lto.exp: Run PR ld/24486 tests.
	* testsuite/ld-plugin/pr24486a.c: New file.
	* testsuite/ld-plugin/pr24486b.c: Likewise.
	* testsuite/ld-plugin/pr24486c.c: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Have 'thread|frame apply' style their output.
@ 2019-04-28  1:28 sergiodj+buildbot
  2019-04-28  2:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-28  1:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8a522c6cab56bd55f1454638786f999f6f636354 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 8a522c6cab56bd55f1454638786f999f6f636354

Have 'thread|frame apply' style their output.

'thread|frame apply CMD' launches CMD so that CMD output goes to a string_file.
This patch ensures that string_file for such CMD output contains
style escape sequences that 'thread|frame apply' will later on
output on the real terminal, so as to have CMD output properly styled.

The idea is to have the class ui_file having overridable methods
to indicate that the output to this ui_file should be done using
'terminal' behaviour such as styling.
Then these methods are overriden in string_file so that a specially
constructed string_file will get output with style escape sequences.

After this patch, the output of CMD by thread|frame apply CMD is styled
similarly as when CMD is launched directly.
Note that string_file (term_out true) could also support wrapping,
but this is not done (yet?).

Tested on debian/amd64.

gdb/ChangeLog
2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	Support style in 'frame|thread apply'

	* gdbcmd.h (execute_command_to_string): New term_out parameter.
	* record.c (record_start, record_stop): Update callers of
	execute_command_to_string with false.
	* ui-file.h (class ui_file): New term_out and can_emit_style_escape
	methods.
	(class string_file): New constructor with term_out parameter.
	Override methods term_out and can_emit_style_escape.  New member
	term_out.
	(class stdio_file): Override can_emit_style_escape.
	(class tee_file): Override term_out and can_emit_style_escape.
	* utils.h (can_emit_style_escape): Remove.
	* utils.c (can_emit_style_escape): Likewise.
	Update all callers of can_emit_style_escape (SOMESTREAM) to
	SOMESTREAM->can_emit_style_escape.
	* source-cache.c (source_cache::get_source_lines): Likewise.
	* stack.c (frame_apply_command_count): Call execute_command_to_string
	passing the term_out characteristic of the current gdb_stdout.
	* thread.c (thr_try_catch_cmd): Likewise.
	* top.c (execute_command_to_string): pass term_out parameter
	to construct the string_file for the command output.
	* ui-file.c (term_cli_styling): New function (most code moved
	from utils.c can_emit_style_escape).
	(string_file::string_file, string_file::can_emit_style_escape,
	stdio_file::can_emit_style_escape, tee_file::term_out,
	tee_file::can_emit_style_escape): New functions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix regexp in skip_opencl_tests
@ 2019-04-29 15:13 sergiodj+buildbot
  2019-04-29 19:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-29 15:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d2b584a55b658fa52ffa3a42b689940d2e98e969 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: d2b584a55b658fa52ffa3a42b689940d2e98e969

[gdb/testsuite] Fix regexp in skip_opencl_tests

When running gdb-caching-proc.exp, if skip_opencl_tests fails like this:
...
(gdb) run
Starting program: \
  build/gdb/testsuite/outputs/gdb.base/gdb-caching-proc/opencltest13530.x
CHK_ERR (clGetPlatformIDs (1, &platform, NULL), -1001)
src/gdb/testsuite/lib/opencl_hostapp.c:73 error: Unknown
[Inferior 1 (process 13600) exited with code 01]
(gdb)
skip_opencl_tests: OpenCL support not detected
...
then this regexp in skip_opencl_tests fails to match:
...
        -re ".*$inferior_exited_re code.*${gdb_prompt} $" {
...
so instead we hit the default clause after a 30 seconds timeout.  With the
iteration count set at 10, we end up taking 6 minutes to run this test-case.

Fix this by adding the missing "with" in the regexp, bring back the runtime to
half a minute.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-04-29  Tom de Vries  <tdevries@suse.de>

	* lib/opencl.exp (skip_opencl_tests): Add missing "with" in regexp.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Introduce new language field la_struct_too_deep_ellipsis
@ 2019-04-29 21:38 sergiodj+buildbot
  2019-04-30  0:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-29 21:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 721b08c68679ad4058bfa7ae73811e6f9e845cfd ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 721b08c68679ad4058bfa7ae73811e6f9e845cfd

gdb: Introduce new language field la_struct_too_deep_ellipsis

This commit is preparation work for a later commit, and by itself
makes no user visible change to GDB.  I've split this work into a
separate commit in order to make code review easier.

This commit adds a new field 'la_struct_too_deep_ellipsis' to the
language struct, this string will be used in the next commit to print
a language specific string from within the generic value printing
code.

In this commit I add the new field and initialise it for each
language, however at this stage the new field is never used.

gdb/ChangeLog:

	* language.h (struct language_defn) <la_struct_too_deep_ellipsis>:
	New field.
	* ada-lang.c (ada_language_defn): Initialise new field.
	* c-lang.c (c_language_defn): Likewise.
	(cplus_language_defn): Likewise.
	(asm_language_defn): Likewise.
	(minimal_language_defn): Likewise.
	* d-lang.c (d_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* go-lang.c (go_language_defn): Likewise.
	* language.c (unknown_language_defn): Likewise.
	(auto_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* opencl-lang.c (opencl_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* rust-lang.c (rust_language_defn): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/ada: Update some predicate functions to return bool
@ 2019-04-29 21:43 sergiodj+buildbot
  2019-04-29 22:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-29 21:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fc913e53c353218ba1a9efa423c08767691a682a ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: fc913e53c353218ba1a9efa423c08767691a682a

gdb/ada: Update some predicate functions to return bool

A later commit would like to make use of a pointer to the function
ada_is_string_type, however, this will require the function to return
a bool (so the signature matches).

As the ada_is_string_type is a predicate function, and its return
value is only ever used as either true or false, then this commit
updates the function to return a bool.

As a consequence ada_is_character_type needs to change too.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-lang.c (ada_is_character_type): Change return type to bool.
	(ada_is_string_type): Likewise.
	* ada-lang.h (ada_is_character_type): Update declaration
	(ada_is_string_type): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Introduce new language field la_is_string_type_p
@ 2019-04-29 21:55 sergiodj+buildbot
  2019-04-30  3:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-29 21:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4be290b2517839872ef7de47230be8dbd291a7e5 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 4be290b2517839872ef7de47230be8dbd291a7e5

gdb: Introduce new language field la_is_string_type_p

This commit is preparation work for the next commit, and by itself
makes no user visible change to GDB.  I've split this work into a
separate commit in order to make code review easier.

This commit adds a new field 'la_is_string_type_p' to the language
struct, this predicate will return true if a type is a string type for
the given language.

Some languages already have a "is this a string" predicate that I was
able to reuse, while for other languages I've had to add a new
predicate.  In this case I took inspiration from the value printing
code for that language - what different conditions would result in
printing something as a string.

A default "is this a string" method has also been added that looks for
TYPE_CODE_STRING, this is the fallback I've used for a couple of
languages.

In this commit I add the new field and initialise it for each
language, however at this stage the new field is never used.

gdb/ChangeLog:

	* ada-lang.c (ada_language_defn): Initialise new field.
	* c-lang.c (c_is_string_type_p): New function.
	(c_language_defn): Initialise new field.
	(cplus_language_defn): Initialise new field.
	(asm_language_defn): Initialise new field.
	(minimal_language_defn): Initialise new field.
	* c-lang.h (c_is_string_type_p): Declare new function.
	* d-lang.c (d_language_defn): Initialise new field.
	* f-lang.c (f_is_string_type_p): New function.
	(f_language_defn): Initialise new field.
	* go-lang.c (go_is_string_type_p): New function.
	(go_language_defn): Initialise new field.
	* language.c (default_is_string_type_p): New function.
	(unknown_language_defn): Initialise new field.
	(auto_language_defn): Initialise new field.
	* language.h (struct language_defn) <la_is_string_type_p>: New
	member variable.
	(default_is_string_type_p): Declare new function.
	* m2-lang.c (m2_language_defn): Initialise new field.
	* objc-lang.c (objc_language_defn): Initialise new field.
	* opencl-lang.c (opencl_language_defn): Initialise new field.
	* p-lang.c (pascal_is_string_type_p): New function.
	(pascal_language_defn): Initialise new field.
	* rust-lang.c (rust_is_string_type_p): New function.
	(rust_language_defn): Initialise new field.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Introduce 'print max-depth' feature
@ 2019-04-29 22:12 sergiodj+buildbot
  2019-04-30  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-29 22:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2e62ab400ff96334c92e5acf0a462cb9dc0d19a7 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 2e62ab400ff96334c92e5acf0a462cb9dc0d19a7

gdb: Introduce 'print max-depth' feature

Introduce a new print setting max-depth which can be set with 'set
print max-depth DEPTH'.  The default value of DEPTH is 20, but this
can also be set to unlimited.

When GDB is printing a value containing nested structures GDB will
stop descending at depth DEPTH.  Here is a small example:

    typedef struct s1 { int a; } s1;
    typedef struct s2 { s1 b; } s2;
    typedef struct s3 { s2 c; } s3;
    typedef struct s4 { s3 d; } s4;

    s4 var = { { { { 3 } } } };

The following table shows how various depth settings affect printing
of 'var':

    | Depth Setting | Result of 'p var'              |
    |---------------+--------------------------------|
    |     Unlimited | $1 = {d = {c = {b = {a = 3}}}} |
    |             4 | $1 = {d = {c = {b = {a = 3}}}} |
    |             3 | $1 = {d = {c = {b = {...}}}}   |
    |             2 | $1 = {d = {c = {...}}}         |
    |             1 | $1 = {d = {...}}               |
    |             0 | $1 = {...}                     |

Only structures, unions, and arrays are replaced in this way, scalars
and strings are not replaced.

The replacement is counted from the level at which you print, not from
the top level of the structure.  So, consider the above example and
this GDB session:

    (gdb) set print max-depth 2
    (gdb) p var
    $1 = {d = {c = {...}}}
    (gdb) p var.d
    $2 = {c = {b = {...}}}
    (gdb) p var.d.c
    $3 = {b = {a = 3}}

Setting the max-depth to 2 doesn't prevent the user from exploring
deeper into 'var' by asking for specific sub-fields to be printed.

The motivation behind this feature is to try and give the user more
control over how much is printed when examining large, complex data
structures.

The default max-depth of 20 means that there is a change in GDB's
default behaviour.  Someone printing a data structure with 20 levels
of nesting will now see '{...}' instead of their data, they would need
to adjust the max depth, or call print again naming a specific field
in order to dig deeper into their data structure.  If this is
considered a problem then we could increase the default, or even make
the default unlimited.

This commit relies on the previous commit, which added a new field to
the language structure, this new field was a string that contained the
pattern that should be used when a structure/union/array is replaced
in the output, this allows languages to use a syntax that is more
appropriate, mostly this will be selecting the correct types of
bracket '(...)' or '{...}', both of which are currently in use.

This commit should have no impact on MI output, expressions are
printed through the MI using -var-create and then -var-list-children.
As each use of -var-list-children only ever displays a single level of
an expression then the max-depth setting will have no impact.

This commit also adds the max-depth mechanism to the scripting
language pretty printers following basically the same rules as for the
built in value printing.

One quirk is that when printing a value using the display hint 'map',
if the keys of the map are structs then GDB will hide the keys one
depth level after it hides the values, this ensures that GDB produces
output like this:

  $1 = map_object = {[{key1}] = {...}, [{key2}] = {...}}

Instead of this less helpful output:

  $1 = map_object = {[{...}] = {...}, [{...}] = {...}}

This is covered by the new tests in gdb.python/py-nested-maps.exp.

gdb/ChangeLog:

	* cp-valprint.c (cp_print_value_fields): Allow an additional level
	of depth when printing anonymous structs or unions.
	* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer):
	Don't print either the top-level value, or the children if the
	max-depth is exceeded.
	(ppscm_print_children): When printing the key of a map, allow one
	extra level of depth.
	* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Don't
	print either the top-level value, or the children if the max-depth
	is exceeded.
	(print_children): When printing the key of a map, allow one extra
	level of depth.
	* python/py-value.c (valpy_format_string): Add max_depth keyword.
	* valprint.c: (PRINT_MAX_DEPTH_DEFAULT): Define.
	(user_print_options): Initialise max_depth field.
	(val_print_scalar_or_string_type_p): New function.
	(val_print): Check to see if the max depth has been reached.
	(val_print_check_max_depth): Define new function.
	(show_print_max_depth): New function.
	(_initialize_valprint): Add 'print max-depth' option.
	* valprint.h (struct value_print_options) <max_depth>: New field.
	(val_print_check_max_depth): Declare new function.
	* NEWS: Document new feature.

gdb/doc/ChangeLog:

	* gdb.texinfo (Print Settings): Document 'print max-depth'.
	* guile.texi (Guile Pretty Printing API): Document that 'print
	max-depth' can effect the display of a values children.
	* python.texi (Pretty Printing API): Likewise.
	(Values From Inferior): Document max_depth keyword.

gdb/testsuite/ChangeLog:

	* gdb.base/max-depth.c: New file.
	* gdb.base/max-depth.exp: New file.
	* gdb.python/py-nested-maps.c: New file.
	* gdb.python/py-nested-maps.exp: New file.
	* gdb.python/py-nested-maps.py: New file.
	* gdb.python/py-format-string.exp (test_max_depth): New proc.
	(test_all_common): Call test_max_depth.
	* gdb.fortran/max-depth.exp: New file.
	* gdb.fortran/max-depth.f90: New file.
	* gdb.go/max-depth.exp: New file.
	* gdb.go/max-depth.go: New file.
	* gdb.modula2/max-depth.exp: New file.
	* gdb.modula2/max-depth.c: New file.
	* lib/gdb.exp (get_print_expr_at_depths): New proc.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove an unbalanced stray double quote from a comment
@ 2019-04-30 12:53 sergiodj+buildbot
  2019-04-30 14:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 12:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6fdcd7cc87a5e345a1c09fcf898012d80eb43ee1 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 6fdcd7cc87a5e345a1c09fcf898012d80eb43ee1

gdb: Remove an unbalanced stray double quote from a comment

What appears to be a stray double quote character in std-operator.def
causes incorrect highlighting in my editor.

The quote was introduced in this commit:

    commit 858be34c5a03bb8973679ebf00d360182434dc00
    Date:   Mon Sep 4 20:21:15 2017 +0100

        Handle "p S::method()::static_var" in the C++ parser

I can't see any reason why the quote should be there, so this commit
removes it.

gdb/ChangeLog:

	* std-operator.def: Remove unbalanced, stray double quote
	character.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Additional builtin procedures
@ 2019-04-30 13:16 sergiodj+buildbot
  2019-04-30 19:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 13:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c

gdb/fortran: Additional builtin procedures

Add some additional builtin procedures for Fortran, these are MOD,
CEILING, FLOOR, MODULO, and CMPLX.

gdb/ChangeLog:

	* f-exp.y (BINOP_INTRINSIC): New token.
	(exp): New parser rule handling BINOP_INTRINSIC.
	(f77_keywords): Add new builtin procedures.
	* f-lang.c (evaluate_subexp_f): Handle BINOP_MOD, UNOP_FORTRAN_CEILING,
	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
	(operator_length_f): Handle UNOP_FORTRAN_CEILING,
	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
	(print_unop_subexp_f): New function.
	(print_binop_subexp_f): New function.
	(print_subexp_f): Handle UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
	(dump_subexp_body_f): Likewise.
	(operator_check_f): Likewise.
	* fortran-operator.def: Add UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX

gdb/testsuite/ChangeLog:

	* gdb.fortran/intrinsics.exp: Extend to cover MOD, CEILING, FLOOR,
	MODULO, CMPLX.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: print function arguments when printing function type
@ 2019-04-30 13:50 sergiodj+buildbot
  2019-04-30 22:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 13:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bf7a4de1722a63c8b017d010e75d5e9e5e622f36 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: bf7a4de1722a63c8b017d010e75d5e9e5e622f36

gdb/fortran: print function arguments when printing function type

Before this commit using ptype on a Fortran function will include
information about the functions return type, but not the expected
arguments as it would for C or C++.  After this commit argument types
are included in the ptype output.

For example, before GDB prints:

    (gdb) ptype fun1
    type = integer(kind=4) ()
    (gdb) ptype is_bigger
    type = logical(kind=4) ()

and after GDB prints:

    (gdb) ptype fun1
    type = integer(kind=4) (integer(kind=4))
    (gdb) ptype is_bigger
    type = logical(kind=4) (integer(kind=4), integer(kind=4))

gdb/ChangeLog:

	* f-typeprint.c (f_type_print_varspec_suffix): Handle printing
	function arguments.

gdb/testsuite/ChangeLog:

	* gdb.fortran/ptype-on-functions.exp: New file.
	* gdb.fortran/ptype-on-functions.f90: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Update rules for printing whitespace in types
@ 2019-04-30 14:07 sergiodj+buildbot
  2019-05-01  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 14:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f1fdc960664c24d911d6189b94e5c054b4bb9053 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: f1fdc960664c24d911d6189b94e5c054b4bb9053

gdb/fortran: Update rules for printing whitespace in types

The whitespace produced as types are printed seems inconsistent.  This
commit updates the rules in an attempt to make whitespace more
balanced and consistent.  Expected results are updated.

gdb/ChangeLog:

	* f-typeprint.c (f_print_type): Update rules for printing
	whitespace.
	(f_type_print_varspec_suffix): Likewise.

gdb/testsuite/ChangeLog:

	* gdb.fortran/ptr-indentation.exp: Update expected results.
	* gdb.fortran/ptype-on-functions.exp: Likewise.
	* gdb.fortran/vla-ptr-info.exp: Likewise.
	* gdb.fortran/vla-value.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Add allocatable type qualifier
@ 2019-04-30 14:23 sergiodj+buildbot
  2019-05-01  2:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 14:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bc68014d16c30a6e90fdf9fc43e98be8cbbead9a ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: bc68014d16c30a6e90fdf9fc43e98be8cbbead9a

gdb/fortran: Add allocatable type qualifier

Types in Fortran can have the 'allocatable' qualifier attached to
indicate that memory needs to be explicitly allocated by the user.
This patch extends GDB to show this qualifier when printing types.

Lots of tests results are then updated to include this new qualifier
in the expected results.

gdb/ChangeLog:

	* f-typeprint.c (f_type_print_base): Print 'allocatable' type
	qualifier.
	* gdbtypes.h (TYPE_IS_ALLOCATABLE): Define.

gdb/testsuite/ChangeLog:

	* gdb.fortran/vla-datatypes.exp: Update expected results.
	* gdb.fortran/vla-ptype.exp: Likewise.
	* gdb.fortran/vla-type.exp: Likewise.
	* gdb.fortran/vla-value.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix crash in dwarf2read.c with template parameters
@ 2019-04-30 15:12 sergiodj+buildbot
  2019-05-01  9:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 15:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a776957c8c3a9177345ee7ca91077234ed7f508e ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a776957c8c3a9177345ee7ca91077234ed7f508e

Fix crash in dwarf2read.c with template parameters

PR c++/24470 concerns a crash in dwarf2read.c that occurs with a
particular test case.

The issue turns out to be that process_structure_scope will pass NULL
to symbol_symtab.  This happens because new_symbol decided not to
create a symbol for the particular DIE.

This patch fixes the problem by finding another reasonably-appropriate
symtab to use instead; issuing a complaint if one cannot be found for
some reason.

As mentioned in the bug, I think there are other bugs here.  For
example, when using "ptype" on the "l" object in the test case, I
think I would expect to see the template parameter.  I didn't research
this too closely, since it seemed more important to fix the crash.

Tested on x86-64 Fedora 29.

I'd like to check this in to the 8.3 branch as well.

2019-04-30  Tom Tromey  <tromey@adacore.com>

	PR c++/24470:
	* dwarf2read.c (process_structure_scope): Handle case where type
	has template parameters but no symbol was created.

gdb/testsuite/ChangeLog
2019-04-30  Tom Tromey  <tromey@adacore.com>

	PR c++/24470:
	* gdb.cp/temargs.cc: Add test code from PR.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix "catch exception" with dynamic linking
@ 2019-04-30 15:28 sergiodj+buildbot
  2019-05-01 10:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 15:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2ff0a947394eebf5ff9cd26088dce60ec8c10b48 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 2ff0a947394eebf5ff9cd26088dce60ec8c10b48

Fix "catch exception" with dynamic linking

When an Ada program is dynamically linked against libgnat, and when
one of the standard exceptions is used, the exception object may be
referenced by the main executable using a copy relocation.

In this situation, a "catch exception" for those exceptions will not
manage to stop.  This happens because, under the hood, "catch
exception" creates an expression object that examines the object
addresses -- but in this case, the address will be incorrect.

This patch fixes the problem by arranging for these filter expressions
to examine all the relevant minimal symbols.  This way, the object
from libgnat will be found as well.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-04-30  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_lookup_simple_minsyms): New function.
	(create_excep_cond_exprs): Iterate over program spaces.
	(ada_exception_catchpoint_cond_string): Examine all minimal
	symbols for exception types.

gdb/testsuite/ChangeLog
2019-04-30  Tom Tromey  <tromey@adacore.com>

	* lib/ada.exp (find_ada_tool): New proc.
	* lib/gdb.exp (gdb_compile_shlib): Allow .o files as inputs.
	* gdb.ada/catch_ex_std.exp: New file.
	* gdb.ada/catch_ex_std/foo.adb: New file.
	* gdb.ada/catch_ex_std/some_package.adb: New file.
	* gdb.ada/catch_ex_std/some_package.ads: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Print 'void' type in lower case
@ 2019-04-30 19:57 sergiodj+buildbot
  2019-04-30 21:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 19:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bbe75b9d00cc6f0694ff26569505c349d55e35f1 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: bbe75b9d00cc6f0694ff26569505c349d55e35f1

gdb/fortran: Print 'void' type in lower case

For a program compiled with gfortran the base type names are written
as lower cases in the DWARF, and so GDB will display them as lower
case.  Additionally, in most places where GDB supplies its own type
names (for example all of the types defined in f-lang.c in
`build_fortran_types`), the type names are all lower case.

An exception to this is where GDB prints the void type for Fortran.
In this case GDB uses upper case.

I'm not aware of any reason why this type should merit special
attention, and it looks our of place when printing types, so this
commit changes from 'VOID' to 'void' to match all the other types.

gdb/ChangeLog:

	* f-lang.c (build_fortran_types): Change name of void type to
	lower case.
	* f-typeprint.c (f_type_print_base): Print the name of the void
	type, rather than a fixed string.
	* f-valprint.c (f_decorations): Use lower case void string.

gdb/testsuite/ChangeLog:

	* gdb.fortran/exprs.exp (test_convenience_variables): Expect lower
	case void string.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/windows-nat.c: Get rid of main_thread_id global
@ 2019-04-30 21:55 sergiodj+buildbot
  2019-05-01 16:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 21:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ab4ee6147eb2e8fafd1fb96c945029c789182d3b ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: ab4ee6147eb2e8fafd1fb96c945029c789182d3b

gdb/windows-nat.c: Get rid of main_thread_id global

This global is meant to point to the "main" thread of execution of
the program we are debugging. It is set when attaching to a process
or when receiving a CREATE_PROCESS_DEBUG_EVENT event. The theory at
the time was that this was also going to be the thread receiving
the EXIT_PROCESS_DEBUG_EVENT event.

Unfortunately, we have discovered since then that this is actually
not guaranteed. What this means in practice is that there is moderate
risk that main_thread_id refers to a thread which no longer exists.

This global is used in 3 situations:
  - OUTPUT_DEBUG_STRING_EVENT
  - LOAD_DLL_DEBUG_EVENT
  - UNLOAD_DLL_DEBUG_EVENT

It's not clear why we would need to use the main_thread_id in those cases
instead of using the thread ID provided by the kernel events itself.
So this patch implements this approach, which then allows us to delete
the main_thread_id global.

gdb/testsuite:

	* windows-nat.c (main_thread_id): Delete.
	(handle_output_debug_string): Replace main_thread_id by
	current_event.dwThreadId.
	(fake_create_process): Likewise.
	(get_windows_debug_event) <CREATE_PROCESS_DEBUG_EVENT>:
	Do not set main_thread_id.
	<LOAD_DLL_DEBUG_EVENT>: Replace main_thread_id by
	current_event.dwThreadId.
	<UNLOAD_DLL_DEBUG_EVENT>: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Support DW_FORM_strx1, _strx2, _strx3, _strx4 forms.
@ 2019-04-30 23:41 sergiodj+buildbot
  2019-05-01 18:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-04-30 23:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 15f18d1467aa08ff7a4793f21e02fd4c2ebc0a0b ***

Author: Ali Tamur <tamur@google.com>
Branch: master
Commit: 15f18d1467aa08ff7a4793f21e02fd4c2ebc0a0b

Support DW_FORM_strx1, _strx2, _strx3, _strx4 forms.

Dwarf5 defines DW_FORM_strx1 and others, which are similar
to DW_FORM_strx but uses 1-4 bytes unsigned integers. This is
a small step towards supporting dwarf5 in gdb.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] (Windows) fix thr != nullptr assert failure in delete_thread_1
@ 2019-05-01 13:10 sergiodj+buildbot
  2019-05-01 14:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-01 13:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8ed5b76ea2de370265382dab1d538a919e2603ab ***

Author: Joel Brobecker <brobecker@adacore.com>
Branch: master
Commit: 8ed5b76ea2de370265382dab1d538a919e2603ab

(Windows) fix thr != nullptr assert failure in delete_thread_1

We have observed that GDB would randomly trip the following
assertion failure when debugging on Windows. When allowing
the program to run until the inferior exits, we occasionally see:

     (gdb) cont
     Continuing.
     [Thread 48192.0xd100 exited with code 1]
     [Thread 48192.0x10ad8 exited with code 1]
     [Thread 48192.0x36e28 exited with code 0]
     [Thread 48192.0x52be4 exited with code 0]
     [Thread 48192.0x5aa40 exited with code 0]
     ../../src/gdb/thread.c:453: internal-error: void delete_thread_1(thread_inf
o*, bool): Assertion `thr != nullptr' failed.

Running the same scenario with some additional traces enabled...

    (gdb) set verbose
    (gdb) set debugevents

... allows us to understand what the issue is. To understand, we need
to first look at the events received when starting the program, and
in particular which threads got created how. First, we get a
CREATE_PROCESS_DEBUG_EVENT for tid=0x442a8:

    gdb: kernel event for pid=317536 tid=0x442a8 code=CREATE_PROCESS_DEBUG_EVENT)

Shortly after, we get some CREATE_THREAD_DEBUG_EVENT events,
one of them being for tid=0x4010c:

    gdb: kernel event for pid=317536 tid=0x4010c code=CREATE_THREAD_DEBUG_EVENT)
Fast forward a bit of debugging, and we do a "cont" as above,
at which point the programs reaches the end, and the system reports
"exit" events. The first interesting one is the following:

    gdb: kernel event for pid=317536 tid=0x442a8 code=EXIT_THREAD_DEBUG_EVENT)

This is reporting a thread-exit event for a thread whose tid
is the TID of what we call the "main thread". That's the thread
that was created when we received the CREATE_PROCESS_DEBUG_EVENT
notification, and whose TID is actually stored in a global variable
named main_thread_id. This is not something we expected, as
the assumption we made was that the main thread would exit last,
and we would be notified of it via an EXIT_PROCESS_DEBUG_EVENT.
But apparently, this is not always true, at least on Windows Server
2012 and 2016 where this issue has been observed happening randomly.

The consequence of the above notification is that we call
windows_delete_thread for that thread, which removes it from
our list of known threads.

And a little bit later, then we then get the EXIT_PROCESS_DEBUG_EVENT,
and we can see that the associated tid is not the main_thread_id,
but rather the tid of one of the threads that was created during
the lifetime of the program, in this case tid=0x4010c:

    gdb: kernel event for pid=317536 tid=0x4010c code=EXIT_PROCESS_DEBUG_EVENT)

And the debug trace printed right after shows why we're crashing:

    [Deleting Thread 317536.0x442a8]

We are trying to delete the thread whose tid=0x442a8, which is
the main_thread_id! As we have already deleted that thread before,
the search for it returns a nullptr, which then trips the assertion
check in delete_thread_1.

This commit fixes this issue. It ignores the open question of
what to do with the main_thread_id global, particularly after
that thread has been removed from our list of threads. This will
be dealt with as a separate patch, to allow cherry-picking
this patch into a release branch.

For now, we fix the code so as to avoid this crash.

gdb/ChangeLog:

	* windows-nat.c (get_windows_debug_event) <EXIT_PROCESS_DEBUG_EVENT>:
	Use current_event.dwThreadId instead of main_thread_id.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix bug in assignment to nested packed structure
@ 2019-05-01 14:52 sergiodj+buildbot
  2019-05-02  1:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-01 14:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4504bbdec57c77b6468838276e62b2137eedfdd5 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 4504bbdec57c77b6468838276e62b2137eedfdd5

Fix bug in assignment to nested packed structure

A user at AdaCore found a case where assignment to a nested packed
structure would fail.  The bug is that ada_value_primitive_field
doesn't account for the situation where a field is not packed relative
to its containing structure, but where the structure itself is packed
in its parent.

gdb/ChangeLog
2019-05-01  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_value_primitive_field): Treat more fields as
	bitfields.

gdb/testsuite/ChangeLog
2019-05-01  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/packed_array_assign/aggregates.ads (Nested_Packed): New
	record.
	(NPR): New variable.
	* gdb.ada/packed_array_assign.exp: Add nested packed assignment
	test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [BINUTILS, AArch64] Enable Transactional Memory Extension
@ 2019-05-01 16:32 sergiodj+buildbot
  2019-05-02  4:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-01 16:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b83b4b138298d2a6bfab11f533d7e315c0a1c97b ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: b83b4b138298d2a6bfab11f533d7e315c0a1c97b

[BINUTILS, AArch64] Enable Transactional Memory Extension

This patch enables the new Transactional Memory Extension added recently
as part of Arm's new architecture technologies.

We introduce a new optional extension "tme" to enable this. The following
instructions are part of the extension:
   * tstart <Xt>
   * ttest <Xt>
   * tcommit
   * tcancel #<imm>
The ISA for the above can be found here:
https://developer.arm.com/docs/ddi0602/latest/base-instructions-alphabetic-order

*** gas/ChangeLog ***

2019-05-01  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-aarch64.c (parse_operands): Add case for
	AARCH64_OPND_TME_UIMM16.
	(aarch64_features): Add "tme".
	* doc/c-aarch64.texi: Document the same.
	* testsuite/gas/aarch64/tme-invalid.d: New test.
	* testsuite/gas/aarch64/tme-invalid.l: New test.
	* testsuite/gas/aarch64/tme-invalid.s: New test.
	* testsuite/gas/aarch64/tme.d: New test.
	* testsuite/gas/aarch64/tme.s: New test.

*** include/ChangeLog ***

2019-05-01  Sudakshina Das  <sudi.das@arm.com>

	* opcode/aarch64.h (AARCH64_FEATURE_TME): New.
	(enum aarch64_opnd): Add AARCH64_OPND_TME_UIMM16.

*** opcodes/ChangeLog ***

2019-05-01  Sudakshina Das  <sudi.das@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-opc.c (operand_general_constraint_met_p): Add case for
	AARCH64_OPND_TME_UIMM16.
	(aarch64_print_operand): Likewise.
	* aarch64-tbl.h (QL_IMM_NIL): New.
	(TME): New.
	(_TME_INSN): New.
	(struct aarch64_opcode): Add tstart, tcommit, ttest and tcancel.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Use cc-with-tweaks.exp in dwarf4-gdb-index.exp
@ 2019-05-01 18:37 sergiodj+buildbot
  2019-05-01 19:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-01 18:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b70bfc540d3fa7759f5957bce23b6a1e6783ccb3 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: b70bfc540d3fa7759f5957bce23b6a1e6783ccb3

[gdb/testsuite] Use cc-with-tweaks.exp in dwarf4-gdb-index.exp

Board file dwarf4-gdb-index.exp contains all the commands from
cc-with-tweaks.exp (with CC_WITH_TWEAKS_FLAGS set to "-i").

Make dwarf4-gdb-index.exp smaller by including cc-with-tweaks.exp.

Tested on x86_64-linux for gdb.base.

gdb/testsuite/ChangeLog:

2019-05-01  Tom de Vries  <tdevries@suse.de>

	* boards/dwarf4-gdb-index.exp: Use cc-with-tweaks.exp.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix big-endian aggregate assignment in Ada
@ 2019-05-01 22:56 sergiodj+buildbot
  2019-05-02  0:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-01 22:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d48e62f4a263a871b7a62793e8000625735bc2f6 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: d48e62f4a263a871b7a62793e8000625735bc2f6

Fix big-endian aggregate assignment in Ada

A bug internal to AdaCore notes that assigning a non-scalar value to
an element of a packed array will sometimes fail.

The bug turns out to be that ada_value_assign incorrectly computes the
starting point for the assignment.  This patch fixes the problem.

gdb/ChangeLog
2019-05-01  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_value_assign): Correctly compute starting offset
	for big-endian copies.

gdb/testsuite/ChangeLog
2019-05-01  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/packed_array_assign.exp: Add packed assignment
	regression test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Treat the .gnu.debuglink and .gnu.debugaltlink sections as debug sections when reading them in from COFF/PE format files.
@ 2019-05-02 14:51 sergiodj+buildbot
  2019-05-03  3:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-02 14:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2cdc1a970d3249888524d251abfb87a9bdc77434 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 2cdc1a970d3249888524d251abfb87a9bdc77434

Treat the .gnu.debuglink and .gnu.debugaltlink sections as debug sections when reading them in from COFF/PE format files.

	PR 24493
	* coffcode.h (styp_to_sec_flags): Treat .gnu.debuglink and
	.gnu.debugaltlink sections as debugging sections.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove _initialize_valarith
@ 2019-05-03  1:02 sergiodj+buildbot
  2019-05-03  4:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03  1:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b8c05e85ef4ce9610a3a43198180cf24aea327cb ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: b8c05e85ef4ce9610a3a43198180cf24aea327cb

Remove _initialize_valarith

I noticed that _initialize_valarith is empty.  This patch removes it.
Because init.c is constructed at build time, there's no reason to keep
empty initialization functions around, because there's no overhead to
reintroducing them when needed.

gdb/ChangeLog
2019-05-02  Tom Tromey  <tromey@adacore.com>

	* valarith.c (_initialize_valarith): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/rust: Handle printing structures containing strings
@ 2019-05-03  6:15 sergiodj+buildbot
  2019-05-03  6:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03  6:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 80062eb94959467fb0c27b988b87ac08dada4bd8 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 80062eb94959467fb0c27b988b87ac08dada4bd8

gdb/rust: Handle printing structures containing strings

When printing a rust structure that contains a string GDB can
currently fail to read the fields that define the string. This is
because GDB mistakenly treats a value that is the parent structure as
though it is the structure that defines the string, and then fails to
find the fields needed to extract a string.

The solution is to create a new value to represent the string field of
the parent value.

gdb/ChangeLog:

	* rust-lang.c (val_print_struct): Handle printing structures
	containing strings.

gdb/testsuite/ChangeLog:

	* gdb.rust/simple.exp: Add new test case.
	* gdb.rust/simple.rs (struct StringAtOffset): New struct.
	(main): Initialise an instance of the new struct.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix lookup of separate debug file on MS-Windows.
@ 2019-05-03 10:03 sergiodj+buildbot
  2019-05-03 11:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03 10:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5f2459c233faebe8f882e556b2f4a86594a51292 ***

Author: Eli Zaretskii <eliz@gnu.org>
Branch: master
Commit: 5f2459c233faebe8f882e556b2f4a86594a51292

Fix lookup of separate debug file on MS-Windows.

If you put the separate debug file in a global debug directory, GDB on
MS-Windows would fail to find it.  This happens because we obtain the
directory to look up the debug file by concatenating the debug
directory name with the leading directories of the executable, and the
latter includes the drive letter on MS-Windows.  So we get an invalid
file name like

   d:/usr/lib/debug/d:/usr/bin/foo.debug

This commit fixes that by removing the colon of the drive letter,
thus producing

   d:/usr/lib/debug/d/usr/bin/foo.debug

gdb/ChangeLog:
2019-05-03  Eli Zaretskii  <eliz@gnu.org>

	* symfile.c (find_separate_debug_file): Remove colon from the
	drive spec of DOS/Windows file names of the target, so that the
	file name produced from DEBUGDIR and the target's directory will
	be valid on DOS/Windows systems.

gdb/doc/ChangeLog:
2019-05-03  Eli Zaretskii  <eliz@gnu.org>

	* gdb.texinfo (Separate Debug Files): Document how the
	subdirectory of the global debug directory is computed on
	MS-Windows/MS-DOS.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Add cc-with-gdb-index.exp
@ 2019-05-03 11:15 sergiodj+buildbot
  2019-05-03 21:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03 11:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0fdfd794d22b3b516c3031e76afecaa0ed813931 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 0fdfd794d22b3b516c3031e76afecaa0ed813931

[gdb/testsuite] Add cc-with-gdb-index.exp

Add a target board cc-with-gdb-index.exp, to make it easy to run cc-with-tweaks
with CC_WITH_TWEAKS_FLAGS='-i'.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-03  Tom de Vries  <tdevries@suse.de>

	* boards/cc-with-gdb-index.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add noyywrap to ada-lex.l
@ 2019-05-03 23:22 sergiodj+buildbot
  2019-05-04  0:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03 23:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fcd60b848ed7619461b0b0e316201e7745cdb61d ***

Author: Dilyan Palauzov <dilyan.palauzov@aegee.org>
Branch: master
Commit: fcd60b848ed7619461b0b0e316201e7745cdb61d

Add noyywrap to ada-lex.l

This patch comes from PR ada/21406.  It adds the noyywrap option to
ada-lex.l.  This was already done (by the same author) for other .l
files in the binutils-gdb tree, so it seems reasonably safe.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-03  Dilyan Palauzov  <dilyan.palauzov@aegee.org>

	PR ada/21406:
	* ada-exp.y (yywrap): Don't define.
	* ada-lex.l (%option): Add noyywrap
	(yywrap): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix cast of character to enum type in Ada
@ 2019-05-03 23:39 sergiodj+buildbot
  2019-05-04  2:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-03 23:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 222a8d255834c717f1690658a9f85501a46f9403 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 222a8d255834c717f1690658a9f85501a46f9403

Fix cast of character to enum type in Ada

An internal bug report points out that, when a global character enum
type is used, casting fails, like:

    (gdb) print global_char_enum'('F')
    $1 = 70

The bug here turns out to be that enumerators are qualified, so for
example the mangled name might be "pck__QU48", rather than "QU48".

This patch fixes the problem by only examining the suffix of the
enumerator.  This is ok because the type is already known, and because
the mangling scheme ensures that there won't be clashes.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-03  Tom Tromey  <tromey@adacore.com>

	* ada-exp.y (convert_char_literal): Check suffix of each
	enumerator.

gdb/testsuite/ChangeLog
2019-05-03  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/char_enum/pck.ads (Global_Enum_Type): New type.
	* gdb.ada/char_enum/foo.adb: Use Global_Enum_Type.
	* gdb.ada/char_enum.exp: Add test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove "struct" from foreach statements
@ 2019-05-04  3:19 sergiodj+buildbot
  2019-05-04  4:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04  3:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bde09ab7026edf3d79122872b79c6a8f164ee0ff ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: bde09ab7026edf3d79122872b79c6a8f164ee0ff

Remove "struct" from foreach statements

Some versions of gcc have a bug that causes

    for (struct mumble : something)

... to give a compiler error.  We routinely work around this bug in
gdb, but apparently had not done so in a while.  This patch fixes the
remaining known cases of this problem.

gdb/ChangeLog
2019-05-03  Sandra Loosemore  <sandra@codesourcery.com>
	    Tom Tromey  <tom@tromey.com>

	* dictionary.c (collate_pending_symbols_by_language): Remove
	"struct" from foreach.
	* symtab.c (lookup_global_symbol_from_objfile)
	(lookup_symbol_in_objfile_from_linkage_name): Remove "struct" from
	foreach.
	* ser-tcp.c (net_open): Remove "struct" from foreach.
	* objfiles.c (objfile_relocate, objfile_rebase)
	(objfile_has_symbols): Remove "struct" from foreach.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Remove "struct"
	from foreach.
	* dwarf2read.c (handle_struct_member_die): Remove "struct" from
	foreach.
	* darwin-nat.c (thread_info_from_private_thread_info): Remove
	"struct" from foreach.
	* ada-lang.c (create_excep_cond_exprs)
	(ada_exception_catchpoint_cond_string): Remove "struct" from
	foreach.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leaks by clearing registers and frame caches.
@ 2019-05-04  6:26 sergiodj+buildbot
  2019-05-04  7:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04  6:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 66452beb773568c7f60dbc6b7c70f671a8c9cf4b ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 66452beb773568c7f60dbc6b7c70f671a8c9cf4b

Fix leaks by clearing registers and frame caches.

Valgrind reports leaks such as the below in the tests:
gdb.threads/corethreads.exp
gdb.threads/gcore-thread.exp
gdb.ada/task_switch_in_core.exp
gdb.trace/tfile.exp
gdb.base/siginfo-thread.exp

==12701== 1,123 (72 direct, 1,051 indirect) bytes in 1 blocks are definitely lost in loss record 2,928 of 3,247
==12701==    at 0x4C2C4CC: operator new(unsigned long) (vg_replace_malloc.c:344)
==12701==    by 0x5CF771: get_thread_arch_aspace_regcache(ptid_t, gdbarch*, address_space*) (regcache.c:330)
==12701==    by 0x5CF92A: get_thread_regcache (regcache.c:366)
==12701==    by 0x5CF92A: get_current_regcache() (regcache.c:372)
==12701==    by 0x4C7964: get_current_frame() (frame.c:1587)
==12701==    by 0x4C7A3C: get_selected_frame(char const*) (frame.c:1651)
==12701==    by 0x669EAD: print_thread_info_1(ui_out*, char const*, int, int, int) (thread.c:1151)
==12701==    by 0x66A9A1: info_threads_command(char const*, int) (thread.c:1217)
==12701==    by 0x40A878: cmd_func(cmd_list_element*, char const*, int) (cli-decode.c:1892)
...

Fix these leaks by clearing registers and frame caches.
This leak and fix is similar to the leak fixed by 799efbe8e01


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24511, nm should not mark symbols in .init_array as "t"
@ 2019-05-04  8:16 sergiodj+buildbot
  2019-05-04  9:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04  8:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a288c270991de1578ad28ac312120f4167347234 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: a288c270991de1578ad28ac312120f4167347234

PR24511, nm should not mark symbols in .init_array as "t"

This patch restricts the section names matched in coff_section_type,
a function that translates section names to symbol type, and arranges
to translate section flags to symbol type before looking at names.
The latter change resulted in various test failures due to improper
section flags being used in tests, and by the plugin support, so fix
that too.

The new test fails on many ELF targets that lack .init/fini_array
in their scripts.  I've just xfailed those.  pru-elf oddly defines
__init_array_begin rather than __init_array_start.  I've left that
target as a FAIL, and pj-elf too which reports an error for undefined
weak symbols.

bfd/
	PR 24511
	* syms.c (coff_section_type): Only allow '.', '$' and numeric
	following the standard section names.
	(bfd_decode_symclass): Prioritize section flag tests in
	decode_section_type before name tests in coff_section_type.
	* plugin.c (bfd_plugin_canonicalize_symtab): Init fake_section
	and fake_common_section using BFD_FAKE_SECTION.  Use "fake" as
	their names and choose standard .text section flags for
	fake_section.
ld/
	PR 24511
	* testsuite/ld-elf/pr14156a.d: Allow for .init/.fini being a
	data section on hppa64.
	* testsuite/ld-elf/pr14156b.d: Likewise.
	* testsuite/ld-scripts/pr18963.t: Map standard sections to set
	output section flags.
	* testsuite/ld-scripts/sane1.t: Likewise.
	* testsuite/ld-elf/init-fini-arrays.s: Reference __init_array_start
	and __fini_array_start.  Define __start et al.
	* testsuite/ld-elf/pr24511.d: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't derive partial_symbol from general_symbol_info
@ 2019-05-04 20:02 sergiodj+buildbot
  2019-05-04 22:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04 20:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT af97b4161f07a716783183f1b17fa5cac9f99a49 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: af97b4161f07a716783183f1b17fa5cac9f99a49

Don't derive partial_symbol from general_symbol_info

This patch partly reverts commit 8a6d42345 ("Change representation of
psymbol to flush out accessors"); specifically, it changes
partial_symbol to no longer derive from general_symbol_info.

The basic problem here is that the bcache compares objects bitwise,
and this change made it less likely that the relevant fields in the
psymbol would be fully initialized.  This could be seen by running a
test under valgrind on the Fedora-i686 buildbot.

I considered a simpler patch, namely just zeroing the psymbol's
"value" field in add_psymbol_to_bcache.  However, it wasn't clear to
me that this memset could not then be optimized away by the compiler.

Regression tested by the buildbot.  I think this should go in 8.3 as
well.

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* psymtab.c (psymbol_name_matches, match_partial_symbol)
	(lookup_partial_symbol, print_partial_symbols)
	(recursively_search_psymtabs, sort_pst_symbols, psymbol_hash)
	(psymbol_compare): Update.
	(add_psymbol_to_bcache): Clear the entire psymbol.
	(maintenance_check_psymtabs): Update.
	* psympriv.h (struct partial_symbol): Don't derive from
	general_symbol_info.
	<obj_section, unrelocated_address, address,
	set_unrelocated_address>: Update.
	<ginfo>: New member.
	* dwarf-index-write.c (write_psymbols, debug_names::insert)
	(debug_names::write_psymbols): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change valid_user_defined_cmd_name_p to return bool
@ 2019-05-04 21:04 sergiodj+buildbot
  2019-05-05  5:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04 21:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7f008c9e6a3cbb248f5b6e8638af4b9d5225981b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7f008c9e6a3cbb248f5b6e8638af4b9d5225981b

Change valid_user_defined_cmd_name_p to return bool

This changes valid_user_defined_cmd_name_p to return bool.

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* cli/cli-decode.c (valid_user_defined_cmd_name_p): Return bool.
	* command.h (valid_user_defined_cmd_name_p): Channge return type.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use bool, true, and false in arc-tdep.c
@ 2019-05-04 21:52 sergiodj+buildbot
  2019-05-05 10:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04 21:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fa9c2a59e3110d8c7d37c1fa602cb6b25b796dc7 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: fa9c2a59e3110d8c7d37c1fa602cb6b25b796dc7

Use bool, true, and false in arc-tdep.c

This changes arc-tdep.c to use bool, true, and false.

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* arc-tdep.c (arc_tdesc_init): Use bool.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change arc_tdesc_init to return bool
@ 2019-05-04 22:41 sergiodj+buildbot
  2019-05-05 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04 22:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fbdf05a16ec647358e65582721c4ca7dae15e58d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: fbdf05a16ec647358e65582721c4ca7dae15e58d

Change arc_tdesc_init to return bool

This changes arc_tdesc_init to return bool.

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* arc-tdep.c (arc_tdesc_init): Return bool.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove a VEC from aarch64-tdep.c
@ 2019-05-04 23:12 sergiodj+buildbot
  2019-05-05 19:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-04 23:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89055eaa122ceb99ae20bfe10d028da2ca7fee83 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 89055eaa122ceb99ae20bfe10d028da2ca7fee83

Remove a VEC from aarch64-tdep.c

This removes a VEC from aarch64-tdep.c, replacing it with a
std::vector.

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* aarch64-tdep.c (stack_item_t): Remove typedef and DEF_VEC.
	(struct aarch64_call_info): Add initializers.
	<si>: Now a std::vector.
	(pass_on_stack, aarch64_push_dummy_call): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix incorrect use of 'is' operator for comparison in python/lib/gdb/command/prompt.py
@ 2019-05-05  1:02 sergiodj+buildbot
  2019-05-05  1:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-05  1:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b6484282f85bf7f11451b2441599c241d302ad9d ***

Author: Raul Tambre <raul@tambre.ee>
Branch: master
Commit: b6484282f85bf7f11451b2441599c241d302ad9d

Fix incorrect use of 'is' operator for comparison in python/lib/gdb/command/prompt.py

The 'is' operator is not meant to be used for comparisons. It currently working
is an implementation detail of CPython.  CPython 3.8 has added a SyntaxWarning
for this.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use "false" in select_frame_for_mi
@ 2019-05-05  8:19 sergiodj+buildbot
  2019-05-05  8:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-05  8:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e2eb806a17490963f23be1d567cff357537df678 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e2eb806a17490963f23be1d567cff357537df678

Use "false" in select_frame_for_mi

This changes select_frame_for_mi to use "false" rather than "FALSE".

gdb/ChangeLog
2019-05-04  Tom Tromey  <tom@tromey.com>

	* stack.c (select_frame_for_mi): Use "false", not "FALSE".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PicoJava weak undefined symbols
@ 2019-05-06  3:06 sergiodj+buildbot
  2019-05-06  5:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-06  3:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e1cbf07ac4f8c8525dfadaa19bfb2997a2bfaad9 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: e1cbf07ac4f8c8525dfadaa19bfb2997a2bfaad9

PicoJava weak undefined symbols

This fixes the recently added ld-elf/pr24511 test failure on pj-elf.
Incidentally, pj-elf has failed its gas "pj" test since 2005-12-22
(git commit 54758c3e39).  I think that makes the target ripe for
obsolescence.

bfd/
	* elf32-pj.c (pj_elf_reloc): Don't report undefined weak as an error.
ld/
	* testsuite/ld-undefined/weak-undef.exp: Don't xfail pj.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix index-cache.exp with cc-with-{gdb-index, debug-names}
@ 2019-05-06  7:21 sergiodj+buildbot
  2019-05-06  8:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-06  7:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5a56d6a65f8406f1aadb4569fbb8ff00a6e92d02 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 5a56d6a65f8406f1aadb4569fbb8ff00a6e92d02

[gdb/testsuite] Fix index-cache.exp with cc-with-{gdb-index,debug-names}

In gdb.base/index-cache.exp, handle the case that binfile contains either a
.gdb_index or .debug_names index section.

Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names.

gdb/testsuite/ChangeLog:

2019-05-06  Tom de Vries  <tdevries@suse.de>

	* lib/gdb.exp (exec_has_index_section): New proc.
	* gdb.base/index-cache.exp: Handle case that binfile contains an index
	section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add load-link, store-conditional paired EVA instructions
@ 2019-05-06 14:09 sergiodj+buildbot
  2019-05-06 15:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-06 14:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41cee0897b670168e0d6f455c9bc45c73f8023df ***

Author: Faraz Shahbazker <fshahbazker@wavecomp.com>
Branch: master
Commit: 41cee0897b670168e0d6f455c9bc45c73f8023df

Add load-link, store-conditional paired EVA instructions

Add paired load-link and store-conditional instructions to the
EVA ASE for MIPS32R6[1].  These instructions are optional within
the EVA ASE.  Their presence is indicated by the XNP bit in the
Config5 register.

[1] "MIPS Architecture for Programmers Volume II-A: The MIPS32
     Instruction Set Manual", Imagination Technologies Ltd., Document
     Number: MD00086, Revision 6.06, December 15, 2016, Section 3.2
     "Alphabetical List of Instructions", pp. 230-231, pp. 357-360.

gas/
	* config/tc-mips.c (mips_set_ase): Handle ASE_EVA_R6.
	(macro) <M_LLWPE_AB, M_SCWPE_AB>: New cases.
	(mips_after_parse_args): Translate EVA to EVA_R6.
	* testsuite/gas/mips/ase-errors-1.s: Add new instructions.
	* testsuite/gas/mips/eva.s: Likewise.
	* testsuite/gas/mips/ase-errors-1.l: Check errors for
	 new instructions.
	* testsuite/gas/mips/mipsr6@eva.d: Check new test cases.

include/
	* opcode/mips.h (ASE_EVA_R6): New macro.
	(M_LLWPE_AB, M_SCWPE_AB): New enum values.

opcodes/
	* mips-dis.c (mips_calculate_combination_ases): Add ISA
	argument and set ASE_EVA_R6 appropriately.
	(set_default_mips_dis_options): Pass ISA to above.
	(parse_mips_dis_option): Likewise.
	* mips-opc.c (EVAR6): New macro.
	(mips_builtin_opcodes): Add llwpe, scwpe.

Derived from patch authored by Andrew Bennett <andrew.bennett@imgtec.com>


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix scoped_mmap includes
@ 2019-05-07  4:22 sergiodj+buildbot
  2019-05-07  8:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-07  4:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 26bfd82367d6ffeb1a61495ac445542e757df5b2 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 26bfd82367d6ffeb1a61495ac445542e757df5b2

Fix scoped_mmap includes

I noticed that scoped_mmap.h included config.h, and that scoped_mmap.c
included defs.h.  This patch fixes both of these problems.

Tested by the buildbot.

gdb/ChangeLog
2019-05-06  Tom Tromey  <tom@tromey.com>

	* common/scoped_mmap.c: Include common-defs.h.
	* common/scoped_mmap.h: Don't include config.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix .debug_aranges in dw2-case-insensitive-debug.S
@ 2019-05-07  9:16 sergiodj+buildbot
  2019-05-07 11:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-07  9:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 77e7aaa4bd980fb96244b874bc867e20b399fe60 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 77e7aaa4bd980fb96244b874bc867e20b399fe60

[gdb/testsuite] Fix .debug_aranges in dw2-case-insensitive-debug.S

When running gdb.dwarf2/dw2-case-insensitive.exp with target board
cc-with-debug-names, we run into:
...
FAIL: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off \
  (GDB internal error)
...
in more detail:
...
(gdb) info functions fUnC_lang
gdb/dwarf2read.c:5293: internal-error: \
  compunit_symtab* dw2_find_pc_sect_compunit_symtab(objfile*, \
  bound_minimal_symbol, CORE_ADDR, obj_section*, int): \
  Assertion `result != NULL' failed.
...

The problem is that the .debug_aranges section in dw2-case-insensitive-debug.S
contains a debug_info_offset which is set to 0:
...
        .section        .debug_aranges,"",@progbits
        .4byte  .Laranges_end - .Laranges_start
.Laranges_start:
        .2byte  0x2
        .4byte  0
...
while the compilation unit at offset 0 in the .debug_section of the executable
is in fact not the compilation unit generated from
dw2-case-insensitive-debug.S.

This happens when linked in object files contain dwarf info and are placed in
the .debug_info section before the compilation unit generated from
dw2-case-insensitive-debug.S.

Fix this by defining the debug_info_offset field using the label .Lcu1_begin
that defines the start of the compilation unit:
...
-       .4byte  0
+       .4byte  .Lcu1_begin
...

Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names.

gdb/testsuite/ChangeLog:

2019-05-07  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24522
	* gdb.dwarf2/dw2-case-insensitive-debug.S: Fix debug_info_offset in
	.debug_aranges section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix .debug_aranges in watch-loc.c
@ 2019-05-07  9:52 sergiodj+buildbot
  2019-05-07 14:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-07  9:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 75f06e9dc59d3f810e2afe2f47afbcb74204ef61 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 75f06e9dc59d3f810e2afe2f47afbcb74204ef61

[gdb/testsuite] Fix .debug_aranges in watch-loc.c

When running gdb.dlang/watch-loc.exp with target board cc-with-debug-names, we
run into:
...
FAIL: gdb.dlang/watch-loc.exp: disassemble _Dmain (GDB internal error)
...
in more detail:
...
(gdb) disassemble _Dmain
gdb/dwarf2read.c:5293: internal-error: \
  compunit_symtab* dw2_find_pc_sect_compunit_symtab(objfile*, \
  bound_minimal_symbol, CORE_ADDR, obj_section*, int): \
  Assertion `result != NULL' failed.
...

The problem is that the .debug_aranges section in watch-loc.c contains a
debug_info_offset which is set to 0:
...
asm (
  "      .pushsection    .debug_aranges,\"\",%progbits\n"
  "      .4byte  .Laranges_end - .Laranges_start\n"
  ".Laranges_start:\n"
  "      .2byte  0x2\n"
  "      .4byte  0\n"
...
while the compilation unit at offset 0 in the .debug_section in the executable
is in fact not the compilation unit generated from watch-loc-dw.S.

[ Note: this is a non-trivial test-case.  The file watch-loc-dw.S contains a
.debug_info section, but not an .debug_aranges section or any actual code.
The file watch-loc.c contains code and a .debug_aranges section, but no other
debug section.  So, the intent for the .debug_aranges section in watch-loc.c
is to refer to a compilation unit in the .debug_info section in
watch-loc-dw.S. ]

This happens when linked in object files contain dwarf info and are placed in
the .debug_info section before the compilation units generated from
watch-loc.c and watch-loc-dw.S.

Fix this by defining the debug_info_offset field using a label .Lcu1_begin
that defines the start of an empty .debug_section compilation unit:
...
 asm (
+  "      .pushsection    .debug_info,\"\",%progbits\n"
+  ".Lcu1_begin:"
+  "      .popsection\n"
   "      .pushsection    .debug_aranges,\"\",%progbits\n"
   "      .4byte  .Laranges_end - .Laranges_start \n"
   ".Laranges_start:\n"
   "      .2byte  0x2\n"
-  "      .4byte  0\n"
+  "      .4byte  .Lcu1_begin\n"
...
which during linking merges with the start of the .debug_info section of
watch-loc-dw.S.

Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names.

gdb/testsuite/ChangeLog:

2019-05-07  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24522
	* gdb.dlang/watch-loc.c: Fix debug_info_offset in .debug_aranges
	section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix ls_host return in index-cache.exp
@ 2019-05-07 10:09 sergiodj+buildbot
  2019-05-07 15:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-07 10:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7bd55dac80c2faced875119b60acfb51741e397e ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 7bd55dac80c2faced875119b60acfb51741e397e

[gdb/testsuite] Fix ls_host return in index-cache.exp

When adding a debug print here in index-cache.exp:
...
 proc_with_prefix test_cache_disabled { cache_dir } {
     lassign [ls_host $cache_dir] ret files_before
+    puts "before: '$files_before'"
+    exit
...
we have:
...
files_before: ''
...

When further adding:
...
 proc_with_prefix test_cache_disabled { cache_dir } {
+    exec touch $cache_dir/foo.1 $cache_dir/foo.2 $cache_dir/foo.3
...
we have:
...
files_before: 'foo.1'
...
while we're expecting file_before to contain foo.[123].

Fix this by making the return statement in ls_host return a list rather than a
string (in accordance with the ls_host documentation), after which we have:
...
files_before: 'foo.1 foo.2 foo.3'
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-07  Tom de Vries  <tdevries@suse.de>

	* gdb.base/index-cache.exp (ls_host): Fix return statement.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix VLA printing for Ada
@ 2019-05-08 16:34 sergiodj+buildbot
  2019-05-08 17:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 16:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 988915ee7b880ff059f849893b71118d9bd2c4fc ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 988915ee7b880ff059f849893b71118d9bd2c4fc

Fix VLA printing for Ada

While looking at a different Ada problem, I found that printing a
record containing a VLA did not work properly.

I tracked the problem down to dwarf2_evaluate_property trying, and
failing, to compare two types that differed only in qualifiers.

This patch changes dwarf2_evaluate_property to ignore qualifiers when
comparing types.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* dwarf2loc.c (dwarf2_evaluate_property) <PROP_ADDR_OFFSET>:
	Compare main types.

gdb/testsuite/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/vla.exp: New file.
	* gdb.ada/vla/vla.adb: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change ptype/o to print bit offset
@ 2019-05-08 17:16 sergiodj+buildbot
  2019-05-08 21:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 17:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9d3421afbb9f3cfc8e67366ba75ea12ed8f732a3 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 9d3421afbb9f3cfc8e67366ba75ea12ed8f732a3

Change ptype/o to print bit offset

Consider this short C example:

    struct inner
    {
      unsigned x;
      unsigned y : 3;
      unsigned z : 3;
    };

    struct outer
    {
      unsigned char o : 3;
      struct inner i __attribute__ ((packed));
    };

When I use "ptype/o" on this, I get:

    (gdb) ptype/o struct outer
    /* offset    |  size */  type = struct outer {
    /*    0: 5   |     1 */    unsigned char o : 3;
    /* XXX  5-bit hole  */
    /*    1      |     8 */    struct inner {
    /*    1      |     4 */        unsigned int x;
    /*    5:29   |     4 */        unsigned int y : 3;
    /*    5:26   |     4 */        unsigned int z : 3;
    /* XXX  2-bit padding  */
    /* XXX  3-byte padding */

				   /* total size (bytes):    8 */
			       } i;

			       /* total size (bytes):    9 */
			     }

In the location of "o" ("0: 5"), the "5" means "there are 5 bits left
relative to the size of the underlying type.

I find this very difficult to follow.  On irc, Sergio said that this
choice came because it is what pahole does.  However, I think it's not
very useful, and maybe is just an artifact of the way that
DW_AT_bit_offset was defined in DWARF 3.

This patch changes ptype/o to print the offset of a bitfield in a more
natural way, that is, using the bit number according to the platform's
bit numbering.

With this patch, the output is now:

    (gdb) ptype/o struct outer
    /* offset    |  size */  type = struct outer {
    /*    0: 0   |     1 */    unsigned char o : 3;
    /* XXX  5-bit hole  */
    /*    1      |     8 */    struct inner {
    /*    1      |     4 */        unsigned int x;
    /*    5: 0   |     4 */        unsigned int y : 3;
    /*    5: 3   |     4 */        unsigned int z : 3;
    /* XXX  2-bit padding  */
    /* XXX  3-byte padding */

				   /* total size (bytes):    8 */
			       } i;

			       /* total size (bytes):    9 */
			     }

This is better, IMO, because now the "offset" of a bitfield is
consistent with the offset of an ordinary member, referring to its
offset from the start of the structure.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* typeprint.c (print_offset_data::update): Print the bit offset,
	not the number of bits remaining.

gdb/doc/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* gdb.texinfo (Symbols): Document change to ptype/o.

gdb/testsuite/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* gdb.base/ptype-offsets.exp: Update tests.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Correctly handle non-C-style arrays in c_get_string
@ 2019-05-08 17:32 sergiodj+buildbot
  2019-05-08 23:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 17:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 80e55b132940813fa454da2592a31db6c8af85f1 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 80e55b132940813fa454da2592a31db6c8af85f1

Correctly handle non-C-style arrays in c_get_string

A user here noticed that the Python Value.string method did not work
for Ada arrays.  I tracked this down to an oddity in value_as_address
-- namely, it calls coerce_array, but that function will not force
array coercion when the language has c_style_arrays=false, as Ada
does.

This patch fixes the problem by changing c_get_string so that arrays
take the "in GDB's memory" branch.  The actual patch is somewhat more
complicated than you might think, because the caller can request more
array elements than the type allows.  This is normal when the type is
using the C struct hack.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* c-lang.c (c_get_string): Handle non-C-style arrays.

gdb/testsuite/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* gdb.python/py-value.exp (test_value_in_inferior): Add Ada test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix build problem in fputs_maybe_filtered
@ 2019-05-08 18:11 sergiodj+buildbot
  2019-05-09  3:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 18:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ca1df239078318425cf8038995bf02f1b9ab6e50 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: ca1df239078318425cf8038995bf02f1b9ab6e50

Fix build problem in fputs_maybe_filtered

When merging commit 99f20f ("Fix style bug when paging") to master, I
had to make some changes to get it to compile again.  Unfortunately, I
must not have added these to the index at the correct time, because
they were not committed.

This patch fixes the problem.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* utils.c (fputs_maybe_filtered): Call can_emit_style_escape as a
	method.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move "watchdog" to remote.c
@ 2019-05-08 19:04 sergiodj+buildbot
  2019-05-09  9:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 19:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ed2b7c1703246eef1ce6b393ced99fe267cbeb7b ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: ed2b7c1703246eef1ce6b393ced99fe267cbeb7b

Move "watchdog" to remote.c

The "watchdog" global is only used in remote.c, so this patch moves it
there and makes it static.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* maint.c (_initialize_maint_cmds): Move initialization code to
	remote.c.
	(watchdog, show_watchdog): Move to remote.c.
	* remote.c (watchdog, show_watchdog): Move from maint.c.  Make
	"watchdog" static.
	(_initialize_remote): Move initialization code from maint.c.
	* defs.h (watchdog): Don't declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] When debugging a mixed Ada/C program using this scenario:
@ 2019-05-08 19:38 sergiodj+buildbot
  2019-05-09 12:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 19:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2228ef7700e81bfedbffe352f3efa3716224cdbe ***

Author: Xavier Roirand <roirand@adacore.com>
Branch: master
Commit: 2228ef7700e81bfedbffe352f3efa3716224cdbe

When debugging a mixed Ada/C program using this scenario:

- set print frame-arguements all
- an Ada function named pck.call_me calls a C function named break_me
- you put a breakpoint in break_me and the program reaches this
  breakpoint.

Now display the backtrace:

  (gdb) bt
  #0  break_me () at [...]
  #1  0x000000000040243e in pck.call_me (
      s={P_ARRAY = 0x7fffffffe21c, P_BOUNDS = 0x41e6e8}) at [...]

whereas we should expect:

  (gdb) bt
  #0  break_me () at [...]
  #1  0x000000000040243e in pck.call_me (s="test") at [...]

The problem is that GDB prints the S parameter in the pck.call_me Ada
function using the current language, so the C one, because the program
is stopped in a C function, whereas it should use the pck.call_me frame
one. This behavior is ok when user manually changes the language but it's
not the right one when language is auto.

This patch fixes this problem so now when using auto language, all Ada
frame arguments are printed using Ada like syntax when the frame is part
of Ada code, even if the program is stopped in a frame using a different
language.

If the user explicitly sets a language (using "set language ...") then
no change here, all the Ada frame arguments are printed using this
language.

gdb/ChangeLog:

    * ada-valprint.c (ada_val_print_gnat_array): Remove language
    parameter and use Ada language definition instead.
    (ada_val_print_ptr): Remove unused language parameter.
    (ada_val_print_num): Remove language parameter and use Ada language
    definition instead.
    (ada_val_print_enum, ada_val_print_flt): Remove unused language
    parameter.
    (ada_val_print_struct_union, ada_val_print_ref): Remove language
    parameter and use Ada language definition instead.
    (ada_val_print_1): Update all ada_val_print_xxx calls.
    Remove language parameter.
    (ada_val_print): Update ada_val_print_1 call.

gdb/testsuite/ChangeLog:

    * gdb.ada/frame_arg_lang.exp: New testcase.
    * gdb.ada/frame_arg_lang/bla.adb: New file.
    * gdb.ada/frame_arg_lang/pck.ads: New file.
    * gdb.ada/frame_arg_lang/pck.adb: New file.
    * gdb.ada/frame_arg_lang/foo.c: New file.

Tested on x86_64-linux, no regressions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Merge two 'New commands' sections in NEWS file
@ 2019-05-08 20:19 sergiodj+buildbot
  2019-05-09 14:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 20:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1bd0c6e4964f68523794aded05aa4d184db44d48 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 1bd0c6e4964f68523794aded05aa4d184db44d48

gdb: Merge two 'New commands' sections in NEWS file

Commit 2e62ab400ff9 added a second 'New commands' section to the NEWS
file, this commit merges the two together.

gdb/ChangeLog:

	* NEWS: Merge two 'New commands' sections.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert symbol_cache to type-safe registry API
@ 2019-05-08 22:58 sergiodj+buildbot
  2019-05-09 20:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 22:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3017b94d60f1e8929886be6992547973ad354f4c ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 3017b94d60f1e8929886be6992547973ad354f4c

Convert symbol_cache to type-safe registry API

This changes the symbol_cache to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* symtab.c (struct symbol_cache): Add destructor and
	initializers.
	(symbol_cache_key): Move.  Change type.
	(make_symbol_cache, free_symbol_cache): Remove.
	(get_symbol_cache): Update.
	(symbol_cache_cleanup): Remove.
	(ALL_PSPACES, symbol_cache_flush)
	(maintenance_print_symbol_cache)
	(maintenance_print_symbol_cache_statistics, _initialize_symtab):
	Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't declare read_unsigned_leb128 in defs.h
@ 2019-05-08 23:06 sergiodj+buildbot
  2019-05-09  5:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 23:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 587ee17bd492a324c927437fb561b99b274e1d8e ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 587ee17bd492a324c927437fb561b99b274e1d8e

Don't declare read_unsigned_leb128 in defs.h

I noticed that read_unsigned_leb128 is declared in defs.h.  There's no
reason this should be here, so this patch moves it to dwarf2read.h.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* dwarf2loc.c: Include dwarf2read.h.
	* defs.h (read_unsigned_leb128): Don't declare.
	* dwarf2read.h (read_unsigned_leb128): Declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert inflow to type-safe registry API
@ 2019-05-08 23:31 sergiodj+buildbot
  2019-05-09 23:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 23:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6509b8ebfb19769d726c16eb3a8967ac6784f621 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6509b8ebfb19769d726c16eb3a8967ac6784f621

Convert inflow to type-safe registry API

This changes inflow.c to use the type-safe registry API.  This fixes a
latent bug in swap_terminal_info, which previously said:

  terminal_info *info_a
    = (terminal_info *) inferior_data (a, inflow_inferior_data);
  terminal_info *info_b
    = (terminal_info *) inferior_data (a, inflow_inferior_data);

... both of which examine 'a'.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* inflow.c (struct terminal_info): Add destructor and
	initializers.
	(inflow_inferior_data): Change type.
	(~terminal_info): Rename from inflow_inferior_data_cleanup.
	(get_inflow_inferior_data, inflow_inferior_exit)
	(swap_terminal_info, _initialize_inflow): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert break-catch-syscall.c to type-safe registry API
@ 2019-05-08 23:46 sergiodj+buildbot
  2019-05-10  1:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 23:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6ae614f66a0a86c9e83b9f40ee1f4e105b681f7b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6ae614f66a0a86c9e83b9f40ee1f4e105b681f7b

Convert break-catch-syscall.c to type-safe registry API

This changes break-catch-syscall.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* break-catch-syscall.c (catch_syscall_inferior_data): Move.
	Change type.
	(get_catch_syscall_inferior_data): Update.
	(catch_syscall_inferior_data_cleanup): Remove.
	(_initialize_break_catch_syscall): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move interpreter_p declaration to main.h
@ 2019-05-08 23:56 sergiodj+buildbot
  2019-05-09  7:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-08 23:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b0be6c912f9e901a87740c72f18be1e54ad5267d ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: b0be6c912f9e901a87740c72f18be1e54ad5267d

Move interpreter_p declaration to main.h

This moves the interpreter_p declaration from defs.h to main.h.  I
think this makes more sense, as it is defined in main.c.  Also, this
declaration was in the wrong place -- between a comment and the things
the comment described.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tromey@adacore.com>

	* tui/tui-interp.c: Include main.h.
	* interps.c: Include main.h.
	* main.h (interpreter_p): Declare.
	* defs.h (interpreter_p): Don't declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert auto-load.c to type-safe registry API
@ 2019-05-09  0:18 sergiodj+buildbot
  2019-05-10  5:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  0:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e85e19b4d7d9b3b322f27684f8c0a3a9ac0e57ab ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e85e19b4d7d9b3b322f27684f8c0a3a9ac0e57ab

Convert auto-load.c to type-safe registry API

This changes auto-load.c to use the type-safe registry API.  It also
changes a couple of types to "bool", removing uses of "FALSE".

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* auto-load.c (struct auto_load_pspace_info): Add destructor and
	initializers.
	<unsupported_script_warning_printed,
	script_not_found_warning_printed>: Now bool.
	(auto_load_pspace_data): Change type.
	(~auto_load_pspace_info): Rename from
	auto_load_pspace_data_cleanup.
	(get_auto_load_pspace_data, init_loaded_scripts_info)
	(clear_section_scripts, maybe_print_unsupported_script_warning)
	(maybe_print_script_not_found_warning, _initialize_auto_load):
	Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert dwarf2_per_objfile to type-safe registry API
@ 2019-05-09  0:36 sergiodj+buildbot
  2019-05-10  7:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  0:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5bfd760d66c816d53a930635a84990c8536bb545 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5bfd760d66c816d53a930635a84990c8536bb545

Convert dwarf2_per_objfile to type-safe registry API

This changes dwarf2_per_objfile to use the type-safe registry API.
This also changes dwarf2_per_objfile not to be allocated on an
obstack.  It seemed clearer to me to simply allocate it on the heap;
and I didn't see a drawback from doing so.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* dwarf2read.h (struct dwarf2_per_objfile): Don't inherit from
	allocate_on_obstack.
	* dwarf2read.c (dwarf2_objfile_data_key): Change type.
	(get_dwarf2_per_objfile): Update.
	(set_dwarf2_per_objfile): Remove.
	(dwarf2_has_info, dwarf2_get_section_info): Update.
	(dwarf2_free_objfile): Remove.
	(_initialize_dwarf2_read): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert auxv.c to type-safe registry API
@ 2019-05-09  1:11 sergiodj+buildbot
  2019-05-10 11:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  1:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e9b89e2d01043108283df02261ed718aae705bc8 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e9b89e2d01043108283df02261ed718aae705bc8

Convert auxv.c to type-safe registry API

This changes auxv.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* auxv.c (auxv_inferior_data): Move.  Change type.
	(auxv_inferior_data_cleanup): Remove.
	(invalidate_auxv_cache_inf): Rewrite.
	(get_auxv_inferior_data, _initialize_auxv): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert breakpoint.c to type-safe registry API
@ 2019-05-09  1:46 sergiodj+buildbot
  2019-05-10 14:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  1:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 51d3063a35fad1fa0cd53c167bb5a4325afeea16 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 51d3063a35fad1fa0cd53c167bb5a4325afeea16

Convert breakpoint.c to type-safe registry API

This changes breakpoint.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (breakpoint_objfile_key): Change type.
	(get_breakpoint_objfile_data): Update.
	(free_breakpoint_objfile_data): Remove.
	(_initialize_breakpoint): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert remote.c to type-safe registry API
@ 2019-05-09  2:03 sergiodj+buildbot
  2019-05-10 15:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  2:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7b4a314f8b9b50c2289ca6b5d21513052c48730b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7b4a314f8b9b50c2289ca6b5d21513052c48730b

Convert remote.c to type-safe registry API

This changes remote.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* remote.c (remote_pspace_data): Change type.
	(remote_pspace_data_cleanup): Remove.
	(get_remote_exec_file, set_pspace_remote_exec_file)
	(_initialize_remote): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert probes to type-safe registry API
@ 2019-05-09  2:52 sergiodj+buildbot
  2019-05-10 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  2:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 814cf43a1f16157fcbe2c662f567d064393a0fcb ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 814cf43a1f16157fcbe2c662f567d064393a0fcb

Convert probes to type-safe registry API

This changes the probes code in elfread.c to use the type-safe
registry API.  While doing this, I saw that the caller of get_probes
owns the probes, so I went through the code and changed the vectors to
store unique_ptrs, making the ownership relationship more clear.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* symfile.h (struct sym_probe_fns) <sym_get_probes>: Change type.
	* symfile-debug.c (debug_sym_get_probes): Change type.
	* stap-probe.c (handle_stap_probe):
	(stap_static_probe_ops::get_probes): Change type.
	* probe.h (class static_probe_ops) <get_probes>: Change type.
	* probe.c (class any_static_probe_ops) <get_probes>: Change type.
	(parse_probes_in_pspace): Update.
	(find_probes_in_objfile, find_probe_by_pc, collect_probes):
	Update.
	(any_static_probe_ops::get_probes): Change type.
	* elfread.c (elfread_data): New typedef.
	(probe_key): Change type.
	(elf_get_probes): Likewise.  Update.
	(probe_key_free): Remove.
	(_initialize_elfread): Update.
	* dtrace-probe.c (class dtrace_static_probe_ops) <get_probes>:
	Change type.
	(dtrace_process_dof_probe, dtrace_process_dof)
	(dtrace_static_probe_ops::get_probe): Change type.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert ada-lang.c to type-safe registry API
@ 2019-05-09  4:18 sergiodj+buildbot
  2019-05-11  5:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  4:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f37b313d5cafbed4e724db4724d1ab567b373be4 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: f37b313d5cafbed4e724db4724d1ab567b373be4

Convert ada-lang.c to type-safe registry API

This changes ada-lang.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* ada-lang.c (struct ada_inferior_data): Add initializers.
	(ada_inferior_data): Change type.
	(ada_inferior_data_cleanup): Remove.
	(get_ada_inferior_data, ada_inferior_exit)
	(struct ada_pspace_data): Add initializers, destructor.
	(ada_pspace_data_handle): Change type.
	(get_ada_pspace_data): Update.
	(ada_pspace_data_cleanup): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a noop deleter
@ 2019-05-09  4:52 sergiodj+buildbot
  2019-05-11  7:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  4:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 31930bd34d15dd22c5ef47b46d8bc95a5ec34d0e ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 31930bd34d15dd22c5ef47b46d8bc95a5ec34d0e

Add a noop deleter

This adds a no-op deleter, which is used in subsequent patches.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* common/gdb_unique_ptr.h (struct noop_deleter): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a type-safe C++ interface to a registry
@ 2019-05-09  4:53 sergiodj+buildbot
  2019-05-09 16:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  4:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5f6e90a0cec8c269634ba0bff3c9e549a903c39a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 5f6e90a0cec8c269634ba0bff3c9e549a903c39a

Add a type-safe C++ interface to a registry

This changes DECLARE_REGISTRY to add a type-safe interface.  This
interface is a C++ class that handles the details of registering a
key, and provides various useful methods, including policy-based
cleanup.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* registry.h (DECLARE_REGISTRY): Define the _key class.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert mdebugread.c to type-safe registry API
@ 2019-05-09  5:09 sergiodj+buildbot
  2019-05-11  9:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  5:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 91d3055d8b77d56cf64f85ace4237a0ccca98a4a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 91d3055d8b77d56cf64f85ace4237a0ccca98a4a

Convert mdebugread.c to type-safe registry API

This changes mdebugread.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* mdebugread.c (basic_type_data): Change type.
	(basic_type, _initialize_mdebugread): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert elfread.c to type-safe registry API
@ 2019-05-09  5:25 sergiodj+buildbot
  2019-05-11 11:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  5:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8127a2fab5780f27a1c9998b0be4d8b5c28c1603 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8127a2fab5780f27a1c9998b0be4d8b5c28c1603

Convert elfread.c to type-safe registry API

This changes elfread.c to use the type-safe registry API.  This also
fixes a potential memory leak, by changing the hash table so that it
is no longer allocated on an obstack.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* elfread.c (elf_objfile_gnu_ifunc_cache_data): Change type.
	(elf_gnu_ifunc_record_cache): Update.  Don't allocate hash table
	on obstack.
	(elf_gnu_ifunc_resolve_by_cache, _initialize_elfread): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert hppa-tdep.c to type-safe registry API
@ 2019-05-09  5:43 sergiodj+buildbot
  2019-05-11 13:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  5:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9a73f0ad6ca2a9c027f30fca3d79fa958784dcbf ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 9a73f0ad6ca2a9c027f30fca3d79fa958784dcbf

Convert hppa-tdep.c to type-safe registry API

This changes hppa-tdep.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* hppa-tdep.c (hppa_objfile_priv_data): Change type.
	(hppa_init_objfile_priv_data, read_unwind_info)
	(find_unwind_entry, _initialize_hppa_tdep): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert stabsread.c to type-safe registry API
@ 2019-05-09  6:17 sergiodj+buildbot
  2019-05-11 17:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  6:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d772d2abcc163142fc38655896c4704b06dae0b6 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d772d2abcc163142fc38655896c4704b06dae0b6

Convert stabsread.c to type-safe registry API

This changes stabsread.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* stabsread.c (rs6000_builtin_type_data): Change type.
	(rs6000_builtin_type, _initialize_stabsread): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert objc-lang.c to type-safe registry API
@ 2019-05-09  6:34 sergiodj+buildbot
  2019-05-11 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  6:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4c58e3376da3fedaca81f8c9386f3ccb81261f8a ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 4c58e3376da3fedaca81f8c9386f3ccb81261f8a

Convert objc-lang.c to type-safe registry API

This changes objc-lang.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* objc-lang.c (objc_objfile_data): Change type.
	(find_methods): Update.
	(_initialize_objc_lang): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert gdbtypes.c to type-safe registry API
@ 2019-05-09  7:05 sergiodj+buildbot
  2019-05-11 22:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  7:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7a1021395e0ef7a92e1653533b753a2221396015 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 7a1021395e0ef7a92e1653533b753a2221396015

Convert gdbtypes.c to type-safe registry API

This changes gdbtypes.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* gdbtypes.c (objfile_type_data): Change type.
	(objfile_type, _initialize_gdbtypes): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb.arch/amd64-entry-value-paramref.S
@ 2019-05-09  7:22 sergiodj+buildbot
  2019-05-12  0:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  7:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9cfd2b89bd3fe943a87d5425d0bb0f8b14c85eb6 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 9cfd2b89bd3fe943a87d5425d0bb0f8b14c85eb6

[gdb/testsuite] Fix gdb.arch/amd64-entry-value-paramref.S

The file gdb.arch/amd64-entry-value-paramref.S contains a DIE for function
bar:
...
DIE29:  .uleb128 0x2    # (DIE (0x29) DW_TAG_subprogram)
        .ascii "bar\0"  # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (gdb.arch/amd64-entry-value-paramref.cc)
        .byte   0x15    # DW_AT_decl_line
        .long   DIE45   # DW_AT_type
        .byte   0x1     # DW_AT_inline
...
which refers to DIE45:
...
DIE45:	.uleb128 0x4	# (DIE (0x45) DW_TAG_base_type)
	.byte	0x4	# DW_AT_byte_size
	.byte	0x5	# DW_AT_encoding
	.ascii "int\0"	# DW_AT_name
...
using a form DW_FORM_ref4:
...
	.uleb128 0x2	# (abbrev code)
	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
	.byte	0x1	# DW_children_yes
	...
	.uleb128 0x49	# (DW_AT_type)
	.uleb128 0x13	# (DW_FORM_ref4)
...

However, the DW_FORM_ref4 is a CU-relative reference, while using a label for
the value will result in a section-relative value.

So, if linked in object files contain dwarf info and are placed in the
.debug_info section before the compilation units generated from
amd64-entry-value-paramref.S, then the referenced type is at 0x108:
...
 <1><108>: Abbrev Number: 4 (DW_TAG_base_type)
    <109>   DW_AT_byte_size   : 4
    <10a>   DW_AT_encoding    : 5       (signed)
    <10b>   DW_AT_name        : int
...
but the reference will point to a non-existing DIE at 0x1cf:
...
 <1><f0>: Abbrev Number: 2 (DW_TAG_subprogram)
    <f1>   DW_AT_name        : bar
    <f5>   DW_AT_decl_file   : 1
    <f6>   DW_AT_decl_line   : 21
    <f7>   DW_AT_type        : <0x1cf>
    <fb>   DW_AT_inline      : 1        (inlined)
...
which happens to cause a GDB internal error described in PR23270 - "GDB
internal error: dwarf2read.c:18656: internal-error: could not find partial
DIE 0x1b7 in cache".

Fix the invalid DWARF by making the reference value CU-relative:
...
-       .long   DIE45   # DW_AT_type
+       .long   DIE45 - .Ldebug_info0   # DW_AT_type
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-09  Tom de Vries  <tdevries@suse.de>

	* gdb.arch/amd64-entry-value-paramref.S: Make DW_FORM_ref4 references
	CU-relative.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert objfiles.c to type-safe registry API
@ 2019-05-09  9:44 sergiodj+buildbot
  2019-05-10  3:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09  9:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f6aa7436201194e80e8d7761e6d88ecf0ec1e327 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: f6aa7436201194e80e8d7761e6d88ecf0ec1e327

Convert objfiles.c to type-safe registry API

This changes objfiles.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* objfiles.c (objfile_pspace_info): Add destructor and
	initializers.
	(objfiles_pspace_data): Change type.
	(~objfile_pspace_info): Rename from objfiles_pspace_data_cleanup.
	(get_objfile_pspace_data): Update.
	(objfiles_bfd_data): Change type.
	(get_objfile_bfd_data): Update.
	(objfile_bfd_data_free, _initialize_objfiles): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New iclass sve_size_hsd2.
@ 2019-05-09 10:37 sergiodj+buildbot
  2019-05-12  7:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 10:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3bd82c86f0f432bd7653101069bf056fda14b7cd ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 3bd82c86f0f432bd7653101069bf056fda14b7cd

[binutils][aarch64] New iclass sve_size_hsd2.

Add "sve_size_hsd2" iclass decode that uses the new FLD_SVE_size field
value to determine the variant of an instruction.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_hsd2 iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_encode_variant_using_iclass): Handle
	sve_size_hsd2 iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_size_hsd2 iclass decode.
	* aarch64-opc.c (fields): Handle SVE_size field.
	* aarch64-opc.h (enum aarch64_field_kind): New SVE_size field.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New SVE_Zm3_11_INDEX operand.
@ 2019-05-09 10:53 sergiodj+buildbot
  2019-05-12  9:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 10:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 116adc27470ed3682b6236e44e3b18838673036c ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 116adc27470ed3682b6236e44e3b18838673036c

[binutils][aarch64] New SVE_Zm3_11_INDEX operand.

Introduce new operand SVE_Zm3_11_INDEX that indicates a register between
z0-z7 stored in bits 18-16 and an index stored in bits 20-19:11.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (parse_operands): Handle new SVE_Zm3_11_INDEX
	operand.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): New SVE_Zm3_11_INDEX operand.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-opc.c (operand_general_constraint_met_p): Constraint checking
	for SVE_Zm3_11_INDEX.
	(aarch64_print_operand): Add printing for SVE_Zm3_11_INDEX.
	(fields): Handle SVE_i3l and SVE_i3h2 fields.
	* aarch64-opc.h (enum aarch64_field_kind): New SVE_i3l and SVE_i3h2
	fields.
	* aarch64-tbl.h (AARCH64_OPERANDS): Use new SVE_Zm3_11_INDEX operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New sve_size_sd2 iclass.
@ 2019-05-09 11:25 sergiodj+buildbot
  2019-05-12 12:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 11:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0a57e14ffa4c2900f64780375282dc5dc493e250 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 0a57e14ffa4c2900f64780375282dc5dc493e250

[binutils][aarch64] New sve_size_sd2 iclass.

Define new sve_size_sd2 iclass to distinguish between the two variants
of ldnt1sb and ldnt1sh.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_sd2 iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_encode_variant_using_iclass): Handle
	sve_size_sd2 iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_size_sd2 iclass decode.
	* aarch64-opc.c (fields): Handle SVE_sz2 field.
	* aarch64-opc.h (enum aarch64_field_kind): New SVE_sz2 field.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New sve_size_013 iclass.
@ 2019-05-09 11:57 sergiodj+buildbot
  2019-05-12 16:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 11:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd50a87ae29f163e7d254729a902a5e51fcccbbc ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: cd50a87ae29f163e7d254729a902a5e51fcccbbc

[binutils][aarch64] New sve_size_013 iclass.

Add sve_size_013 instruction class

This new iclass handles instructions such as pmullb whose size specifier
can only be encoded as 0, 1, or 3.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_013 iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_encode_variant_using_iclass): Handle
	sve_size_013 iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_size_013 iclass decode.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New SVE_SHRIMM_UNPRED_22 operand.
@ 2019-05-09 12:14 sergiodj+buildbot
  2019-05-12 17:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 12:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3c17238bc9fe8a078a6199470291f07bab9c64c8 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 3c17238bc9fe8a078a6199470291f07bab9c64c8

[binutils][aarch64] New SVE_SHRIMM_UNPRED_22 operand.

Include a new iclass to extract the variant from the most significant 3
bits of this operand.

Instructions such as rshrnb include a constant shift amount as an
operand, where the most significant three bits of this operand determine
what size elements the instruction is operating on.

The new SVE_SHRIMM_UNPRED_22 operand denotes this constant encoded in
bits 22:20-19:18-16 while the new sve_shift_tsz_hsd iclass denotes that
the SVE qualifier is encoded in bits 22:20-19.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (parse_operands): Handle new SVE_SHRIMM_UNPRED_22
	operand.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): New SVE_SHRIMM_UNPRED_22
	operand.
	(enum aarch64_insn_class): Add sve_shift_tsz_hsd iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-asm.c (aarch64_ins_sve_shrimm):
	(aarch64_encode_variant_using_iclass): Handle
	sve_shift_tsz_hsd iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_shift_tsz_hsd iclass decode.
	* aarch64-opc.c (operand_general_constraint_met_p): Constraint checking
	for SVE_SHRIMM_UNPRED_22.
	(aarch64_print_operand): Add printing for SVE_SHRIMM_UNPRED_22.
	* aarch64-tbl.h (AARCH64_OPERANDS): Use new SVE_SHRIMM_UNPRED_22
	operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert symfile-debug.c to type-safe registry API
@ 2019-05-09 12:22 sergiodj+buildbot
  2019-05-10  8:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 12:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8c42777cd8e1557ffb29fe9c172edd8cc1de14b7 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 8c42777cd8e1557ffb29fe9c172edd8cc1de14b7

Convert symfile-debug.c to type-safe registry API

This changes symfile-debug.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* symfile-debug.c (struct debug_sym_fns_data): Add initializers.
	(symfile_debug_objfile_data_key): Change type.
	(symfile_debug_installed, debug_qf_has_symbols)
	(debug_qf_find_last_source_symtab)
	(debug_qf_forget_cached_source_info)
	(debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol)
	(debug_qf_print_stats, debug_qf_dump)
	(debug_qf_expand_symtabs_for_function)
	(debug_qf_expand_all_symtabs)
	(debug_qf_expand_symtabs_with_fullname)
	(debug_qf_map_matching_symbols)
	(debug_qf_expand_symtabs_matching)
	(debug_qf_find_pc_sect_compunit_symtab)
	(debug_qf_map_symbol_filenames)
	(debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes)
	(debug_sym_new_init, debug_sym_init, debug_sym_read)
	(debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets)
	(debug_sym_read_linetable, debug_sym_relocate): Update.
	(symfile_debug_free_objfile): Remove.
	(install_symfile_debug_logging, _initialize_symfile_debug):
	Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New sve_size_tsz_bhs iclass.
@ 2019-05-09 13:14 sergiodj+buildbot
  2019-05-12 23:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 13:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fd1dc4a0c1b87c1efa7e0398fd47fd1e87fa0fb4 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: fd1dc4a0c1b87c1efa7e0398fd47fd1e87fa0fb4

[binutils][aarch64] New sve_size_tsz_bhs iclass.

Add sve_size_tsz_bhs iclass needed for sqxtnb and similar instructions.
This iclass encodes one of three variants by the most significant bit
set in a 3-bit value where only one bit may be set.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_tsz_bhs
	iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_encode_variant_using_iclass): Handle
	sve_size_tsz_bhs iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_size_tsz_bhs iclass decode.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New SVE_SHLIMM_UNPRED_22 operand.
@ 2019-05-09 13:21 sergiodj+buildbot
  2019-05-13  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 13:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 28ed815ad2b0cb93eede83022269d6a60b9cdf31 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 28ed815ad2b0cb93eede83022269d6a60b9cdf31

[binutils][aarch64] New SVE_SHLIMM_UNPRED_22 operand.

New operand describes a shift-left immediate encoded in bits
22:20-19:18-16 where UInt(bits) - esize == shift.
This operand is useful for instructions like sshllb.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (parse_operands): Handle new SVE_SHLIMM_UNPRED_22
	operand.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): New SVE_SHLIMM_UNPRED_22
	operand.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-opc.c (operand_general_constraint_met_p): Constraint checking
	for SVE_SHLIMM_UNPRED_22.
	(aarch64_print_operand): Add printing for SVE_SHLIMM_UNPRED_22.
	* aarch64-tbl.h (AARCH64_OPERANDS): Use new SVE_SHLIMM_UNPRED_22
	operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb.arch/amd64-tailcall-self.S
@ 2019-05-09 13:53 sergiodj+buildbot
  2019-05-13  4:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 13:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 63b667adb4a915f13ec3ace77af4b9cbd76bceac ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 63b667adb4a915f13ec3ace77af4b9cbd76bceac

[gdb/testsuite] Fix gdb.arch/amd64-tailcall-self.S

The test-case gdb.arch/amd64-tailcall-self.exp fails here:
...
if ![runto b] {
    return -1
}
...
like:
...
(gdb) file build/gdb/testsuite/outputs/gdb.arch/amd64-tailcall-self/\
  amd64-tailcall-self
Reading symbols from build/gdb/testsuite/outputs/gdb.arch/\
  amd64-tailcall-self/amd64-tailcall-self...
Dwarf Error: Cannot find DIE at 0x1f5 referenced from DIE at 0x107 [in \
  module build/gdb/testsuite/outputs/gdb.arch/amd64-tailcall-self/\
  amd64-tailcall-self]
...

The problem is that in amd64-tailcall-self.S, CU-relative references are
assigned .debug_info section relative values.  [ This is similar to the
problem fixed by "Fix gdb.arch/amd64-entry-value-paramref.S". ]

Fix this by assigning CU-relative references instead.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-09  Tom de Vries  <tdevries@suse.de>

	* gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references
	CU-relative.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert solib-svr4.c to type-safe registry API
@ 2019-05-09 17:08 sergiodj+buildbot
  2019-05-10 17:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 17:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 092324387247f92c66f25a3e1927cf8821bb4943 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 092324387247f92c66f25a3e1927cf8821bb4943

Convert solib-svr4.c to type-safe registry API

This changes solib-svr4y.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* solib-svr4.c (struct svr4_info): Add initializers and
	destructor.
	<probes_table>: Now an htab_up.
	(solib_svr4_pspace_data): Change type.
	(free_probes_table): Simplify.
	(~svr4_info): Rename from svr4_pspace_data_cleanup.
	(get_svr4_info, probes_table_htab_remove_objfile_probes)
	(probes_table_remove_objfile_probes, register_solib_event_probe)
	(solib_event_probe_at, svr4_update_solib_event_breakpoint)
	(_initialize_svr4_solib): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert xcoffread.c to type-safe registry API
@ 2019-05-09 18:08 sergiodj+buildbot
  2019-05-10 19:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 18:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 02dc647ed65b1429b9af4986ed467f90fbe0c33b ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 02dc647ed65b1429b9af4986ed467f90fbe0c33b

Convert xcoffread.c to type-safe registry API

This changes xcoffread.c to use the type-safe registry API.  It also
renames coff_symfile_info to xcoff_symfile_info, to avoid any possible
ODR violation.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (struct xcoff_symfile_info): Rename from
	coff_symfile_info.  Add initializers.
	(xcoff_objfile_data_key): Move lower.  Change type.
	(XCOFF_DATA): Rewrite.
	(xcoff_free_info): Remove.
	(xcoff_symfile_init, _initialize_xcoffread, read_xcoff_symtab)
	(read_symbol, read_symbol_lineno, find_linenos, init_stringtab)
	(xcoff_initial_scan): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert coffread.c to type-safe registry API
@ 2019-05-09 21:53 sergiodj+buildbot
  2019-05-11  2:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 21:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 246994051b6659bf9f4c89b5d5ede86717c5bbef ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 246994051b6659bf9f4c89b5d5ede86717c5bbef

Convert coffread.c to type-safe registry API

This changes coffread.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* coffread.c (struct coff_symfile_info): Add initializers.
	(coff_objfile_data_key): Move lower.  Change type.
	(coff_symfile_init, coff_symfile_read, _initialize_coffread):
	Update.
	(coff_free_info): Remove.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert nto-tdep.c to type-safe registry API
@ 2019-05-09 23:40 sergiodj+buildbot
  2019-05-11  6:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-09 23:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bdb3ed9e634d3db8164d90dee12bc8b5e2458786 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: bdb3ed9e634d3db8164d90dee12bc8b5e2458786

Convert nto-tdep.c to type-safe registry API

This changes nto-tdep.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* nto-tdep.c (nto_inferior_data_reg): Change type.
	(nto_inferior_data): Update.
	(nto_inferior_data_cleanup, nto_new_inferior_data)
	(_initialize_nto_tdep): Remove.
	* nto-tdep.h (struct nto_inferior_data): Add initializers.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove mips_pdr_data
@ 2019-05-10  3:57 sergiodj+buildbot
  2019-05-11 15:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10  3:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d11d83f47bad5dfc959ac60b3619017ac60bdaf9 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: d11d83f47bad5dfc959ac60b3619017ac60bdaf9

Remove mips_pdr_data

mips_pdr_data is unused, so this patch removes it.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* mips-tdep.c (mips_pdr_data): Remove.
	(_initialize_mips_tdep): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert dwarf2-frame.c to type-safe registry API
@ 2019-05-10  6:46 sergiodj+buildbot
  2019-05-11 20:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10  6:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 924d79e23306bb85fd1dd78564f4779fd3aeec56 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 924d79e23306bb85fd1dd78564f4779fd3aeec56

Convert dwarf2-frame.c to type-safe registry API

This changes dwarf2-frame.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

	* dwarf2-frame.c (dwarf2_frame_objfile_data): Change type.
	(dwarf2_frame_find_fde, dwarf2_build_frame_info)
	(_initialize_dwarf2_frame): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] SVE2 feature extension flags.
@ 2019-05-10 12:03 sergiodj+buildbot
  2019-05-12  3:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10 12:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7ce2460a77a8f66a145c11522f494f3262255390 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 7ce2460a77a8f66a145c11522f494f3262255390

[binutils][aarch64] SVE2 feature extension flags.

Include all feature flag macros.

The "sve2" extension that enables the core sve2 instructions.
This also enables the sve extension, since sve is a requirement of sve2.

Extra optional sve2 features are the bitperm, sm4, aes, and sha3 extensions.
These are all given extra feature flags, "bitperm", "sve2-sm4",
"sve2-aes", and "sve2-sha3" respectively.
The sm4, aes, and sha3 extensions are explicitly marked as sve2
extensions to distinguish them from the corresponding NEON extensions.

Rather than continue extending the current feature flag numbers, I used
some bits that have been skipped.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c: Add command line architecture feature flags
	"sve2", "sve2-sm4", "sve2-aes", "sve2-sha3", "bitperm".
	* doc/c-aarch64.texi: Document new architecture feature flags.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (AARCH64_FEATURE_SVE2
	AARCH64_FEATURE_SVE2_AES, AARCH64_FEATURE_SVE2_BITPERM,
	AARCH64_FEATURE_SVE2_SM4, AARCH64_FEATURE_SVE2_SHA3): New
	feature macros.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-tbl.h
	(aarch64_feature_sve2, aarch64_feature_sve2aes,
	aarch64_feature_sve2sha3, aarch64_feature_sve2sm4,
	aarch64_feature_sve2bitperm): New feature sets.
	(SVE2, SVE2_AES, SVE2_SHA3, SVE2_SM4, SVE2_BITPERM): New macros
	for feature set addresses.
	(SVE2_INSN, SVE2_INSNC, SVE2AES_INSN, SVE2SHA3_INSN,
	SVE2SM4_INSN, SVE2SM4_INSNC, SVE2BITPERM_INSN): New macros.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Two minor constifications
@ 2019-05-10 13:40 sergiodj+buildbot
  2019-05-13  8:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10 13:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 24c54127c5c4da81b9e6c248c8e918b3564b271a ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 24c54127c5c4da81b9e6c248c8e918b3564b271a

Two minor constifications

I noticed a couple of spots where a "char *" was used where a
"const char *" made more sense.  This patch fixes both of them.
Tested by rebuilding.

gdb/ChangeLog
2019-05-10  Tom Tromey  <tromey@adacore.com>

	* thread.c (print_thread_info): Make "requested_threads" const.
	* gdbthread.h (print_thread_info): Make "requested_threads"
	const.
	* ada-tasks.c (print_ada_task_info): Make "taskno_str" const.
	* ada-lang.h (print_ada_task_info): Make "taskno_str" const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New SVE_ADDR_ZX operand.
@ 2019-05-10 16:33 sergiodj+buildbot
  2019-05-12 11:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10 16:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c469c86473273e115b267a6f8c93c8942deb93c4 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: c469c86473273e115b267a6f8c93c8942deb93c4

[binutils][aarch64] New SVE_ADDR_ZX operand.

Add AARCH64_OPND_SVE_ADDR_ZX operand that allows a vector of addresses
in a Zn register, offset by an Xm register.
This is used with scatter/gather SVE2 instructions.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (REG_ZR): Macro specifying zero register.
	(parse_address_main): Account for new addressing mode [Zn.S, Xm].
	(parse_operands): Handle new SVE_ADDR_ZX operand.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): New SVE_ADDR_ZX operand.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-opc.c (operand_general_constraint_met_p): Constraint checking
	for SVE_ADDR_ZX.
	(aarch64_print_operand): Add printing for SVE_ADDR_ZX.
	* aarch64-tbl.h (AARCH64_OPERANDS): Use new SVE_ADDR_ZX operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New sve_size_bh iclass.
@ 2019-05-10 18:23 sergiodj+buildbot
  2019-05-12 14:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10 18:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3c705960ca0e12bb5d3a12d14ca6703006102d98 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 3c705960ca0e12bb5d3a12d14ca6703006102d98

[binutils][aarch64] New sve_size_bh iclass.

Add new iclass sve_size_bh to handle instructions that have two variants
encoded with the SVE_sz field.
This iclass behaves the same as the sve_size_sd iclass, but it has a
nicer name for those instructions that choose between variants using the
"B" and "H" size qualifiers.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_bh iclass.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_encode_variant_using_iclass): Handle
	sve_size_bh iclass encode.
	* aarch64-dis.c (aarch64_decode_variant_using_iclass): Handle
	sve_size_bh iclass decode.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] New SVE_Zm4_11_INDEX operand.
@ 2019-05-10 22:03 sergiodj+buildbot
  2019-05-12 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-10 22:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 31e36ab341498bb477a46a0475100ec5d471c4f2 ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 31e36ab341498bb477a46a0475100ec5d471c4f2

[binutils][aarch64] New SVE_Zm4_11_INDEX operand.

This includes defining a new single bit field SVE_i2h at position 20.
SVE_Zm4_11_INDEX handles indexed Zn registers where the index is encoded
in bits 20:11 and the register is chosed from range z0-z15 in bits 19-16.

gas/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (parse_operands): Handle new SVE_Zm4_11_INDEX
	operand.

include/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (enum aarch64_opnd): New SVE_Zm4_11_INDEX operand.

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm-2.c: Regenerated.
	* aarch64-dis-2.c: Regenerated.
	* aarch64-opc-2.c: Regenerated.
	* aarch64-opc.c (operand_general_constraint_met_p): Constraint checking
	for SVE_Zm4_11_INDEX.
	(aarch64_print_operand): Add printing for SVE_Zm4_11_INDEX.
	(fields): Handle SVE_i2h field.
	* aarch64-opc.h (enum aarch64_field_kind): New SVE_i2h field.
	* aarch64-tbl.h (AARCH64_OPERANDS): Use new SVE_Zm4_11_INDEX operand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][aarch64] Add SVE2 instructions.
@ 2019-05-11  0:43 sergiodj+buildbot
  2019-05-13  2:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-11  0:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 42e6288f9f9d7dfe560d2bed1fb5e7f27ac3256f ***

Author: Matthew Malcomson <matthew.malcomson@arm.com>
Branch: master
Commit: 42e6288f9f9d7dfe560d2bed1fb5e7f27ac3256f

[binutils][aarch64] Add SVE2 instructions.

This patch adds all the SVE2 instructions and their associated qualifier
sets.
Ok for trunk?

opcodes/ChangeLog:

2019-05-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-dis-2.c: Regenerate.
	* aarch64-tbl.h (OP_SVE_BBU): New variant set.
	(OP_SVE_BBB): New variant set.
	(OP_SVE_DDDD): New variant set.
	(OP_SVE_HHH): New variant set.
	(OP_SVE_HHHU): New variant set.
	(OP_SVE_SSS): New variant set.
	(OP_SVE_SSSU): New variant set.
	(OP_SVE_SHH): New variant set.
	(OP_SVE_SBBU): New variant set.
	(OP_SVE_DSS): New variant set.
	(OP_SVE_DHHU): New variant set.
	(OP_SVE_VMV_HSD_BHS): New variant set.
	(OP_SVE_VVU_HSD_BHS): New variant set.
	(OP_SVE_VVVU_SD_BH): New variant set.
	(OP_SVE_VVVU_BHSD): New variant set.
	(OP_SVE_VVV_QHD_DBS): New variant set.
	(OP_SVE_VVV_HSD_BHS): New variant set.
	(OP_SVE_VVV_HSD_BHS2): New variant set.
	(OP_SVE_VVV_BHS_HSD): New variant set.
	(OP_SVE_VV_BHS_HSD): New variant set.
	(OP_SVE_VVV_SD): New variant set.
	(OP_SVE_VVU_BHS_HSD): New variant set.
	(OP_SVE_VZVV_SD): New variant set.
	(OP_SVE_VZVV_BH): New variant set.
	(OP_SVE_VZV_SD): New variant set.
	(aarch64_opcode_table): Add sve2 instructions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix GDB build when using --disable-gdbmi
@ 2019-05-11  8:39 sergiodj+buildbot
  2019-05-13 13:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-11  8:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1367480341749b1498a6c5e7a7b79c7a4ab4ed34 ***

Author: Simon Marchi <simon.marchi@efficios.com>
Branch: master
Commit: 1367480341749b1498a6c5e7a7b79c7a4ab4ed34

Fix GDB build when using --disable-gdbmi

Since commit

    b4be1b064860 ("Fix MI output for multi-location breakpoints")

we get this error when building with --disable-gdbmi:

      CXXLD  gdb
    /home/smarchi/src/binutils-gdb/gdb/breakpoint.c:6358: error: undefined reference to 'mi_multi_location_breakpoint_output_fixed(ui_out*)'

This is due to breakpoint.c using a function defined in mi/mi-main.c, even
though mi/mi-main.c isn't included in the build.

To fix it, use the flags feature of ui_out.  mi_ui_out has the new
fix_multi_location_breakpoint_output flag set for versions >= 3.  Also,
move the global variable fix_multi_location_breakpoint_output to
breakpoint.c, so it can be read there even when we build without MI.  I
renamed it to fix_multi_location_breakpoint_output_globally so it
doesn't clash with the new enumerator.

gdb/ChangeLog:

	* breakpoint.h (fix_multi_location_breakpoint_output_globally):
	New variable declaration.
	* breakpoint.c (fix_multi_location_breakpoint_output_globally):
	New variable.
	(print_one_breakpoint): Use ui_out::test_flags and new global
	variable to compute use_fixed_output.
	* mi/mi-main.h (mi_multi_location_breakpoint_output_fixed):
	Remove.
	* mi/mi-main.c (fix_multi_location_breakpoint_output): Remove.
	(mi_multi_location_breakpoint_output_fixed): Remove.
	(mi_cmd_fix_multi_location_breakpoint_output): Adjust to set the
	new variable.
	* mi/mi-out.c (mi_ui_out::mi_ui_out): Set
	fix_multi_location_breakpoint_output flag if version >= 3.
	* ui-out.h (enum ui_out_flag)
	<fix_multi_location_breakpoint_output>: New enumerator.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add macro expansions for ADD, SUB, DADD and DSUB for MIPS r6
@ 2019-05-11 12:31 sergiodj+buildbot
  2019-05-13 16:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-11 12:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 387e762476ff224ee40760910e73a3905a2c380a ***

Author: Faraz Shahbazker <fshahbazker@wavecomp.com>
Branch: master
Commit: 387e762476ff224ee40760910e73a3905a2c380a

Add macro expansions for ADD, SUB, DADD and DSUB for MIPS r6

Release 6 of the MIPS architecture does not have an ADDI instruction.
ADD/SUB instructions with immediate operands can be expanded to load
and immediate value and then perform the operation.

gas/
	* config/tc-mips.c (macro) <M_ADD_I, M_SUB_I, M_DADD_I, M_DSUB_I>:
	Add expansions for MIPS r6.
	* testsuite/gas/mips/add.s: Enable tests for R6.
	* testsuite/gas/mips/daddi.s: Annotate to test DADD for R6.
	* testsuite/gas/mips/mipsr6@add.d: Likewise.
	* gas/testsuite/gas/mips/mipsr6@dadd.d: New test.
	* gas/testsuite/gas/mips/mips.exp: Run the new test.

opcodes/
        * mips-opc.c (mips_opcodes): Enable ADD, SUB, DADD and DSUB
	macros for R6.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix two langauge -> language typos
@ 2019-05-12 16:12 sergiodj+buildbot
  2019-05-14  6:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-12 16:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 66b8bb74ca8fb23e407b80e1b0e7c1a433286b41 ***

Author: Simon Marchi <simon.marchi@polymtl.ca>
Branch: master
Commit: 66b8bb74ca8fb23e407b80e1b0e7c1a433286b41

Fix two langauge -> language typos


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Add half float view to V registers
@ 2019-05-14  9:55 sergiodj+buildbot
  2019-05-14 11:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-14  9:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a6d0f2490c0c7969eb60038f01c0ee0f46e4d5fd ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: a6d0f2490c0c7969eb60038f01c0ee0f46e4d5fd

AArch64: Add half float view to V registers

AArch64 can fill the vector registers with half precision floats.
Add a view for this.

Add builtin type ieee half and connect this to the existing
floatformats_ieee_half.

gdb/ChangeLog:

2019-05-14  Alan Hayward  <alan.hayward@arm.com>

	* aarch64-tdep.c (aarch64_vnh_type): Add half view.
	(aarch64_vnv_type): Likewise.
	* target-descriptions.c (make_gdb_type): Add TDESC_TYPE_IEEE_HALF.
	* common/tdesc.c: Likewise.
	* common/tdesc.h (enum tdesc_type_kind): Likewise.
	* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerate.
	* features/aarch64-fpu.xml: Add ieee half view.
	* features/aarch64-sve.c (create_feature_aarch64_fpu): Likewise.
	* gdbtypes.c (gdbtypes_post_init): Add builtin_half
	* gdbtypes.h (struct builtin_type): Likewise.
	(struct objfile_type): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add new option to objcopy: --verilog-data-width. Use this option to set the size of byte bundles generated in verilog format files.
@ 2019-05-14 10:31 sergiodj+buildbot
  2019-05-14 14:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-14 10:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 37d0d09177dc02e0002ab8b90d9b7bc402af9240 ***

Author: Jamey Hicks <jamey.hicks@gmail.com>
Branch: master
Commit: 37d0d09177dc02e0002ab8b90d9b7bc402af9240

Add new option to objcopy: --verilog-data-width.  Use this option to set the size of byte bundles generated in verilog format files.

	PR 19921
binutils* objcopy.c: Add new option --verilog-data-width.  Use it to set
	the value of VerilogDataWidth.
	* doc/binutils.texi: Document the new option.
	* testsuite/binutils-all/objcopy.exp: Run tests of new option.
	* testsuite/binutils-all/verilog-1.hex: New file.
	* testsuite/binutils-all/verilog-2.hex: New file.
	* testsuite/binutils-all/verilog-4.hex: New file.
	* testsuite/binutils-all/verilog-8.hex: New file.
	* NEWS: Mention the new feature.

bfd	* verilog.c: (VerilogDataWidth): New variable.
	(verilog_write_record): Emit bytes in VerilogDataWidth bundles.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add file name styling to "info sharedlibrary"
@ 2019-05-14 14:08 sergiodj+buildbot
  2019-05-14 17:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-14 14:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e7bd7fba34ae1f892acf1e13ac86fca55b68026d ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: e7bd7fba34ae1f892acf1e13ac86fca55b68026d

Add file name styling to "info sharedlibrary"

This changes "info sharedlibrary" to add styling to the file name.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-14  Tom Tromey  <tromey@adacore.com>

	* solib.c (info_sharedlibrary_command): Style the file name.

gdb/testsuite/ChangeLog
2019-05-14  Tom Tromey  <tromey@adacore.com>

	* gdb.base/info-shared.exp (check_info_shared): Add "info shared"
	styling test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] GDB (s12z): Improve reliability of the stack unwinder.
@ 2019-05-15  5:50 sergiodj+buildbot
  2019-05-15  7:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-15  5:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c5358db468d582e658488c2bcc1befe6e6e47366 ***

Author: John Darrington <john@darrington.wattle.id.au>
Branch: master
Commit: c5358db468d582e658488c2bcc1befe6e6e47366

GDB (s12z): Improve reliability of the stack unwinder.

Previously, the stack unwinder searched through consecutive bytes for values
which it thought might be the start of a stack mutating operation.
This was error prone, because such bytes could also be the operands of other
instructions.  This change uses the opcodes api to interpret the code in each
frame.

gdb/ChangeLog:
	* s12z-tdep.c (push_pull_get_stack_adjustment): New function.
	(advance, posn, abstract_read_memory): New functions.
	[struct mem_read_abstraction]: New struct.
	(s12z_frame_cache): Use opcodes API to interpret stack frame code.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ARM STM32L4XX erratum test failure
@ 2019-05-15  7:31 sergiodj+buildbot
  2019-05-15  8:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-15  7:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3a1bb98c3c4f983b950fbaf2797ddcd21fcb5211 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 3a1bb98c3c4f983b950fbaf2797ddcd21fcb5211

ARM STM32L4XX erratum test failure

Fixes a failure seen with MALLOC_PERTURB_=1.

	* elf32-arm.c (elf32_arm_write_section): Don't leave
	error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
	unitialised section contents.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Add sizeof tests for indexed and sliced arrays
@ 2019-05-15 21:57 sergiodj+buildbot
  2019-05-15 23:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-15 21:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 14237686d71b6ef1e6a85f2791cb54d1ec019cb1 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 14237686d71b6ef1e6a85f2791cb54d1ec019cb1

gdb/fortran: Add sizeof tests for indexed and sliced arrays

Add tests for calling sizeof on indexed and sliced arrays, and on
pointers to arrays.  These are all things that currently work, but
were previously untested.

gdb/testsuite/ChangeLog:

	* gdb.fortran/vla-sizeof.exp: Add tests of sizeof applied to
	indexed and sliced arrays, and pointers to arrays.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Revert "ARM STM32L4XX erratum test failure"
@ 2019-05-16 13:25 sergiodj+buildbot
  2019-05-16 14:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 13:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a2699ef206aedf8e8d49d8519ae8a535e4b4afe5 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: a2699ef206aedf8e8d49d8519ae8a535e4b4afe5

Revert "ARM STM32L4XX erratum test failure"

This reverts commit 3a1bb98c3c4f983b950fbaf2797ddcd21fcb5211.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 1/57][Arm][GAS]: Add support for +mve and +mve.fp
@ 2019-05-16 15:57 sergiodj+buildbot
  2019-05-16 16:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 15:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a7ad558c377fd5f5cc7bc77837c532f907f2c53b ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: a7ad558c377fd5f5cc7bc77837c532f907f2c53b

[PATCH 1/57][Arm][GAS]: Add support for +mve and +mve.fp

bfd/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* elf32-arm.c (elf32_arm_merge_eabi_attributes): Add case for Tag_MVE_arch.

binutils/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* readelf.c (arm_attr_tag_MVE_arch): New array for Tag_MVE_arch values.
	(arm_attr_public_tag arm_attr_public_tags): Add case for Tag_MVE_arch.

elfcpp/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* arm.h (Tag_MVE_arch): Define new enum value.

gas/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/tc-arm.c (mve_ext, mve_fp_ext): New features.
	(armv8_1m_main_ext_table): Add new extensions.
	(aeabi_set_public_attributes): Translate new features to new build attributes.
	(arm_convert_symbolic_attribute): Add Tag_MVE_arch.
	* doc/c-arm.texi: Document new extensions and new build attribute.

include/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* elf/arm.h (Tag_MVE_arch): Define new enum value.
	* opcode/arm.h (FPU_MVE, FPU_MVE_FP): New MACROs for new features.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 45/57][Arm][OBJDUMP] Add support for MVE instructions: vmov, vmvn, vorr, vorn, vmovx and vbic
@ 2019-05-16 16:29 sergiodj+buildbot
  2019-05-16 21:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 16:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c507f10b0711f24e1b82b8bd096e605317cf77fe ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: c507f10b0711f24e1b82b8bd096e605317cf77fe

[PATCH 45/57][Arm][OBJDUMP] Add support for MVE instructions: vmov, vmvn, vorr, vorn, vmovx and vbic

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (enum mve_instructions): Add new instructions.
	(enum mve_unpredictable): Add new reasons.
	(enum mve_undefined): Likewise.
	(is_mve_okay_in_it): Handle new isntructions.
	(is_mve_encoding_conflict): Likewise.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_vmov_index): Likewise.
	(print_simd_imm8): Likewise.
	(print_mve_undefined): Likewise.
	(print_mve_unpredictable): Likewise.
	(print_mve_size): Likewise.
	(print_insn_mve): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 47/57][Arm][OBJDUMP] Add support for MVE instructions: vaddv, vmlaldav, vmladav, vmlas, vrmlsldavh, vmlsldav, vmlsdav, vrmlaldavh, vqdmlah, vqrdmlash, vqrdmlash, vqdmlsdh, vqrdmlsdh, vqdmulh and vqrdmulh
@ 2019-05-16 17:04 sergiodj+buildbot
  2019-05-17  1:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 17:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d3b6314397347943f40cdbf6efe34e209a162cc0 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: d3b6314397347943f40cdbf6efe34e209a162cc0

[PATCH 47/57][Arm][OBJDUMP] Add support for MVE instructions: vaddv, vmlaldav, vmladav, vmlas, vrmlsldavh, vmlsldav, vmlsdav, vrmlaldavh, vqdmlah, vqrdmlash, vqrdmlash, vqdmlsdh, vqrdmlsdh, vqdmulh and vqrdmulh

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (enum mve_instructions): Add new instructions.
	(enum mve_undefined): Add new reasons.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_undefined): Likewise.
	(print_mve_size): Likewise.
	(print_insn_mve): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 52/57][Arm][OBJDUMP] Add support for MVE instructions: vadc, vabav, vabd, vabs, vadd, vsbc and vsub
@ 2019-05-16 18:25 sergiodj+buildbot
  2019-05-17 10:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 18:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 66dcaa5d55eb39471d962bb949df009a9ea3f959 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 66dcaa5d55eb39471d962bb949df009a9ea3f959

[PATCH 52/57][Arm][OBJDUMP] Add support for MVE instructions: vadc, vabav, vabd, vabs, vadd, vsbc and vsub

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (thumb32_opcodes): Add new instructions.
	(enum mve_instructions): Likewise.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_size): Likewise.
	(print_insn_mve): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 46/57][Arm][OBJDUMP] Add support for MVE instructions: vmovl, vmull, vqdmull, vqmovn, vqmovun and vmovn
@ 2019-05-16 18:31 sergiodj+buildbot
  2019-05-16 23:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 18:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 14925797f833c9f4eedab98c7c50961d180aa03f ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 14925797f833c9f4eedab98c7c50961d180aa03f

[PATCH 46/57][Arm][OBJDUMP] Add support for MVE instructions: vmovl, vmull, vqdmull, vqmovn, vqmovun and vmovn

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (enum mve_instructions): Add new instructions.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_size): Likewise.
	(print_insn_mve): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 53/57][Arm][OBJDUMP] Add support for MVE instructions: vand, vbrsr, vcls, vclz and vctp
@ 2019-05-16 18:42 sergiodj+buildbot
  2019-05-17 12:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 18:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e523f10159d469dc0ca77069d092411f200685a1 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: e523f10159d469dc0ca77069d092411f200685a1

[PATCH 53/57][Arm][OBJDUMP] Add support for MVE instructions: vand, vbrsr, vcls, vclz and vctp

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (thumb32_opcodes): Add new instructions.
	(enum mve_instructions): Likewise.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_size): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix darwin-nat.c build
@ 2019-05-16 19:46 sergiodj+buildbot
  2019-05-17 21:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 19:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 61c9c4212daa0be96503b9069da387aebf9cba04 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 61c9c4212daa0be96503b9069da387aebf9cba04

Fix darwin-nat.c build

John Marshall pointed out that darwin-nat.c fails to build:

    CXX    darwin-nat.o
    ../../../binutils-gdb/gdb/darwin-nat.c:1709:8: error: must use 'class' tag to refer to type 'thread_info' in this scope
    for (thread_info *it : all_threads ())
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/thread_act.h:240:15: note:
    class 'thread_info' is hidden by a non-type declaration of 'thread_info' here
    kern_return_t thread_info

    Mach has a thread_info() function declared in that header, which darwin-nat.c #includes.

This patch fixes the problem by reintroducing the struct keyword.

gdb/ChangeLog
2019-05-16  Tom Tromey  <tromey@adacore.com>

	* darwin-nat.c (thread_info_from_private_thread_info): Add struct
	keyword to foreach.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Bool-ify stap-probe.c and stap-related code on i386-tdep.c
@ 2019-05-16 20:49 sergiodj+buildbot
  2019-05-17 23:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 20:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT af2d9beee989c7b75de849d9c08629a1e3f567ad ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: af2d9beee989c7b75de849d9c08629a1e3f567ad

Bool-ify stap-probe.c and stap-related code on i386-tdep.c

This simple patch converts a bunch of "int"s to "bool" on stap-probe.c
and on the stap-related code present on i386-tdep.c.

Pushed as obvious (+ I'm the maintainer of this code).

gdb/ChangeLog:
2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>

	* i386-tdep.c (i386_stap_parse_special_token_triplet): Change
	return type to 'bool'.  Adjust comment.  Use 'bool' when
	appropriate.
	(i386_stap_parse_special_token_three_arg_disp): Likewise.
	* stap-probe.c (stap_parse_argument_1): Likewise.
	(stap_is_operator): Likewise.
	(stap_is_generic_prefix): Likewise.
	(stap_is_register_prefix): Likewise.
	(stap_is_register_indirection_prefix): Likewise.
	(stap_is_integer_prefix): Likewise.
	(stap_generic_check_suffix): Likewise.
	(stap_check_integer_suffix): Likewise.
	(stap_check_register_suffix): Likewise.
	(stap_check_register_indirection_suffix): Likewise.
	(stap_parse_register_operand): Likewise.
	(stap_parse_single_operand): Likewise.
	(stap_parse_argument_1): Likewise.
	(stap_probe::get_argument_count): Likewise.
	(stap_is_operator): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 49/57][Arm][OBJDUMP] Add support for MVE complex number instructions
@ 2019-05-16 21:12 sergiodj+buildbot
  2019-05-17  4:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 21:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 897b9bbcffa894bd3f3664d7f1b666379493d9b2 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 897b9bbcffa894bd3f3664d7f1b666379493d9b2

[PATCH 49/57][Arm][OBJDUMP] Add support for MVE complex number instructions

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (enum mve_instructions): Add new instructions.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_unpredictable): Likewise.
	(print_mve_rotate): Likewise.
	(print_mve_size): Likewise.
	(print_insn_mve): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Slightly improve logic of some operations on stap-probe.c
@ 2019-05-16 21:21 sergiodj+buildbot
  2019-05-18  3:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 21:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f1bb75ab2a68b7d0878966f5a945eb7d33a48280 ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: f1bb75ab2a68b7d0878966f5a945eb7d33a48280

Slightly improve logic of some operations on stap-probe.c

This patch contains three very small improvement on the logic of some
operations we do on stap-probe.c.  They don't change what the code
does.

Pushed as obvious.

gdb/ChangeLog:
2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>

	* stap-probe.c (stap_parse_register_operand): Make "if (*p->arg ==
	'-')" and "else if".
	(stap_parse_single_operand): Join checks for
	"gdbarch_stap_parse_special_token_p" and
	"gdbarch_stap_parse_special_token" in the same "if" statement.
	Invert check when verifying for operation on register
	displacement.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make stap-probe.c:stap_parse_register_operand's "regname" an std::string
@ 2019-05-16 21:53 sergiodj+buildbot
  2019-05-18  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-16 21:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0 ***

Author: Sergio Durigan Junior <sergiodj@redhat.com>
Branch: master
Commit: 677052f2a5c67f1d9b2e6d1b2a2149b5f0c20cd0

Make stap-probe.c:stap_parse_register_operand's "regname" an std::string

This patch simplifies the code of
stap-probe.c:stap_parse_register_operand by making "regname" an
std::string.  No functionality change.

I'm this code's maintainer, so I'm pushing this as it's a fairly
trivial patch.

gdb/ChangeLog:
2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>

	* stap-probe.c (stap_parse_register_operand): Make "regname" an
	"std::string", simplifying the algorithm.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 54/57][Arm][OBJDUMP] Add support for MVE instructions: vmax(a), vmax(a)v, vmaxnm(a), vmaxnm(a)v, vmin(a), vmin(a)v, vminnm(a), vminnm(a)v and vmla
@ 2019-05-17  2:14 sergiodj+buildbot
  2019-05-17 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17  2:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 56858bea624ab405d53379ae25f433880ecafc68 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 56858bea624ab405d53379ae25f433880ecafc68

[PATCH 54/57][Arm][OBJDUMP] Add support for MVE instructions: vmax(a), vmax(a)v, vmaxnm(a), vmaxnm(a)v, vmin(a), vmin(a)v, vminnm(a), vminnm(a)v and vmla

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (thumb32_opcodes): Add new instructions.
	(enum mve_instructions): Likewise.
	(is_mve_encoding_conflict): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_size): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [PATCH 56/57][Arm][OBJDUMP] Add support for MVE instructions: vpnot, vpsel, vqabs, vqadd, vqsub, vqneg and vrev
@ 2019-05-17  3:55 sergiodj+buildbot
  2019-05-17 18:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17  3:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 14b456f2a011b28d8136a64022f2a418391054e3 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: 14b456f2a011b28d8136a64022f2a418391054e3

[PATCH 56/57][Arm][OBJDUMP] Add support for MVE instructions: vpnot, vpsel, vqabs, vqadd, vqsub, vqneg and vrev

opcodes/ChangeLog:
2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
	    Michael Collison <michael.collison@arm.com>

	* arm-dis.c (thumb32_opcodes): Add new instructions.
	(enum mve_instructions): Likewise.
	(enum mve_undefined): Add new reasons.
	(is_mve_encoding_conflict): Handle new instructions.
	(is_mve_undefined): Likewise.
	(is_mve_unpredictable): Likewise.
	(print_mve_undefined): Likewise.
	(print_mve_size): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add myself to gdb/MAINTAINERS
@ 2019-05-17 10:06 sergiodj+buildbot
  2019-05-18 21:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 10:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7d0e2ecedef69de0a242ac49a475f6a3968d4476 ***

Author: Jan Vrany <jan.vrany@fit.cvut.cz>
Branch: master
Commit: 7d0e2ecedef69de0a242ac49a475f6a3968d4476

Add myself to gdb/MAINTAINERS

gdb/Changelog:

       * MAINTAINERS (Write After Approval): Add myself.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] MI: extract command completion logic from complete_command()
@ 2019-05-17 10:42 sergiodj+buildbot
  2019-05-18 23:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 10:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6e035501e15e72398fcd9db88c97dd30e585a9ae ***

Author: Jan Vrany <jan.vrany@fit.cvut.cz>
Branch: master
Commit: 6e035501e15e72398fcd9db88c97dd30e585a9ae

MI: extract command completion logic from complete_command()

Extract completion logic from CLI complete_command() into a new
helper function complete().

gdb/Changelog:

	* completer.h (complete): New function.
	* completer.c (complete): Likewise.
	* cli/cli-cmds.c: (complete_command): Update to use new complete()
	function defined in completer.h.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] MI: Add new command -complete
@ 2019-05-17 11:02 sergiodj+buildbot
  2019-05-19  2:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 11:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 26648588294d039fcf1efbf512d785753cb6286d ***

Author: Jan Vrany <jan.vrany@fit.cvut.cz>
Branch: master
Commit: 26648588294d039fcf1efbf512d785753cb6286d

MI: Add new command -complete

There is a CLI command 'complete' intended to use with emacs. Such a command
would also be useful for MI frontends, when separate CLI and MI channels cannot
be used. For example, on Windows (because of lack of PTYs) or when GDB is used
through SSH session.

This commit adds a new '-complete' MI command.

gdb/Changelog:
2019-01-28  Jan Vrany  <jan.vrany@fit.cvut.cz>

	* mi/mi-cmds.h (mi_cmd_complete): New function.
	* mi/mi-main.c (mi_cmd_complete): Likewise.
	* mi/mi-cmds.c: Define new MI command -complete.
	* NEWS: Mention new -complete command.

gdb/doc/ChangeLog:
2019-01-28  Jan Vrany  <jan.vrany@fit.cvut.cz>

	* gdb.texinfo (Miscellaneous GDB/MI Commands): Document new
	MI command -complete.

gdb/testsuite/ChangeLog:
2019-01-28  Jan Vrany  <jan.vrany@fit.cvut.cz>

	* gdb.mi/mi-complete.exp: New file.
	* gdb.mi/mi-complete.cc: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change file close behavior for tee_file
@ 2019-05-17 13:27 sergiodj+buildbot
  2019-05-19  5:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 13:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f3a09c800fcd1d597fa2b9578cb59adfc15b698d ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: f3a09c800fcd1d597fa2b9578cb59adfc15b698d

Change file close behavior for tee_file

Instead of using two bools to decide if the files should close when tee_file
is closed, make file one stay open and file two close.  This simplifies the
use cases for it.

Inline the make_logging_output into the calling functions (the logic here
looks ugly in order to simplify a later change).

Expand ui-redirect.exp to cover the changes, similar to mi-logging.exp.

gdb/ChangeLog:

	* cli/cli-interp.c (cli_interp_base::set_logging): Create tee_file
	directly.
	* cli/cli-interp.h (make_logging_output): Remove declaration.
	* cli/cli-logging.c (make_logging_output): Remove function.
	* mi/mi-interp.c (mi_interp::set_logging): Create tee_file
	directly.
	* ui-file.c (tee_file::tee_file): Remove bools.
	(tee_file::~tee_file): Remove deletes.
	* ui-file.h (tee_file): Remove bools.

gdb/testsuite/ChangeLog:

	* gdb.base/ui-redirect.exp: Test redirection.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Record all gdb input to gdb.in
@ 2019-05-17 15:53 sergiodj+buildbot
  2019-05-19 15:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 15:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f9e2e39d23495844d998f54a0fccb9d6be7edb0e ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: f9e2e39d23495844d998f54a0fccb9d6be7edb0e

testsuite: Record all gdb input to gdb.in

When debugging testsuite failures, it can be awkward parsing gdb.log to
obtain all the commands run in order to manually re-run the test.

This patch adds the functionality to save all gdb commands to the file gdb.in
when the testsuite is run. The file is saved in the directory for the test and
if gdb is restarted then .1, .2, .3 etc is added to the filename.

Once a test has been run, the .in file can be used to re-run the test in the
following way:

  gdb -x outputs/gdb.store/gdb.in outputs/gdb.store/store

The code works by intercepting send_gdb.  I've added a TYPE to ensure that any
commands that would destroy the playback are kept from the log (for example the
Y from an answer to a y/n question).

Adds library function standard_output_file_with_gdb_instance to open a file
postfixed with count of the gdb instance.  Ensure this count is reset when a new
.exp script is run.

I've re-run a random selection of .in files to check they do not error. Logs with
commands such as "attach <pid>" will not directly work when re-run.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_unload): Mark Y as an answer.
	(delete_breakpoints): Likewise.
	(gdb_run_cmd): Likewise.
	(gdb_start_cmd): Likewise.
	(gdb_starti_cmd): Likewise.
	(gdb_internal_error_resync): Likewise.
	(gdb_test_multiple): Likewise.
	(gdb_reinitialize_dir): Likewise.
	(default_gdb_exit): Likewise.
	(gdb_file_cmd): Mark kill as optional.
	(default_gdb_start): Call gdb_stdin_log_init.
	(send_gdb): Call gdb_stdin_log_write.
	(rerun_to_main): Mark Y as an answer.
	(gdb_stdin_log_init): New function.
	(gdb_stdin_log_write): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Create .cmd files for gdb and gdbserver
@ 2019-05-17 16:15 sergiodj+buildbot
  2019-05-19 17:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 16:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 408e9b8b9ebeb854baea9aac52fa8df4d41eb53d ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 408e9b8b9ebeb854baea9aac52fa8df4d41eb53d

testsuite: Create .cmd files for gdb and gdbserver

When spawning gdb or gdbserver create a .cmd file in the test output
directory containing the full command line, ensuring the current gdb
instance is appended to the files so that they can be quickly matched
to the corresponding gdb.in file.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (default_gdb_spawn): Call gdb_write_cmd_file.
	(gdb_write_cmd_file): New procedure.
	* lib/gdbserver-support.exp (gdbserver_start): Call
	gdbserver_write_cmd_file.
	(gdbserver_write_cmd_file): New proedure.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Add replay logging to GDBSERVER_DEBUG
@ 2019-05-17 16:26 sergiodj+buildbot
  2019-05-19 19:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 16:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b420b89e4b321ff31f2e76cac499b908f042069b ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: b420b89e4b321ff31f2e76cac499b908f042069b

testsuite: Add replay logging to GDBSERVER_DEBUG

Add "replay" to the list of GDBSERVER_DEBUG options.  This will
cause a gdbserver.replay file to be written to the test output
directory.

At the same time switch this to a comma separated list in order
to easily handle all possible options.

The replay log is created by GDB, but has been added to
GDBSERVER_DEBUG as it is only required for gdbserver tests. To
enable it, the gdb_debug_init is overridden to allow the additional
checking, before calling the original function.

gdb/testsuite/ChangeLog:

        * README (Testsuite Parameters): Add replay logging to
        GDBSERVER_DEBUG.
        (gdbserver,debug): Refer to GDBSERVER_DEBUG.
        * lib/gdbserver-support.exp (gdbserver_start): Treat gdbserverdebug
        as a comma separated list.
        (gdb_debug_init): Override procedure.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Remove TRANSCRIPT support
@ 2019-05-17 16:43 sergiodj+buildbot
  2019-05-20 15:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 16:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 87781e8475f8ec80463937130cde48540ff87149 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 87781e8475f8ec80463937130cde48540ff87149

testsuite: Remove TRANSCRIPT support

TRANSCRIPT is superseeded by the .in, .cmd and .debug files, and
can be removed.

gdb/testsuite/ChangeLog

	* README (Running the Testsuite): Change example.
	(Testsuite Parameters): Remove TRANSCRIPT.
	* lib/gdb.exp: Remove TRANSCRIPT check.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify annotate_source
@ 2019-05-17 17:00 sergiodj+buildbot
  2019-05-20 16:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 17:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a45575b0356d671df2c55fcfc66de719b6b2e5e5 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a45575b0356d671df2c55fcfc66de719b6b2e5e5

Constify annotate_source

I noticed that annotate_source takes a "char *", but really should
take a "const char *".  This patch fixes this.

gdb/ChangeLog
2019-05-17  Tom Tromey  <tromey@adacore.com>

	* annotate.c (annotate_source): Make "filename" const.
	* annotate.h (annotate_source): Use const.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't cast away const in find_and_open_source
@ 2019-05-17 17:37 sergiodj+buildbot
  2019-05-20 17:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 17:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 33d0e35aed8870ad317af7eeca5274cf4fd87d15 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 33d0e35aed8870ad317af7eeca5274cf4fd87d15

Don't cast away const in find_and_open_source

find_and_open_source casts away const, but hasn't needed to in a
while.  This removes the cast and a strangely hostile comment.

gdb/ChangeLog
2019-05-17  Tom Tromey  <tromey@adacore.com>

	* source.c (find_and_open_source): Remove cast.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Add option to capture GDB debug
@ 2019-05-17 19:13 sergiodj+buildbot
  2019-05-19 12:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-17 19:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 29b523140ecf72bc3fdf570c71fbda6fe85cf930 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 29b523140ecf72bc3fdf570c71fbda6fe85cf930

testsuite: Add option to capture GDB debug

Add both board option and environment variable which enables gdb
debug via a comma separated list and sends it to the file gdb.debug,
located in the output directory for the current test.  Document this.

Add support for the environment variable in the Makefile.

The testsuite can be run with gdb debug enabled in the following way:

	make check GDB_DEBUG="infrun,target,remote"

A Test with multiple invocations of GDB will all append debug to the
same log file.

gdb/testsuite/ChangeLog:

	* Makefile.in: Pass through GDB_DEBUG.
	* README (Testsuite Parameters): Add GDB_DEBUG.
        (gdb,debug): Add board setting.
 	* lib/gdb.exp (default_gdb_start): Start debugging.
 	(gdb_debug_enabled): New procedure.
 	(gdb_debug_init): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Add constructor to struct cu_partial_die_info
@ 2019-05-18  9:06 sergiodj+buildbot
  2019-05-21  6:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-18  9:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 122cf0f2d93ae6f7a53e8dd643ebb068b79df9cf ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 122cf0f2d93ae6f7a53e8dd643ebb068b79df9cf

gdb: Add constructor to struct cu_partial_die_info

Adds a constructor to 'struct cu_partial_die_info' and disables the
default constructor, preventing partially initialised instances from
being created.

Update 'find_partial_die' to return a const struct.

Users of 'find_partial_die' are updated to take account of the above
two changes.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* dwarf2read.c (struct cu_partial_die_info): Add constructor,
	delete default constructor.
	(find_partial_die): Update to return const struct.
	(partial_die_parent_scope): Move variable declaration into scope
	of its use and change its type to auto.
	(guess_partial_die_structure_name): Likewise.
	(partial_die_info::fixup): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix PR 24564 - link fails for some rcalls/rjmps with wraparound
@ 2019-05-21  9:03 sergiodj+buildbot
  2019-05-21 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21  9:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 338ba75534fbfeb64d7009f29a89f25826a1f4d2 ***

Author: Senthil Kumar Selvaraj <senthilkumar.selvaraj@microchip.com>
Branch: master
Commit: 338ba75534fbfeb64d7009f29a89f25826a1f4d2

Fix PR 24564 - link fails for some rcalls/rjmps with wraparound

The current code to compute relative distance in the wrap around case does not
handle the edge case of the target (after adjusting for implicit PC increment)
being exactly half of the wrap around distance. This patch fixes that and adds a
testcase.

The range for a forward relative jump call is 4096 bytes ((2 * 2047) + (2 bytes
for the implicit PC increment)). If the target of the jump is at a distance of
4098 bytes, it is out of range for a forward jump - however, a backward jump can
still reach that address if pmem-wrap-around is 8192.

Assume address 0 has rjmp to address 4098. With a wrap around of 8192 and
*without* adjusting for the implicit PC increment of 2 bytes, rjmp .-4096 will
jump to address 4096 (wrap around at 8192 and decreasing addresses from then
on). Adjusting 2 bytes for the implicit PC increment, the actual target is 4098.

avr_relative_distance_considering_wrap_around though, does the wrap around only
if the passed in distance is less than half of the wrap around distance. In this
case, it is exactly equal to half (original distance 4098, adjusted distance of
4096 and wraparound of 8192), and the bypassed wrap around causes the reloc
overflow error.

Fix by wrapping around even if adjusted distance is equal to half of wrap around
distance.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] testsuite: Mark the kill in gdbserver_run as optional
@ 2019-05-21 13:10 sergiodj+buildbot
  2019-05-21 14:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 13:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ce3ebcaae382a3f95530d633e6875f97e53ef273 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: ce3ebcaae382a3f95530d633e6875f97e53ef273

testsuite: Mark the kill in gdbserver_run as optional

This matches the kill in gdb_file_cmd, and ensures that the command is not
sent to the gdb.in file.

When gdb.in is used as a batch file, any kill commands run before the target
is started will cause gdb to stop processing commands.

gdb/testsuite/ChangeLog:

	* lib/gdbserver-support.exp (gdbserver_run): Mark kill as optional.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Implement choice between Cortex-A53 erratum workarounds. (PR ld/24373)
@ 2019-05-21 14:27 sergiodj+buildbot
  2019-05-21 15:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 14:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 739b5c9c778dee9e2f54d864f83a81ecb0639535 ***

Author: Tamar Christina <tamar.christina@arm.com>
Branch: master
Commit: 739b5c9c778dee9e2f54d864f83a81ecb0639535

AArch64: Implement choice between Cortex-A53 erratum workarounds. (PR ld/24373)

The Cortex-A53 erratum currently has two ways it can resolve the erratum when
using the flag --fix-cortex-a53-843419:

1) If the address is within the range of an ADR instruction it rewrites the ADRP
   into an ADR, and those doesn't need the use of a veneer.

2) If the address is not within range, it adds a branch to a veneer which will
   execute the final bit of the erratum workaround and branch back to the call
   site.

When we do this we always generate the veneers and we always align the size of
the text section to 4KB.  This is because we only know which workaround we can
use after all linking has finished and all addresses are known.  This means even
though the veneers are not used, we still generate the section and we still
change the size of the input section.

This is problematic for small memory devices as this would require the user to
take about a ~4KB hit in memory even though it's not even used.

Since there's no real way to restart the linking process from the final write
phase this patch solves the issue by allowing the user more control over which
erratum workaround gets used.

Concretely this changes the option --fix-cortex-a53-843419 to take optional
arguments --fix-cortex-a53-843419[=full|adr|adrp]

- full (default): Use both ADRP and ADR workaround. This is equivalent to not
		  specifying any options and is the default behavior before this
		  patch.

- adr: Only use the ADR workaround, this will not cause any increase in binary
       size but linking will fail if the referenced address is out of range of
       an ADR instruction.

- adrp: Use only the ADRP workaround, this will never rewrite your ADRP.

In the cases where the user knows how big their binaries are the `adr` option
would prevent the unneeded overhead.

bfd/ChangeLog:

	PR ld/24373
	* bfd-in.h (enum erratum_84319_opts): New
	(bfd_elf64_aarch64_set_options, bfd_elf32_aarch64_set_options): Change
	int to enum erratum_84319_opts.
	* bfd-in2.h: Regenerate.
	* elfnn-aarch64.c (struct elf_aarch64_link_hash_table): Change
	fix_erratum_843419 to use new enum, remove fix_erratum_843419_adr.
	(_bfd_aarch64_add_stub_entry_after): Conditionally create erratum stub.
	(aarch64_size_one_stub): Conditionally size erratum 843419 stubs.
	(_bfd_aarch64_resize_stubs): Amend comment.
	(elfNN_aarch64_size_stubs): Don't generate stubs when no workaround
	requested.
	(bfd_elfNN_aarch64_set_options): Use new fix_erratum_843419 enum.
	(_bfd_aarch64_erratum_843419_branch_to_stub): Implement selection of
	erratum workaround.
	(clear_erratum_843419_entry): Update erratum conditional.

ld/ChangeLog:

	PR ld/24373
	* emultempl/aarch64elf.em (PARSE_AND_LIST_LONGOPTS): Add optional args
	to flags.
	* NEWS: Add changes to flag.
	(PARSE_AND_LIST_OPTIONS): Update help descriptions.
	(PARSE_AND_LIST_ARGS_CASES): Add new options to parser.
	* testsuite/ld-aarch64/aarch64-elf.exp: Add new run_dump_tests.
	* testsuite/ld-aarch64/erratum843419-adr.d: New test.
	* testsuite/ld-aarch64/erratum843419-adrp.d: New test.
	* testsuite/ld-aarch64/erratum843419-far-adr.d: New test.
	* testsuite/ld-aarch64/erratum843419-far-full.d: New test.
	* testsuite/ld-aarch64/erratum843419-far.s: New test.
	* testsuite/ld-aarch64/erratum843419-full.d: New test.
	* testsuite/ld-aarch64/erratum843419-near.s: New test.
	* testsuite/ld-aarch64/erratum843419-no-args.d: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils][Arm] Fix Branch Future relocation handling and testisms
@ 2019-05-21 15:16 sergiodj+buildbot
  2019-05-21 17:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 15:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e6f65e7573a317ac4efff26fe0e49fe1b9e7a596 ***

Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Branch: master
Commit: e6f65e7573a317ac4efff26fe0e49fe1b9e7a596

[binutils][Arm] Fix Branch Future relocation handling and testisms

bfd/ChangeLog:
2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR/target 24460
	* elf32-arm.c (get_value_helper): Remove.
	(elf32_arm_final_link_relocate): Fix branch future relocations.

gas/ChangeLog:
2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* testsuite/gas/arm/armv8_1-m-bf.d: Allow different branch target naming
	conventions.
	* testsuite/gas/arm/armv8_1-m-bfl.d: Likewise.
	* testsuite/gas/arm/armv8_1-m-bfcsel.d: Likewise.
	* testsuite/gas/arm/armv8_1-m-loloop.d: Likewise.
	* testsuite/gas/arm/armv8_1-m-bf-rel.d: Skip for vxworks.
	* testsuite/gas/arm/armv8_1-m-bf-rela.d: New test.
	* testsuite/gas/arm/armv8_1-m-bfl-rel.d: Skip for vxworks.
	* testsuite/gas/arm/armv8_1-m-bfl-rela.d: New test.

ld/ChangeLog:
2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* testsuite/ld-arm/arm-elf.exp: Add tests
	* testsuite/ld-arm/bfs-0.s: New test.
	* testsuite/ld-arm/bfs-1.s: New test.
	* testsuite/ld-arm/branch-futures.d: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Require c++11 where necessary
@ 2019-05-21 16:56 sergiodj+buildbot
  2019-05-21 18:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 16:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 669d0468399d8375f4d25289938a0c06d12e7f2e ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 669d0468399d8375f4d25289938a0c06d12e7f2e

[gdb/testsuite] Require c++11 where necessary

When building gdb on ubuntu 16.04 with gcc 5.4.0, and running the gdb
testsuite we run into failures due test-cases requiring at least c++1.

Fix this by adding -std=c++11 to those test-cases.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-21  Tom de Vries  <tdevries@suse.de>

	* gdb.arch/amd64-eval.exp: Require c++11.
	* gdb.base/max-depth.exp: Same.
	* gdb.compile/compile-cplus-array-decay.exp: Same.
	* gdb.cp/meth-typedefs.exp: Same.
	* gdb.cp/subtypes.exp: Same.
	* gdb.cp/temargs.exp: Same.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/cli] Fix use of uninitialized variable in complete_command
@ 2019-05-21 17:09 sergiodj+buildbot
  2019-05-21 20:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 17:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fb7806c7a49d6eb75cdbff183d10d00f75968c0f ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: fb7806c7a49d6eb75cdbff183d10d00f75968c0f

[gdb/cli] Fix use of uninitialized variable in complete_command

When building gdb on ubuntu 16.04 with gcc 5.4.0, and running the gdb
testsuite we run into:
...
FAIL: gdb.linespec/explicit.exp: complete after -line: \
  cmd complete "b -line argument " (timeout)
...

The failure is reproducible outside the testsuite like this:
...
$ gdb -q build/gdb/testsuite/outputs/gdb.linespec/explicit/explicit \
  -ex "complete b -line argument"
Reading symbols from \
  build/gdb/testsuite/outputs/gdb.linespec/explicit/explicit...
terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_M_create
  Aborted (core dumped)
...

The problem is here in complete_command:
...
  completion_result result = complete (arg, &word, &quote_char);

  std::string arg_prefix (arg, word - arg);

  if (result.number_matches != 0)
...
The problem is that the word variable is not initialized when
result.number_matches == 0, but the variable is still used in the arg_prefix
initialization.

Fix this by guarding the arg_prefix initialization with the
'result.number_matches != 0' test.

Build and tested on x86_64-linux.

gdb/ChangeLog:

2019-05-21  Tom de Vries  <tdevries@suse.de>

	PR cli/24587
	* cli/cli-cmds.c (complete_command): Fix use of unitialized variable.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [binutils, ARM] <spec_reg> changes for VMRS and VMSR instructions
@ 2019-05-21 19:31 sergiodj+buildbot
  2019-05-22 10:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 19:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ba6cd17f0a28e54d9b4ef46397d448f1d208d9a0 ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: ba6cd17f0a28e54d9b4ef46397d448f1d208d9a0

[binutils, ARM] <spec_reg> changes for VMRS and VMSR instructions

This patch makes changes to the <spec_reg> operand for VMRS and VMSR
instructions as per the Armv8.1-M Mainline.
New <spec_reg> options to support are:

0b0010: FPSCR_nzcvqc, access to FPSCR condition and saturation flags.
0b1100: VPR, privileged only access to the VPR register.
0b1101: P0, access to VPR.P0 predicate fields
0b1110: FPCXT_NS, enables saving and restoring of Non-secure floating
point context.
0b1111: FPCXT_S, enables saving and restoring of Secure floating point
context

*** gas/ChangeLog ***

2019-05-21  Sudakshina Das  <sudi.das@arm.com>

	* config/tc-arm.c (parse_operands): Update case OP_RVC to
	parse p0 and P0.
	(do_vmrs): Add checks for valid operands with respect to
	cpu and fpu options.
	(do_vmsr): Likewise.
	(reg_names): New reg_names for FPSCR_nzcvqc, VPR, FPCXT_NS
	and FPCXT_S.
	* testsuite/gas/arm/armv8_1-m-spec-reg.d: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg.s: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad1.d: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad2.d: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad3.d: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad1.l: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad2.l: New.
	* testsuite/gas/arm/armv8_1-m-spec-reg-bad3.l: New.
	* testsuite/gas/arm/vfp1xD.d: Updated to allow new valid values.
	* testsuite/gas/arm/vfp1xD_t2.d: Likewise.

*** opcodes/ChangeLog ***

2019-05-21  Sudakshina Das  <sudi.das@arm.com>

	* arm-dis.c (coprocessor_opcodes): New instructions for VMRS
	and VMSR with the new operands.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] MIPS/LD: Fix memory fault linking non-PIC object in to shared library
@ 2019-05-21 20:39 sergiodj+buildbot
  2019-05-22 10:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 20:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 304f09d0d4b519f143144d213e1280a0691de8ba ***

Author: Faraz Shahbazker <fshahbazker@wavecomp.com>
Branch: master
Commit: 304f09d0d4b519f143144d213e1280a0691de8ba

MIPS/LD: Fix memory fault linking non-PIC object in to shared library

bfd/
	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Add NULL pointer
	checks.  Search the RELA table for n64 relocations.

ld/
	* testsuite/ld-mips-elf/pic-reloc-5.d: New test.
	* testsuite/ld-mips-elf/pic-reloc-6.d: New test.
	* testsuite/ld-mips-elf/pic-reloc-7.d: New test.
	* testsuite/ld-mips-elf/pic-reloc-5.s: New test source.
	* testsuite/ld-mips-elf/pic-reloc-6.s: New test source.
	* testsuite/ld-mips-elf/pic-reloc-7.s: New test source.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] MIPS/LD: Reject tprel_hi and tprel_lo relocations in shared library
@ 2019-05-21 21:26 sergiodj+buildbot
  2019-05-22 10:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-21 21:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b474a2022dc14fea0dd8ea4cc66b813486132075 ***

Author: Faraz Shahbazker <fshahbazker@wavecomp.com>
Branch: master
Commit: b474a2022dc14fea0dd8ea4cc66b813486132075

MIPS/LD: Reject tprel_hi and tprel_lo relocations in shared library

bfd/
	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Generate error
	for TLS_TPREL_HI16(/LO16) relocations in shared library.

ld/
	* testsuite/ld-mips-elf/pic-reloc-5.s: Add tests for
	%tprel_hi and %tprel_lo relocations.
	* testsuite/ld-mips-elf/pic-reloc-6.s: Likewise.
	* testsuite/ld-mips-elf/pic-reloc-5.d: Update accordingly.
	* testsuite/ld-mips-elf/pic-reloc-6.d: Likewise.
	* testsuite/ld-mips-elf/pic-reloc-tls.ld: New test linker
	script file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Handle gdbarch_floatformat_for_type returning nullptr
@ 2019-05-22  0:49 sergiodj+buildbot
  2019-05-22 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22  0:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dc42e902cc54af2b7e7b54a1171d562f867342d5 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: dc42e902cc54af2b7e7b54a1171d562f867342d5

gdb/fortran: Handle gdbarch_floatformat_for_type returning nullptr

In this commit:

  commit 34d11c682fd96c7dbe3ebd6cd9033e65d51ec7a3
  Date:   Fri May 3 15:23:55 2019 +0100

      gdb/fortran: Use floatformats_ia64_quad for fortran 16-byte floats

GDB was changed such that the Fortran's 16-byte float format was
obtained by calling gdbarch_floatformat_for_type instead of just using
gdbarch_long_double_format as it was before.

The problem with this default_floatformat_for_type can return NULL in
some cases, and the code introduced in 34d11c682f didn't consider
this.

This commit introduces several alternative strategies for finding a
suitable 16-byte floating point type.  First GDB calls
gdbarch_floatformat_for_type (this was what 34d11c682f added), if this
returns null GDB will use gdbarch_long_double_format if it is the
correct size (this was the format used before 34d11c682f).  Finally,
if neither of the above provides a suitable type then GDB will create
a new dummy type.

This final dummy type is unlikely to provide an correct debug
experience as far as examining the 16-byte floats, but it should
prevent GDB crashing.

gdb/ChangeLog:

	PR gdb/18644:
	* f-lang.c (build_fortran_types): Handle the case where
	gdbarch_floatformat_for_type returns a nullptr.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ARM STM32L4XX erratum test failure with MALLOC_PERTURB_
@ 2019-05-22 11:18 sergiodj+buildbot
  2019-05-22 18:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 11:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b0f4fbf81a1cf67d49558b2e8890e5c8628f8403 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: b0f4fbf81a1cf67d49558b2e8890e5c8628f8403

ARM STM32L4XX erratum test failure with MALLOC_PERTURB_

	* elf32-arm.c (arm_allocate_glue_section_space): Clear section
	contents.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] vms-alpha gas segfault
@ 2019-05-22 12:25 sergiodj+buildbot
  2019-05-22 17:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 12:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9ec2f606ce9ebfe9b7d1c6d3db0614d19bd03a6b ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 9ec2f606ce9ebfe9b7d1c6d3db0614d19bd03a6b

vms-alpha gas segfault

	* vms-alpha.c (_bfd_vms_write_etir): Don't attempt further
	processing on "size error in section".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/riscv: Improve flen length determination
@ 2019-05-22 13:57 sergiodj+buildbot
  2019-05-22 21:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 13:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0a5954bd5f96dd665cb733b9ab6f2ca67bb4632d ***

Author: Simon Cook <simon.cook@embecosm.com>
Branch: master
Commit: 0a5954bd5f96dd665cb733b9ab6f2ca67bb4632d

gdb/riscv: Improve flen length determination

This solves an assertion failure when a remote provides a target
description which only refers to floating point registers by their
hardware name (e.g. f0), rather than their ABI name (e.g. ft0). GDB
assumed that should the floating point register feature be presented,
it would contain a register called ft0.

The floating point length is now instead determined by searching for
the same register, but looking for any of its aliases.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_gdbarch_init): Support determining flen from
	target descriptions using exclusively floating point register name
	aliases.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Treat pauth ops as nops on non-pauth systems
@ 2019-05-22 16:32 sergiodj+buildbot
  2019-05-23 16:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 16:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8fca4da0759df376bcb646bc4b79a92ba27e2362 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 8fca4da0759df376bcb646bc4b79a92ba27e2362

AArch64: Treat pauth ops as nops on non-pauth systems

Running an address signed binary through GDB on a non pauth system
gives the following error:
Call Frame Instruction op 45 in vendor extension space is not handled on this architecture.

Instead GDB should ignore the op, treating it as a nop.

Add test case for pauth binaries, regardless of whether the target
supports it.

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_execute_dwarf_cfa_vendor_op): Treat
	DW_CFA_AARCH64_negate_ra_state as nop on non pauth targets.

gdb/testsuite/ChangeLog:

	* gdb.arch/aarch64-pauth.c: New test.
	* gdb.arch/aarch64-pauth.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Add missing mi_skip_python_tests to py-mi-var-info-path-expression.exp
@ 2019-05-22 18:22 sergiodj+buildbot
  2019-05-23 17:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 18:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e7fe496b1b8c0dfc44876f86131f756b424d4e70 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: e7fe496b1b8c0dfc44876f86131f756b424d4e70

[gdb/testsuite] Add missing mi_skip_python_tests to py-mi-var-info-path-expression.exp

Fix gdb.python/py-mi-var-info-path-expression.exp for a gdb build without
python support.

gdb/testsuite/ChangeLog:

2019-05-22  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24586
	* gdb.python/py-mi-var-info-path-expression.exp: Call
	mi_skip_python_tests to check if python is supported.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Require c++11 for gdb.base/align.exp
@ 2019-05-22 18:33 sergiodj+buildbot
  2019-05-23 18:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-22 18:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT af1a8d038798bef11471e28d999ad1687312a6a7 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: af1a8d038798bef11471e28d999ad1687312a6a7

[gdb/testsuite] Require c++11 for gdb.base/align.exp

When building gdb on ubuntu 16.04 with gcc 5.4.0, and running the gdb
testsuite we run into a failure due align.exp requiring at least c++11.

Fix this by adding -std=c++11.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-22  Tom de Vries  <tdevries@suse.de>

	* gdb.base/align.exp: Require c++11.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify target_ops::follow_exec
@ 2019-05-23  1:16 sergiodj+buildbot
  2019-05-23 18:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-23  1:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4ca51187d21562b6626eea2bd0e45f6b64719dfd ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 4ca51187d21562b6626eea2bd0e45f6b64719dfd

Constify target_ops::follow_exec

I noticed that target_ops::follow_exec took a "char *" parameter,
where "const char *" would be more correct.  This patch changes this
(and related functions) to be constified.

Tested by rebuilding.

gdb/ChangeLog
2019-05-22  Tom Tromey  <tromey@adacore.com>

	* target.c (target_follow_exec): Constify parameter.
	* target-delegates.c: Rebuild.
	* remote.c (remote_target::follow_exec): Constify parameter.
	* infrun.c (follow_exec): Constify parameter.
	* target.h (struct target_ops) <follow_exec>: Constify parameter.
	(target_follow_exec): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] config.guess, config.sub: synchronize with config project master sources
@ 2019-05-23 18:17 sergiodj+buildbot
  2019-05-23 18:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-23 18:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2376c3702e43ad8a717d80888b34e1e7eaeacaa8 ***

Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Branch: master
Commit: 2376c3702e43ad8a717d80888b34e1e7eaeacaa8

config.guess,config.sub: synchronize with config project master sources

This is to bring in the newly introduced support for bpf-*-* targets.

ChangeLog:

2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* config.guess: Synchronize with config project master sources.
	* config.sub: Likewise.
	* readline/support/config.guess: Likewise.
	* readline/support/config.sub: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] opcodes: add support for eBPF
@ 2019-05-23 20:19 sergiodj+buildbot
  2019-05-24  2:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-23 20:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 79472b45328232b083e897a511d4160a6dde0463 ***

Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Branch: master
Commit: 79472b45328232b083e897a511d4160a6dde0463

opcodes: add support for eBPF

This patch adds support for the Linux kernel eBPF architecture to the
opcodes.  The port is based on CGEN.

opcodes/ChangeLog:

2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* configure.ac (SHARED_DEPENDENCIES): Add case for bfd_bpf_arch.
	* configure: Regenerated.
	* Makefile.am: Add rules for the files generated from cpu/bpf.cpu
	and cpu/bpf.opc.
	(HFILES): Add bpf-desc.h and bpf-opc.h.
	(TARGET_LIBOPCODES_CFILES): Add bpf-asm.c, bpf-desc.c, bpf-dis.c,
	bpf-ibld.c and bpf-opc.c.
	(BPF_DEPS): Define.
	* Makefile.in: Regenerated.
	* disassemble.c (ARCH_bpf): Define.
	(disassembler): Add case for bfd_arch_bpf.
	(disassemble_init_for_target): Likewise.
	(enum epbf_isa_attr): Define.
	* disassemble.h: extern print_insn_bpf.
	* bpf-asm.c: Generated.
	* bpf-opc.h: Likewise.
	* bpf-opc.c: Likewise.
	* bpf-ibld.c: Likewise.
	* bpf-dis.c: Likewise.
	* bpf-desc.h: Likewise.
	* bpf-desc.c: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd: add support for eBPF
@ 2019-05-23 20:52 sergiodj+buildbot
  2019-05-23 22:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-23 20:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fd0de36e274c8141a5dd4579cd04856dc88370da ***

Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Branch: master
Commit: fd0de36e274c8141a5dd4579cd04856dc88370da

bfd: add support for eBPF

This patch adds support to BFD for elf64-bpf, in both little-endian
and big-endian variants.

bfd/ChangeLog:

2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* configure.ac: Add bpf_elf64_le_vec and bpf_elf64_be_vec.
	* configure: Regenerated.
	* Makefile.am (ALL_MACHINES): Add cpu-bpf.lo.
	(ALL_MACHINES_CFILES): Add cpu-bpf.c.
	(BFD64_BACKENDS): Add elf64-bpf.lo.
	(BFD64_BACKENDS_CFILES): Add elf64-bpf.c.
	* Makefile.in (SOURCE_HFILES): Regenerate.
	* config.bfd (targ_cpu): Handle bpf-*-* targets.
	* cpu-bpf.c: New file.
	* elf64-bpf.c: Likewise.
	* targets.c (_bfd_target_vector): Add bpf_elf64_be_vec and
	bpf_elf64_le_vec.
	* archures.c: Define architecture bfd_arch_bpf and machine
	bfd_arch_bpf.
	* reloc.c: Define BFD relocations used by the BPF target.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd: fix build with --enable-targets=all in 32-bit hosts
@ 2019-05-24  1:59 sergiodj+buildbot
  2019-05-24  2:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24  1:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 45d5293f6e098ff7e85a30554fcdc8c7f00db675 ***

Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Branch: master
Commit: 45d5293f6e098ff7e85a30554fcdc8c7f00db675

bfd: fix build with --enable-targets=all in 32-bit hosts

This patch avoids for bpf_elf64_le_vec to be referenced in targmatch.h
when building a BFD without BFD64, resulting in an undefined symbol.
This was a regression introduced along with the BPF target.

bfd/ChangeLog:

2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* config.bfd (targ_cpu): Process bpf-*-none only if BFD64.
	* configure.ac: Set target_size=64 for bpf_elf64_le_vec and
	bpf_elf64_be_vec.
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC add initial -mfuture instruction support
@ 2019-05-24  2:50 sergiodj+buildbot
  2019-05-24  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24  2:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dd7efa79151ed5a56caccfac870865764d922a2f ***

Author: Peter Bergner <bergner@linux.ibm.com>
Branch: master
Commit: dd7efa79151ed5a56caccfac870865764d922a2f

PowerPC add initial -mfuture instruction support

This patch adds initial 64-bit insn assembler/disassembler support.
The only instruction added is "pnop" along with the automatic aligning
of prefix instruction so they do not cross 64-byte boundaries.

include/
	* dis-asm.h (WIDE_OUTPUT): Define.
	* opcode/ppc.h (prefix_opcodes, prefix_num_opcodes): Declare.
	(PPC_OPCODE_POWERXX, PPC_GET_PREFIX, PPC_GET_SUFFIX),
	(PPC_PREFIX_P, PPC_PREFIX_SEG): Define.
opcodes/
	* ppc-dis.c (ppc_opts): Add "future" entry.
	(PREFIX_OPCD_SEGS): Define.
	(prefix_opcd_indices): New array.
	(disassemble_init_powerpc): Initialize prefix_opcd_indices.
	(lookup_prefix): New function.
	(print_insn_powerpc): Handle 64-bit prefix instructions.
	* ppc-opc.c (PREFIX_OP, PREFIX_FORM, SUFFIX_MASK, PREFIX_MASK),
	(PMRR, POWERXX): Define.
	(prefix_opcodes): New instruction table.
	(prefix_num_opcodes): New constant.
binutils/
	* objdump.c (disassemble_bytes): Set WIDE_OUTPUT in flags.
gas/
	* config/tc-ppc.c (ppc_setup_opcodes): Handle prefix_opcodes.
	(struct insn_label_list): New.
	(insn_labels, free_insn_labels): New variables.
	(ppc_record_label, ppc_clear_labels, ppc_start_line_hook): New funcs.
	(ppc_frob_label, ppc_new_dot_label): Move functions earlier in file
	and call ppc_record_label.
	(md_assemble): Handle 64-bit prefix instructions.  Align labels
	that are on the same line as a prefix instruction.
	* config/tc-ppc.h (tc_frob_label, ppc_frob_label): Move to
	later in the file.
	(md_start_line_hook): Define.
	(ppc_start_line_hook): Declare.
	* testsuite/gas/ppc/prefix-align.d,
	* testsuite/gas/ppc/prefix-align.s: New test.
	* testsuite/gas/ppc/ppc.exp: Run new test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC D-form prefixed loads and stores
@ 2019-05-24  3:11 sergiodj+buildbot
  2019-05-24  6:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24  3:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8acf14351c818d956babe50e61711740f378c941 ***

Author: Peter Bergner <bergner@linux.ibm.com>
Branch: master
Commit: 8acf14351c818d956babe50e61711740f378c941

PowerPC D-form prefixed loads and stores

opcodes/
	* ppc-opc.c (insert_d34, extract_d34, insert_nsi34, extract_nsi34),
	(insert_pcrel, extract_pcrel, extract_pcrel0): New functions.
	(extract_esync, extract_raq, extract_tbr, extract_sxl): Comment.
	(powerpc_operands <D34, SI34, NSI34, PRA0, PRAQ, PCREL, PCREL0,
	XTOP>): Define and add entries.
	(P8LS, PMLS, P_D_MASK, P_DRAPCREL_MASK): Define.
	(prefix_opcodes): Add pli, paddi, pla, psubi, plwz, plbz, pstw,
	pstb, plhz, plha, psth, plfs, plfd, pstfs, pstfd, plq, plxsd,
	plxssp, pld, plwa, pstxsd, pstxssp, pstxv, pstd, and pstq.
gas/
	* config/tc-ppc.c (ppc_insert_operand): Only sign extend fields that
	are 32-bits or smaller.
	* messages.c (as_internal_value_out_of_range): Do not truncate
	variables and use BFD_VMA_FMT to print them.
	* testsuite/gas/ppc/prefix-pcrel.s,
	* testsuite/gas/ppc/prefix-pcrel.d: New test.
	* testsuite/gas/ppc/ppc.exp: Run it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC relocations for prefix insns
@ 2019-05-24  3:29 sergiodj+buildbot
  2019-05-24 12:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24  3:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5663e321848545857a690f30a780187e3366bd2d ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 5663e321848545857a690f30a780187e3366bd2d

PowerPC relocations for prefix insns

include/
	* elf/ppc64.h (R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC),
	(R_PPC64_PCREL_OPT, R_PPC64_D34, R_PPC64_D34_LO, R_PPC64_D34_HI30),
	(R_PPC64_D34_HA30, R_PPC64_PCREL34, R_PPC64_GOT_PCREL34),
	(R_PPC64_PLT_PCREL34, R_PPC64_PLT_PCREL34_NOTOC),
	(R_PPC64_ADDR16_HIGHER34, R_PPC64_ADDR16_HIGHERA34),
	(R_PPC64_ADDR16_HIGHEST34, R_PPC64_ADDR16_HIGHESTA34),
	(R_PPC64_REL16_HIGHER34, R_PPC64_REL16_HIGHERA34),
	(R_PPC64_REL16_HIGHEST34, R_PPC64_REL16_HIGHESTA34),
	(R_PPC64_D28, R_PPC64_PCREL28): Define.
bfd/
	* reloc.c (BFD_RELOC_PPC64_D34, BFD_RELOC_PPC64_D34_LO),
	(BFD_RELOC_PPC64_D34_HI30, BFD_RELOC_PPC64_D34_HA30),
	(BFD_RELOC_PPC64_PCREL34, BFD_RELOC_PPC64_GOT_PCREL34),
	(BFD_RELOC_PPC64_PLT_PCREL34),
	(BFD_RELOC_PPC64_ADDR16_HIGHER34, BFD_RELOC_PPC64_ADDR16_HIGHERA34),
	(BFD_RELOC_PPC64_ADDR16_HIGHEST34, BFD_RELOC_PPC64_ADDR16_HIGHESTA34),
	(BFD_RELOC_PPC64_REL16_HIGHER34, BFD_RELOC_PPC64_REL16_HIGHERA34),
	(BFD_RELOC_PPC64_REL16_HIGHEST34, BFD_RELOC_PPC64_REL16_HIGHESTA34),
	(BFD_RELOC_PPC64_D28, BFD_RELOC_PPC64_PCREL28): New reloc enums.
	* elf64-ppc.c (PNOP): Define.
	(ppc64_elf_howto_raw): Add reloc howtos for new relocations.
	(ppc64_elf_reloc_type_lookup): Translate new bfd reloc numbers.
	(ppc64_elf_ha_reloc): Adjust addend for highera34 and highesta34
	relocs.
	(ppc64_elf_prefix_reloc): New function.
	(struct ppc_link_hash_table): Add notoc_plt.
	(is_branch_reloc): Add R_PPC64_PLTCALL_NOTOC.
	(is_plt_seq_reloc): Add R_PPC64_PLT_PCREL34,
	R_PPC64_PLT_PCREL34_NOTOC, and R_PPC64_PLTSEQ_NOTOC.
	(ppc64_elf_check_relocs): Handle pcrel got and plt relocs.  Set
	has_pltcall for section on seeing R_PPC64_PLTCALL_NOTOC.  Handle
	possible need for dynamic relocs on non-pcrel powerxx relocs.
	(dec_dynrel_count): Handle non-pcrel powerxx relocs.
	(ppc64_elf_inline_plt): Handle R_PPC64_PLTCALL_NOTOC.
	(toc_adjusting_stub_needed): Likewise.
	(ppc64_elf_tls_optimize): Handle R_PPC64_PLTSEQ_NOTOC.
	(ppc64_elf_relocate_section): Handle new powerxx relocs.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
gas/
	* config/tc-ppc.c (ppc_elf_suffix): Support @pcrel, @got@pcrel,
	@plt@pcrel, @higher34, @highera34, @highest34, and @highesta34.
	(fixup_size): Handle new powerxx relocs.
	(md_assemble): Warn for @pcrel on non-prefix insns.
	Accept @l, @h and @ha on prefix insns, and infer reloc without
	any @ suffix.  Translate powerxx relocs to suit DQ and DS field
	instructions.  Include operand tests as well as opcode test to
	translate BFD_RELOC_HI16_S to BFD_RELOC_PPC_16DX_HA.
	(ppc_fix_adjustable): Return false for pcrel GOT and PLT relocs.
	(md_apply_fix): Handle new powerxx relocs.
	* config/tc-ppc.h (TC_FORCE_RELOCATION_SUB_LOCAL): Accept
	BFD_RELOC_PPC64_ADDR16_HIGHER34, BFD_RELOC_PPC64_ADDR16_HIGHERA34,
	BFD_RELOC_PPC64_ADDR16_HIGHEST34, BFD_RELOC_PPC64_ADDR16_HIGHESTA34,
	BFD_RELOC_PPC64_D34, and BFD_RELOC_PPC64_D28.
	* testsuite/gas/ppc/prefix-reloc.d,
	* testsuite/gas/ppc/prefix-reloc.s: New test.
	* testsuite/gas/ppc/ppc.exp: Run it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC GOT_PCREL34 optimisation
@ 2019-05-24  3:52 sergiodj+buildbot
  2019-05-24 23:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24  3:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4a421c53cf609d68fe956c2e7270d34c0ab8500f ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 4a421c53cf609d68fe956c2e7270d34c0ab8500f

PowerPC GOT_PCREL34 optimisation

bfd/
	* elf64-ppc.c (ppc64_elf_check_relocs): Set has_gotrel for
	R_PPC64_GOT_PCREL34.
	(xlate_pcrel_opt): New function.
	(ppc64_elf_edit_toc): Handle R_PPC64_GOT_PCREL34.
	(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
	for R_PPC64_GOT_PCREL34.  Implement R_PPC64_PCREL_OPT optimisation.
ld/
	* testsuite/ld-powerpc/pcrelopt.s,
	* testsuite/ld-powerpc/pcrelopt.d,
	* testsuite/ld-powerpc/pcrelopt.sec: New test.
	* testsuite/ld-powerpc/powerpc.exp: Run it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Add test-case for gdb-add-index.sh
@ 2019-05-24 23:35 sergiodj+buildbot
  2019-05-25  0:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-24 23:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5a01c34c62ff9085a0f45ec2a43a38e7b455b23b ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 5a01c34c62ff9085a0f45ec2a43a38e7b455b23b

[gdb/testsuite] Add test-case for gdb-add-index.sh

Add a test-case gdb.dwarf2/gdb-add-index.exp to test
gdb/contrib/gdb-add-index.sh.

Tested with x86_64-linux.

gdb/testsuite/ChangeLog:

2019-05-24  Tom de Vries  <tdevries@suse.de>

	* gdb.dwarf2/gdb-add-index.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
@ 2019-05-25  0:33 sergiodj+buildbot
  2019-05-27  7:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-25  0:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2301ed1c9af1316b4bad3747d2b03f7d44940f87 ***

Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Branch: master
Commit: 2301ed1c9af1316b4bad3747d2b03f7d44940f87

aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS

The bottom 2 bits of st_other are used for visibility, the top 6 bits are
de facto reserved for processor specific use.  This patch defines a
bits to mark function symbols that follow a variant procedure call standard
with different register usage convention.

A dynamic tag is also defined that marks modules with R_<CLS>_JUMP_SLOT
relocations referencing symbols marked with STO_AARCH64_VARIANT_PCS.
This can be used by dynamic linkers that support lazy binding to decide
what registers need to be preserved during symbol resolution.

binutils/ChangeLog:

	* readelf.c (get_aarch64_dynamic_type): Handle DT_AARCH64_VARIANT_PCS.
	(get_aarch64_symbol_other): New, handles STO_AARCH64_VARIANT_PCS.
	(get_symbol_other): Call get_aarch64_symbol_other.

include/ChangeLog:

	* elf/aarch64.h (DT_AARCH64_VARIANT_PCS): Define.
	(STO_AARCH64_VARIANT_PCS): Define.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] aarch64: handle STO_AARCH64_VARIANT_PCS in bfd
@ 2019-05-25  0:56 sergiodj+buildbot
  2019-05-27  7:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-25  0:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 823710d5856996d1f54f04ecb2f7647aeae99b5b ***

Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Branch: master
Commit: 823710d5856996d1f54f04ecb2f7647aeae99b5b

aarch64: handle STO_AARCH64_VARIANT_PCS in bfd

Propagate STO_AARCH64_VARIANT_PCS st_other attribute to the output and
add DT_AARCH64_VARIANT_PCS dynamic tag if necessary.

Mismatching attributes are not diagnosed.

bfd/ChangeLog:

	* elfnn-aarch64.c (elfNN_aarch64_merge_symbol_attribute): New function.
	(struct elf_aarch64_link_hash_table): Add variant_pcs member.
	(elfNN_aarch64_allocate_dynrelocs): Update variant_pcs.
	(elfNN_aarch64_size_dynamic_sections): Add DT_AARCH64_VARIANT_PCS.
	(elf_backend_merge_symbol_attribute): Define.

ld/ChangeLog:

	* testsuite/ld-aarch64/aarch64-elf.exp: Add new tests.
	* testsuite/ld-aarch64/variant_pcs-1.s: New asm for tests.
	* testsuite/ld-aarch64/variant_pcs-2.s: New asm for tests.
	* testsuite/ld-aarch64/variant_pcs-now.d: New test.
	* testsuite/ld-aarch64/variant_pcs-r.d: New test.
	* testsuite/ld-aarch64/variant_pcs-shared.d: New test.
	* testsuite/ld-aarch64/variant_pcs.ld: New linker script for tests.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Regen POTFILES for bpf
@ 2019-05-25  1:22 sergiodj+buildbot
  2019-05-25  1:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-25  1:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 405b5bd86fbcfa9ad5e67e9cdc49dfcdaacf533c ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 405b5bd86fbcfa9ad5e67e9cdc49dfcdaacf533c

Regen POTFILES for bpf

bfd/
	* po/SRC-POTFILES.in: Regenerate.
gas/
	* po/POTFILES.in: Regenerate.
ld/
	* po/BLD-POTFILES.in: Regenerate.
opcodes/
	* po/POTFILES.in: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Generic ELF target group signature symbol
@ 2019-05-27  8:33 sergiodj+buildbot
  2019-05-27  8:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-27  8:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d7d6a6ff4678685f86976f08ab4c9c639e262e1 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 3d7d6a6ff4678685f86976f08ab4c9c639e262e1

Generic ELF target group signature symbol

Even though the generic ELF target doesn't handle groups correctly,
this helps avoid a segfault in bfd_elf_set_group_contents seen on
d30v-elf, dlx-elf, pj-elf, and xgate-elf when linking the pr22836
testcase.

	PR 24596
bfd/
	* linker.c (_bfd_generic_link_output_symbols): Heed BSF_KEEP.
ld/
	* emultempl/genelf.em (gld${EMULATION_NAME}_after_open): Set
	BFS_KEEP on group signature symbol.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Another generic ELF target assertion failure
@ 2019-05-27  9:04 sergiodj+buildbot
  2019-05-27 21:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-27  9:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ce5aecf87372749a5ec511f218956756aa185d0f ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: ce5aecf87372749a5ec511f218956756aa185d0f

Another generic ELF target assertion failure

After fixing the ld-elf/pr22836-1a segmentation fault we run into an
assertion failure due to the generic ELF target not removing empty
SHT_GROUP sections.  Avoid that.

	* elf.c (bfd_elf_set_group_contents): Exit on zero size section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix typo in gdb/NEWS
@ 2019-05-28  3:44 sergiodj+buildbot
  2019-05-28  4:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-28  3:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT eb41253a15e2c976869ba1b1f0c3c0e60065fd4f ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: eb41253a15e2c976869ba1b1f0c3c0e60065fd4f

Fix typo in gdb/NEWS

I noticed a typo in gdb/NEWS.  This fixes it.

gdb/ChangeLog
2019-05-27  Tom Tromey  <tom@tromey.com>

	* NEWS: Fix typo.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] XCOFF linker segmentation fault
@ 2019-05-28  4:24 sergiodj+buildbot
  2019-05-28  4:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-28  4:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0eb32b6e1dee07ac199b4bba855205e4de099213 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 0eb32b6e1dee07ac199b4bba855205e4de099213

XCOFF linker segmentation fault

The XCOFF linker temporarily trims the output bfd section list,
without adjusting section_count to suit.  This is a little rude, but
the dwarf line number code can easily cope with this situation.  So
check for a NULL end of list as well as limiting the saved section
VMAs to the first section_count list entries.

Also fixes
-FAIL: Weak test 3 (main, static) (32-bit)
-FAIL: Weak test 3 (main, static) (64-bit)

	PR 24596
	* dwarf2.c (save_section_vma, section_vma_same): Check for NULL
	end of section list as well as section_count.
	* xcofflink.c (xcoff_link_add_symbols): Fix temporarily changed
	section list before returning error.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Obsolete tic30-aout, and linker segmentation faults
@ 2019-05-28  5:01 sergiodj+buildbot
  2019-05-28 23:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-28  5:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a7b34aba62ce347b4e64ca197a5c8b997e3b72df ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: a7b34aba62ce347b4e64ca197a5c8b997e3b72df

Obsolete tic30-aout, and linker segmentation faults

See also the FIXME.  tic30-aout linker support is so bad (and has been
that way since the initial tic30-aout commit) that I'm obsoleting the
target.  This patch fixes numerous linker testsuite segmentation faults.

	PR 24596
	* aout-tic30.c (MY_bfd_final_link): Don't segfault on missing
	create_object_symbols_section, obj_textsec, obj_datasec or
	obj_bsssec.  Fix other errors in placement.
	* config.bfd: Obsolete tic30-aout.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] LM32 linker segmentation faults
@ 2019-05-29  0:02 sergiodj+buildbot
  2019-05-29  3:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0f6fd217fa53ab80a335fb69f12f1f28ac3335a ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: a0f6fd217fa53ab80a335fb69f12f1f28ac3335a

LM32 linker segmentation faults

	PR 24596
	* elf32-lm32.c (lm32_elf_finish_dynamic_sections): Don't segfault
	on NULL output_section.
	* elflink.c (elf_final_link_free): Don't free -1 symshndxbuf.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Microblaze linker segmentation fault
@ 2019-05-29  0:06 sergiodj+buildbot
  2019-05-29  7:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 94667ab146a0c94f87f3d9aa7d1c819663b28338 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 94667ab146a0c94f87f3d9aa7d1c819663b28338

Microblaze linker segmentation fault

	PR 24596
	* elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Don't
	attempt to set sh_entsize for excluded PLT section.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Suppress SIGTTOU when handling errors
@ 2019-05-29  0:08 sergiodj+buildbot
  2019-05-29 10:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 766f883622ef008230250aa5aecef9fb9b29f233 ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: 766f883622ef008230250aa5aecef9fb9b29f233

Suppress SIGTTOU when handling errors

Calls to error () can cause SIGTTOU to send gdb to the background.

For example, on an Arm build:
  (gdb) b main
  Breakpoint 1 at 0x10774: file /build/gdb/testsuite/../../../src/binutils-gdb/gdb/testsuite/gdb.base/watchpoint.c, line 174.
  (gdb) r
  Starting program: /build/gdb/testsuite/outputs/gdb.base/watchpoint/watchpoint

  [1]+  Stopped                 ../gdb ./outputs/gdb.base/watchpoint/watchpoint
  localhost$ fg
  ../gdb ./outputs/gdb.base/watchpoint/watchpoint
  Cannot parse expression `.L1199 4@r4'.
  warning: Probes-based dynamic linker interface failed.
  Reverting to original interface.

The SIGTTOU is raised whilst inside a syscall during the call to tcdrain.
Fix is to use scoped_ignore_sigttou to ensure SIGTTOU is blocked.

In addition fix include comments - job_control is not included via terminal.h

gdb/ChangeLog:

	* event-top.c: Remove include comment.
	* inflow.c (class scoped_ignore_sigttou): Move from here...
	* inflow.h (class scoped_ignore_sigttou): ...to here.
	* ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
	* top.c:  Remove include comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] include: new header ctf-api.h
@ 2019-05-29  0:11 sergiodj+buildbot
  2019-05-29 14:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2e94b05630514109994abb77ee2dae730f17c263 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 2e94b05630514109994abb77ee2dae730f17c263

include: new header ctf-api.h

This non-installed header is the means by which libctf consumers
communicate with libctf.

This header will be extended in subsequent commits.

include/
	* ctf-api.h: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] m68k linker segmentation faults
@ 2019-05-29  0:24 sergiodj+buildbot
  2019-05-29  1:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c83004d526c9f5e203926a979d405f7b720b9ede ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: c83004d526c9f5e203926a979d405f7b720b9ede

m68k linker segmentation faults

This doesn't fix the underlying bug, but an abort is better than a
segfault.

	PR 24596
	* elf32-m68k.c (elf_m68k_get_got_entry): Don't create a new
	entry when MUST_FIND.  Abort when MUST_FIND not found.
	(elf_m68k_get_bfd2got_entry): Likewise.
	(elf_m68k_relocate_section): Remove now useless assert.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: low-level list manipulation and helper utilities
@ 2019-05-29  0:36 sergiodj+buildbot
  2019-05-29 18:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 94585e7f93c9477bcf2835d8245e967053ce2b41 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 94585e7f93c9477bcf2835d8245e967053ce2b41

libctf: low-level list manipulation and helper utilities

These utilities are a bit of a ragbag of small things needed by more
than one TU: list manipulation, ELF32->64 translators, routines to look
up strings in string tables, dynamically-allocated string appenders, and
routines to set the specialized errno values previously committed in
<ctf-api.h>.

We do still need to dig around in raw ELF symbol tables in places,
because libctf allows the caller to pass in the contents of string and
symbol sections without telling it where they come from, so we cannot
use BFD to get the symbols (BFD reasonably demands the entire file).  So
extract minimal ELF definitions from glibc into a private header named
libctf/elf.h: later, we use those to get symbols.  (The start-of-
copyright range on elf.h reflects this glibc heritage.)

libctf/
	* ctf-util.c: New file.
	* elf.h: Likewise.
	* ctf-impl.h: Include it, and add declarations.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: build system
@ 2019-05-29  0:50 sergiodj+buildbot
  2019-06-01 10:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0e65dfbaf3a0299e4837216a103c28625d4b4f1d ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 0e65dfbaf3a0299e4837216a103c28625d4b4f1d

libctf: build system

This ties libctf into the build system, and makes binutils depend on it
(used by the next commits).

	* Makefile.def (host_modules): Add libctf.
	* Makefile.def (dependencies): Likewise.
	libctf depends on zlib, libiberty, and bfd.
	* Makefile.in: Regenerated.
	* configure.ac (host_libs): Add libctf.
	* configure: Regenerated.

libctf/
	* Makefile.am: New.
	* Makefile.in: Regenerated.
	* config.h.in: Likewise.
	* aclocal.m4: Likewise.
	* configure: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add libctf to top-level MAINTAINERS; add myself as CTF maintainer.
@ 2019-05-29  0:56 sergiodj+buildbot
  2019-06-01 11:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  0:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 88981b157b08f2e9a404a2f86d4ee131f17ce3d4 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 88981b157b08f2e9a404a2f86d4ee131f17ce3d4

Add libctf to top-level MAINTAINERS; add myself as CTF maintainer.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove find_old_style_renaming_symbol
@ 2019-05-29  1:04 sergiodj+buildbot
  2019-06-01 11:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  1:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c0e70c624fc7d89f5cf281350692de89a063786f ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: c0e70c624fc7d89f5cf281350692de89a063786f

Remove find_old_style_renaming_symbol

We found a case where a "bt" was very slow with Ada code.  Profiling
with callgrind showed this to be primarily due to calls to
find_old_style_renaming_symbol.  Because new-style renaming symbols
were implemented in 2007, it seems safe enough to remove this old
code.

A "-batch -ex bt" test on a large Ada program improves from:

    13.23user 0.57system 0:13.82elapsed 99%CPU (0avgtext+0avgdata 571408maxresident)k

to

    4.25user 0.48system 0:04.74elapsed 99%CPU (0avgtext+0avgdata 559844maxresident)k

with this patch.

Tested on x86-64 Fedora 29.  Joel reviewed this internally; and as it
is Ada-specific, I am checking it in.

gdb/ChangeLog
2019-05-28  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_remove_Xbn_suffix)
	(find_old_style_renaming_symbol)
	(parse_old_style_renaming): Remove.
	(ada_find_renaming_symbol): Don't call
	find_old_style_renaming_symbol.
	(ada_is_renaming_symbol): Rename from
	ada_find_renaming_symbol.  Remove "block" parameter.  Return
	bool.  Now static.
	(ada_read_var_value): Update and simplify.
	* ada-exp.y (write_var_or_type): Remove old code.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86: Add CheckRegSize to AVX512_BF16 instructions with Disp8ShiftVL
@ 2019-05-29  1:10 sergiodj+buildbot
  2019-06-01 11:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  1:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a2f4b66c9eb5210f8ef6038d7194af1e5f314f97 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: a2f4b66c9eb5210f8ef6038d7194af1e5f314f97

x86: Add CheckRegSize to AVX512_BF16 instructions with Disp8ShiftVL

For AVX512 instructions with Disp8ShiftVL and Broadcast, we may need to
add CheckRegSize to check if broadcast matches the destination register
size.

gas/

	PR gas/24625
	* testsuite/gas/i386/inval-avx512f.s: Add tests for AVX512_BF16
	instructions with invalid broadcast.
	* testsuite/gas/i386/x86-64-inval-avx512f.s: Likewise.
	* testsuite/gas/i386/inval-avx512f.l: Updated.
	* testsuite/gas/i386/x86-64-inval-avx512f.l: Likewise.

opcodes/

	PR gas/24625
	* i386-opc.tbl: Add CheckRegSize to AVX512_BF16 instructions with
	Disp8ShiftVL.
	* i386-tbl.h: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: creation functions
@ 2019-05-29  1:53 sergiodj+buildbot
  2019-05-30  2:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  1:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 47d546f427d0d3bf9f503b5b118ae05b49d73d28 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 47d546f427d0d3bf9f503b5b118ae05b49d73d28

libctf: creation functions

The CTF creation process looks roughly like (error handling elided):

int err;
ctf_file_t *foo = ctf_create (&err);

ctf_id_t type = ctf_add_THING (foo, ...);
ctf_update (foo);
ctf_*write (...);

Some ctf_add_THING functions accept other type IDs as arguments,
depending on the type: cv-quals, pointers, and structure and union
members all take other types as arguments.  So do 'slices', which
let you take an existing integral type and recast it as a type
with a different bitness or offset within a byte, for bitfields.
One class of THING is not a type: "variables", which are mappings
of names (in the internal string table) to types.  These are mostly
useful when encoding variables that do not appear in a symbol table
but which some external user has some other way to figure out the
address of at runtime (dynamic symbol lookup or querying a VM
interpreter or something).

You can snapshot the creation process at any point: rolling back to a
snapshot deletes all types and variables added since that point.

You can make arbitrary type queries on the CTF container during the
creation process, but you must call ctf_update() first, which
translates the growing dynamic container into a static one (this uses
the CTF opening machinery, added in a later commit), which is quite
expensive.  This function must also be called after adding types
and before writing the container out.

Because addition of types involves looking up existing types, we add a
little of the type lookup machinery here, as well: only enough to
look up types in dynamic containers under construction.

libctf/
	* ctf-create.c: New file.
	* ctf-lookup.c: New file.

include/
	* ctf-api.h (zlib.h): New include.
	(ctf_sect_t): New.
	(ctf_sect_names_t): Likewise.
	(ctf_encoding_t): Likewise.
	(ctf_membinfo_t): Likewise.
	(ctf_arinfo_t): Likewise.
	(ctf_funcinfo_t): Likewise.
	(ctf_lblinfo_t): Likewise.
	(ctf_snapshot_id_t): Likewise.
	(CTF_FUNC_VARARG): Likewise.
	(ctf_simple_open): Likewise.
	(ctf_bufopen): Likewise.
	(ctf_create): Likewise.
	(ctf_add_array): Likewise.
	(ctf_add_const): Likewise.
	(ctf_add_enum_encoded): Likewise.
	(ctf_add_enum): Likewise.
	(ctf_add_float): Likewise.
	(ctf_add_forward): Likewise.
	(ctf_add_function): Likewise.
	(ctf_add_integer): Likewise.
	(ctf_add_slice): Likewise.
	(ctf_add_pointer): Likewise.
	(ctf_add_type): Likewise.
	(ctf_add_typedef): Likewise.
	(ctf_add_restrict): Likewise.
	(ctf_add_struct): Likewise.
	(ctf_add_union): Likewise.
	(ctf_add_struct_sized): Likewise.
	(ctf_add_union_sized): Likewise.
	(ctf_add_volatile): Likewise.
	(ctf_add_enumerator): Likewise.
	(ctf_add_member): Likewise.
	(ctf_add_member_offset): Likewise.
	(ctf_add_member_encoded): Likewise.
	(ctf_add_variable): Likewise.
	(ctf_set_array): Likewise.
	(ctf_update): Likewise.
	(ctf_snapshot): Likewise.
	(ctf_rollback): Likewise.
	(ctf_discard): Likewise.
	(ctf_write): Likewise.
	(ctf_gzwrite): Likewise.
	(ctf_compress_write): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: opening
@ 2019-05-29  2:19 sergiodj+buildbot
  2019-05-30  3:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  2:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 72f3392127e1892cb203a98092b4ae32485365fe ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 72f3392127e1892cb203a98092b4ae32485365fe

libctf: opening

This fills in the other half of the opening/creation puzzle: opening of
already-existing CTF files.  Such files are always read-only: if you
want to add to a CTF file opened with one of the opening functions in
this file, use ctf_add_type(), in a later commit, to copy appropriate
types into a newly ctf_create()d, writable container.

The lowest-level opening functions are in here: ctf_bufopen(), which
takes ctf_sect_t structures akin to ELF section headers, and
ctf_simple_open(), which can be used if you don't have an entire ELF
section header to work from.  Both will malloc() new space for the
buffers only if necessary, will mmap() directly from the file if
requested, and will mprotect() it afterwards to prevent accidental
corruption of the types. These functions are also used by ctf_update()
when converting types in a writable container into read-only types that
can be looked up using the lookup functions (in later commits).

The files are always of the native endianness of the system that created
them: at read time, the endianness of the header magic number is used to
determine whether or not the file needs byte-swapping, and the entire
thing is aggressively byte-swapped.

The agggressive nature of this swapping avoids complicating the rest of
the code with endianness conversions, while the native endianness
introduces no byte-swapping overhead in the common case. (The
endianness-independence code is also much newer than everything else in
this file, and deserves closer scrutiny.)

The accessors at the top of the file are there to transparently support
older versions of the CTF file format, allowing translation from older
formats that have different sizes for the structures in ctf.h:
currently, these older formats are intermingled with the newer ones in
ctf.h: they will probably migrate to a compatibility header in time, to
ease readability.  The ctf_set_base() function is split out for the same
reason: when conversion code to a newer format is written, it would need
to malloc() new storage for the entire ctf_file_t if a file format
change causes it to grow, and for that we need ctf_set_base() to be a
separate function.

One pair of linked data structures supported by this file has no
creation code in libctf yet: the data and function object sections read
by init_symtab(). These will probably arrive soon, when the linker comes
to need them. (init_symtab() has hardly been changed since 2009, but if
any code in libctf has rotted over time, this will.)

A few simple accessors are also present that can even be called on
read-only containers because they don't actually modify them, since the
relevant things are not stored in the container but merely change its
operation: ctf_setmodel(), which lets you specify whether a container is
LP64 or not (used to statically determine the sizes of a few types),
ctf_import(), which is the only way to associate a parent container with
a child container, and ctf_setspecific(), which lets the caller
associate an arbitrary pointer with the CTF container for any use. If
the user doesn't call these functions correctly, libctf will misbehave:
this is particularly important for ctf_import(), since a container built
against a given parent container will not be able to resolve types that
depend on types in the parent unless it is ctf_import()ed with a parent
container with the same set of types at the same IDs, or a superset.

Possible future extensions (also noted in the ctf-hash.c file) include
storing a count of things so that we don't need to do one pass over the
CTF file counting everything, and computing a perfect hash at CTF
creation time in some compact form, storing it in the CTF file, and
using it to hash things so we don't need to do a second pass over the
entire CTF file to set up the hashes used to go from names to type IDs.
(There are multiple such hashes, one for each C type namespace: types,
enums, structs, and unions.)

libctf/
	* ctf-open.c: New file.
	* swap.h: Likewise.
include/
	* ctf-api.h (ctf_file_close): New declaration.
	(ctf_getdatasect): Likewise.
	(ctf_parent_file): Likewise.
	(ctf_parent_name): Likewise.
	(ctf_parent_name_set): Likewise.
	(ctf_import): Likewise.
	(ctf_setmodel): Likewise.
	(ctf_getmodel): Likewise.
	(ctf_setspecific): Likewise.
	(ctf_getspecific): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: mmappable archives
@ 2019-05-29  3:14 sergiodj+buildbot
  2019-05-30  9:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  3:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9402cc593f4aa54677203efa9a92c4f28d3033eb ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 9402cc593f4aa54677203efa9a92c4f28d3033eb

libctf: mmappable archives

If you need to store a large number of CTF containers somewhere, this
provides a dedicated facility for doing so: an mmappable archive format
like a very simple tar or ar without all the system-dependent format
horrors or need for heavy file copying, with built-in compression of
files above a particular size threshold.

libctf automatically mmap()s uncompressed elements of these archives, or
uncompresses them, as needed.  (If the platform does not support mmap(),
copying into dynamically-allocated buffers is used.)

Archive iteration operations are partitioned into raw and non-raw
forms. Raw operations pass thhe raw archive contents to the callback:
non-raw forms open each member with ctf_bufopen() and pass the resulting
ctf_file_t to the iterator instead.  This lets you manipulate the raw
data in the archive, or the contents interpreted as a CTF file, as
needed.

It is not yet known whether we will store CTF archives in a linked ELF
object in one of these (akin to debugdata) or whether they'll get one
section per TU plus one parent container for types shared between them.
(In the case of ELF objects with very large numbers of TUs, an archive
of all of them would seem preferable, so we might just use an archive,
and add lzma support so you can assume that .gnu_debugdata and .ctf are
compressed using the same algorithm if both are present.)

To make usage easier, the ctf_archive_t is not the on-disk
representation but an abstraction over both ctf_file_t's and archives of
many ctf_file_t's: users see both CTF archives and raw CTF files as
ctf_archive_t's upon opening, the only difference being that a raw CTF
file has only a single "archive member", named ".ctf" (the default if a
null pointer is passed in as the name).  The next commit will make use
of this facility, in addition to providing the public interface to
actually open archives.  (In the future, it should be possible to have
all CTF sections in an ELF file appear as an "archive" in the same
fashion.)

This machinery is also used to allow library-internal creators of
ctf_archive_t's (such as the next commit) to stash away an ELF string
and symbol table, so that all opens of members in a given archive will
use them.  This lets CTF archives exploit the ELF string and symbol
table just like raw CTF files can.

(All this leads to somewhat confusing type naming.  The ctf_archive_t is
a typedef for the opaque internal type, struct ctf_archive_internal: the
non-internal "struct ctf_archive" is the on-disk structure meant for
other libraries manipulating CTF files.  It is probably clearest to use
the struct name for struct ctf_archive_internal inside the program, and
the typedef names outside.)

libctf/
	* ctf-archive.c: New.
	* ctf-impl.h (ctf_archive_internal): New type.
	(ctf_arc_open_internal): New declaration.
	(ctf_arc_bufopen): Likewise.
	(ctf_arc_close_internal): Likewise.
include/
	* ctf.h (CTFA_MAGIC): New.
	(struct ctf_archive): New.
	(struct ctf_archive_modent): Likewise.
	* ctf-api.h (ctf_archive_member_f): New.
	(ctf_archive_raw_member_f): Likewise.
	(ctf_arc_write): Likewise.
	(ctf_arc_close): Likewise.
	(ctf_arc_open_by_name): Likewise.
	(ctf_archive_iter): Likewise.
	(ctf_archive_raw_iter): Likewise.
	(ctf_get_arc): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: core type lookup
@ 2019-05-29  3:33 sergiodj+buildbot
  2019-05-31 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  3:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 316afdb130346e44622229793d1fb8d391059f8d ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 316afdb130346e44622229793d1fb8d391059f8d

libctf: core type lookup

Finally we get to the functions used to actually look up and enumerate
properties of types in a container (names, sizes, members, what type a
pointer or cv-qual references, determination of whether two types are
assignment-compatible, etc).

With a very few exceptions these do not work for types newly added via
ctf_add_*(): they only work on types in read-only containers, or types
added before the most recent call to ctf_update().

This also adds support for lookup of "variables" (string -> type ID
mappings) and for generation of C type names corresponding to a type ID.

libctf/
	* ctf-decl.c: New file.
	* ctf-types.c: Likewise.
	* ctf-impl.h: New declarations.

include/
	* ctf-api.h (ctf_visit_f): New definition.
	(ctf_member_f): Likewise.
	(ctf_enum_f): Likewise.
	(ctf_variable_f): Likewise.
	(ctf_type_f): Likewise.
	(ctf_type_isparent): Likewise.
	(ctf_type_ischild): Likewise.
	(ctf_type_resolve): Likewise.
	(ctf_type_aname): Likewise.
	(ctf_type_lname): Likewise.
	(ctf_type_name): Likewise.
	(ctf_type_sizee): Likewise.
	(ctf_type_align): Likewise.
	(ctf_type_kind): Likewise.
	(ctf_type_reference): Likewise.
	(ctf_type_pointer): Likewise.
	(ctf_type_encoding): Likewise.
	(ctf_type_visit): Likewise.
	(ctf_type_cmp): Likewise.
	(ctf_type_compat): Likewise.
	(ctf_member_info): Likewise.
	(ctf_array_info): Likewise.
	(ctf_enum_name): Likewise.
	(ctf_enum_value): Likewise.
	(ctf_member_iter): Likewise.
	(ctf_enum_iter): Likewise.
	(ctf_type_iter): Likewise.
	(ctf_variable_iter): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: library version enforcement
@ 2019-05-29  4:16 sergiodj+buildbot
  2019-05-31 19:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  4:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6c33b742ce19cc2fd226d84f2991572239199a62 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 6c33b742ce19cc2fd226d84f2991572239199a62

libctf: library version enforcement

This old Solaris standard allows callers to specify that they are
expecting one particular API and/or CTF file format from the library.

libctf/
	* ctf-impl.h (_libctf_version): New declaration.
	* ctf-subr.c (_libctf_version): Define it.
	(ctf_version): New.

include/
	* ctf-api.h (ctf_version): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: labels
@ 2019-05-29  4:47 sergiodj+buildbot
  2019-06-01  3:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  4:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6dbf2b734063522b4f3d7403ce7a2b436802b839 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 6dbf2b734063522b4f3d7403ce7a2b436802b839

libctf: labels

This facility allows you to associate regions of type IDs with *labels*,
a labelled tiling of the type ID space. You can use these to define
CTF containers with distinct parents for distinct ranges of the ID
space, or to assist with parallelization of CTF processing, or for any
other purpose you can think of.

Notably absent from here (though declared in the API header) is any way
to define new labels: this will probably be introduced soon, as part of
the linker deduplication work.  (One existed in the past, but was deeply
tied to the Solaris CTF file generator and had to be torn out.)

libctf/
	* ctf-labels.c: New.
include/
	* ctf-api.h (ctf_label_f): New.
	(ctf_label_set): New.
	(ctf_label_get): New.
	(ctf_label_topmost): New.
	(ctf_label_info): New.
	(ctf_label_iter): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: debug dumping
@ 2019-05-29  4:51 sergiodj+buildbot
  2019-06-01  7:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  4:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a30b3e182aad25f94de6412efd5d78f7805fb4d3 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: a30b3e182aad25f94de6412efd5d78f7805fb4d3

libctf: debug dumping

This introduces ctf_dump(), an iterator which returns a series of
strings, each representing a debugging dump of one item from a given
section in the CTF file.  The items may be multiline: a callback is
provided to allow the caller to decorate each line as they desire before
the line is returned.

libctf/
	* ctf-dump.c: New.

include/
	* ctf-api.h (ctf_dump_decorate_f): New.
	(ctf_dump_state_t): new.
	(ctf_dump): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] COFF linker segmentation faults
@ 2019-05-29  5:10 sergiodj+buildbot
  2019-05-29  9:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  5:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0f4a61b42002f568473f821f00dd240413beadd0 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 0f4a61b42002f568473f821f00dd240413beadd0

COFF linker segmentation faults

A plugin can change the element, so call the generic
bfd_link_add_symbols.

	PR 24596
	* cofflink.c (coff_link_check_archive_element): Don't assume
	element is a coff object file after calling add_archive_element.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] include: new header ctf.h: file format description
@ 2019-05-29  7:56 sergiodj+buildbot
  2019-05-29 12:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  7:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fceac76e64b998c9b66a229134a9ead25209e095 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: fceac76e64b998c9b66a229134a9ead25209e095

include: new header ctf.h: file format description

The data structures and macros in this header can be used, if desired,
to access or create CTF files directly, without going through libctf,
though this should rarely be necessary in practice.

libctf relies on this header as its description of the CTF file format.

include/
	* ctf.h: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: lowest-level memory allocation and debug-dumping wrappers
@ 2019-05-29  9:28 sergiodj+buildbot
  2019-05-29 15:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29  9:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 60da9d955964759b1f52690bff587ad32a198507 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 60da9d955964759b1f52690bff587ad32a198507

libctf: lowest-level memory allocation and debug-dumping wrappers

The memory-allocation wrappers are simple things to allow malloc
interposition: they are only used inconsistently at present, usually
where malloc debugging was required in the past.

These provide a default implementation that is environment-variable
triggered (initialized on the first call to the libctf creation and
file-opening functions, the first functions people will use), and
a ctf_setdebug()/ctf_getdebug() pair that allows the caller to
explicitly turn debugging off and on.  If ctf_setdebug() is called,
the automatic setting from an environment variable is skipped.

libctf/
	* ctf-impl.h: New file.
	* ctf-subr.c: New file.

include/
	* ctf-api.h (ctf_setdebug): New.
	(ctf_getdebug): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix libctf build on non-ELF targets.
@ 2019-05-29 10:40 sergiodj+buildbot
  2019-06-01 11:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 10:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9698cf9b1c485edbbeabc9f65bfd0fdef92e3854 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 9698cf9b1c485edbbeabc9f65bfd0fdef92e3854

Fix libctf build on non-ELF targets.

All machinery works as on ELF, except for automatic loading of ELF
string and symbol tables in the BFD-style open machinery.

        * Makefile.def (dependencies): configure-libctf depends on all-bfd
        and all its deps.
        * Makefile.in: Regenerated.

libctf/
        * configure.in: Check for bfd_section_from_elf_index.
        * configure: Regenerate.
        * config.h.in [HAVE_BFD_ELF]: Likewise.
        * libctf/ctf_open_bfd (ctf_bfdopen_ctfsect): Use it.
        abfd is potentially unused now.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: error handling
@ 2019-05-29 10:59 sergiodj+buildbot
  2019-05-29 20:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 10:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 479604f44fc1eaa02a97ebcc1b60f55a606c4046 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 479604f44fc1eaa02a97ebcc1b60f55a606c4046

libctf: error handling

CTF functions return zero on success or an extended errno value which
can be translated into a string via the functions in this commit.

The errno numbers start at -CTF_BASE.

libctf/
	* ctf-error.c: New file.

include/
	* ctf-api.h (ctf_errno): New declaration.
	(ctf_errmsg): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Do not build libctf for targets that do not use the ELF file format.
@ 2019-05-29 11:42 sergiodj+buildbot
  2019-06-01 12:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 11:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 90bd54236cb8b1c31c3662977159be971044c20d ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 90bd54236cb8b1c31c3662977159be971044c20d

Do not build libctf for targets that do not use the ELF file format.

top	* configure.ac (noconfigdirs): Add libctf if the target does not use
	the ELF file format.
	* configure: Regenerate.

binutils* configure.ac (LIBCTF): Export.  Set to empty for non-ELF based
	targets.
	(HAVE_LIBCTF): Define if libctf support is available.
	* Makefile.am (LIBCTF): Set value to @LIBCTF@.
	* objdump.c: Make CTF code conditional upon HAVE_LIBCTF being
	defined.
	* readelf.c: Likewise.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* config.in: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: implementation definitions related to file creation
@ 2019-05-29 12:26 sergiodj+buildbot
  2019-05-30  0:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 12:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a5be9bbe896d4adb6077e9bb2ebcaaa4426bdde1 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: a5be9bbe896d4adb6077e9bb2ebcaaa4426bdde1

libctf: implementation definitions related to file creation

We now enter a series of commits that are sufficiently tangled that
avoiding forward definitions is almost impossible: no attempt is made to
make individual commits compilable (which is why the build system does
not reference any of them yet): the only important thing is that they
should form something like conceptual groups.

But first, some definitions, including the core ctf_file_t itself.  Uses
of these definitions will be introduced in later commits.

libctf/
	* ctf-impl.h: New definitions and declarations for type creation
	and lookup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: ELF file opening via BFD
@ 2019-05-29 16:18 sergiodj+buildbot
  2019-05-31 16:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 143dce8481f09f60704ab52b98cf8fe6d8b29fc9 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 143dce8481f09f60704ab52b98cf8fe6d8b29fc9

libctf: ELF file opening via BFD

These functions let you open an ELF file with a customarily-named CTF
section in it, automatically opening the CTF file or archive and
associating the symbol and string tables in the ELF file with the CTF
container, so that you can look up the types of symbols in the ELF file
via ctf_lookup_by_symbol(), and so that strings can be shared between
the ELF file and CTF container, to save space.

It uses BFD machinery to do so.  This has now been lightly tested and
seems to work.  In particular, if you already have a bfd you can pass
it in to ctf_bfdopen(), and if you want a bfd made for you you can
call ctf_open() or ctf_fdopen(), optionally specifying a target (or
try once without a target and then again with one if you get
ECTF_BFD_AMBIGUOUS back).

We use a forward declaration for the struct bfd in ctf-api.h, so that
ctf-api.h users are not required to pull in <bfd.h>.  (This is mostly
for the sake of readelf.)

libctf/
	* ctf-open-bfd.c: New file.
	* ctf-open.c (ctf_close): New.
	* ctf-impl.h: Include bfd.h.
	(ctf_file): New members ctf_data_mmapped, ctf_data_mmapped_len.
	(ctf_archive_internal): New members ctfi_abfd, ctfi_data,
	ctfi_bfd_close.
	(ctf_bfdopen_ctfsect): New declaration.
	(_CTF_SECTION): likewise.

include/
	* ctf-api.h (struct bfd): New forward.
	(ctf_fdopen): New.
	(ctf_bfdopen): Likewise.
	(ctf_open): Likewise.
	(ctf_arc_open): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: lookups by name and symbol
@ 2019-05-29 19:15 sergiodj+buildbot
  2019-05-31 16:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-29 19:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b437bfe0f4cf06559ca4c508a2869383196ddc6b ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: b437bfe0f4cf06559ca4c508a2869383196ddc6b

libctf: lookups by name and symbol

These functions allow you to look up types given a name in a simple
subset of C declarator syntax (no function pointers), to look up the
types of variables given a name, and to look up the types of data
objects and the type signatures of functions given symbol table offsets.

(Despite its name, one function in this commit, ctf_lookup_symbol_name(),
is for the internal use of libctf only, and does not appear in any
public header files.)

libctf/
	* ctf-lookup.c (isqualifier): New.
	(ctf_lookup_by_name): Likewise.
	(struct ctf_lookup_var_key): Likewise.
	(ctf_lookup_var): Likewise.
	(ctf_lookup_variable): Likewise.
	(ctf_lookup_symbol_name): Likewise.
	(ctf_lookup_by_symbol): Likewise.
	(ctf_func_info): Likewise.
	(ctf_func_args): Likewise.

include/
	* ctf-api.h (ctf_func_info): New.
	(ctf_func_args): Likewise.
	(ctf_lookup_by_symbol): Likewise.
	(ctf_lookup_by_symbol): Likewise.
	(ctf_lookup_variable): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Initialize variable word in complete
@ 2019-05-30 14:19 sergiodj+buildbot
  2019-06-02  2:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-30 14:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0ef209f22c24b9243de68c35c576f7111198f915 ***

Author: Jan Vrany <jan.vrany@fit.cvut.cz>
Branch: master
Commit: 0ef209f22c24b9243de68c35c576f7111198f915

Initialize variable word in complete

The complete function should set parameter word to the end of the
word to complete. However, completion_find_completion_word may fail,
leaving word uninitialized.

To make sure word is always set, initialize it to the completion point
which is the end of the line parameter.

gdb/Changelog

	PR cli/24587
	* completer.c (complete): Initialize variable word.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Two comment fixes in gdbtypes.h
@ 2019-05-30 16:46 sergiodj+buildbot
  2019-06-02  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-30 16:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bfcdb85206cd3c3b8ad73b13db6bfb2ec608239b ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: bfcdb85206cd3c3b8ad73b13db6bfb2ec608239b

Two comment fixes in gdbtypes.h

This fixes a couple of comments in gdbtypes.h.  One comment had a
typo; and another comment referred to "Moto", which is presumably some
long-gone Motorola-related project.

Tested by rebuilding.

gdb/ChangeLog
2019-05-30  Tom Tromey  <tromey@adacore.com>

	* gdbtypes.h (struct range_bounds) <flag_upper_bound_is_count>:
	Fix comment.
	(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): Rewrite comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: fix a number of build problems found on Solaris and NetBSD
@ 2019-05-31 15:41 sergiodj+buildbot
  2019-06-02 23:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-31 15:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0486bac41d6ce47f27795a5abbca5cc53ddba00 ***

Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Branch: master
Commit: a0486bac41d6ce47f27795a5abbca5cc53ddba00

libctf: fix a number of build problems found on Solaris and NetBSD

- Use of nonportable <endian.h>
- Use of qsort_r
- Use of zlib without appropriate magic to pull in the binutils zlib
- Use of off64_t without checking (fixed by dropping the unused fields
  that need off64_t entirely)
- signedness problems due to long being too short a type on 32-bit
  platforms: ctf_id_t is now 'unsigned long', and CTF_ERR must be
  used only for functions that return ctf_id_t
- One lingering use of bzero() and of <sys/errno.h>

All fixed, using code from gnulib where possible.

Relatedly, set cts_size in a couple of places it was missed
(string table and symbol table loading upon ctf_bfdopen()).

binutils/
	* objdump.c (make_ctfsect): Drop cts_type, cts_flags, and
	cts_offset.
	* readelf.c (shdr_to_ctf_sect): Likewise.
include/
	* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
	(ctf_id_t): This is now an unsigned type.
	(CTF_ERR): Cast it to ctf_id_t.  Note that it should only be used
	for ctf_id_t-returning functions.
libctf/
	* Makefile.am (ZLIB): New.
	(ZLIBINC): Likewise.
	(AM_CFLAGS): Use them.
	(libctf_a_LIBADD): New, for LIBOBJS.
	* configure.ac: Check for zlib, endian.h, and qsort_r.
	* ctf-endian.h: New, providing htole64 and le64toh.
	* swap.h: Code style fixes.
	(bswap_identity_64): New.
	* qsort_r.c: New, from gnulib (with one added #include).
	* ctf-decls.h: New, providing a conditional qsort_r declaration,
	and unconditional definitions of MIN and MAX.
	* ctf-impl.h: Use it.  Do not use <sys/errno.h>.
	(ctf_set_errno): Now returns unsigned long.
	* ctf-util.c (ctf_set_errno): Adjust here too.
	* ctf-archive.c: Use ctf-endian.h.
	(ctf_arc_open_by_offset): Use memset, not bzero.  Drop cts_type,
	cts_flags and cts_offset.
	(ctf_arc_write): Drop debugging dependent on the size of off_t.
	* ctf-create.c: Provide a definition of roundup if not defined.
	(ctf_create): Drop cts_type, cts_flags and cts_offset.
	(ctf_add_reftype): Do not check if type IDs are below zero.
	(ctf_add_slice): Likewise.
	(ctf_add_typedef): Likewise.
	(ctf_add_member_offset): Cast error-returning ssize_t's to size_t
	when known error-free.  Drop CTF_ERR usage for functions returning
	int.
	(ctf_add_member_encoded): Drop CTF_ERR usage for functions returning
	int.
	(ctf_add_variable): Likewise.
	(enumcmp): Likewise.
	(enumadd): Likewise.
	(membcmp): Likewise.
	(ctf_add_type): Likewise.  Cast error-returning ssize_t's to size_t
	when known error-free.
	* ctf-dump.c (ctf_is_slice): Drop CTF_ERR usage for functions
	returning int: use CTF_ERR for functions returning ctf_type_id.
	(ctf_dump_label): Likewise.
	(ctf_dump_objts): Likewise.
	* ctf-labels.c (ctf_label_topmost): Likewise.
	(ctf_label_iter): Likewise.
	(ctf_label_info): Likewise.
	* ctf-lookup.c (ctf_func_args): Likewise.
	* ctf-open.c (upgrade_types): Cast to size_t where appropriate.
	(ctf_bufopen): Likewise.  Use zlib types as needed.
	* ctf-types.c (ctf_member_iter): Drop CTF_ERR usage for functions
	returning int.
	(ctf_enum_iter): Likewise.
	(ctf_type_size): Likewise.
	(ctf_type_align): Likewise.  Cast to size_t where appropriate.
	(ctf_type_kind_unsliced): Likewise.
	(ctf_type_kind): Likewise.
	(ctf_type_encoding): Likewise.
	(ctf_member_info): Likewise.
	(ctf_array_info): Likewise.
	(ctf_enum_value): Likewise.
	(ctf_type_rvisit): Likewise.
	* ctf-open-bfd.c (ctf_bfdopen): Drop cts_type, cts_flags and
	cts_offset.
	(ctf_simple_open): Likewise.
	(ctf_bfdopen_ctfsect): Likewise.  Set cts_size properly.
	* Makefile.in: Regenerate.
	* aclocal.m4: Likewise.
	* config.h: Likewise.
	* configure: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add previous_saved_command_line to allow a command to repeat a previous command.
@ 2019-05-31 17:03 sergiodj+buildbot
  2019-06-02 23:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-31 17:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 68bb5386b84af4031175bf186269eb6b54b8611d ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 68bb5386b84af4031175bf186269eb6b54b8611d

Add previous_saved_command_line to allow a command to repeat a previous command.

Currently, a previous command can be repeated when the user types an
empty line.  This is implemented in handle_line_of_input by
returning saved_command_line in case an empty line has been input.

If we want a command to repeat the previous command, we need to save
the previous saved_command_line, as when a command runs, the saved_command_line
already contains the current command line of the command being executed.

As suggested by Tom, the previous_saved_command_line is made static.
At the same time, saved_command_line is also made static.
The support functions/variables for the repeat command logic are now all
located inside top.c.

gdb/ChangeLog
2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* top.h (saved_command_line): Remove declaration.
	* top.c (previous_saved_command_line, previous_repeat_arguments):
	New variables.
	(saved_command_line): Make static, define together with other
	'repeat variables'.
	(dont_repeat): Clear repeat_arguments.
	(repeat_previous, get_saved_command_line, save_command_line):
	New functions.
	(gdb_init): Initialize saved_command_line
	and previous_saved_command_line.
	* main.c (captured_main_1): Remove saved_command_line initialization.
	* event-top.c (handle_line_of_input): Update to use
	the new 'repeat' related functions instead of direct access to
	saved_command_line.
	* command.h (repeat_previous, get_saved_command_line,
	save_command_line): New declarations.
	(dont_repeat): Add comment.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Implement | (pipe) command.
@ 2019-05-31 18:04 sergiodj+buildbot
  2019-06-02 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-31 18:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 947d39462e26b0edee9b58003ea579552dbf4fa8 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 947d39462e26b0edee9b58003ea579552dbf4fa8

Implement | (pipe) command.

The pipe command allows to run a GDB command, and pipe its output
to a shell command:
  (gdb) help pipe
  Send the output of a gdb command to a shell command.
  Usage: | [COMMAND] | SHELL_COMMAND
  Usage: | -d DELIM COMMAND DELIM SHELL_COMMAND
  Usage: pipe [COMMAND] | SHELL_COMMAND
  Usage: pipe -d DELIM COMMAND DELIM SHELL_COMMAND

  Executes COMMAND and sends its output to SHELL_COMMAND.

  The -d option indicates to use the string DELIM to separate COMMAND
  from SHELL_COMMAND, in alternative to |.  This is useful in
  case COMMAND contains a | character.

  With no COMMAND, repeat the last executed command
  and send its output to SHELL_COMMAND.
  (gdb)

For example:
  (gdb) pipe print some_data_structure | grep -B3 -A3 something

The pipe character is defined as an alias for pipe command, so that
the above can be typed as:
  (gdb) | print some_data_structure | grep -B3 -A3 something

If no GDB COMMAND is given, then the previous command is relaunched,
and its output is sent to the given SHELL_COMMAND.

This also defines convenience vars $_shell_exitcode and $_shell_exitsignal
to record the exit code and exit signal of the last shell command
launched by GDB e.g. by "shell", "pipe", ...

gdb/ChangeLog
2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* cli/cli-cmds.c (pipe_command): New function.
	(_initialize_cli_cmds): Call add_com for pipe_command.
	Define | as an alias for pipe.
	(exit_status_set_internal_vars): New function.
	(shell_escape): Call exit_status_set_internal_vars.
	cli/cli-decode.c (find_command_name_length): Recognize | as
	a single character command.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] NEWS and documentation for | (pipe) command.
@ 2019-05-31 18:35 sergiodj+buildbot
  2019-06-03  2:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-31 18:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e2c52041c02e2bdee5b28e97c7997caf0ee5bb2d ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: e2c52041c02e2bdee5b28e97c7997caf0ee5bb2d

NEWS and documentation for | (pipe) command.

gdb/ChangeLog
	* NEWS: Mention new pipe command and new convenience variables.

gdb/doc/ChangeLog
	* gdb.texinfo (Shell Commands): Document pipe command.
	(Logging Output): Add a reference to pipe command.
	(Convenience Variables): Document $_shell_exitcode and
	$_shell_exitstatus.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Test the | (pipe) command.
@ 2019-05-31 19:53 sergiodj+buildbot
  2019-06-03  0:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-05-31 19:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 708dc93ed0c8ee744e2784a1c349d8129a84200f ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 708dc93ed0c8ee744e2784a1c349d8129a84200f

Test the | (pipe) command.

gdb/testsuite/ChangeLog
2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.base/shell.exp: Test pipe command, $_shell_exitcode,
	$_shell_exitsignal.
	* gdb.base/default.exp: Update for new convenience variables.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove fromhex implementation from gdbreplay
@ 2019-06-03  2:58 sergiodj+buildbot
  2019-06-03  3:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03  2:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 88ed7edbc632245fad33145e723d27976b6732ca ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 88ed7edbc632245fad33145e723d27976b6732ca

Remove fromhex implementation from gdbreplay

gdbreplay had its own implementation of fromhex.  This patch changes
it to use the one in common/.

gdb/gdbserver/ChangeLog
2019-06-02  Tom Tromey  <tom@tromey.com>

	* gdbreplay.c (fromhex): Remove.
	* Makefile.in (GDBREPLAY_OBS): Add rsp-low.o.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Revert patch that disables building libctf for non-ELF based targets.
@ 2019-06-03 21:15 sergiodj+buildbot
  2019-06-03 21:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03 21:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 79b377b3cf3a0e71e1e4710c4ee1e65e7a27a5d4 ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: 79b377b3cf3a0e71e1e4710c4ee1e65e7a27a5d4

Revert patch that disables building libctf for non-ELF based targets.

Revert:
binutls	2019-05-29  Nick Clifton  <nickc@redhat.com>

	* configure.ac (LIBCTF): Export.  Set to empty for non-ELF based
	targets.
	(HAVE_LIBCTF): Define if libctf support is available.
	* Makefile.am (LIBCTF): Set value to @LIBCTF@.
	* objdump.c: Make CTF code conditional upon HAVE_LIBCTF being
	defined.
	* readelf.c: Likewise.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* config.in: Regenerate.

top	2019-05-29  Nick Clifton  <nickc@redhat.com>

	* configure.ac (noconfigdirs): Add libctf if the target does not use
	the ELF file format.
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add highlight style, title style, fputs_highlighted. Improve 'show style'
@ 2019-06-03 21:49 sergiodj+buildbot
  2019-06-03 22:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03 21:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9303eb2fb1630678def10613c81215c2bd21d278 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 9303eb2fb1630678def10613c81215c2bd21d278

Add highlight style, title style, fputs_highlighted. Improve 'show style'

Have 'show style' and its subcommands using a style to style its output.
This allows the GDB user or developer to use 'show style' to visually see
with one command how all the current styles look like.

Add 2 new styles highlight style, title style and fputs_highlighted function.

Highlight style is used by fputs_highlighted to highlight the parts of
its char *STR argument that match a HIGHLIGHT regexp.
This (and the title style) will be used in a following patch.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Improve usability and/or readibility of help and apropos output.
@ 2019-06-03 22:05 sergiodj+buildbot
  2019-06-04 16:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03 22:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 66d8c862859ab241c1db9b40c3981f8a71951bd4 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 66d8c862859ab241c1db9b40c3981f8a71951bd4

Improve usability and/or readibility of help and apropos output.

The "help" command can output long list of command names or classes.
Use the title style to style the command names or classes to make
the output more readable.

Similarly, change "apropos" command to also style the command names.

It is sometimes unclear why "apropos REGEXP" lists some commands,
and then the user has to manually do 'help command' for all commands
listed by "apropos" to see more details about the matching commands.

=> Add an optional flag -v so that "apropos -v REGEXP":
  * outputs the full documentation of matching commands.
  * highlights the documentation parts matching REGEXP.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update tests following changes to "help" and "apropos"
@ 2019-06-03 22:28 sergiodj+buildbot
  2019-06-04 18:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03 22:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 206584bdf15aa19bb3c971b28e2c1fc04f32d027 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: 206584bdf15aa19bb3c971b28e2c1fc04f32d027

Update tests following changes to "help" and "apropos"

Factorizes the testing of the help output, by having a single place
that defines the common help trailer and/or prefix messages.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Document in NEWS and gdb.texinfo the "help", "apropos" and "show style" changes.
@ 2019-06-03 23:06 sergiodj+buildbot
  2019-06-04 20:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-03 23:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e664d728038abf414b6fb1a1c8cd3aacd0bb3b67 ***

Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Branch: master
Commit: e664d728038abf414b6fb1a1c8cd3aacd0bb3b67

Document in NEWS and gdb.texinfo the "help", "apropos" and "show style" changes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove an unnecessary set of parentheses in the arm-dis.c source file.
@ 2019-06-04 16:15 sergiodj+buildbot
  2019-06-04 21:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 16:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a9d96ab97edabea31bed089bfd4caca80838e31c ***

Author: Alan Hayward <alan.hayward@arm.com>
Branch: master
Commit: a9d96ab97edabea31bed089bfd4caca80838e31c

Remove an unnecessary set of parentheses in the arm-dis.c source file.

	* arm-dis.c (is_mve_unpredictable): Remove spurious paranthesis.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add an objfile getter to gdb.Type
@ 2019-06-04 16:45 sergiodj+buildbot
  2019-06-04 22:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 16:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e1f2e1a2dadbaeffe0a8a6da7aab7effc6b046d2 ***

Author: Christian Biesinger via gdb-patches <gdb-patches@sourceware.org>
Branch: master
Commit: e1f2e1a2dadbaeffe0a8a6da7aab7effc6b046d2

Add an objfile getter to gdb.Type

This allows users of the Python API to find the objfile where a type
was defined.

gdb/ChangeLog:

gdb/ChangeLog
2019-06-04  Christian Biesinger  <cbiesinger@google.com>

	Add objfile property to gdb.Type.
	* gdb/NEWS: Mention Python API addition.
	* gdb/python/py-type.c (typy_get_objfile): New method.

gdb/doc/ChangeLog
2019-06-04  Christian Biesinger  <cbiesinger@google.com>

	* gdb/doc/python.texi: Document new gdb.Type.objfile property.

gdb/testsuite/ChangeLog
2019-06-04  Christian Biesinger  <cbiesinger@google.com>

	* gdb/testsuite/gdb.python/py-type.exp: Test for new
	  gdb.Type.objfile property.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add support for Intel ENQCMD[S] instructions
@ 2019-06-04 17:11 sergiodj+buildbot
  2019-06-04 23:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 17:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 5d79adc4b22b0abd4f12ea973a00e7fb0c1dad64

Add support for Intel ENQCMD[S] instructions

This patch enables support for ENQCMD[S] in binutils.  Please refer to

https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

for ENQCMD[S] details.

Make check-gas is ok.

gas/ChangeLog:

2019-06-04  Xuepeng Guo  <xuepeng.guo@intel.com>
	    Lili Cui  <lili.cui@intel.com>

	* doc/c-i386.texi: Document enqcmd.
	* testsuite/gas/i386/enqcmd-intel.d: New file.
	* testsuite/gas/i386/enqcmd-inval.l: Likewise.
	* testsuite/gas/i386/enqcmd-inval.s: Likewise.
	* testsuite/gas/i386/enqcmd.d: Likewise.
	* testsuite/gas/i386/enqcmd.s: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd-inval.l: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd-inval.s: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd.s: Likewise.
	* testsuite/gas/i386/i386.exp: Run enqcmd-intel, enqcmd-inval,
	enqcmd, x86-64-enqcmd-intel, x86-64-enqcmd-inval,
	and x86-64-enqcmd.

opcodes/ChangeLog:

2019-06-04  Xuepeng Guo  <xuepeng.guo@intel.com>
	    Lili Cui  <lili.cui@intel.com>

	* i386-dis.c (enum): Add MOD_0F38F8_PREFIX_1 and
	MOD_0F38F8_PREFIX_3.
	(prefix_table): New instructions (see prefix above).
	(mod_table): New instructions (see prefix above).
	* i386-gen.c (cpu_flag_init): Add entries for enqcmd.
	(cpu_flags): Add a bitfield for enqmcd.
	* i386-init.h: Regenerated.
	* i386-opc.h (enum): Add CpuENQCMD.
	(i386_cpu_flags): Add a bitfield for cpuenqcmd.
	* i386-opc.tbl: Add enqcmd and enqcmds instructions.
	* i386-init.h: Regenerated.
	* i386-tbl.h: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: fix the type of ctf_enum.cte_value
@ 2019-06-04 18:26 sergiodj+buildbot
  2019-06-05  1:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 18:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a610aa4f9cf61d38b8e0fe60dfaac078d636089f ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: a610aa4f9cf61d38b8e0fe60dfaac078d636089f

libctf: fix the type of ctf_enum.cte_value

This stops the file format from depending on the size of the host int.
(It does mean that we cannot encode enums with a value > 2^32 on
platforms with an int > 2^32: this will be fixed in the next format
revision.)

include/
	* ctf.h (ctf_enum.cte_value): Fix type to int32_t.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: look for BSD versus GNU qsort_r signatures
@ 2019-06-04 19:32 sergiodj+buildbot
  2019-06-05  7:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 19:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6b22174ff163b828a2069f22353018ca97fc0fb4 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 6b22174ff163b828a2069f22353018ca97fc0fb4

libctf: look for BSD versus GNU qsort_r signatures

We cannot just look for any declaration of qsort_r, because some
operating systems have a qsort_r that has a different prototype
but which still has a pair of pointers in the right places (the last two
args are interchanged): so use AC_LINK_IFELSE to check for both
known variants of qsort_r(), and swap their args into a consistent order
in a suitable inline function.  (The code for this is taken almost
unchanged from gnulib.)

(Now we are not using AC_LIBOBJ any more, we can use a better name for
the qsort_r replacement as well.)

libctf/
	* qsort_r.c: Rename to...
	* ctf-qsort_r.c: ... this.
	(_quicksort): Define to ctf_qsort_r.
	* ctf-decls.h (qsort_r): Remove.
	(ctf_qsort_r): Add.
	(struct ctf_qsort_arg): New, transport the real ARG and COMPAR.
	(ctf_qsort_compar_thunk): Rearrange the arguments to COMPAR.
	* Makefile.am (libctf_a_LIBADD): Remove.
	(libctf_a_SOURCES): New, add ctf-qsort_r.c.
	* ctf-archive.c (ctf_arc_write): Call ctf_qsort_r, not qsort_r.
	* ctf-create.c (ctf_update): Likewise.
	* configure.ac: Check for BSD versus GNU qsort_r signature.
	* Makefile.in: Regenerate.
	* config.h.in: Likewise.
	* configure: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: work on platforms without O_CLOEXEC.
@ 2019-06-04 19:41 sergiodj+buildbot
  2019-06-05  9:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 19:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ad118caa9f690114d11384b0813f30980cc333f3 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: ad118caa9f690114d11384b0813f30980cc333f3

libctf: work on platforms without O_CLOEXEC.

(Not tested on any such platforms, since I don't have access to any at
the moment.  Testing encouraged.)

libctf/
	* configure.ac: Check for O_CLOEXEC.
	* ctf-decls.h (O_CLOEXEC): Define (to 0), if need be.
	* config.h.in: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] i386: Check for reserved VEX.vvvv and EVEX.vvvv
@ 2019-06-04 21:05 sergiodj+buildbot
  2019-06-05  9:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 21:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 63c6fc6cacf82e6b39f7373d44c1e1e1a0a757fa ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 63c6fc6cacf82e6b39f7373d44c1e1e1a0a757fa

i386: Check for reserved VEX.vvvv and EVEX.vvvv

If VEX.vvvv and EVEX.vvvv are reserved, they must be all 1s, which are
all 0s in inverted form.  Add check for unused VEX.vvvv and EVEX.vvvv
when disassembling VEX and EVEX instructions.

gas/

	PR binutils/24626
	* testsuite/gas/i386/disassem.s: Add tests for reserved VEX.vvvv
	and EVEX.vvvv.
	* testsuite/gas/i386/x86-64-disassem.s: Likewise.
	* testsuite/gas/i386/disassem.d: Updated.
	* testsuite/gas/i386/x86-64-disassem.d: Likewise.

opcodes/

	PR binutils/24626
	* i386-dis.c (print_insn): Check for unused VEX.vvvv and
	EVEX.vvvv when disassembling VEX and EVEX instructions.
	(OP_VEX): Set vex.register_specifier to 0 after readding
	vex.register_specifier.
	(OP_Vex_2src_1): Likewise.
	(OP_Vex_2src_2): Likewise.
	(OP_LWP_E): Likewise.
	(OP_EX_Vex): Don't check vex.register_specifier.
	(OP_XMM_Vex): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use CHAR_BIT instead of NBBY in libctf
@ 2019-06-04 21:37 sergiodj+buildbot
  2019-06-05 10:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 21:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 76fad9996335e52f177c99c1ebf024fc7f761be2 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 76fad9996335e52f177c99c1ebf024fc7f761be2

Use CHAR_BIT instead of NBBY in libctf

On x86-64 Fedora 29, I tried to build a mingw-hosted gdb that targets
ppc-linux.  You can do this with:

    ../binutils-gdb/configure --host=i686-w64-mingw32 --target=ppc-linux \
        --disable-{binutils,gas,gold,gprof,ld}

The build failed with these errors in libctf:

In file included from ../../binutils-gdb/libctf/ctf-create.c:20:
../../binutils-gdb/libctf/ctf-create.c: In function 'ctf_add_encoded':
../../binutils-gdb/libctf/ctf-create.c:803:59: error: 'NBBY' undeclared (first use in this function)
   dtd->dtd_data.ctt_size = clp2 (P2ROUNDUP (ep->cte_bits, NBBY) / NBBY);
                                                           ^~~~
../../binutils-gdb/libctf/ctf-impl.h:254:42: note: in definition of macro 'P2ROUNDUP'
 #define P2ROUNDUP(x, align)  (-(-(x) & -(align)))
                                          ^~~~~
../../binutils-gdb/libctf/ctf-create.c:803:59: note: each undeclared identifier is reported only once for each function it appears in
   dtd->dtd_data.ctt_size = clp2 (P2ROUNDUP (ep->cte_bits, NBBY) / NBBY);
                                                           ^~~~
../../binutils-gdb/libctf/ctf-impl.h:254:42: note: in definition of macro 'P2ROUNDUP'
 #define P2ROUNDUP(x, align)  (-(-(x) & -(align)))
                                          ^~~~~
../../binutils-gdb/libctf/ctf-create.c: In function 'ctf_add_slice':
../../binutils-gdb/libctf/ctf-create.c:862:59: error: 'NBBY' undeclared (first use in this function)
   dtd->dtd_data.ctt_size = clp2 (P2ROUNDUP (ep->cte_bits, NBBY) / NBBY);
                                                           ^~~~
../../binutils-gdb/libctf/ctf-impl.h:254:42: note: in definition of macro 'P2ROUNDUP'
 #define P2ROUNDUP(x, align)  (-(-(x) & -(align)))
                                          ^~~~~
../../binutils-gdb/libctf/ctf-create.c: In function 'ctf_add_member_offset':
../../binutils-gdb/libctf/ctf-create.c:1341:21: error: 'NBBY' undeclared (first use in this function)
      off += lsize * NBBY;
                     ^~~~
../../binutils-gdb/libctf/ctf-create.c: In function 'ctf_add_type':
../../binutils-gdb/libctf/ctf-create.c:1822:16: warning: unknown conversion type character 'z' in format [-Wformat=]
   ctf_dprintf ("Conflict for type %s against ID %lx: "
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/libctf/ctf-create.c:1823:35: note: format string is defined here
         "union size differs, old %zi, new %zi\n",
                                   ^
../../binutils-gdb/libctf/ctf-create.c:1822:16: warning: unknown conversion type character 'z' in format [-Wformat=]
   ctf_dprintf ("Conflict for type %s against ID %lx: "
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/libctf/ctf-create.c:1823:44: note: format string is defined here
         "union size differs, old %zi, new %zi\n",
                                            ^
../../binutils-gdb/libctf/ctf-create.c:1822:16: warning: too many arguments for format [-Wformat-extra-args]
   ctf_dprintf ("Conflict for type %s against ID %lx: "
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This patch fixes the actual errors in here.  I did not try to fix the
printf warnings, though I think someone ought to.

Ok?

libctf/ChangeLog
2019-06-04  Tom Tromey  <tromey@adacore.com>

	* ctf-create.c (ctf_add_encoded, ctf_add_slice)
	(ctf_add_member_offset): Use CHAR_BIT, not NBBY.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: fix use-after-free in function dumping
@ 2019-06-04 22:03 sergiodj+buildbot
  2019-06-05  3:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 22:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 941accce38bc70a23c62e3c9439b67bf23298124 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 941accce38bc70a23c62e3c9439b67bf23298124

libctf: fix use-after-free in function dumping

This is actually a free-before-initializing (i.e. a free of garbage).

libctf/
	* ctf-dump.c (ctf_dump_funcs): Free in the right place.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce and use make_unique_xstrdup
@ 2019-06-04 23:38 sergiodj+buildbot
  2019-06-05 10:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-04 23:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b02f78f9285728ce2d05ce01e7b14880f70cd6e6 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: b02f78f9285728ce2d05ce01e7b14880f70cd6e6

Introduce and use make_unique_xstrdup

Adds an utility function to make it shorter to write the common case
of wrapping an xstrdup with a unique_xmalloc_ptr, and uses it
throughout.

Note: I tried to put this in common/common-utils.h near skip_spaces,
etc. but that is included in common/common-defs.h before
common/gdb_unique_ptr.h is included, so it would fail to compile
because gdb::unique_xmalloc_ptr isn't defined at that point yet.  I
tried moving the gdb_unique_ptr.h inclusion before common-utils.h, but
that doesn't work because gdb_unique_ptr.h depends on common-utils.h
for xfree.

gdb/ChangeLog:
2019-06-04  Pedro Alves  <palves@redhat.com>

	* common/gdb_unique_ptr.h (make_unique_xstrdup): New.

	* ada-lang.c (catch_ada_completer): Use make_unique_xstrdup.
	* breakpoint.c (condition_completer): Likewise.
	* cli/cli-dump.c (scan_expression): Likewise.
	* common/filestuff.c (mkdir_recursive): Likewise.
	* common/gdb_tilde_expand.c (gdb_tilde_expand_up)
	* common/pathstuff.c (gdb_realpath, gdb_realpath_keepfile)
	(gdb_abspath): Likewise.
	* compile/compile-cplus-types.c
	(compile_cplus_instance::decl_name): Likewise.
	* completer.c (complete_explicit_location):
	(signal_completer, reg_or_group_completer_1): Likewise.
	* cp-support.c (cp_remove_params_if_any): Likewise.
	* fbsd-tdep.c (fbsd_core_vnode_path): Likewise.
	* guile/scm-safe-call.c (gdbscm_safe_eval_string): Likewise.
	* infcmd.c (strip_bg_char): Likewise.
	* linespec.c (copy_token_string): Likewise.
	* mi/mi-main.c (output_cores): Likewise.
	* psymtab.c (psymtab_search_name):
	* symfile.c (test_set_ext_lang_command): Likewise.
	* target.c (target_fileio_read_stralloc): Likewise.
	* tui/tui-regs.c (tui_reggroup_completer): Likewise.
	* value.c (complete_internalvar): Likewise.

gdb/gdbserver/ChangeLog:
2019-06-04  Pedro Alves  <palves@redhat.com>

	* server.c (captured_main): Use make_unique_xstrdup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Improve comments in recently added test
@ 2019-06-05 13:33 sergiodj+buildbot
  2019-06-05 13:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-05 13:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0088ba596bba2e0b94139f1c2c4f5875848edbd6 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 0088ba596bba2e0b94139f1c2c4f5875848edbd6

gdb/testsuite: Improve comments in recently added test

Remove the use of 'I' within some comments in a recently added test.

gdb/testsuite/ChangeLog:

	* gdb.arch/riscv-unwind-long-insn-6.s: Remove use of 'I' in
	comment.
	* gdb.arch/riscv-unwind-long-insn-8.s: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: eschew %zi format specifier
@ 2019-06-05 18:25 sergiodj+buildbot
  2019-06-05 18:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-05 18:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 62d8e3b73139b159963025b5568ec1f5051450f0 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 62d8e3b73139b159963025b5568ec1f5051450f0

libctf: eschew %zi format specifier

Too many platforms don't support it, and we can always safely use %lu or
%li anyway, because the only uses are in debugging output.

libctf/
	* ctf-archive.c (ctf_arc_write): Eschew %zi format specifier.
	(ctf_arc_open_by_offset): Likewise.
	* ctf-create.c (ctf_add_type): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] i386: Check vector length for EVEX vextractfXX and vinsertfXX
@ 2019-06-06 12:11 sergiodj+buildbot
  2019-06-06 12:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-06 12:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 12efd68d159444ad8dfe24e49965a228ba980b86 ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 12efd68d159444ad8dfe24e49965a228ba980b86

i386: Check vector length for EVEX vextractfXX and vinsertfXX

Since not all vector lengths are supported by EVEX vextractfXX and
vinsertfXX, decode them only with supported vector lengths.

gas/

	PR binutils/24633
	* testsuite/gas/i386/disassem.s: Add tests for invalid vector
	lengths for EVEX vextractfXX and vinsertfXX.
	* testsuite/gas/i386/x86-64-disassem.s: Likewise.
	* testsuite/gas/i386/disassem.d: Updated.
	* testsuite/gas/i386/x86-64-disassem.d: Likewise.

opcodes/

	PR binutils/24633
	* i386-dis-evex.h (evex_table): Update EVEX_W_0F3A18_P_2,
	EVEX_W_0F3A19_P_2, EVEX_W_0F3A1A_P_2 and EVEX_W_0F3A1B_P_2.
	(evex_len_table): EVEX_LEN_0F3A18_P_2_W_0,
	EVEX_LEN_0F3A18_P_2_W_1, EVEX_LEN_0F3A19_P_2_W_0,
	EVEX_LEN_0F3A19_P_2_W_1, EVEX_LEN_0F3A1A_P_2_W_0,
	EVEX_LEN_0F3A1A_P_2_W_1, EVEX_LEN_0F3A1B_P_2_W_0,
	EVEX_LEN_0F3A1B_P_2_W_1.
	* i386-dis.c (EVEX_LEN_0F3A18_P_2_W_0): New enum.
	(EVEX_LEN_0F3A18_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A19_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A19_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A1A_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A1A_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A1B_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A1B_P_2_W_1): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [LD, AArch64] Move ELF options behind -z
@ 2019-06-06 13:19 sergiodj+buildbot
  2019-06-06 13:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-06 13:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8bf6d176b0a442a8091d338d4af971591d19922c ***

Author: Sudakshina Das <sudi.das@arm.com>
Branch: master
Commit: 8bf6d176b0a442a8091d338d4af971591d19922c

[LD, AArch64] Move ELF options behind -z

This patch moves the current AArch64 ld options of --force-bti
and --pac-plt to -z force-bti and -z pac-plt since these are
ELF specific options.

*** bfd/ChangeLog ***

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

	* bfd-in.h: Change comment.
	* bfd-in2.h: Regenerate.
	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update warning.
	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties):
	Likwise.

*** ld/ChangeLog ***

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

	* NEWS: Update options names.
	* emultempl/aarch64elf.em (OPTION_FORCE_BTI, OPTION_PAC_PLT): Remove.
	(PARSE_AND_LIST_LONGOPTS): Remove force-bti and pac-plt.
	(PARSE_AND_LIST_OPTIONS): Update to -z.
	(PARSE_AND_LIST_ARGS_CASE_Z_AARCH64): New.
	(PARSE_AND_LIST_ARGS_CASE_Z): Add PARSE_AND_LIST_ARGS_CASE_Z_AARCH64.
	(PARSE_AND_LIST_ARGS_CASES): Move cases for these options.
	* testsuite/ld-aarch64/bti-pac-plt-1.d: Update option.
	* testsuite/ld-aarch64/bti-pac-plt-2.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-1.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-2.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-3.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-4.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-6.d: Likewise.
	* testsuite/ld-aarch64/bti-plt-7.d: Likewise.
	* testsuite/ld-aarch64/bti-warn.d: Likewise.
	* testsuite/ld-aarch64/pac-plt-1.d: Likewise.
	* testsuite/ld-aarch64/pac-plt-2.d: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add timestamps to "maint time" output
@ 2019-06-06 18:15 sergiodj+buildbot
  2019-06-06 18:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-06 18:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3847a7bfbf6340372962c07f31187ff87b4f492c ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 3847a7bfbf6340372962c07f31187ff87b4f492c

Add timestamps to "maint time" output

Currently "maint time" will print the amount of time a command took.
Sometimes, though, it's useful to have a timestamp as well -- for
example if one is correlating a gdb log with some other log.

This patch adds a timestamp to the start and end of each command when
this setting is in effect.

This also removes a "//" comment and changes scoped_command_stats to
use DISABLE_COPY_AND_ASSIGN; two minor things I noticed while working
on the patch.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-06  Tom Tromey  <tromey@adacore.com>

	* maint.h (class scoped_command_stats): Use
	DISABLE_COPY_AND_ASSIGN.
	<print_time>: New method.
	* maint.c (scoped_command_stats, ~scoped_command_stats): Call
	print_time.
	(scoped_command_stats::print_time): New method.

gdb/testsuite/ChangeLog
2019-06-06  Tom Tromey  <tromey@adacore.com>

	* gdb.base/maint.exp: Expect command started/finished output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add thread-exit annotation.
@ 2019-06-06 19:36 sergiodj+buildbot
  2019-06-07  3:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-06 19:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1a3da2cd6175e8f25cec95fc685d4f0f43bf6807 ***

Author: Amos Bird <amosbird@gmail.com>
Branch: master
Commit: 1a3da2cd6175e8f25cec95fc685d4f0f43bf6807

Add thread-exit annotation.

gdb/ChangeLog
2019-04-26  Amos Bird  <amosbird@gmail.com>

	* annotate.c (annotate_thread_exited): Add "thread-exited"
	annotation.

gdb/doc/ChangeLog
2019-06-06  Amos Bird  <amosbird@gmail.com>

	* annotate.texinfo (Multi-threaded Apps): Add entry for thread-exited
	annotation.

gdb/testsuite/ChangeLog
2019-06-06  Amos Bird  <amosbird@gmail.com>

	* gdb.base/annota1.exp (thread_switch): Add test for
	thread-exited annotation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: mark various args as unused in the !HAVE_MMAP case
@ 2019-06-07 14:40 sergiodj+buildbot
  2019-06-07 15:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-07 14:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f5e73be11b24b6c4b7ecec5f762784c4bb40ec18 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: f5e73be11b24b6c4b7ecec5f762784c4bb40ec18

libctf: mark various args as unused in the !HAVE_MMAP case

Tested on x86_64-pc-linux-gnu, x86_64-unknown-freebsd12.0,
sparc-sun-solaris2.11, i686-pc-cygwin, i686-w64-mingw32.

libctf/
	* ctf-archive.c (arc_mmap_header): Mark fd as potentially unused.
	* ctf-subr.c (ctf_data_protect): Mark both args as potentially unused.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: explicitly cast more size_t types used in printf()s
@ 2019-06-07 15:10 sergiodj+buildbot
  2019-06-07 16:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-07 15:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 595a4d439bc5976d5bdf61da6d44337b3995d967 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 595a4d439bc5976d5bdf61da6d44337b3995d967

libctf: explicitly cast more size_t types used in printf()s

Unsigned long will always be adequate (the only cases involving an
ssize_t are cases in which no error can be generated, or in which
negative output would require a seriously corrupted file: the latter has
been rewritten on a branch in any case).

Tested on x86_64-pc-linux-gnu, x86_64-unknown-freebsd12.0,
sparc-sun-solaris2.11, i686-pc-cygwin, i686-w64-mingw32.

libctf/
	* ctf-dump.c (ctf_dump_format_type): Cast size_t's used in printf()s.
	(ctf_dump_objts): Likewise.
	(ctf_dump_funcs): Likewise.
	(ctf_dump_member): Likewise.
	(ctf_dump_str): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/symtab] Support DW_AT_main_subprogram with -readnow.
@ 2019-06-10 13:53 sergiodj+buildbot
  2019-06-10 13:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 13:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 81873cc81effbd657efe5f525d369e430ce77d7a ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 81873cc81effbd657efe5f525d369e430ce77d7a

[gdb/symtab] Support DW_AT_main_subprogram with -readnow.

DW_AT_main_subprogram is supported in normal mode in read_partial_die, but not
in -readnow mode.

Fix this by adding support for DW_AT_main_subprogram in read_func_scope.

Tested on x86_64-linux with native and RFC target board readnow (
https://sourceware.org/ml/gdb-patches/2019-05/msg00073.html ).

gdb/ChangeLog:

2019-06-10  Tom de Vries  <tdevries@suse.de>

	PR symtab/16264
	PR symtab/24517
	* dwarf2read.c (read_func_scope): Handle DW_AT_main_subprogram.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Delay allocation of dbx_symfile_info
@ 2019-06-10 14:44 sergiodj+buildbot
  2019-06-10 14:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 14:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT caa429d81a9999699a40b6394c9fb7b258669d54 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: caa429d81a9999699a40b6394c9fb7b258669d54

Delay allocation of dbx_symfile_info

I noticed that elfread.c always allocates a dbx_symfile_info, even
though this is only ever needed in the unusual case of reading stabs
in ELF.

This patch moves the allocation into dbxread.c, and applies the same
treatment to similar code in coffread.c.

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-10  Tom Tromey  <tromey@adacore.com>

	* elfread.c (elf_read_minimal_symbols): Don't set the dbx objfile
	data.
	(elf_new_init): Don't call stabsread_new_init.
	* dbxread.c (coffstab_build_psymtabs): Set dbx objfile data.
	(elfstab_build_psymtabs): Likewise.  Call stabsread_new_init.
	* coffread.c (coff_symfile_init): Don't set the dbx objfile data.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use gdbpy_enter in py-breakpoint.c
@ 2019-06-10 14:58 sergiodj+buildbot
  2019-06-10 16:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 14:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 25ce02ee7b7667fb7bb882421ff869c080777bee ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 25ce02ee7b7667fb7bb882421ff869c080777bee

Use gdbpy_enter in py-breakpoint.c

A few spots in py-breakpoint.c acquire the GIL manually.  However,
because these spots generate events, and because events are expected
to be arbitrary gdb-flavored Python code, it's important to use
gdbpy_enter instead, in order to ensure that the other gdb-related
Python globals are set correctly.

This patch makes this change.  Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-10  Tom Tromey  <tom@tromey.com>

	* python/py-breakpoint.c (gdbpy_breakpoint_created)
	(gdbpy_breakpoint_deleted, gdbpy_breakpoint_modified): Use
	gdbpy_enter.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update help text in ada-lang.c
@ 2019-06-10 15:47 sergiodj+buildbot
  2019-06-10 18:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 15:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9bf7038bb229d6e46a1f1861c257fc47843f114d ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 9bf7038bb229d6e46a1f1861c257fc47843f114d

Update help text in ada-lang.c

I noticed that the "catch assert" help text erroneously claimed to
accept an argument, and while fixing this I went ahead and added
"Usage" text and made other minor updates to the commands in
ada-lang.c.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-10  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (_initialize_ada_language): Update help text.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove newlines from warnings
@ 2019-06-10 18:19 sergiodj+buildbot
  2019-06-10 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 18:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 422186a95cbb02ee1d34388adceeb4bd289074b9 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 422186a95cbb02ee1d34388adceeb4bd289074b9

Remove newlines from warnings

ARI pointed out that a recent patch introduced a call to "warning"
with a string that ended in a newline:

    https://sourceware.org/ml/gdb-patches/2019-06/msg00000.html

This is generally forbidden, I believe, because warning adds its own
newline.

This patch removes all of the trailing newlines I was able to find.  I
searched for 'warning (.*\\n"' and then fixed the ones where the
newline appeared at the end of the string (some had internal
newlines).

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-10  Tom Tromey  <tromey@adacore.com>

	* m32c-tdep.c (m32c_m16c_address_to_pointer): Don't end warning
	with a newline.
	* guile/guile.c (handle_boot_error): Don't end warning with a
	newline.
	* cli/cli-cmds.c (exit_status_set_internal_vars): Don't end
	warning with a newline.
	* s12z-tdep.c (s12z_skip_prologue): Don't end warning with a
	newline.
	(s12z_frame_cache): Likewise.
	* dwarf-index-cache.c (index_cache::store): Don't end warning with
	a newline.
	* solib-svr4.c (disable_probes_interface): Don't end warning with
	a newline.
	* nat/fork-inferior.c (fork_inferior): Don't end warning with a
	newline.
	* python/python.c (do_finish_initialization): Don't end warning
	with a newline.

gdb/gdbserver/ChangeLog
2019-06-10  Tom Tromey  <tromey@adacore.com>

	* remote-utils.c (look_up_one_symbol, relocate_instruction): Don't
	end warning with a newline.
	* linux-s390-low.c (s390_get_wordsize): Don't end warning with a
	newline.
	* thread-db.c (attach_thread): Don't end warning with a newline.
	(thread_db_notice_clone): Likewise.
	* tracepoint.c (gdb_agent_helper_thread): Don't end warning with a
	newline.
	* linux-x86-low.c (x86_get_min_fast_tracepoint_insn_len): Don't
	end warning with a newline.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/symtab] Fix symbol loading performance regression
@ 2019-06-10 19:04 sergiodj+buildbot
  2019-06-10 20:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 19:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e99f9db0f5211455ca4256e8db9d9081967d255e ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: e99f9db0f5211455ca4256e8db9d9081967d255e

[gdb/symtab] Fix symbol loading performance regression

The commit "[gdb/symtab] Fix language of duplicate static minimal symbol"
introduces a performance regression, when loading a cc1 executable build with
-O0 -g and gcc 7.4.0.  The performance regression, measured in 'real' time is
about 175%.

The slower execution comes from the fact that the fix in symbol_set_names
makes the call to symbol_find_demangled_name unconditional.

Fix this by reverting the commit, and redoing the fix as follows.

Recapturing the original problem, the first time symbol_set_names is called
with gsymbol.language == lang_auto and linkage_name == "_ZL3foov", the name is
not present in the per_bfd->demangled_names_hash hash table, so
symbol_find_demangled_name is called to demangle the name, after which the
mangled/demangled pair is added to the hashtable.  The call to
symbol_find_demangled_name also sets gsymbol.language to lang_cplus.
The second time symbol_set_names is called with gsymbol.language == lang_auto
and linkage_name == "_ZL3foov", the name is present in the hash table, so the
demangled name from the hash table is used.  However, the language of the
symbol remains lang_auto.

Fix this by adding a field language in struct demangled_name_entry, and using
the field in symbol_set_names to set the language of gsymbol, if necessary.

Tested on x86_64-linux.

gdb/ChangeLog:

2019-06-10  Tom de Vries  <tdevries@suse.de>

	PR symtab/24545
	* symtab.c (struct demangled_name_entry): Add language field.
	(symbol_set_names):  Revert "[gdb/symtab] Fix language of duplicate
	static minimal symbol".  Set and use language field.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Fix heap-buffer-overflow in cp_find_first_component_aux
@ 2019-06-10 20:13 sergiodj+buildbot
  2019-06-10 23:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-10 20:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9ab084121f50a6858b7298de6c5326cee3687c43 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 9ab084121f50a6858b7298de6c5326cee3687c43

[gdb] Fix heap-buffer-overflow in cp_find_first_component_aux

When compiling gdb with '-lasan -fsanitizer=address' and running tests with:
- export ASAN_OPTIONS="detect_leaks=0:alloc_dealloc_mismatch=0",
- target board cc-with-gdb-index,
- the "[gdb/testsuite] Fix gdb.base/break-probes.exp with native-gdbserver"
  commit reverted to avoid running into PR24617,
we get with gdb.arch/amd64-init-x87-values.exp:
...
==31229==ERROR: AddressSanitizer: heap-buffer-overflow on address \
  0x62500098c93c at pc 0x000000bcc748 bp 0x7ffe39487660 sp 0x7ffe39487658
READ of size 1 at 0x62500098c93c thread T0
    #0 0xbcc747 in cp_find_first_component_aux src/gdb/cp-support.c:999
    #1 0xbcc6e9 in cp_find_first_component(char const*) \
                   src/gdb/cp-support.c:977
    #2 0xcc2cf3 in mapped_index_base::build_name_components() \
                   src/gdb/dwarf2read.c:4499
    #3 0xcc3322 in dw2_expand_symtabs_matching_symbol src/gdb/dwarf2read.c:4552
    #4 0xcc817f in dw2_expand_symtabs_matching src/gdb/dwarf2read.c:5228
    #5 0xfe8f48 in iterate_over_all_matching_symtabs src/gdb/linespec.c:1147
    #6 0x1003506 in add_matching_symbols_to_info src/gdb/linespec.c:4413
    #7 0xffe21b in find_function_symbols src/gdb/linespec.c:3886
    #8 0xffe4a2 in find_linespec_symbols src/gdb/linespec.c:3914
    #9 0xfee3ad in linespec_parse_basic src/gdb/linespec.c:1865
    #10 0xff5128 in parse_linespec src/gdb/linespec.c:2655
    #11 0xff8872 in event_location_to_sals src/gdb/linespec.c:3150
    #12 0xff90a8 in decode_line_full(event_location const*, int, \
                    program_space*, symtab*, int, linespec_result*, \
		    char const*, char const*) src/gdb/linespec.c:3230
    #13 0x9ce449 in parse_breakpoint_sals src/gdb/breakpoint.c:9057
    #14 0x9ea022 in create_sals_from_location_default src/gdb/breakpoint.c:13708
    #15 0x9e2c1f in bkpt_create_sals_from_location src/gdb/breakpoint.c:12514
    #16 0x9cff06 in create_breakpoint(gdbarch*, event_location const*, \
                    char const*, int, char const*, int, int, bptype, int, \
		    auto_boolean, breakpoint_ops const*, int, int, int, \
		    unsigned int) src/gdb/breakpoint.c:9238
    #17 0x9d114a in break_command_1 src/gdb/breakpoint.c:9402
    #18 0x9d1b60 in break_command(char const*, int) src/gdb/breakpoint.c:9473
    #19 0xac96aa in do_const_cfunc src/gdb/cli/cli-decode.c:106
    #20 0xad0e5a in cmd_func(cmd_list_element*, char const*, int) \
                    src/gdb/cli/cli-decode.c:1892
    #21 0x15226f6 in execute_command(char const*, int) src/gdb/top.c:630
    #22 0xddde37 in command_handler(char const*) src/gdb/event-top.c:586
    #23 0xdde7c1 in command_line_handler(std::unique_ptr<char, \
                    gdb::xfree_deleter<char> >&&) src/gdb/event-top.c:773
    #24 0xddc9e8 in gdb_rl_callback_handler src/gdb/event-top.c:217
    #25 0x16f2198 in rl_callback_read_char src/readline/callback.c:220
    #26 0xddc5a1 in gdb_rl_callback_read_char_wrapper_noexcept \
                    src/gdb/event-top.c:175
    #27 0xddc773 in gdb_rl_callback_read_char_wrapper src/gdb/event-top.c:192
    #28 0xddd9f5 in stdin_event_handler(int, void*) src/gdb/event-top.c:514
    #29 0xdd7d8f in handle_file_event src/gdb/event-loop.c:731
    #30 0xdd8607 in gdb_wait_for_event src/gdb/event-loop.c:857
    #31 0xdd629c in gdb_do_one_event() src/gdb/event-loop.c:321
    #32 0xdd6344 in start_event_loop() src/gdb/event-loop.c:370
    #33 0x10a7715 in captured_command_loop src/gdb/main.c:331
    #34 0x10aa548 in captured_main src/gdb/main.c:1173
    #35 0x10aa5d8 in gdb_main(captured_main_args*) src/gdb/main.c:1188
    #36 0x87bd35 in main src/gdb/gdb.c:32
    #37 0x7f16e1434f89 in __libc_start_main (/lib64/libc.so.6+0x20f89)
    #38 0x87bb49 in _start (build/gdb/gdb+0x87bb49)

0x62500098c93c is located 0 bytes to the right of 8252-byte region \
  [0x62500098a900,0x62500098c93c)
allocated by thread T0 here:
    #0 0x7f16e359a600 in malloc (/usr/lib64/libasan.so.5+0xeb600)
    #1 0x1742ddf in bfd_malloc src/bfd/libbfd.c:275
    #2 0x1738824 in bfd_get_full_section_contents src/bfd/compress.c:253
    #3 0xe30044 in gdb_bfd_map_section(bfd_section*, unsigned long*) \
                   src/gdb/gdb_bfd.c:704
    #4 0xcb56bf in dwarf2_read_section(objfile*, dwarf2_section_info*) \
                   src/gdb/dwarf2read.c:2539
    #5 0xd5bcd0 in get_gdb_index_contents_from_section<dwarf2_per_objfile> \
                   src/gdb/dwarf2read.c:6217
    #6 0xd7fc7d in gdb::function_view<gdb::array_view<unsigned char const> \
                   (...) const src/gdb/common/function-view.h:284
    #7 0xd7fddd in gdb::function_view<gdb::array_view<unsigned char const> \
                   (...) src/gdb/common/function-view.h:278
    #8 0xd730cf in gdb::function_view<gdb::array_view<unsigned char const> \
                   (...) const src/gdb/common/function-view.h:247
    #9 0xcbc7ee in dwarf2_read_gdb_index src/gdb/dwarf2read.c:3582
    #10 0xcce731 in dwarf2_initialize_objfile(objfile*, dw_index_kind*) \
                    src/gdb/dwarf2read.c:6297
    #11 0xdb88c4 in elf_symfile_read src/gdb/elfread.c:1256
    #12 0x141262a in read_symbols src/gdb/symfile.c:798
    #13 0x14140a7 in syms_from_objfile_1 src/gdb/symfile.c:1000
    #14 0x1414393 in syms_from_objfile src/gdb/symfile.c:1017
    #15 0x1414fb7 in symbol_file_add_with_addrs src/gdb/symfile.c:1124
    #16 0x14159b7 in symbol_file_add_from_bfd(bfd*, char const*, \
                     enum_flags<symfile_add_flag>, std::vector<other_sections, \
	             std::allocator<other_sections> >*, \
		     enum_flags<objfile_flag>, objfile*) src/gdb/symfile.c:1203
    #17 0x1415b6c in symbol_file_add(char const*,
                     enum_flags<symfile_add_flag>, std::vector<other_sections, \
		     std::allocator<other_sections> >*, \
		     enum_flags<objfile_flag>) src/gdb/symfile.c:1216
    #18 0x1415f2f in symbol_file_add_main_1 src/gdb/symfile.c:1240
    #19 0x1418599 in symbol_file_command(char const*, int) \
                     src/gdb/symfile.c:1675
    #20 0xde2fa6 in file_command src/gdb/exec.c:433
    #21 0xac96aa in do_const_cfunc src/gdb/cli/cli-decode.c:106
    #22 0xad0e5a in cmd_func(cmd_list_element*, char const*, int) \
                    src/gdb/cli/cli-decode.c:1892
    #23 0x15226f6 in execute_command(char const*, int) src/gdb/top.c:630
    #24 0xddde37 in command_handler(char const*) src/gdb/event-top.c:586
    #25 0xdde7c1 in command_line_handler(std::unique_ptr<char, \
                    gdb::xfree_deleter<char> >&&) src/gdb/event-top.c:773
    #26 0xddc9e8 in gdb_rl_callback_handler src/gdb/event-top.c:217
    #27 0x16f2198 in rl_callback_read_char src/readline/callback.c:220
    #28 0xddc5a1 in gdb_rl_callback_read_char_wrapper_noexcept \
                    src/gdb/event-top.c:175
    #29 0xddc773 in gdb_rl_callback_read_char_wrapper src/gdb/event-top.c:192

SUMMARY: AddressSanitizer: heap-buffer-overflow src/gdb/cp-support.c:999 in \
  cp_find_first_component_aux
Shadow bytes around the buggy address:
  0x0c4a801298d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a801298e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a801298f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a80129900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4a80129910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c4a80129920: 00 00 00 00 00 00 00[04]fa fa fa fa fa fa fa fa
  0x0c4a80129930: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80129940: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80129950: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80129960: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80129970: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==31229==ABORTING
...

The problem happens as follows.

The executable amd64-init-x87-values gets an index (due to target board
cc-with-gdb-index), which looks as follows:
...
Hex dump of section '.gdb_index':
  0x00000000 08000000 18000000 28000000 28000000 ........(...(...
  0x00000010 3c000000 3c200000 00000000 00000000 <...< ..........
  0x00000020 2e000000 00000000 d4004000 00000000 ..........@.....
  0x00000030 db004000 00000000 00000000 00000000 ..@.............
  0x00000040 00000000 00000000 00000000 00000000 ................
  0x00000050 00000000 00000000 00000000 00000000 ................
  ... more zeroes ...
  0x00002010 00000000 00000000 00000000 00000000 ................
  0x00002020 00000000 00000000 00000000 00000000 ................
  0x00002030 00000000 00000000 00000000          ............
...

The structure of this index is:
...
header       : [0x0, 0x18)     : size 0x18
culist       : [0x18 ,0x28)    : size 0x10
typesculist  : [0x28, 0x28)    : size 0x0
adress area  : [0x28, 0x3c)    : size 0x14
symbol table : [0x3c, 0x203c)  : size 0x2000
constant pool: [0x203c, 0x203c): size 0x0
EOF          : 0x203c
...

Note that the symbol table consists entirely of empty slots (where an empty
slot is a pair of 32-bit zeroes), and that the constant pool is empty.

The problem happens here in mapped_index_base::build_name_components:
...
  auto count = this->symbol_name_count ();
  for (offset_type idx = 0; idx < count; idx++)
    {
      if (this->symbol_name_slot_invalid (idx))
	continue;

      const char *name = this->symbol_name_at (idx);
...
when accessing the slot at idx == 0 in the symbol table,
symbol_name_slot_invalid returns false so we calculate name, which is
calculated using 'constant_pool + symbol_table[idx].name', which means we get
name == constant_pool.  And given that the constant pool is empty, name now
points past the memory allocated for the index, and when we access name[0] for
the first time in cp_find_first_component_aux, we run into the
heap-buffer-overflow.

Fix this by fixing the definition of symbol_name_slot_invalid:
...
-    return bucket.name == 0 && bucket.vec;
+    return bucket.name == 0 && bucket.vec == 0;
...

Tested on x86_64-linux.

gdb/ChangeLog:

2019-06-10  Tom de Vries  <tdevries@suse.de>

	PR gdb/24618
	* dwarf2read.c (struct mapped_index::symbol_name_slot_invalid): Make
	sure an empty slot (defined by a 32-bit zero pair) is recognized as
	invalid.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Check for not allocated/associated values during array slicing
@ 2019-06-11  7:57 sergiodj+buildbot
  2019-06-11  8:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11  7:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a7067863418451b27130bb4300ac1890ff806c12 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: a7067863418451b27130bb4300ac1890ff806c12

gdb: Check for not allocated/associated values during array slicing

When extracting an array slice we should give up if the array is
not-allocated or not-associated.  For Fortran, at least in gfortran
compiled code, the upper and lower bounds are undefined if the array
is not allocated or not associated, in which case performing checks
against these bounds will result in undefined behaviour.

Better then to throw an error if we try to slice such an array.  This
changes the error message that the user will receive in these
cases (if they got an error message before).  Previously they may have
gotten "slice out of range" now they'll get "array not allocated" or
"array not associated".

gdb/ChangeLog:

	* valops.c (value_slice): Check for not allocated or not
	associated values.

gdb/testsuite/ChangeLog:

	* gdb.fortran/vla-sizeof.exp: Update expected results.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Add readnow.exp
@ 2019-06-11 11:55 sergiodj+buildbot
  2019-06-11 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 11:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b49851c8e2bbb38e0e0f977e3fcc7abe3ad157b5 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: b49851c8e2bbb38e0e0f977e3fcc7abe3ad157b5

[gdb/testsuite] Add readnow.exp

Add a target board to test -readnow.

gdb/testsuite/ChangeLog:

2019-06-11  Tom de Vries  <tdevries@suse.de>

	* boards/readnow.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix main high_pc in nonvar-access.exp
@ 2019-06-11 12:53 sergiodj+buildbot
  2019-06-11 13:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 12:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8c2e74f18120dd2f2da7d653466c79dea6841b5e ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 8c2e74f18120dd2f2da7d653466c79dea6841b5e

[gdb/testsuite] Fix main high_pc in nonvar-access.exp

When running gdb.dwarf2/nonvar-access.exp with board readnow, we have:
...
FAIL: gdb.dwarf2/nonvar-access.exp: print/x def_implicit_s
...
and 12 more similar failures.

I've tracked this down to the range of main being hardcoded to
[_main, _main+0x10000) in the dwarf assembly:
...
            DW_TAG_subprogram {
                {name main}
                {DW_AT_external 1 flag}
                {low_pc [gdb_target_symbol main] DW_FORM_addr}
		{high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr}
            } {
...
which overlaps with the .debug_info for the elf-init.c CU (containing
__libc_csu_init and __libc_csu_fini).

Fix this by using function_range to find the actual range of main.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-06-11  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24521
	* gdb.dwarf2/nonvar-access.exp: Fix main high_pc.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix remove-inferiors.exp FAIL with readnow board
@ 2019-06-11 13:39 sergiodj+buildbot
  2019-06-11 15:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 13:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fea82da0fe15137fda0056c0f0b92b6e70997ea8 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: fea82da0fe15137fda0056c0f0b92b6e70997ea8

[gdb/testsuite] Fix remove-inferiors.exp FAIL with readnow board

We see this failure with the readnow board:
...
FAIL: gdb.multi/remove-inferiors.exp: load binary
...

When running with board readnow, an extra message "Expanding full symbols" is
emitted after the "Reading symbols" message, and the regexp corresponding to
the FAIL only allows the first message.

Fix this by allowing the extra message in the regexp.

gdb/testsuite/ChangeLog:

2019-06-11  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24521
	* gdb.multi/remove-inferiors.exp: Allow "Expanding full symbols"
	message.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove linux-waitpid.c debugging code
@ 2019-06-11 15:37 sergiodj+buildbot
  2019-06-11 17:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 15:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1c7fe9515dc1e8aa6378075ef56a646c1efdf7f5 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 1c7fe9515dc1e8aa6378075ef56a646c1efdf7f5

Remove linux-waitpid.c debugging code

The debugging code in linux-waitpid.c is one of the few remaining
spots that depends on the gdb/gdbserver difference.

My first thought was that this code is not extremely useful, so this
patch removes this code.  (However, if it is actually useful to
someone, we could make it work by introducing a new abstraction.)

gdb/ChangeLog
2019-06-11  Tom Tromey  <tom@tromey.com>

	* nat/linux-waitpid.c: Don't include server.h.
	(linux_debug): Remove.
	(my_waitpid): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove trailing newlines from help text
@ 2019-06-11 15:52 sergiodj+buildbot
  2019-06-11 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 15:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89549d7f4d27b63c4aaab4456e21dab1ee96a40a ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 89549d7f4d27b63c4aaab4456e21dab1ee96a40a

Remove trailing newlines from help text

I noticed recently that some command had a trailing newline in its
"help" output.  So, I temporarily hacked cli-decode.c to print
something when a new command was installed that had a trailing newline
in its help message, and wrote this patch, which removes all the ones
I could find this way.  (There could still be a few more in *-nat
files.)

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-11  Tom Tromey  <tromey@adacore.com>

	* infcall.c (_initialize_infcall): Remove trailing newline from
	help.
	* user-regs.c (_initialize_user_regs): Remove trailing newline
	from help.
	* typeprint.c (_initialize_typeprint): Remove trailing newline
	from help.
	* reverse.c (_initialize_reverse): Remove trailing newlines from
	help.
	* tracepoint.c (_initialize_tracepoint): Remove trailing newlines
	from help.
	* language.c (add_set_language_command): Remove trailing newline
	from help.
	* infcmd.c (_initialize_infcmd): Remove trailing newlines from
	help.
	* disasm.c (_initialize_disasm): Remove trailing newline from
	help.
	* top.c (init_main): Remove trailing newline from help.
	* interps.c (_initialize_interpreter): Remove trailing newline
	from help.
	* btrace.c (_initialize_btrace): Remove trailing newlines from
	help.
	* breakpoint.c (_initialize_breakpoint): Remove trailing newline
	from help.
	* python/python.c (_initialize_python): Remove trailing newline
	from help.
	* spu-tdep.c (_initialize_spu_tdep): Remove trailing newlines from
	help.
	* tui/tui-win.c (_initialize_tui_win): Remove trailing newlines
	from help.  Reformat some text.
	* tui/tui-stack.c (_initialize_tui_stack): Remove trailing newline
	from help.
	* tui/tui-layout.c (_initialize_tui_layout): Remove trailing
	newline from help.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move gdb's xmalloc and friends to new file
@ 2019-06-11 20:16 sergiodj+buildbot
  2019-06-12  3:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-11 20:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 08f10e02be1bb218d6edcde87b9f59dd11b40a78 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 08f10e02be1bb218d6edcde87b9f59dd11b40a78

Move gdb's xmalloc and friends to new file

When "common" becomes a library, linking will cause a symbol clash,
because "xmalloc" and some related symbols are defined in that
library, libiberty, and readline.

To work around this problem, this patch moves the clashing symbols to
a new file, which is then compiled separately for both gdb and
gdbserver.

gdb/ChangeLog
2019-06-11  Tom Tromey  <tom@tromey.com>

	* common/common-utils.c (xmalloc, xrealloc, xcalloc)
	(xmalloc_failed): Move to alloc.c.
	* alloc.c: New file.
	* Makefile.in (COMMON_SFILES): Add alloc.c.

gdb/gdbserver/ChangeLog
2019-06-11  Tom Tromey  <tom@tromey.com>

	* Makefile.in (SFILES): Add alloc.c.
	(OBS): Add alloc.o.
	(IPA_OBJS): Add alloc-ipa.o.
	(alloc-ipa.o): New target.
	(%.o: ../%.c): New pattern rule.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Dwarf: Don't add nameless modules to partial symbol table
@ 2019-06-12 15:03 sergiodj+buildbot
  2019-06-12 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-12 15:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a5fd13a91534b1c79a4b61995894a5bb4f08d3b0 ***

Author: Bernhard Heckel <bernhard.heckel@intel.com>
Branch: master
Commit: a5fd13a91534b1c79a4b61995894a5bb4f08d3b0

Dwarf: Don't add nameless modules to partial symbol table

A name for BLOCK DATA in Fortran is optional.  If no name has been
assigned, GDB crashes during read-in of DWARF when BLOCK DATA is
represented via DW_TAG_module.  BLOCK DATA is used for one-time
initialization of non-pointer variables in named common blocks.

As of now there is no issue when gfortran is used as DW_TAG_module is
not emitted.  However, with Intel ifort the nameless DW_TAG_module is
present and has the following form:

 ...
  <1><dd>: Abbrev Number: 7 (DW_TAG_module)
     <de>   DW_AT_decl_line   : 46
     <df>   DW_AT_decl_file   : 1
     <e0>   DW_AT_description : (indirect string, offset: 0x110): block
 data
     <e4>   DW_AT_high_pc     : 0x402bb7
     <ec>   DW_AT_low_pc      : 0x402bb7
 ...

The missing name leads to a crash in add_partial_symbol, during length
calculation.

gdb/ChangeLog:
2019-06-11  Bernhard Heckel  <bernhard.heckel@intel.com>

	* dwarf2read.c (add_partial_symbol): Skip nameless modules.

gdb/testsuite/Changelog:
2019-06-11  Bernhard Heckel  <bernhard.heckel@intel.com>

	* gdb.fortran/block-data.f: New.
	* gdb.fortran/block-data.exp: New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Prevent a seg-fault from objdup when disassembling binaries which do not contain a symbol table.
@ 2019-06-12 21:16 sergiodj+buildbot
  2019-06-12 21:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-12 21:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 62e0492f5723dd3db5e5a48a3a0ac161d7ba2701 ***

Author: Adam Lackorzymski <adam@os.inf.tu-dresden.de>
Branch: master
Commit: 62e0492f5723dd3db5e5a48a3a0ac161d7ba2701

Prevent a seg-fault from objdup when disassembling binaries which do not contain a symbol table.

	PR 24643
	* elf32-arm.c (arm_elf_find_function): Fail if the symol table is
	absent, or the bfd is not in the ELF formart.
	* elfnn-aarch64.c (aarch64_elf_find_function): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove the ldmx mnemonic that never made it into POWER9.
@ 2019-06-12 22:32 sergiodj+buildbot
  2019-06-12 22:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-12 22:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6fbc939cfdbdf02f205c20925583738b0f835e62 ***

Author: Peter Bergner <bergner@linux.ibm.com>
Branch: master
Commit: 6fbc939cfdbdf02f205c20925583738b0f835e62

Remove the ldmx mnemonic that never made it into POWER9.

opcodes/
	* ppc-opc.c (powerpc_opcodes) <ldmx>: Delete mnemonic.

gas/
	* testsuite/gas/ppc/power9.d: Delete ldmx tests.
	* testsuite/gas/ppc/power9.s: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] opcodes/or1k: Regenerate opcodes
@ 2019-06-12 23:45 sergiodj+buildbot
  2019-06-13  0:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-12 23:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e4c4ac46e8e7ef92311181f85b193af369897151 ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: e4c4ac46e8e7ef92311181f85b193af369897151

opcodes/or1k: Regenerate opcodes

This picks up changes for:
  - new orfpx64a32 spec additions
  - new unordered instructions
  - symbol and documentation updates

opcodes/ChangeLog:

	* or1k-asm.c: Regenerated.
	* or1k-desc.c: Regenerated.
	* or1k-desc.h: Regenerated.
	* or1k-dis.c: Regenerated.
	* or1k-ibld.c: Regenerated.
	* or1k-opc.c: Regenerated.
	* or1k-opc.h: Regenerated.
	* or1k-opinst.c: Regenerated.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix latent bug in custom word point completion handling
@ 2019-06-13  0:53 sergiodj+buildbot
  2019-06-13  0:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  0:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 00b56dbe7016bc33f882525a47faab943fdeda9a ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 00b56dbe7016bc33f882525a47faab943fdeda9a

Fix latent bug in custom word point completion handling

Without this fix, if we switch the "print" completer to custom word
point handling, we regress gdb.base/completion.exp like this:

 (gdb) p "break1.c FAIL: gdb.base/completion.exp: complete 'p "break1' (timeout)

The problem is that completing an expression that starts with double
quotes, and resolves to a filename, like this:

 (gdb) p "break1[TAB]

would change from this, with current master:

 (gdb) p "break1.c"|
         ^^^^^^^^^^|
                   \- cursor here

to this:

 (gdb) p "break1.c |
         ^^^^^^^^^^|
                   \- quote replaced by space

The issue is that completer.c:advance_to_completion_word misses
telling the completion tracker to emulate readline's handling of
completing a string when rl_find_completion_word returns a delimiter.

This commit fixes the latent bug.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* completer.c (advance_to_completion_word): Handle delimiters.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Allow "unlimited" abbreviations
@ 2019-06-13  1:56 sergiodj+buildbot
  2019-06-13  7:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  1:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 93bcb04349eb500781747a542ececc7a8ba3bd95 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 93bcb04349eb500781747a542ececc7a8ba3bd95

Allow "unlimited" abbreviations

Currently we can abbreviate "on/off/enable/disable/yes/no" in boolean
settings,

  (gdb) set non-stop of
  (gdb) set non-stop en

we can abbreviate the items of enumeration commands,

  (gdb) set print frame-arguments scal
  (gdb) set scheduler-locking rep

but we cannot abbreviate "unlimited" in integer commands.

 (gdb) set print elements u
 No symbol "u" in current context.

This commit fixes that.

Testcases will be in gdb.base/settings.exp and gdb.base/options.exp,
in following patches.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-setshow.c (is_unlimited_literal): Allow abbreviations.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] New set/show testing framework (gdb.base/settings.exp)
@ 2019-06-13  2:36 sergiodj+buildbot
  2019-06-13 11:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  2:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dca0f6c0a4bafff9039d8bdb2a7efec9f70ce82f ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: dca0f6c0a4bafff9039d8bdb2a7efec9f70ce82f

New set/show testing framework (gdb.base/settings.exp)

This commit adds new representative commands for all types of settings
commands supported by gdb (enum var_types), and then uses them to
exercise settings parsing and completion.

  (gdb) maint test-settings s[TAB]
  set   show

  (gdb) maint test-settings set [TAB]
  auto-boolean         integer              uinteger
  boolean              optional-filename    zinteger
  enum                 string               zuinteger
  filename             string-noescape      zuinteger-unlimited

  (gdb) maint test-settings set enum [TAB]
  xxx  yyy  zzz

  etc.

This is basically unit testing, except that it goes fully via GDB.  It
must be done this way in order to exercise TAB completion properly,
which must go via readline.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* Makefile.in (COMMON_SFILES): Add maint-test-settings.c.
	* NEWS: Mention maint test-settings KIND.
	* maint-test-settings.c: New file.

gdb/doc/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.texinfo (Maintenance Commands): Document "maint
	test-settings" commands.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/settings.c: New file.
	* gdb.base/settings.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix TID parser bug
@ 2019-06-13  2:43 sergiodj+buildbot
  2019-06-13  2:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  2:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b9a3f8429b012b753e30a4222bd8e4cbba019fad ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: b9a3f8429b012b753e30a4222bd8e4cbba019fad

Fix TID parser bug

I noticed this inconsistency in the error messages below:

 (gdb) print --1
 Left operand of assignment is not an lvalue.

 (gdb) thread apply 1 print --1

 Thread 1 (Thread 0x7ffff7fb6740 (LWP 17805)):
 inverted range

The "inverted range" error happens because get_number_trailer returns
0 to indicate error, but number_or_range_parser::get_number is not
checking for that.  I tried detected the error there, but that doesn't
work because number_of_range_parser is used in places that _do_ want
to legitimately handle 0.  IMO we should fix get_number_trailer's
interface or use something else when we want to parse 0 too.

I've decided to fix it in a different way, similarly to how
number_or_range_parser::finished was changed in commit 529c08b25ec7
("Add helper functions parse_flags and parse_flags_qcs").

Seems like a good change, even if we tweaked
number_or_range_parser::get_number, as it simplifies
thread_apply_command and makes them consistent with
number_or_range_parser::finished().

We now get the same error message in both cases:

 (gdb) print --1
 Left operand of assignment is not an lvalue.

 (gdb) thread apply 1 print --1

 Thread 1 (Thread 0x7ffff7fb6740 (LWP 17805)):
 Left operand of assignment is not an lvalue.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* thread.c (thread_apply_command): Adjust TID parsing.
	* tid-parse.c (tid_range_parser::finished): Ensure parsing end is
	detected before end of string.
	(tid_is_in_list): Error out if LIST is invalid.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.multi/tids.exp: Adjust expected output.  Add "thread apply 1
	foo --1" test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce generic command options framework
@ 2019-06-13  2:48 sergiodj+buildbot
  2019-06-13 13:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  2:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9d0faba9f52b898f0be539bc4d6fbd084772259d ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 9d0faba9f52b898f0be539bc4d6fbd084772259d

Introduce generic command options framework

This commit adds a generic command options framework, that makes it
easy enough to add '-'-style options to commands in a uniform way,
instead of each command implementing option parsing in its own way.

Options are defined in arrays of option_def objects (for option
definition), and the same options definitions are used for supporting
TAB completion, and also for generating the relevant help fragment of
the "help" command.  See the gdb::options::build_help function, which
returns a string with the result of replacing %OPTIONS% in a template
string with an auto-generated "help" string fragment for all the
passed-in options.

Since most options in GDB are in the form of "-OPT", with a single
dash, this is the format that the framework supports.

I like to think of gdb's "-OPT" as the equivalent to getopt's long
options format ("--OPT"), and gdb's "/" as the equivalent to getopt's
short options format.  getopt's short options format allows mixing
several one-character options, like "ls -als", kind of similar to
gdb's "x /FMT" and "disassemble /MOD", etc.  While with gdb's "-"
options, the option is expected to have a full name, and to be
abbreviatable.  E.g., "watch -location", "break -function main", etc.

This patch only deals with "-" options.  The above comment serves more
to disclose why I don't think we should support mixing several
unrelated options in a single "-" option invocation, like "thread
apply -qcs" instead of "thread apply -q -c -s".

The following patches will add uses of the infrastructure to several
key commands.  Most notably, "print", "compile print", "backtrace",
"frame apply" and "thread apply".  I tried to add options to several
commands in order to make sure the framework didn't leave that many
open holes open.

Options use the same type as set commands -- enum var_types.  So
boolean options are var_boolean, enum options are var_enum, etc.  The
idea is to share code between settings commands and command options.
The "print" options will be based on the "set print" commands, and
their names will be the same.  Actually, their definitions will be the
same too.  There is a function to create "set/show" commands from an
array for option definitions:

 /* Install set/show commands for options defined in OPTIONS.  DATA is
    a pointer to the structure that holds the data associated with the
    OPTIONS array.  */
 extern void add_setshow_cmds_for_options (command_class cmd_class, void *data,
					   gdb::array_view<const option_def> options,
					   struct cmd_list_element **set_list,
					   struct cmd_list_element **show_list);

That will be used by several following patches.

Other features:

 - You can use the "--" delimiter to explicitly indicate end of
   options.  Several existing commands use this token sequence for
   this effect already, so this just standardizes it.

 - You can shorten option names, as long as unambiguous.  Currently,
   some commands allow this (e.g., break -function), while others do
   not (thread apply all -ascending).  As GDB allows abbreviating
   command names and other things, it feels more GDB-ish to allow
   abbreviating option names too, to me.

 - For boolean options, 0/1 stands for off/on, just like with boolean
   "set" commands.

 - For boolean options, "true" is implied, just like with boolean "set
   commands.

These are the option types supported, with a few examples:

 - boolean options (var_boolean).  The option's argument is optional.

   (gdb) print -pretty on -- *obj
   (gdb) print -pretty off -- *obj
   (gdb) print -p -- *obj
   (gdb) print -p 0 -- *obj

 - flag options (like var_boolean, but no option argument (on/off))

   (gdb) thread apply all -s COMMAND

 - enum options  (var_enum)

   (gdb) bt -entry-values compact
   (gdb) bt -e c

 - uinteger options (var_uinteger)

   (gdb) print -elements 100 -- *obj
   (gdb) print -e 100 -- *obj
   (gdb) print -elements unlimited -- *obj
   (gdb) print -e u -- *obj

 - zuinteger-unlimited options (var_zuinteger_unlimited)

   (gdb) print -max-depth 100 -- obj
   (gdb) print -max-depth -1 -- obj
   (gdb) print -max-depth unlimited -- obj

Other var_types could be supported, of course.  These were just the
types that I needed for the commands that I ported over, in the
following patches.

It was interesting (and unfortunate) to find that we need at least 3
different modes to cover the existing commands:

- Commands that require ending options with "--" if you specify any
  option: "print" and "compile print".

- Commands that do not want to require "--", and want to error out if
  you specify an unknown option (i.e., an unknown argument that starts
  with '-'): "compile code" / "compile file".

- Commands that do not want to require "--", and want to process
  unknown options themselves: "bt", because of "bt -COUNT",
  "thread/frame apply", because "-" is a valid command.

The different behavior is encoded in the process_options_mode enum,
passed to process_options/complete_options.

For testing, this patch adds one representative maintenance command
for each of the process_options_mode values, that are used by the
testsuite to exercise the options framework:

 (gdb) maint test-options require-delimiter
 (gdb) maint test-options unknown-is-error
 (gdb) maint test-options unknown-is-operand

and adds another command to help with TAB-completion testing:

 (gdb) maint show test-options-completion-result

See their description at the top of the maint-test-options.c file.

Docs/NEWS are in a patch later in the series.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* Makefile.in (SUBDIR_CLI_SRCS): Add cli/cli-option.c.
	(COMMON_SFILES): Add maint-test-settings.c.
	* cli/cli-decode.c (boolean_enums): New global, factored out from
	...
	(add_setshow_boolean_cmd): ... here.
	* cli/cli-decode.h (boolean_enums): Declare.
	* cli/cli-option.c: New file.
	* cli/cli-option.h: New file.
	* cli/cli-setshow.c (parse_cli_boolean_value(const char **)): New,
	factored out from ...
	(parse_cli_boolean_value(const char *)): ... this.
	(is_unlimited_literal): Change parameter type to pointer to
	pointer.  Adjust and advance ARG pointer.
	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
	(parse_cli_var_enum): New, factored out from ...
	(do_set_command): ... this.  Adjust.
	* cli/cli-setshow.h (parse_cli_boolean_value)
	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
	(parse_cli_var_enum): Declare.
	* cli/cli-utils.c: Include "cli/cli-option.h".
	(get_ulongest): New.
	* cli/cli-utils.h (get_ulongest): Declare.
	(check_for_argument): New overloads.
	* maint-test-options.c: New file.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.c: New file.
	* gdb.base/options.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "print" and "compile print" support -OPT options
@ 2019-06-13  2:53 sergiodj+buildbot
  2019-06-13 15:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  2:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7d8062de98203eeec70d4439ab460b9ef50a2e0f ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 7d8062de98203eeec70d4439ab460b9ef50a2e0f

Make "print" and "compile print" support -OPT options

This patch adds support for "print -option optval --", etc.
Likewise for "compile print".

We'll get:

~~~~~~
(gdb) help print
Print value of expression EXP.
Usage: print [[OPTION]... --] [/FMT] [EXP]

Options:
  -address [on|off]
    Set printing of addresses.

  -array [on|off]
    Set pretty formatting of arrays.

  -array-indexes [on|off]
    Set printing of array indexes.

  -elements NUMBER|unlimited
    Set limit on string chars or array elements to print.
    "unlimited" causes there to be no limit.

  -max-depth NUMBER|unlimited
    Set maximum print depth for nested structures, unions and arrays.
    When structures, unions, or arrays are nested beyond this depth then they
    will be replaced with either '{...}' or '(...)' depending on the language.
    Use "unlimited" to print the complete structure.

  -null-stop [on|off]
    Set printing of char arrays to stop at first null char.

  -object [on|off]
    Set printing of C++ virtual function tables.

  -pretty [on|off]
    Set pretty formatting of structures.

  -repeats NUMBER|unlimited
    Set threshold for repeated print elements.
    "unlimited" causes all elements to be individually printed.

  -static-members [on|off]
    Set printing of C++ static members.

  -symbol [on|off]
    Set printing of symbol names when printing pointers.

  -union [on|off]
    Set printing of unions interior to structures.

  -vtbl [on|off]
    Set printing of C++ virtual function tables.

Note: because this command accepts arbitrary expressions, if you
specify any command option, you must use a double dash ("--")
to mark the end of option processing.  E.g.: "print -o -- myobj".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I want to highlight the comment above about "--".

At first, I thought we could make the print command parse the options,
and if the option wasn't recognized, fallback to parsing as an
expression.  Then, if the user wanted to disambiguate, he'd use the
"--" option delimiter.  For example, if you had a variable called
"object" and you wanted to print its negative, you'd have to do:

  (gdb) print -- -object

After getting that working, I saw that gdb.pascal/floats.exp
regressed, in these tests:

 gdb_test "print -r" " = -1\\.2(499.*|5|500.*)"
 gdb_test "print -(r)" " = -1.2(499.*|5|500.*)"
 gdb_test "print -(r + s)" " = -3\\.4(499.*|5|500.*)"

It's the first one that I found most concerning.  It regressed because
"-r" is the abbreviation of "-raw".  I realized then that the behavior
change was a bit risker than I'd like, considering scripts, wrappers
around gdb, etc., and even user expectation.  So instead, I made the
print command _require_ the "--" options delimiter if you want to
specify any option.  So:

  (gdb) print -r

is parsed as an expression, and

  (gdb) print -r --

is parsed as an option.

I noticed that that's also what lldb's expr (the equivalent of print)
does to handle the same problem.

Going back the options themselves, note that:

 - you can shorten option names, as long as unambiguous.
 - For boolean options, 0/1 stand for off/on.
 - For boolean options, "true" is implied.

So these are all equivalent:

 (gdb) print -object on -static-members off -pretty on -- foo
 (gdb) print -object -static-members off -pretty -- foo
 (gdb) print -object -static-members 0 -pretty -- foo
 (gdb) print -o -st 0 -p -- foo

TAB completion is fully supported:

  (gdb) p -[TAB]
  -address         -elements        -pretty          -symbol
  -array           -null-stop       -repeats         -union
  -array-indexes   -object          -static-members  -vtbl

Note that the code is organized such that some of the options and the
"set/show" commands code is shared.  In particular, the "print"
options and the corresponding "set print" commands are defined with
the same structures.  The commands are installed with the
gdb::option::add_setshow_cmds_for_options function.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* compile/compile.c: Include "cli/cli-option.h".
	(compile_print_value): Scope data pointer is now a
	value_print_options pointer; adjust.
	(compile_print_command): Process options.  Scope data pointer is
	now a value_print_options pointer; adjust.
	(_initialize_compile): Update "compile print"'s help to include
	supported options.  Install a completer for "compile print".
	* cp-valprint.c (show_vtblprint, show_objectprint)
	(show_static_field_print): Delete.
	(_initialize_cp_valprint): Don't install "set print
	static-members", "set print vtbl", "set print object" here.
	* printcmd.c: Include "cli/cli-option.h" and
	"common/gdb_optional.h".
	(print_command_parse_format): Rework to fill in a
	value_print_options instead of a format_data.
	(print_value): Change parameter type from format_data pointer to
	value_print_options reference.  Adjust.
	(print_command_1): Process options.  Adjust to pass down a
	value_print_options.
	(print_command_completer): New.
	(_initialize_printcmd): Install print_command_completer as
	handle_brkchars completer for the "print" command.  Update
	"print"'s help to include supported options.
	* valprint.c: Include "cli/cli-option.h".
	(show_vtblprint, show_objectprint, show_static_field_print): Moved
	here from cp-valprint.c.
	(boolean_option_def, uinteger_option_def)
	(value_print_option_defs, make_value_print_options_def_group):
	New.  Use gdb::option::add_setshow_cmds_for_options to install
	"set print elements", "set print null-stop", "set print repeats",
	"set print pretty", "set print union", "set print array", "set
	print address", "set print symbol", "set print array-indexes".
	* valprint.h: Include <string> and "cli/cli-option.h".
	(make_value_print_options_def_group): Declare.
	(print_value): Change parameter type from format_data pointer to
	value_print_options reference.
	(print_command_completer): Declare.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp: Build executable.
	(test-print): New procedure.
	(top level): Call it, once for "print" and another for "compile
	print".


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Migrate rest of compile commands to new options framework
@ 2019-06-13  2:57 sergiodj+buildbot
  2019-06-13 15:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  2:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e6ed716cd5514c08b9d7c469d185b1aa177dbc22 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: e6ed716cd5514c08b9d7c469d185b1aa177dbc22

Migrate rest of compile commands to new options framework

As I was in the neighbourhood, I converted the other "compile"
subcommands to the new options framework too.  Specifically, "compile
code" and "compile file".

The user-visible changes are:

  - All abbreviations of "-raw" are accepted now, instead of just -r.
    Obviously that means "-ra" is now accepted.

  - Option completion now works.

  - "compile file" did not have a completer yet, and now it knows to
    complete on filenames.

  - You couldn't use "compile file" with a file named "-something".
    You can now, with "compile file -- -something".

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* compile/compile.c (struct compile_options): New.
	(compile_flag_option_def, compile_command_option_defs)
	(make_compile_options_def_group): New.
	(compile_file_command): Handle options with
	gdb::option::process_options.
	(compile_file_command_completer): New function.
	(compile_code_command): Handle options with
	gdb::option::process_options.
	(compile_code_command_completer): New function.
	(_initialize_compiler): Install completers for "compile code" and
	"compile file".  Mention available options in "compile code" and
	"compile code"'s help.
	* completer.c (advance_to_completion_word): New, factored out from
	...
	(advance_to_expression_complete_word_point): ... this.
	(advance_to_filename_complete_word_point): New.
	* completer.h (advance_to_filename_complete_word_point): New
	declaration.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.compile/compile.exp: Adjust expected output to option
	processing changes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "backtrace" support -OPT options
@ 2019-06-13  3:03 sergiodj+buildbot
  2019-06-13 17:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  3:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d4c16835cad70bd8c04ff30d5d6f40ac65e7f7e1 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: d4c16835cad70bd8c04ff30d5d6f40ac65e7f7e1

Make "backtrace" support -OPT options

This adds support for comand options to the "backtrace" command.  We'll get:

  (gdb) bt -
  -entry-values         -hide                 -past-main
  -frame-arguments      -no-filters           -raw-frame-arguments
  -full                 -past-entry

~~~~
(gdb) help backtrace
Print backtrace of all stack frames, or innermost COUNT frames.
Usage: backtrace [OPTION]... [QUALIFIER]... [COUNT | -COUNT]

Options:
  -entry-values no|only|preferred|if-needed|both|compact|default
    Set printing of function arguments at function entry
    GDB can sometimes determine the values of function arguments at entry,
    in addition to their current values.  This option tells GDB whether
    to print the current value, the value at entry (marked as val@entry),
    or both.  Note that one or both of these values may be <optimized out>.

  -frame-arguments all|scalars|none
    Set printing of non-scalar frame arguments

  -raw-frame-arguments [on|off]
    Set whether to print frame arguments in raw form.
    If set, frame arguments are printed in raw form, bypassing any
    pretty-printers for that value.

  -past-main [on|off]
    Set whether backtraces should continue past "main".
    Normally the caller of "main" is not of interest, so GDB will terminate
    the backtrace at "main".  Set this if you need to see the rest
    of the stack trace.

  -past-entry [on|off]
    Set whether backtraces should continue past the entry point of a program.
    Normally there are no callers beyond the entry point of a program, so GDB
    will terminate the backtrace there.  Set this if you need to see
    the rest of the stack trace.

  -full
    Print values of local variables.

  -no-filters
    Prohibit frame filters from executing on a backtrace.

  -hide
    Causes Python frame filter elided frames to not be printed.

For backward compatibility, the following qualifiers are supported:

   full       - same as -full option.
   no-filters - same as -no-filters option.
   hide       - same as -hide.

With a negative COUNT, print outermost -COUNT frames.
~~~~

Implementation wise, this:

- Moves relevant options/settings globals to structures.
- Tweaks a number of functions to pass down references to such structures.
- Adds option_def structures describing the options/settings.
- Makes backtrace_command parse the options, with gdb::option::process_options.
- Tweaks "backtrace"'s help to describe the new options.
- Adds testcases.

Note that backtrace is a PROCESS_OPTIONS_UNKNOWN_IS_OPERAND command,
because of the "-COUNT" argument.

The COUNT/-COUNT argument is currently parsed as an expression.  I
considered whether it would be prudent here to require "--", but
concluded that the risk of causing a significant breakage here is much
lower compared to "print", since printing the expression is not the
whole point of the "backtrace" command.  Seems OK to me to require
typing "backtrace -past-main -- -p" if the user truly wants to refer
to the negative of a backtrace count stored in an inferior variable
called "p".

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* frame.c: Include "cli/cli-option.h.
	(user_set_backtrace_options): New.
	(backtrace_past_main, backtrace_past_entry, backtrace_limit):
	Delete.
	(get_prev_frame): Adjust.
	(boolean_option_def, uinteger_option_def)
	(set_backtrace_option_defs): New.
	(_initialize_frame): Adjust and use
	gdb::option::add_setshow_cmds_for_options to install "set
	backtrace past-main" and "set backtrace past-entry".
	* frame.h: Include "cli/cli-option.h".
	(struct frame_print_options): Forward declare.
	(print_frame_arguments_all, print_frame_arguments_scalars)
	(print_frame_arguments_none): Declare.
	(print_entry_values): Delete declaration.
	(struct frame_print_options, user_frame_print_options): New.
	(struct set_backtrace_options): New.
	(set_backtrace_option_defs, user_set_backtrace_options): Declare.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
	(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
	(mi_cmd_stack_list_variables): Pass down USER_FRAME_PRINT_OPTIONS.
	(list_args_or_locals): Add frame_print_options parameter.
	(mi_cmd_stack_info_frame): Pass down USER_FRAME_PRINT_OPTIONS.
	* python/py-framefilter.c (enumerate_args): Pass down
	USER_FRAME_PRINT_OPTIONS.
	* stack.c: Include "cli/cli-option.h".
	(print_frame_arguments_all, print_frame_arguments_scalars)
	(print_frame_arguments_none): Declare.
	(print_raw_frame_arguments, print_entry_values): Delete.
	(user_frame_print_options): New.
	(boolean_option_def, enum_option_def, frame_print_option_defs):
	New.
	(struct backtrace_cmd_options): New.
	(bt_flag_option_def): New.
	(backtrace_command_option_defs): New.
	(print_stack_frame): Pass down USER_FRAME_PRINT_OPTIONS.
	(print_frame_arg, read_frame_arg, print_frame_args)
	(print_frame_info, print_frame): Add frame_print_options parameter
	and use it.
	(info_frame_command_core): Pass down USER_FRAME_PRINT_OPTIONS.
	(backtrace_command_1): Add frame_print_options and
	backtrace_cmd_options parameters and use them.
	(make_backtrace_options_def_group): New.
	(backtrace_command): Process command options with
	gdb::option::process_options.
	(backtrace_command_completer): New.
	(_initialize_stack): Extend "backtrace"'s help to mention
	supported options.  Install completer for "backtrace".
	Install some settings commands with add_setshow_cmds_for_options.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp (test-backtrace): New.
	(top level): Call it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] "backtrace full/no-filters/hide" completer
@ 2019-06-13  3:19 sergiodj+buildbot
  2019-06-13 18:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  3:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 90a1ef8762a57f3f57007db2186099c026152034 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 90a1ef8762a57f3f57007db2186099c026152034

"backtrace full/no-filters/hide" completer

"backtrace"'s completer now completes on command options:

 (gdb) bt -[TAB]
 -entry-values         -full                 -no-filters           -past-main
 -frame-arguments      -hide                 -past-entry           -raw-frame-arguments

But it doesn't know how to complete on qualifiers:

 (gdb) bt fu[TAB]
 funlockfile       futimens          futimes.c
 funlockfile.c     futimens.c        futimesat
 futex-internal.h  futimes           futimesat.c

This commit fixes that:

 (gdb) bt fu[TAB]ll
 (gdb) bt n[TAB]o-filters
 (gdb) bt h[TAB]ide

I considered teaching the gdb::option framework to handle non-'-'
options, but decided it wasn't worth it for this special case, and I'd
rather not make it easy to add new qualifier-like options.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* stack.c (parse_backtrace_qualifiers): New.
	(backtrace_command): Use it.
	(backtrace_command_completer): Complete on qualifiers.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp (test-backtrace): Test completing qualifiers.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] lib/completion-support.exp: Add test_gdb_completion_offers_commands
@ 2019-06-13  3:40 sergiodj+buildbot
  2019-06-13 20:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  3:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e2a689da55d3feb7b79a141f69c4049112f59c91 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: e2a689da55d3feb7b79a141f69c4049112f59c91

lib/completion-support.exp: Add test_gdb_completion_offers_commands

This adds a procedure to the collection of completion-testing
routines, that allows checking whether completion offers all commands
as completion candidates.  This will be used for testing completing
"frame apply all [TAB]", "thread apply all [TAB]", etc.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

        * lib/completion-support.exp (test_gdb_complete_tab_multiple)
	(test_gdb_complete_cmd_multiple, test_gdb_complete_multiple): Add
	'max_completions' parameter and handle it.
	(test_gdb_completion_offers_commands): New.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce complete_nested_command_line
@ 2019-06-13  3:45 sergiodj+buildbot
  2019-06-15  8:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  3:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 272d4594343349a713f7d8967d90ae2413ecbc30 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 272d4594343349a713f7d8967d90ae2413ecbc30

Introduce complete_nested_command_line

This adds a completion helper routine that makes it possible for a
command that takes another command as argument, such as "frame apply
all COMMAND" as "thread apply all COMMAND", to complete on COMMAND,
and have the completion machinery recurse and complete COMMAND as if
you tried to complete "(gdb) COMMAND".  I.e., we'll be able to
complete like this, for example:

 (gdb) thread apply all -[TAB]
 -c           -ascending   -q           -s
 (gdb) thread apply all -ascending frame apply all -[TAB]
 -c           -limit       -past-entry  -past-main   -q           -s
 (gdb) thread apply all -ascending frame apply all -past-main print -[TAB]
 -address         -elements        -pretty          -symbol
 -array           -null-stop       -repeats         -union
 -array-indexes   -object          -static-members  -vtbl
 (gdb) thread apply all -ascending frame apply all -past-main print glo[TAB]
 global1         global2

Above, the completer function understands that "thread apply all" is a
command, and then parses "-ascending" successfully and understand that
the rest of the string is "thread apply all"'s operand.  And then, the
process repeats for the "frame apply" command, and on and on.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* completer.c (complete_nested_command_line): New.
	(gdb_completion_word_break_characters_throw): Add assertion.
	* completer.h (complete_nested_command_line): Declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "frame apply" support -OPT options
@ 2019-06-13  3:56 sergiodj+buildbot
  2019-06-15 12:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  3:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5d7071341dd3c01d38fc01398ef8b23b1bd3783c ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 5d7071341dd3c01d38fc01398ef8b23b1bd3783c

Make "frame apply" support -OPT options

This adds support for '-'-style options to the "frame apply" family of
commands -- "frame apply COUNT", "frame apply level", "frame apply
all", "faas" and "tfaas".

The -q/-c/-s flags were already supported, -past-main/-past-entry is
new:

~~~
(gdb) help frame apply all
Apply a command to all frames.

Usage: frame apply all [OPTION]... COMMAND
Prints the frame location information followed by COMMAND output.

By default, an error raised during the execution of COMMAND
aborts "frame apply".

Options:
  -q
    Disables printing the frame location information.

  -c
    Print any error raised by COMMAND and continue.

  -s
    Silently ignore any errors or empty output produced by COMMAND.

  -past-main [on|off]
    Set whether backtraces should continue past "main".
    Normally the caller of "main" is not of interest, so GDB will terminate
    the backtrace at "main".  Set this if you need to see the rest
    of the stack trace.

  -past-entry [on|off]
    Set whether backtraces should continue past the entry point of a program.
    Normally there are no callers beyond the entry point of a program, so GDB
    will terminate the backtrace there.  Set this if you need to see
    the rest of the stack trace.
~~~

TAB completion of options is now supported.  Also, TAB completion of
COMMAND in "frame apply all COMMAND" does the right thing now, making
use of complete_command, added by the previous patch.  E.g.:

 (gdb) thread apply all -ascending frame apply all -past-main print -[TAB]
 -address         -elements        -pretty          -symbol
 -array           -null-stop       -repeats         -union
 -array-indexes   -object          -static-members  -vtbl
 (gdb) thread apply all -ascending frame apply all -past-main print glo[TAB]
 global1         global2

The change to tfaas_command is necessary because otherwise you get
this:

 (gdb) tfaas --
 Unrecognized option at: frame apply all -s --

That's because the above is equivalent to:

 (gdb) thread apply all -s frame apply all -s --

and the "--" instructs "thread apply" to consider everything up to
"--" as its command options.  And from that view, "frame" is an
invalid option.

The change makes tfaas be equivalent to:

 (gdb) thread apply all -s -- frame apply all -s --

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-utils.c (parse_flags_qcs): Use validate_flags_qcs.
	(validate_flags_qcs): New.
	* cli/cli-utils.h (struct qcs_flags): Change field types to int.
	(validate_flags_qcs): Declare.
	* stack.c (qcs_flag_option_def, fr_qcs_flags_option_defs): New.
	(make_frame_apply_options_def_group): New.
	(frame_apply_command_count): Process options with
	gdb::option::process_options.
	(frame_apply_completer): New.
	(frame_apply_level_completer, frame_apply_all_completer)
	(frame_apply_completer): New.
	(_initialize_stack): Update help of "frame apply", "frame apply
	level", "frame apply all" and "faas" to mention supported options
	and install command completers.
	* stack.h (frame_apply_all_completer): Declare.
	* thread.c: Include "stack.h".
	(tfaas_command): Add "--".
	(_initialize_thread): Update help "tfaas" to mention supported
	options and install command completer.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp (test-frame-apply): New.
	(top level): Test print commands with different "frame apply"
	prefixes.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] "thread apply 1 -- -" vs "frame apply level 0 -- -"
@ 2019-06-13  4:08 sergiodj+buildbot
  2019-06-15 13:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  4:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f7e13587eaf1e2d433e21ac0a9e413a98e53652d ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: f7e13587eaf1e2d433e21ac0a9e413a98e53652d

"thread apply 1 -- -" vs "frame apply level 0 -- -"

With the following patch, we'll be able to explicitly tell "thread
apply" where options end, using the "--" delimiter.  A test added by
that patch caught a pre-existing inconsistency:

 (gdb) thread apply 1 -- -
 Invalid thread ID: -

 (gdb) frame apply level 0 -- -
 #0  main () at threads.c:55
 Cannot enable the TUI when output is not a terminal

Above, "thread apply" did not try to run the command, while "frame
apply level" did.  ("-" is a valid TUI command.)

That "-" is past "--", so it should have not been confused with an
invalid TID, in the "thread apply" case.

That error actually doesn't come from the TID parser, but instead from
thread_apply_command directly.

So that error/check needs tweaking.  The next question is what to
tweak it to.

"-" is actually a valid TUI command:

 (gdb) help -
 Scroll window backward.
 Usage: - [WIN] [N]

(gdb) frame apply level 0 -- -
#0  main () at threads.c:55
Cannot enable the TUI when output is not a terminal

While I don't imagine it being useful to use that "-" command with
"thread apply" or "frame apply level", the fact is that you can use it
with "frame apply level", but not with "thread apply".  And since it's
an actual command, pedantically it seems right to allow it.

That's what this commit does.

Note: simply removing the "isalpha" check regresses
gdb.multi/tids.exp -- see related commit 3f5b7598805c.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* thread.c (thread_apply_command): Check for invalid TID with
	isdigit instead of !isalpha.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make "thread apply" use the gdb::option framework
@ 2019-06-13  4:21 sergiodj+buildbot
  2019-06-15 14:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  4:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6665660a411ead049daa85cac5c629d637e22044 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 6665660a411ead049daa85cac5c629d637e22044

Make "thread apply" use the gdb::option framework

Similarly to the "frame apply" patch, this makes the "thread apply"
family of commands -- "thread apply TID", "thread apply all" and
"taas" use the gdb::option framework for '-'-style options.

No new options are added, but there are some user-visible changes:

- Can now abbreviate and complete "-ascending"

- We now have a completer for "thread apply" commands

  Can now complete options ("thread apply all -[TAB]"), and also,
  'thread apply all COMMAND[TAB]' now does what you'd expect, by
  making use of the new complete_command routine.

- "help" output tweaked with auto-generated option descriptions:

   ~~~
   Usage: thread apply all [OPTION]... COMMAND
   Prints per-inferior thread number and target system's thread id
   followed by COMMAND output.

   By default, an error raised during the execution of COMMAND
   aborts "thread apply".

   Options:
     -ascending
       Call COMMAND for all threads in ascending order.
       The default is descending order.

     -q
       Disables printing the thread information.

     -c
       Print any error raised by COMMAND and continue.

     -s
       Silently ignore any errors or empty output produced by COMMAND.
   ~~~

  The "By default ..." sentence is new as well.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* thread.c: Include "cli/cli-option.h".
	(tp_array_compar_ascending): Global.
	(tp_array_compar): Delete function.
	(tp_array_compar_ascending, tp_array_compar_descending): New
	functions.
	(ascending_option_def, qcs_flag_option_def)
	(thr_qcs_flags_option_defs)
	(make_thread_apply_all_options_def_group)
	(make_thread_apply_options_def_group): New.
	(thread_apply_all_command): Use gdb::option::process_options.
	(thread_apply_command_completer)
	(thread_apply_all_command_completer): New.
	(thread_apply_command): Use gdb::option::process_options.
	(_initialize_thread): Delete THREAD_APPLY_FLAGS_HELP, replace it
	with a new THREAD_APPLY_OPTION_HELP.  Use gdb::option::build_help
	to generate help text of "thread apply".  Adjust "taas"'s help.
	* tid-parse.c (tid_range_parser::in_thread_range): New method.
	* tid-parse.h (tid_range_parser::in_thread_range): New method.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/options.exp (test-thread-apply): New.
	(top level): Call it.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Delete parse_flags/parse_flags_qcs
@ 2019-06-13  4:29 sergiodj+buildbot
  2019-06-15 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  4:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6206060d9be8da3e701fe0307c6c01390e2b4ae2 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 6206060d9be8da3e701fe0307c6c01390e2b4ae2

Delete parse_flags/parse_flags_qcs

Now that "thread/frame apply" have been converted to the gdb::option
framework, these functions are no longer used.

For a while, I thought about keeping the unit tests, by making a local
version of parse_flags_qcs in the unit tests file.  But all that would
really test that is used by GDB itself, is the validate_flags_qcs
function.  So in the end, I went through all the unit tests, and
converted any that wasn't already covered to gdb.base/options.exp
tests.  And those have all already been added in previous patches.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-utils.c (parse_flags, parse_flags_qcs): Delete.
	* cli/cli-utils.h (parse_flags, parse_flags_qcs): Delete.
	* unittests/cli-utils-selftests.c (test_parse_flags)
	(test_parse_flags_qcs): Delete.
	(test_cli_utils): Don't call deleted functions.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb.base/completion.exp: Fix comment typo
@ 2019-06-13  9:38 sergiodj+buildbot
  2019-06-13 10:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13  9:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ccf46844d3e5ad4af9f3a10cc0599c939138d566 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: ccf46844d3e5ad4af9f3a10cc0599c939138d566

gdb.base/completion.exp: Fix comment typo

Noticed this while writing the following patch.  We cd to $srcdir, not $objdir.

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/completion.exp: Fix comment typo.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix gdb build with -std=gnu++11
@ 2019-06-13 10:19 sergiodj+buildbot
  2019-06-15 17:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 10:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 66eb1ed3882aa3c54daa2fe24b7479b5ee0538f2 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 66eb1ed3882aa3c54daa2fe24b7479b5ee0538f2

Fix gdb build with -std=gnu++11

The options framework series broken the build with gcc 4.8, or any
other compiler were we end up forcing -std=gnu++11, causing errors
like these:

 ../../binutils-gdb/gdb/compile/compile.c: In function gdb::option::option_def_group make_compile_options_def_group(compile_options*):
 ../../binutils-gdb/gdb/compile/compile.c:266:44: error: could not convert (const gdb::option::option_def*)(& compile_command_option_defs) from const gdb::option::option_def* to gdb::array_view<const gdb::option::option_def>
    return {compile_command_option_defs, opts};
					     ^
   CXX    copying.o
 ../../binutils-gdb/gdb/compile/compile.c:267:1: error: control reaches end of non-void function [-Werror=return-type]
  }
  ^

This is a C++11 vs C++14 difference -- C++14 relaxed the rules for
eliding braces.

This commit fixes it by adding the missing (in C++11) braces.  Tested
with g++ 4.8.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* compile/compile.c (make_compile_options_def_group): Add braces
	around array_view initializer.
	* thread.c (make_thread_apply_all_options_def_group)
	(make_thread_apply_all_options_def_group): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] boolean/auto-boolean commands, make "o" ambiguous
@ 2019-06-13 11:12 sergiodj+buildbot
  2019-06-13 12:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 11:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dee7b4c83a636471ee321fb4fe1c3be0a16a9ea7 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: dee7b4c83a636471ee321fb4fe1c3be0a16a9ea7

boolean/auto-boolean commands, make "o" ambiguous

We currently accept "o" with boolean/auto-boolean commands, taking it
to mean "on".  But "o" is ambiguous, between "on" and "off".  I can't
imagine why assuming the user wanted to type "on" is a good idea, it
might have been a typo.

This commit makes gdb error out.  We now get:

 (gdb) maint test-settings set boolean o
 "on" or "off" expected.

 (gdb) maint test-settings set auto-boolean o
 "on", "off" or "auto" expected.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-setshow.c (parse_auto_binary_operation)
	(parse_cli_boolean_value): Don't allow "o".

gdb/testsuite/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* gdb.base/settings.exp (test-boolean, test-auto-boolean): Check
	that "o" is ambiguous.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] number_or_range_parser::get_number, don't treat "1 -" as a range
@ 2019-06-13 12:06 sergiodj+buildbot
  2019-06-13 12:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 12:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2c722807a752ce468b04fcf6d29857f377beeaf5 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 2c722807a752ce468b04fcf6d29857f377beeaf5

number_or_range_parser::get_number, don't treat "1 -" as a range

While adding -OPT options to "frame apply level", I noticed that:

 (gdb) frame apply level 0 -[TAB]

wasn't completing on the supported options.  This commit fixes it.
We'll get instead:

  (gdb) frame apply level 0 -
  -c           -past-entry  -past-main   -q           -s

I added the isspace check because this case:

  (gdb) frame apply level 0-

can't be an option.

Tests for this will be in a new gdb.base/options.exp file, in a
following patch.  It will exercise all of:

  (gdb) frame apply level 0-
  (gdb) frame apply level 0 -
  (gdb) frame apply level 0 --
  (gdb) frame apply level 0 -- -

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

	* cli/cli-utils.c (number_or_range_parser::get_number): Do not
	parse a range if "-" is at the end of the string.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/common: Wire in df/di conversion
@ 2019-06-13 14:06 sergiodj+buildbot
  2019-06-15 19:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 14:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 688cea90bc0af3a0188695a25f5c4e8db4ef763b ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: 688cea90bc0af3a0188695a25f5c4e8db4ef763b

sim/common: Wire in df/di conversion

Up until now these have not been used in any CGEN targets, add them as
they are now used by OpenRISC.

sim/common/ChangeLog:

	* cgen-accfp.c (floatdidf, fixdfdi): New functions.
	(cgen_init_accurate_fpu): Add floatdidf and fixdfdi.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/common: wire up new unordered comparisons
@ 2019-06-13 14:32 sergiodj+buildbot
  2019-06-15 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 14:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f1cc84f59441d59827748e47a5971a12ed1ac283 ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: f1cc84f59441d59827748e47a5971a12ed1ac283

sim/common: wire up new unordered comparisons

Define and wire up unordered floating point comparison operations for cgen
targets.  This patch depends on my posted cgen patches[0].

[0] https://www.sourceware.org/ml/cgen/2019-q2/msg00013.html

sim/common/ChangeLog:

yyyy-mm-dd  Stafford Horne  <shorne@gmail.com>

	* cgen-accfp.c (unorderedsf, unordereddf): New functions.
	(cgen_init_accurate_fpu): Wire up unorderedsf and unordereddf.
	* cgen-fpu.h (cgen_fp_ops): Define fields unorderedsf and unordereddf.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/testsuite/or1k: Add tests for unordered compares
@ 2019-06-13 15:25 sergiodj+buildbot
  2019-06-15 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-13 15:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 57a63d27dcc8c7620f2168b370b649c7458c687e ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: 57a63d27dcc8c7620f2168b370b649c7458c687e

sim/testsuite/or1k: Add tests for unordered compares

Add tests for 32-bit and 64-bit unordered compare instructions.

sim/testsuite/sim/or1k/ChangeLog:

yyyy-mm-dd  Stafford Horne  <shorne@gmail.com>

	* fpu-unordered.S: New file.
	* fpu64a32-unordered.S: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/or1k: Regenerate sim
@ 2019-06-14  4:38 sergiodj+buildbot
  2019-06-15 18:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14  4:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7ccbb4437a29896955a6ff3b0406b1cc2a7f6fe2 ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: 7ccbb4437a29896955a6ff3b0406b1cc2a7f6fe2

sim/or1k: Regenerate sim

This picks up changes for:

 - new orfpx64a32 spec
 - new unordered instructions
 - documentation and symbol updates

sim/ChangeLog:

	* or1k/cpu.c: Regenerate.
	* or1k/cpu.h: Regenerate.
	* or1k/decode.c: Regenerate.
	* or1k/decode.h: Regenerate.
	* or1k/model.c: Regenerate.
	* or1k/sem-switch.c: Regenerate.
	* or1k/sem.c: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Regenerate with approved autotools version
@ 2019-06-14  6:59 sergiodj+buildbot
  2019-06-15 21:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14  6:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3a3a077c4acaed1ab231a376ff9faf6b71b7a0f1 ***

Author: Alan Modra <amodra@gmail.com>
Branch: master
Commit: 3a3a077c4acaed1ab231a376ff9faf6b71b7a0f1

Regenerate with approved autotools version

bfd/
	* Makefile.in: Regenerate.
	* configure: Regenerate.
binutils/
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* doc/Makefile.in: Regenerate.
gas/
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.
ld/
	* Makefile.in: Regenerate.
	* configure: Regenerate.
libctf/
	* configure: Regenerate.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/testsuite/or1k: Add test for 64-bit fpu operations
@ 2019-06-14  7:17 sergiodj+buildbot
  2019-06-15 20:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14  7:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b4f9e0034660e15d233627f9c5a732ab023b7daf ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: b4f9e0034660e15d233627f9c5a732ab023b7daf

sim/testsuite/or1k: Add test for 64-bit fpu operations

This is a very basic test but it ensure the machine is wired up
correctly and that the assembler works.

sim/testsuite/sim/or1k/ChangeLog:

yyyy-mm-dd  Stafford Horne  <shorne@gmail.com>

	* fpu64a32.S: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim/testsuite/or1k: Add test case for l.adrp instruction
@ 2019-06-14  7:49 sergiodj+buildbot
  2019-06-15 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14  7:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3c83b496d4ee7d732b6844c585c3ea9d83ca0f4c ***

Author: Stafford Horne <shorne@gmail.com>
Branch: master
Commit: 3c83b496d4ee7d732b6844c585c3ea9d83ca0f4c

sim/testsuite/or1k: Add test case for l.adrp instruction

This is a simple test to ensure that the l.adrp instruction can be assembled and
simulated correctly.

sim/testsuite/sim/or1k/ChangeLog:

yyyy-mm-dd  Stafford Horne  <shorne@gmail.com>

	* adrp.S: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add R_AARCH64_P32_MOVW_PREL_* ELF32 relocs
@ 2019-06-14 14:49 sergiodj+buildbot
  2019-06-15 21:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 14:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e30d1fa1bfb1ff2e225cfac9226c357f2cf07a26 ***

Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Branch: master
Commit: e30d1fa1bfb1ff2e225cfac9226c357f2cf07a26

Add R_AARCH64_P32_MOVW_PREL_* ELF32 relocs

These ilp32 relocations were missing for some reason.

bfd/ChangeLog:

	* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.

include/ChangeLog:

	* elf/aarch64.h (R_AARCH64_P32_MOVW_PREL_G0): Define.
	(R_AARCH64_P32_MOVW_PREL_G0_NC): Define.
	(R_AARCH64_P32_MOVW_PREL_G1): Define.

ld/ChangeLog:

	* testsuite/ld-aarch64/aarch64-elf.exp: Add emit-relocs-22 and -23.
	* testsuite/ld-aarch64/emit-relocs-22.d: New test.
	* testsuite/ld-aarch64/emit-relocs-22.s: New test.
	* testsuite/ld-aarch64/emit-relocs-23.d: New test.
	* testsuite/ld-aarch64/emit-relocs-23.s: New test.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Updated French translation for the opcodes subdirectory.
@ 2019-06-14 14:57 sergiodj+buildbot
  2019-06-15 21:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 14:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bcc5a6eb668e560a0020114b6dc261ef494981ba ***

Author: Nick Clifton <nickc@redhat.com>
Branch: master
Commit: bcc5a6eb668e560a0020114b6dc261ef494981ba

Updated French translation for the opcodes subdirectory.

	* po/fr.po; Updated French translation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove alloca(0) calls
@ 2019-06-14 15:12 sergiodj+buildbot
  2019-06-15 22:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 15:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT abdb711e0855f0597a96db0486b598144b788212 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: abdb711e0855f0597a96db0486b598144b788212

Remove alloca(0) calls

PR gdb/24653 points out that a gcc snapshot will complain about the
calls to alloca(0) in gdb.

These calls are only needed when using the C alloca.  I'm inclined to
think that no current platform needs this, so this patch removes the
calls.

Let me know what you think.

gdb/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

	PR gdb/24653:
	* regcache.c (registers_changed): Don't call alloca.
	* top.c (execute_command): Don't call alloca.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Use scoped_restore_terminal_state in annotate.c
@ 2019-06-14 16:19 sergiodj+buildbot
  2019-06-16  1:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 16:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7c39e397aafaea64812f2611b061bdd50f30dce4 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 7c39e397aafaea64812f2611b061bdd50f30dce4

gdb: Use scoped_restore_terminal_state in annotate.c

In a couple of places in annotate.c we are manually backing up and
restoring the terminal ownership, we could instead make use of
scoped_restore_terminal_state.

gdb/ChangeLog:

	* annotate.c (annotate_breakpoints_invalid): Make use of
	scoped_restore_terminal_state.
	(annotate_frames_invalid): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Only compute realpath when basenames_may_differ is set
@ 2019-06-14 16:57 sergiodj+buildbot
  2019-06-16  2:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 16:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a0c1ffedcf1988bc13fc5b6d57d3b74a17b60299 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: a0c1ffedcf1988bc13fc5b6d57d3b74a17b60299

Only compute realpath when basenames_may_differ is set

A user noted that, when sources are symlinked, gdb annotations will
print the real path, rather than the name of the symlink.

It seems to me that it is better to print the name of the file that
was actually used in the build, unless there is some reason not to.

This patch implements this, with the caveat that it will not work when
basenames-may-differ is enabled.  The way this mode is currently
implemented, returning the symbolic (not real) path is not possible.

While I think it would be good to redo the source file name cache and
perhaps integrate it with class source_cache, I haven't done so here.

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

	* source.c (find_and_open_source): Respect basenames_may_differ.

gdb/testsuite/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

	* gdb.base/annotate-symlink.exp: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Minor NEWS rearrangement
@ 2019-06-14 23:38 sergiodj+buildbot
  2019-06-16 11:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-14 23:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 52ce35e2894e55cea94011dda6443be51e154f37 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 52ce35e2894e55cea94011dda6443be51e154f37

Minor NEWS rearrangement

I noticed that a NEWS item about Python scripting changes appeared
between an item about a convenience function and an item about a
convenience variable.  I think it's better for the latter to be next
to each other.

gdb/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

	* NEWS: Move convenience variable news above Python news.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move gnulib to top level
@ 2019-06-15  1:47 sergiodj+buildbot
  2019-06-16 11:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-15  1:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 73cc72729a184f00bf6fc4d74684a8516ba6b683 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 73cc72729a184f00bf6fc4d74684a8516ba6b683

Move gnulib to top level

This patch moves the gdb/gnulib subdirectory to the top level.

It adjusts the top-level build system to build gnulib when necessary,
and changes gdb to use this.  However, gdbserver still builds its own
copy of gnulib, just from the new source location.

A small hack was needed to ensure that gnulib is only built when gdb
is enabled.  The Makefile only provides an ordering -- the directory
must be mentioned in configdirs to actually be compiled at all.

Most of the patch is just a "git mv" of gnulib, though a few minor
path adjustments were needed in some files there.

Tested by the buildbot.

ChangeLog
2019-06-14  Tom Tromey  <tom@tromey.com>

	* MAINTAINERS: Add gnulib.
	* gnulib: New directory, move from gdb/gnulib.
	* configure.ac (host_libs): Add gnulib.
	* configure: Rebuild.
	* Makefile.def (host_modules, dependencies): Add gnulib.
	* Makefile.in: Rebuild.

gdb/ChangeLog
2019-06-14  Tom Tromey  <tom@tromey.com>

	* gnulib: Move directory to top-level.
	* configure.ac: Don't configure gnulib.
	* configure: Rebuild.
	* common/common-defs.h: Use new path to gnulib.
	* Makefile.in (GNULIB_BUILDDIR): Now ../gnulib.
	(GNULIB_H): Remove.
	(INCGNU): Look in new gnulib location.
	(HFILES_NO_SRCDIR): Remove gnulib files.
	(SUBDIR, REQUIRED_SUBDIRS): Remove gnulib.
	(generated_files): Remove GNULIB_H.
	($(LIBGNU), all-lib): Remove targets.
	(distclean): Don't mention GNULIB_BUILDDIR.
	($(GNULIB_BUILDDIR)/Makefile): Remove target.

gdb/gdbserver/ChangeLog
2019-06-14  Tom Tromey  <tom@tromey.com>

	* configure.ac: Use new path to gnulib.
	* configure: Rebuild.
	* Makefile.in (INCGNU, $(GNULIB_BUILDDIR)/Makefile): Use new path
	to gnulib.

gnulib/ChangeLog
2019-06-14  Tom Tromey  <tom@tromey.com>

	* update-gnulib.sh: Adjust paths.
	* Makefile.in: Adjust paths.
	* configure.ac: Adjust paths.  Use ACX_LARGEFILE.
	* configure: Rebuild.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove file path from test name
@ 2019-06-15 22:01 sergiodj+buildbot
  2019-06-16 12:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-15 22:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 09e4c4e1f1732ed978db4b8c75877bf8a8097ae9 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 09e4c4e1f1732ed978db4b8c75877bf8a8097ae9

gdb: Remove file path from test name

Having paths in test names makes comparing sum files difficult, rename
a test to avoid paths in test names.

gdb/testsuite/ChangeLog:

	* gdb.base/style-logging.exp: Remove path from test name.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove an update of current_source_line and current_source_symtab
@ 2019-06-15 23:07 sergiodj+buildbot
  2019-06-16 15:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-15 23:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0d3abd8cc936360f8c46502135edd2e646473438 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 0d3abd8cc936360f8c46502135edd2e646473438

gdb: Remove an update of current_source_line and current_source_symtab

While reviewing some of the annotation code I noticed that
identify_source_line (in source.c) sets current_source_line,
current_source_symtab, and also calls clear_lines_listed_range.  This
seems a little strange, identify_source_line is really a wrapper
around annotate_source, and is only called when annotation_level is
greater than 0 (so annotations are turned on).

It seems weird (to me) that when annotations are on we update GDB's
idea of the "current" line/symtab, but when they are off we don't,
given that annotations are really about communicating GDB's state to a
user (GUI) and surely shouldn't be changing GDB's behaviour.

This commit removes from identify_source_line all of the setting of
current line/symtab and the call to clear_lines_listed_range, after
doing this GDB still passes all tests, so I don't believe these lines
were actually required.

With this code removed identify_source_line is only a wrapper around
annotate_source, so I moved identify_source_line to annotate.c and
renamed it to annotate_source_line.

gdb/ChangeLog:

	* annotate.c: Add 'source.h' and 'objfiles.h' includes.
	(annotate_source): Make static.
	(annotate_source_line): Moved from source.c and renamed from
	identify_source_line.  Update the return type.
	* annotate.h (annotate_source): Delete declaration.
	(annotate_source_line): Declaration moved from source.h, and
	renamed from identify_source_line.  Return type updated.
	* source.c (identify_source_line): Moved to annotate.c and renamed
	to annotate_source_line.
	(info_line_command): Remove check of annotation_level.
	* source.h (identify_source_line): Move declaration to annotate.h
	and rename to annotate_source_line.
	* stack.c: Add 'annotate.h' include.
	(print_frame_info): Remove check of annotation_level before
	calling annotate_source_line.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove unused parameter
@ 2019-06-15 23:31 sergiodj+buildbot
  2019-06-16 14:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-15 23:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT afda45a206f83389782a400f86668714400a1cb7 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: afda45a206f83389782a400f86668714400a1cb7

gdb: Remove unused parameter

The parameter 'fullname' is always passed as NULL to the function
get_filename_and_charpos in source.c, so lets remove the parameter.
There should be no user visible changes after this commit.

gdb/ChangeLog:

	* source.c (get_filename_and_charpos): Remove fullname
	parameter.
	(identify_source_line): Update call to get_filename_and_charpos.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/mi: New commands to catch C++ exceptions
@ 2019-06-16  0:13 sergiodj+buildbot
  2019-06-16 15:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16  0:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 30056ea04ae3ecd828e2a06e12e6f174ae6659c9 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 30056ea04ae3ecd828e2a06e12e6f174ae6659c9

gdb/mi: New commands to catch C++ exceptions

Adds some MI commands to catch C++ exceptions.  The new commands are
-catch-throw, -catch-rethrow, and -catch-catch, these all correspond
to the CLI commands 'catch throw', 'catch rethrow', and 'catch catch'.

Each MI command takes two optional arguments, '-t' has the effect of
calling 'tcatch' instead of 'catch', for example:

   (gdb)
   -catch-throw -t

Is the same as:

   (gdb) tcatch throw

There is also a '-r REGEXP' argument that can supply a regexp to match
against the exception type, so:

   (gdb)
   -catch-catch -r PATTERN

Is the same as:

   (gdb) catch catch PATTERN

The change in print_mention_exception_catchpoint might seem a little
strange; changing the output from using ui_out::field_int and
ui_out::text to using  ui_out::message.

The print_mention_exception_catchpoint is used as the 'print_mention'
method for the exception catchpoint breakpoint object.  Most of the
other 'print_mention' methods (see breakpoint.c) use either
printf_filtered, of ui_out::message.  Using field_int was causing an
unexpected field to be added to the MI output.  Here's the output
without the change in print_mention_exception_catchpoint:

    (gdb)
    -catch-throw
    ^done,bkptno="1",bkpt={number="1",type="breakpoint",disp="keep",
                           enabled="y",addr="0x00000000004006c0",
                           what="exception throw",catch-type="throw",
                           thread-groups=["i1"],times="0"}

Notice the breakpoint number appears in both the 'bkptno' field, and
the 'number' field within the 'bkpt' tuple.  Here's the output with
the change in print_mention_exception_catchpoint:

    (gdb)
    -catch-throw
    ^done,bkpt={number="1",type="breakpoint",disp="keep",
                enabled="y",addr="0x00000000004006c0",
                what="exception throw",catch-type="throw",
                thread-groups=["i1"],times="0"}

gdb/ChangeLog:

	* NEWS: Mention new MI commands.
	* break-catch-throw.c (enum exception_event_kind): Move to
	breakpoint.h.
	(print_mention_exception_catchpoint): Output text as a single
	message.
	(catch_exception_command_1): Rename to...
	(catch_exception_event): ...this, make non-static, update header
	command, and change some parameter types.
	(catch_catch_command): Update for changes to
	catch_exception_command_1.
	(catch_throw_command): Likewise.
	(catch_rethrow_command): Likewise.
	* breakpoint.c (enum exception_event_kind): Delete.
	* breakpoint.h (enum exception_event_kind): Moved here from
	break-catch-throw.c.
	(catch_exception_event): Declare.
	* mi/mi-cmd-catch.c (mi_cmd_catch_exception_event): New function.
	(mi_cmd_catch_throw): New function.
	(mi_cmd_catch_rethrow): New function.
	(mi_cmd_catch_catch): New function.
	* mi/mi-cmds.c (mi_cmds): Add 'catch-throw', 'catch-rethrow', and
	'catch-catch' entries.
	* mi/mi-cmds.h (mi_cmd_catch_throw): Declare.
	(mi_cmd_catch_rethrow): Declare.
	(mi_cmd_catch_catch): Declare.

gdb/doc/ChangeLog:

	* gdb.texinfo (GDB/MI Catchpoint Commands): Add menu entry to new
	node.
	(C++ Exception GDB/MI Catchpoint Commands): New node to describe
	new MI commands.

gdb/testsuite/ChangeLog:

	* gdb.mi/mi-catch-cpp-exceptions.cc: New file.
	* gdb.mi/mi-catch-cpp-exceptions.exp: New file.
	* lib/mi-support.exp (mi_expect_stop): Handle 'exception-caught'
	as a stop reason.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Show the type for non allocated / associated types
@ 2019-06-16  1:15 sergiodj+buildbot
  2019-06-16 15:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16  1:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 584a927c5ad0d18e9995a0049066b6c503bb7482 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 584a927c5ad0d18e9995a0049066b6c503bb7482

gdb/fortran: Show the type for non allocated / associated types

Show the type of not-allocated and/or not-associated types.  For array
types and pointer to array types we are going to print the number of
ranks.

Consider this Fortran program:

  program test
    integer, allocatable :: vla (:)
    logical l
    allocate (vla(5:12))
    l = allocated (vla)
  end program test

And this GDB session with current HEAD:

  (gdb) start
  ...
  2	  integer, allocatable :: vla (:)
  (gdb) n
  4	  allocate (vla(5:12))
  (gdb) ptype vla
  type = <not allocated>
  (gdb) p vla
  $1 = <not allocated>
  (gdb)

And the same session with this patch applied:

  (gdb) start
  ...
  2	  integer, allocatable :: vla (:)
  (gdb) n
  4	  allocate (vla(5:12))
  (gdb) ptype vla
  type = integer(kind=4), allocatable (:)
  (gdb) p vla
  $1 = <not allocated>
  (gdb)

The type of 'vla' is now printed correctly, while the value itself
still shows as '<not allocated>'.  How GDB prints the type of
associated pointers has changed in a similar way.

gdb/ChangeLog:

	* f-typeprint.c (f_print_type): Don't return early for not
	associated or not allocated types.
	(f_type_print_varspec_suffix): Add print_rank parameter and print
	ranks of array types in case they dangling.
	(f_type_print_base): Add print_rank parameter.

gdb/testsuite/ChangeLog:

	* gdb.fortran/pointers.f90: New file.
	* gdb.fortran/print_type.exp: New file.
	* gdb.fortran/vla-ptype.exp: Adapt expected results.
	* gdb.fortran/vla-type.exp: Likewise.
	* gdb.fortran/vla-value.exp: Likewise.
	* gdb.mi/mi-vla-fortran.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Don't allow annotations to influence what else GDB prints
@ 2019-06-16  2:06 sergiodj+buildbot
  2019-06-16 15:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16  2:06 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ec8e2b6d3051f0b4b2a8eee9917898e95046c62f ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: ec8e2b6d3051f0b4b2a8eee9917898e95046c62f

gdb: Don't allow annotations to influence what else GDB prints

The annotations should be additional information printed by GDB to be
consumed by users (GUIs), but GDB shouldn't reduce what it prints
based on whether annotations are on or not.  However, this is what
happens for annotate_source_line.

This commit makes annotate_source_line a void function that simply
outputs the annotation information, GDB will then print the contents
of the source line to the terminal in the normal way.

Some tests needed to be updated after this commit.

gdb/ChangeLog:

	* annotate.c (annotate_source_line): Change return type to void,
	update implementation to match.
	* annotate.h (annotate_source_line): Change return type to void,
	update header comment.
	* stack.c (print_frame_info): Don't change what frame information
	is printed based on whether annotations are on or not.

gdb/testsuite/ChangeLog:

	* gdb.base/annota1.exp: Update expected results.
	* gdb.cp/annota2.exp: Likewise.
	* gdb.cp/annota3.exp: Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some NULL checks from the TUI
@ 2019-06-16 16:53 sergiodj+buildbot
  2019-06-16 19:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16 16:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 730ead81dfffc181f79a4b79ba8abf6850e63596 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 730ead81dfffc181f79a4b79ba8abf6850e63596

Remove some NULL checks from the TUI

I found a few spots in the TUI that were NULL-checking the result of
XNEW.  This cannot return NULL, so this patch removes the checks.

gdb/ChangeLog
2019-06-16  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.c (tui_alloc_generic_win_info)
	(tui_alloc_win_info, tui_add_content_elements): Remove NULL
	checks.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove unnecessary casts of NULL
@ 2019-06-16 18:17 sergiodj+buildbot
  2019-06-16 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16 18:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cafb34387d063fa47bc2cdb33fc3fe2f13e6cec0 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: cafb34387d063fa47bc2cdb33fc3fe2f13e6cec0

Remove unnecessary casts of NULL

I noticed some unnecessary casts of NULL.  This removes all the
unnecessary ones, leaving only ones where we must ensure that NULL has
pointer type for passing through varargs.

I removed a couple of useless casts of 0 that I noticed while writing
this.

Tested by rebuilding.

gdb/ChangeLog
2019-06-16  Tom Tromey  <tom@tromey.com>

	* valops.c (value_cast, value_slice): Remove unnecessary cast.
	* breakpoint.c (stopin_command, stopat_command)
	(until_break_command, decode_location_default): Remove unnecessary
	cast.
	* utils.c (subset_compare): Remove unnecessary cast.
	* ada-lang.c (ada_update_initial_language): Remove unnecessary
	cast.
	* linespec.c (decode_line_with_last_displayed): Remove unnecessary
	cast.
	* infcmd.c (path_command): Remove unnecessary cast.
	* coffread.c (decode_type): Remove unnecessary cast.
	* xcoffread.c (read_xcoff_symtab): Remove unnecessary cast.
	* mipsread.c (mipscoff_symfile_read): Remove unnecessary cast.
	* tui/tui-stack.c (tui_show_locator_content)
	(tui_show_frame_info): Remove unnecessary cast.
	* tui/tui-win.c (tui_scroll_forward_command)
	(tui_scroll_backward_command, tui_set_focus, tui_set_win_height)
	(parse_scrolling_args): Remove unnecessary cast.
	* tui/tui-data.c (init_win_info, tui_del_window)
	(tui_free_window, tui_del_data_windows, tui_free_data_content)
	(free_content_elements): Remove unnecessary cast.
	* tui/tui-windata.c (tui_first_data_item_displayed): Remove
	unnecessary cast.
	* tui/tui-source.c (tui_set_source_content)
	(tui_vertical_source_scroll): Remove unnecessary cast.
	* tui/tui-layout.c (tui_default_win_height): Remove unnecessary
	cast.
	* tui/tui-io.c (tui_initialize_io): Remove unnecessary cast.
	* tui/tui-regs.c (tui_display_registers_from)
	(tui_display_register): Remove unnecessary cast.
	* tui/tui-wingeneral.c (tui_refresh_win, tui_delete_win)
	(tui_unhighlight_win, tui_highlight_win, tui_make_window)
	(make_visible): Remove unnecessary cast.
	* tui/tui-winsource.c (tui_erase_source_content)
	(tui_update_breakpoint_info, tui_set_exec_info_content): Remove
	unnecessary cast.
	* ax-gdb.c (agent_command_1): Remove unnecessary cast.
	* cli/cli-setshow.c (cmd_show_list): Remove unnecessary cast.
	* stabsread.c (read_type, read_array_type, read_range_type):
	Remove unnecessary cast.
	* mdebugread.c (mdebug_build_psymtabs): Remove unnecessary cast.
	(parse_symbol, parse_type, upgrade_type, parse_external)
	(parse_partial_symbols, psymtab_to_symtab_1, cross_ref): Remove
	unnecessary cast.
	* gdb_bfd.c (gdb_bfd_map_section): Remove unnecessary cast.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace uses of concat with xstrdup
@ 2019-06-16 18:41 sergiodj+buildbot
  2019-06-16 22:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16 18:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 395f9c911460b3e868c0b700e831c7f92746fad7 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 395f9c911460b3e868c0b700e831c7f92746fad7

Replace uses of concat with xstrdup

I noticed a couple of spots using concat that could use xstrdup
instead.  This patch fixes these.

gdb/ChangeLog
2019-06-16  Tom Tromey  <tom@tromey.com>

	* coffread.c (process_coff_symbol): Use xstrdup.
	* value.c (create_internalvar): Use xstrdup.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove unused signal mask
@ 2019-06-16 20:27 sergiodj+buildbot
  2019-06-17 17:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16 20:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bf5142e7fef4e2eca5d98cf805dbadc737118c1e ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: bf5142e7fef4e2eca5d98cf805dbadc737118c1e

gdb: Remove unused signal mask

In the following commit:

    commit 7feb7d068ae65557ede03c36468ebac61b0939ca
    Date:   Mon May 11 12:08:03 2009 +0000

The last useful uses of normal_mask in linux-nat.c were removed, since
then this variable has sat around being initialised, but never used.
There should be no user visible changes after this commit.

gdb/ChangeLog:

	* linux-nat.c (normal_mask): Delete.
	(_initialize_linux_nat): Don't initialise normal_mask.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't cast a tui_win_info directly to tui_gen_win_info
@ 2019-06-16 21:57 sergiodj+buildbot
  2019-06-17 17:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-16 21:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 431b3eadc4f842231d404e7e995ae5c1dbd28414 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 431b3eadc4f842231d404e7e995ae5c1dbd28414

Don't cast a tui_win_info directly to tui_gen_win_info

I found a few spots that directly cast a tui_win_info to a
tui_gen_win_info.  However, I think it's a bit better here to take the
address of the "generic" member.  As far as I know, nothing relies on
being able to downcast here, so this gives us the freedom to rearrange
the structure.

gdb/ChangeLog
2019-06-16  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win)
	(make_all_visible): Use address of member.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/contrib] Fix gdb/contrib/gdb-add-index.sh for dwz-m-ed execs
@ 2019-06-17  1:14 sergiodj+buildbot
  2019-06-17 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-17  1:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2b9f6e89d67b342593734d14f328625848fa5156 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 2b9f6e89d67b342593734d14f328625848fa5156

[gdb/contrib] Fix gdb/contrib/gdb-add-index.sh for dwz-m-ed execs

Atm gdb-add-index.exp fails with target board cc-with-dwz-m.

Fix this by updating gdb/contrib/gdb-add-index.sh to handle a dwz-m-ed
executable.

Tested on x86_64-linux.

gdb/ChangeLog:

2019-06-16  Tom de Vries  <tdevries@suse.de>

	PR gdb/24445
	* contrib/gdb-add-index.sh: Update to handle dwz-m-ed executable.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] aarch64: remove unnecessary loc_hash_table traversal
@ 2019-06-17 18:56 sergiodj+buildbot
  2019-06-17 19:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-17 18:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 39c05d9435893ed0b51c4b5c8e95fe977b983921 ***

Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Branch: master
Commit: 39c05d9435893ed0b51c4b5c8e95fe977b983921

aarch64: remove unnecessary loc_hash_table traversal

The loc_hash_table should only contain local ifunc symbols. The current
code already aborts if there is anything else and for defined ifunc
symbols elfNN_aarch64_allocate_dynrelocs is a no-op.

bfd/ChangeLog:

	* elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove.
	(elfNN_aarch64_size_dynamic_sections): Remove loc_hash_table traversal
	with elfNN_aarch64_allocate_local_dynrelocs.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] i386: Check vector length for vshufXXX/vinsertXXX/vextractXXX
@ 2019-06-17 19:36 sergiodj+buildbot
  2019-06-17 20:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-17 19:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6e1c90b7f5d60aedc547dd84873d1c9291eefcdc ***

Author: H.J. Lu <hjl.tools@gmail.com>
Branch: master
Commit: 6e1c90b7f5d60aedc547dd84873d1c9291eefcdc

i386: Check vector length for vshufXXX/vinsertXXX/vextractXXX

Since not all vector lengths are supported by vshufXXX, vinsertXXX and
vextractXXX, decode them only with supported vector lengths.

gas/

	PR binutils/24691
	* testsuite/gas/i386/disassem.s: Add test for vshuff32x4 with
	invalid vector length.
	* testsuite/gas/i386/x86-64-disassem.s: Likewise.
	* testsuite/gas/i386/disassem.d: Updated.
	* testsuite/gas/i386/x86-64-disassem.d: Likewise.

opcodes/

	PR binutils/24691
	* i386-dis-evex.h (evex_table): Update EVEX_W_0F3A23_P_2,
	EVEX_W_0F3A38_P_2, EVEX_W_0F3A39_P_2, EVEX_W_0F3A3A_P_2,
	EVEX_W_0F3A3B_P_2 and EVEX_W_0F3A43_P_2.
	(evex_len_table): Add EVEX_LEN_0F3A23_P_2_W_0,
	EVEX_LEN_0F3A23_P_2_W_1, EVEX_LEN_0F3A38_P_2_W_0,
	EVEX_LEN_0F3A38_P_2_W_1, EVEX_LEN_0F3A39_P_2_W_0,
	EVEX_LEN_0F3A39_P_2_W_1, EVEX_LEN_0F3A3A_P_2_W_0,
	EVEX_LEN_0F3A3A_P_2_W_1, EVEX_LEN_0F3A3B_P_2_W_0,
	EVEX_LEN_0F3A3B_P_2_W_1, EVEX_LEN_0F3A43_P_2_W_0 and
	EVEX_LEN_0F3A43_P_2_W_1.
	* i386-dis.c (EVEX_LEN_0F3A23_P_2_W_0): New enum.
	(EVEX_LEN_0F3A23_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A38_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A38_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A39_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A39_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A3A_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A3A_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A3B_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A3B_P_2_W_1): Likewise.
	(EVEX_LEN_0F3A43_P_2_W_0): Likewise.
	(EVEX_LEN_0F3A43_P_2_W_1): Likewise.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Fix heap-buffer-overflow in child_path
@ 2019-06-18  7:53 sergiodj+buildbot
  2019-06-18 16:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-18  7:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 310b3441a07cb07713a8065a39032504e098047b ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 310b3441a07cb07713a8065a39032504e098047b

[gdb] Fix heap-buffer-overflow in child_path

When compiling gdb with '-lasan -fsanitizer=address' and running tests with:
- export ASAN_OPTIONS="detect_leaks=0:alloc_dealloc_mismatch=0", and
- a target board using local-board.exp, which sets sysroot to ""
we run into a heap-buffer-overflow in child_path for f.i. gdb.arch/amd64-byte:
...
==3997==ERROR: AddressSanitizer: heap-buffer-overflow on address \
  0x60200002abcf at pc 0x5602acdf6872 bp 0x7ffe5237a090 sp 0x7ffe5237a080
READ of size 1 at 0x60200002abcf thread T0
    #0 0x5602acdf6871 in child_path(char const*, char const*) \
                      gdb/common/pathstuff.c:161
    #1 0x5602adb06587 in find_separate_debug_file gdb/symfile.c:1483
    #2 0x5602adb06f2f in find_separate_debug_file_by_debuglink[abi:cxx11](...) \
                      gdb/symfile.c:1563
    #3 0x5602ad13b743 in elf_symfile_read gdb/elfread.c:1293
    #4 0x5602adb01cfa in read_symbols gdb/symfile.c:798
    #5 0x5602adb03769 in syms_from_objfile_1 gdb/symfile.c:1000
    #6 0x5602adb039d0 in syms_from_objfile gdb/symfile.c:1017
    #7 0x5602adb04551 in symbol_file_add_with_addrs gdb/symfile.c:1124
    #8 0x5602adb04ebf in symbol_file_add_from_bfd(...) gdb/symfile.c:1204
    #9 0x5602ada5a78d in solib_read_symbols(...) gdb/solib.c:695
    #10 0x5602ada5bdae in solib_add(char const*, int, int) gdb/solib.c:1004
    #11 0x5602ada49bcd in enable_break gdb/solib-svr4.c:2394
    #12 0x5602ada4dae9 in svr4_solib_create_inferior_hook gdb/solib-svr4.c:3028
    #13 0x5602ada5d4f1 in solib_create_inferior_hook(int) gdb/solib.c:1215
    #14 0x5602ad347f66 in post_create_inferior(target_ops*, int) \
                          gdb/infcmd.c:467
    #15 0x5602ad348b3c in run_command_1 gdb/infcmd.c:663
    #16 0x5602ad348e55 in run_command gdb/infcmd.c:686
    #17 0x5602acd7d32b in do_const_cfunc gdb/cli/cli-decode.c:106
    #18 0x5602acd84bfe in cmd_func(cmd_list_element*, char const*, int) \
                          gdb/cli/cli-decode.c:1892
    #19 0x5602adc62a90 in execute_command(char const*, int) gdb/top.c:630
    #20 0x5602ad5053e6 in catch_command_errors gdb/main.c:372
    #21 0x5602ad507eb1 in captured_main_1 gdb/main.c:1138
    #22 0x5602ad5081ec in captured_main gdb/main.c:1163
    #23 0x5602ad508281 in gdb_main(captured_main_args*) gdb/main.c:1188
    #24 0x5602ac9ddc3a in main gdb/gdb.c:32
    #25 0x7f582b56eb96 in __libc_start_main \
                       (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #26 0x5602ac9dda09 in _start \
                       (/home/smarchi/build/binutils-gdb/gdb/gdb+0x19a2a09)

0x60200002abcf is located 1 bytes to the left of 1-byte region \
  [0x60200002abd0,0x60200002abd1)
allocated by thread T0 here:
    #0 0x7f582e0e4b50 in __interceptor_malloc \
                      (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb50)
    #1 0x5602acdd3656 in xmalloc gdb/common/common-utils.c:44
    #2 0x5602aefe17d1 in xstrdup libiberty/xstrdup.c:34
    #3 0x5602acdf61f6 in gdb_realpath(char const*) gdb/common/pathstuff.c:80
    #4 0x5602adb06278 in find_separate_debug_file gdb/symfile.c:1444
    #5 0x5602adb06f2f in find_separate_debug_file_by_debuglink[abi:cxx11](...) \
                      gdb/symfile.c:1563
    #6 0x5602ad13b743 in elf_symfile_read gdb/elfread.c:1293
    #7 0x5602adb01cfa in read_symbols gdb/symfile.c:798
    #8 0x5602adb03769 in syms_from_objfile_1 gdb/symfile.c:1000
    #9 0x5602adb039d0 in syms_from_objfile gdb/symfile.c:1017
    #10 0x5602adb04551 in symbol_file_add_with_addrs gdb/symfile.c:1124
    #11 0x5602adb04ebf in symbol_file_add_from_bfd(...) gdb/solib.c:695
    #13 0x5602ada5bdae in solib_add(char const*, int, int) gdb/solib.c:1004
    #14 0x5602ada49bcd in enable_break gdb/solib-svr4.c:2394
    #15 0x5602ada4dae9 in svr4_solib_create_inferior_hook gdb/solib-svr4.c:3028
    #16 0x5602ada5d4f1 in solib_create_inferior_hook(int) gdb/solib.c:1215
    #17 0x5602ad347f66 in post_create_inferior(target_ops*, int) \
                       gdb/infcmd.c:467
    #18 0x5602ad348b3c in run_command_1 gdb/infcmd.c:663
    #19 0x5602ad348e55 in run_command gdb/infcmd.c:686
    #20 0x5602acd7d32b in do_const_cfunc gdb/cli/cli-decode.c:106
    #21 0x5602acd84bfe in cmd_func(cmd_list_element*, char const*, int) \
                       gdb/cli/cli-decode.c:1892
    #22 0x5602adc62a90 in execute_command(char const*, int) gdb/top.c:630
    #23 0x5602ad5053e6 in catch_command_errors gdb/main.c:372
    #24 0x5602ad507eb1 in captured_main_1 gdb/main.c:1138
    #25 0x5602ad5081ec in captured_main gdb/main.c:1163
    #26 0x5602ad508281 in gdb_main(captured_main_args*) gdb/main.c:1188
    #27 0x5602ac9ddc3a in main gdb/gdb.c:32
    #28 0x7f582b56eb96 in __libc_start_main \
                       (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

SUMMARY: AddressSanitizer: heap-buffer-overflow gdb/common/pathstuff.c:161 \
  in child_path(char const*, char const*)
Shadow bytes around the buggy address:
  0x0c047fffd520: fa fa fd fd fa fa fd fd fa fa fd fa fa fa fd fa
  0x0c047fffd530: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c047fffd540: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c047fffd550: fa fa fd fd fa fa fd fd fa fa fd fd fa fa fd fa
  0x0c047fffd560: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
=>0x0c047fffd570: fa fa 07 fa fa fa 00 fa fa[fa]01 fa fa fa fa fa
  0x0c047fffd580: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fffd590: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fffd5a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fffd5b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fffd5c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==3997==ABORTING
...

The direct cause is that child_path gets called with parent == "", so this
test:
...
  if (IS_DIR_SEPARATOR (parent[parent_len - 1]))
...
accesses parent[-1].

[ There is an open discussion (1) about whether an empty sysroot should indeed
be represented internally as "".  But this patch focuses on fixing the
heap-buffer-overflow without any redesign. ]

Fix this by guarding the test with 'parent_len > 0'.

Note that the fix makes child_path behave the same for:
- parent == "/" && child == "/foo" (returns "foo")
- parent == "" and child == "/foo" (returns "foo").

Build and reg-tested on x86_64-linux.

(1) https://sourceware.org/ml/gdb-patches/2019-05/msg00193.html

gdb/ChangeLog:

2019-06-17  Tom de Vries  <tdevries@suse.de>

	PR gdb/24617
	* common/pathstuff.c (child_path): Make sure parent_len > 0 before
	accessing parent[parent_len - 1].


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Break up long debug_flags line in fission.exp
@ 2019-06-18 16:46 sergiodj+buildbot
  2019-06-18 16:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-18 16:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 86e04673b48d5f8121f28b7958cc5a0d9dd01132 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 86e04673b48d5f8121f28b7958cc5a0d9dd01132

[gdb/testsuite] Break up long debug_flags line in fission.exp

gdb/testsuite/ChangeLog:

2019-06-18  Tom de Vries  <tdevries@suse.de>

	* boards/fission.exp: Break up long debug_flags line.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add comment to list0.h
@ 2019-06-18 17:21 sergiodj+buildbot
  2019-06-18 17:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-18 17:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d20ed5fd574ce1b72543c2963fa53946eb2225de ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: d20ed5fd574ce1b72543c2963fa53946eb2225de

Add comment to list0.h

Pedro suggested adding a comment to list0.h to explain the control
character.

Tested on x86-64 Fedora 29.

gdb/testsuite/ChangeLog
2019-06-18  Tom Tromey  <tromey@adacore.com>

	* gdb.base/list0.h: Add comment explaining control character.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Fix abstract_to_concrete type
@ 2019-06-18 18:43 sergiodj+buildbot
  2019-06-18 21:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-18 18:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3360b6e7963e3c579e50078e78d226ea63e2960f ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 3360b6e7963e3c579e50078e78d226ea63e2960f

[gdb] Fix abstract_to_concrete type

The test-case varval.exp fails here:
...
FAIL: gdb.dwarf2/varval.exp: print varval2
...
with boards readnow/cc-with-gdb-index/cc-with-debug-names, as well as if gdb
is build with -fsanitize=address -lasan.

The problem is that the abstract_to_concrete map in which we track the
association of abstract to concrete DIEs (for DW_OP_GNU_variable_value
support) has type std::unordered_map<die_info_ptr, std::vector<die_info_ptr>>,
and the die_info_ptrs that we register in the map may be invalid by the time
that we start to lookup DIEs in the map.

Fix this by using the sect_offset instead to identify the DIEs in the map.

Build and tested on x86_64-linux.

gdb/ChangeLog:

2019-06-18  Tom de Vries  <tdevries@suse.de>

	PR gdb/24515
	* dwarf2read.h (abstract_to_concrete): Change type from
	std::unordered_map<die_info_ptr, std::vector<die_info_ptr>> to
	std::unordered_map<sect_offset, std::vector<sect_offset>>.
	* dwarf2read.c (read_variable): Update.
	(dwarf2_fetch_die_loc_sect_off): Update.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Remove use of deprecated_interactive_hook
@ 2019-06-19  5:18 sergiodj+buildbot
  2019-06-19  7:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-19  5:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 494986d596a977e1d24f9f068696f5b3e993ebf7 ***

Author: Andrew Burgess <andrew.burgess@embecosm.com>
Branch: master
Commit: 494986d596a977e1d24f9f068696f5b3e993ebf7

gdb: Remove use of deprecated_interactive_hook

The deprecated_interactive_hook is not used within GDB.  It is used in
gdbtk, however this patch removes that use:

  https://sourceware.org/ml/insight/2019-q2/msg00001.html

So I think there is no longer a reason to keep this hook around.

This patch removes it.  There should be no user visible changes after
this commit.

gdb/ChangeLog:

	* defs.h (deprecated_interactive_hook): Delete declaration.
	* interps.c (clear_interpreter_hooks): Remove use of
	deprecated_interactive_hook.
	* top.c (deprecated_interactive_hook): Delete definition.
	* utils.c (maybe_quit): Remove use of deprecated_interactive_hook.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Instantiate a single source highlighter
@ 2019-06-19 12:58 sergiodj+buildbot
  2019-06-19 13:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-19 12:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dcf3792354ddcd6e10e59e32060e34b27246e7da ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: dcf3792354ddcd6e10e59e32060e34b27246e7da

Instantiate a single source highlighter

It occurred to me that there's no reason to make a new source
highlighter each time gdb needs to highlight some source code.
Instead, a single one can be created and then simply reused each time.

This patch implements this idea.  Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-19  Tom Tromey  <tromey@adacore.com>

	* source-cache.c (highlighter): New global.
	(source_cache::get_source_lines): Create a highlighter on demand.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix crash when setting breakpoint condition
@ 2019-06-19 14:38 sergiodj+buildbot
  2019-06-19 15:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-19 14:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 680e1beed31da40080f61a35f6ccd626de818056 ***

Author: Tom Tromey <tromey@adacore.com>
Branch: master
Commit: 680e1beed31da40080f61a35f6ccd626de818056

Fix crash when setting breakpoint condition

gdb could crash when setting a breakpoint condition on a breakpoint
when using the Ada language.  The problem occurred because the
ada_evaluate_subexp would try to evaluate the array to compute its
attributes, but evaluating can't really be done at this time.

This patch fixes the problem by arranging not to try to evaluate in
EVAL_AVOID_SIDE_EFFECTS mode when computing an attribute.

Tested on x86-64 Fedora 29.  Because this is Ada-specific, and because
Joel approved it internally, I am checking it in.

gdb/ChangeLog
2019-06-19  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) <case OP_ATR_FIRST>: Handle
	EVAL_AVOID_SIDE_EFFECTS specially.

gdb/testsuite/ChangeLog
2019-06-19  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/length_cond.exp: New file.
	* gdb.ada/length_cond/length_cond.adb: New file.
	* gdb.ada/length_cond/pck.adb: New file.
	* gdb.ada/length_cond/pck.ads: New file.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Fix clang buildbreaker
@ 2019-06-19 17:21 sergiodj+buildbot
  2019-06-20  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-19 17:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8d6a48df549cce08ba1f05350f592be52352c7e8 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 8d6a48df549cce08ba1f05350f592be52352c7e8

[gdb] Fix clang buildbreaker

Building gdb with clang, I run into:
...
src/gdb/gdbserver/linux-low.c:6190:41: error: comparison of unsigned \
  expression < 0 is always false [-Werror,-Wtautological-compare]
          if (debug_write ("sigchld_handler\n",
                           sizeof ("sigchld_handler\n") - 1) < 0)
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
...

This regression is introduced by commit a7e559cc08 "gdbserver: Ensure all
debug output uses debug functions", which replaces calls to write with result
type ssize_t with calls to debug_write with result type size_t.

Fix this by making debug_write return ssize_t.

Build and reg-tested on x86_64-linux.

gdb/gdbserver/ChangeLog:

2019-06-19  Tom de Vries  <tdevries@suse.de>

	* debug.h (debug_write): Change return type to ssize_t.
	* debug.c (debug_write): Same.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Fix build breaker with gcc 4.8
@ 2019-06-19 17:31 sergiodj+buildbot
  2019-06-19 17:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-19 17:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f23f598e28ad39dac7ae87cdc400d2f6b27dc403 ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: f23f598e28ad39dac7ae87cdc400d2f6b27dc403

[gdb] Fix build breaker with gcc 4.8

When compiling with gcc 4.8, we run into:
...
/usr/include/c++/4.8/bits/unordered_map.h:100:18: required from \
  class std::unordered_map<sect_offset, std::vector<sect_offset> >
src/gdb/dwarf2read.h:260:5:   required from here
/usr/include/c++/4.8/bits/hashtable_policy.h:1070:12: error: invalid use of \
  incomplete type struct std::hash<sect_offset>
...

Fix this by setting the Hash template parameter of the unordered_map to
gdb::hash_enum<sect_offset>, rather than using the default
std::hash<sect_offset>.

Build and reg-tested on x86_64-linux with gcc 4.8.

gdb/ChangeLog:

2019-06-19  Tom de Vries  <tdevries@suse.de>

	* dwarf2read.h (abstract_to_concrete): Change type to
	std::unordered_map<sect_offset, std::vector<sect_offset>,
	gdb::hash_enum<sect_offset>>.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't declare tui_init_content_element
@ 2019-06-20  9:51 sergiodj+buildbot
  2019-06-20 10:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-20  9:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e6a1c5cbcb9cee5a08d814669419936ee151b19d ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: e6a1c5cbcb9cee5a08d814669419936ee151b19d

Don't declare tui_init_content_element

I noticed that tui_init_content_element is declared but never defined.
This removes the declaration.  Tested by rebuilding.  (I should have
merged this with the previous patch but I had forgotten that I found
two of these.)

gdb/ChangeLog
2019-06-19  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (tui_init_content_element): Don't declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't declare tui_init_win_info
@ 2019-06-20  9:51 sergiodj+buildbot
  2019-06-20  9:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-20  9:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6f6ffbeb5a6bce5a1274478256937867f337a037 ***

Author: Tom Tromey <tom@tromey.com>
Branch: master
Commit: 6f6ffbeb5a6bce5a1274478256937867f337a037

Don't declare tui_init_win_info

I noticed that tui_init_win_info is declared but never defined.  This
removes the declaration.  Tested by rebuilding.

gdb/ChangeLog
2019-06-19  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (tui_init_win_info): Don't declare.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdbserver] Fix s390x -m31 gdbserver build
@ 2019-06-21  7:56 sergiodj+buildbot
  2019-06-21  8:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21  7:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7d10623d3b153d6c15406b203fb1cf111c53f1dd ***

Author: Tom de Vries <tdevries@suse.de>
Branch: master
Commit: 7d10623d3b153d6c15406b203fb1cf111c53f1dd

[gdbserver] Fix s390x -m31 gdbserver build

When building gdb on s390x with -m31, we run into this error:
...
gdb/gdbserver/linux-s390-ipa.c: \
  In function 'const target_desc* get_ipa_tdesc(int)':
gdb/gdbserver/linux-s390-ipa.c:371:18: error: 's390_te_ft_collect_regmap' \
  was not declared in this scope
       SET_REGMAP(s390_te_ft_collect_regmap, 0);

The offending line is part of this code snippet:
...
    case S390_TDESC_GS:
      SET_REGMAP(s390_te_ft_collect_regmap, 0);
      return tdesc_s390_gs_linux64;
...
introduced in commit ce29f8439f "S390: Make IPA recognize tdescs with guarded
storage".

The snippet is part of an #ifdef __s390x__ construct, in the false branch, and
in the true branch we find a snippet introduced by the same commit:
...
    case S390_TDESC_GS:
      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
      return tdesc_s390x_gs_linux64;
...
which is paired with a comment update for s390x_te_ft_collect_regmap:
...
-/* Used for s390x-te-linux64, s390x-tevx-linux64.  */
+/* Used for s390x-te-linux64, s390x-tevx-linux64, and
+   s390x-gs-linux64.  */

 static const int s390x_te_ft_collect_regmap[] = {
...

A similar comment update is added in the same commit for
s390_te_linux64_ft_collect_regmap:
...
-/* Used for s390-te-linux64, s390-tevx-linux64.  */
+/* Used for s390-te-linux64, s390-tevx-linux64, and s390-gs-linux64.  */

 static const int s390_te_linux64_ft_collect_regmap[] = {
...
but not paired with any update.

Fix the build breaker by making the offending SET_REGMAP use the regmap
indicated by the comment.
...
-      SET_REGMAP(s390_te_ft_collect_regmap, 0);
+      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
...

Build on s390x-linux with -m31.

gdb/gdbserver/ChangeLog:

2019-06-20  Tom de Vries  <tdevries@suse.de>

	* linux-s390-ipa.c (get_ipa_tdesc)[!__s390x__]: Use
	s390_te_linux64_ft_collect_regmap for S390_TDESC_GS.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: handle errors on dynhash insertion better
@ 2019-06-21 13:47 sergiodj+buildbot
  2019-06-21 13:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21 13:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 24865428034f44d9fffe6b2d9a318e1bd507c63a ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 24865428034f44d9fffe6b2d9a318e1bd507c63a

libctf: handle errors on dynhash insertion better

We were missing several cases where dynhash insertion might fail, likely
due to OOM but possibly for other reasons.  Pass the errors on.

libctf/
	* ctf-create.c (ctf_dtd_insert): Pass on error returns from
	ctf_dynhash_insert.
	(ctf_dvd_insert): Likewise.
	(ctf_add_generic): Likewise.
	(ctf_add_variable): Likewise.
	* ctf-impl.h: Adjust declarations.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: dump header offsets into the debugging output
@ 2019-06-21 14:34 sergiodj+buildbot
  2019-06-21 16:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21 14:34 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 364620bf636a0a961892c9274616f8d5ad85eecc ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 364620bf636a0a961892c9274616f8d5ad85eecc

libctf: dump header offsets into the debugging output

This is an essential first piece of info needed to debug both libctf
writing and reading problems, and we weren't recording it anywhere!

(This is a short-term fix: fairly soon, we will record all of this in a
form that outlives ctf_bufopen, and then ctf_dump() will be able to dump
it like it can everything else.)

libctf/
	* ctf-open.c (ctf_bufopen): Dump header offsets into the debugging
	output.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: unidentified type kinds on open are a sign of file corruption
@ 2019-06-21 15:10 sergiodj+buildbot
  2019-06-21 17:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21 15:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0b4fa56e07639ed28cbbcd890868e01a82a5e45c ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 0b4fa56e07639ed28cbbcd890868e01a82a5e45c

libctf: unidentified type kinds on open are a sign of file corruption

If we see a CTF type with a kind we do not recognize in its ctt_info
during opening, we cannot skip it and continue opening the file: if the
type kind is unknown, we do not know how long its vlen is, and we cannot
have skipped past it: so if we continue reading we will almost certainly
read in part of the vlen as if it were a new ctf_type_t.

Avoid this trouble by considering unknown type kinds to be a reason to
return ECTF_CORRUPT, just like everything else that reads in type kinds
does.

libctf/
	* ctf-open.c (ctf_types): Fail when unidentified type kinds are
	seen.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: endianness fixes
@ 2019-06-21 18:32 sergiodj+buildbot
  2019-06-21 18:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21 18:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7cee18263c234073bfe88cbc962b1fc68509df82 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: 7cee18263c234073bfe88cbc962b1fc68509df82

libctf: endianness fixes

Testing of the first code to generate CTF_K_SLICEs on big-endian
revealed a bunch of new problems in this area.  Most importantly, the
trick we did earlier to avoid wasting two bytes on padding in the
ctf_slice_t is best avoided: because it leads to the whole file after
that point no longer being naturally aligned, all multibyte accesses
from then on must use memmove() to avoid unaligned access on platforms
where that is fatal.  In future, this is planned, but for now we are
still doing direct access in many places, so we must revert to making
ctf_slice_t properly aligned for storage in an array.

Rather than wasting bytes on padding, we boost the size of cts_offset
and cts_bits.  This is still a waste of space (we cannot have offsets or
bits in bitfields > 256) but it cannot be avoided for now, and slices
are not so common that this will be a serious problem.

A possibly-worse endianness problem fixed at the same time involves
a codepath used only for foreign-endian, uncompressed CTF files, where
we were not copying the actual CTF data into the buffer, leading to
libctf reading only zeroes (or, possibly, uninitialized garbage).

Finally, when we read in a CTF file, we copy the header and work from
the copy.  We were flipping the endianness of the header copy, and of
the body of the file buffer, but not of the header in the file buffer
itself: so if we write the file back out again we end up with an
unreadable frankenfile with header and body of different endiannesses.
Fix by flipping both copies of the header.

include/
	* ctf.h (ctf_slice_t): Make cts_offset and cts_bits unsigned
	short, so following structures are properly aligned.

libctf/
	* ctf-open.c (get_vbytes_common): Return the new slice size.
	(ctf_bufopen): Flip the endianness of the CTF-section header copy.
	Remember to copy in the CTF data when opening an uncompressed
	foreign-endian CTF file.  Prune useless variable manipulation.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] libctf: fix ctf_open endianness problems with raw CTF files
@ 2019-06-21 19:14 sergiodj+buildbot
  2019-06-21 19:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: sergiodj+buildbot @ 2019-06-21 19:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cf02c44dfd2876867ebd6baa3ce19cf41ff978e1 ***

Author: Nick Alcock <nick.alcock@oracle.com>
Branch: master
Commit: cf02c44dfd2876867ebd6baa3ce19cf41ff978e1

libctf: fix ctf_open endianness problems with raw CTF files

ctf_open (or, rather, ctf_fdopen, which underlies it) has several
endianness problems, even though it was written after the
endian-swapping code was implemented, so should have been endian-aware.

Even though the comment right above the relevant check says that it wil
check for CTF magic in any endianness, it only checks in the native
endianness, so opening raw LE CTF files on BE, or vice-versa, will fail.
It also checks the CTF version by hand, without ever endianness-swapping
the header, so that too will fail, and is entirely redundant because
ctf_simple_open does the job properly in any case.  We have a similar
problem in the next if block, which checks for raw CTF archives: we are
checking in the native endianness while we should be doing a le64toh()
on it to check in little-endian form only: so opening CTF archives
created on the local machine will fail if the local machine is
big-endian.

Adding insult to injury, if ctf_simple_open then fails, we go on and try
to turn it into a single-element CTF archive regardless, throwing the
error away.  Since this involves dereferencing null pointers it is not
likely to work very well.

libctf/
	* ctf-open-bfd.c: Add swap.h and ctf-endian.h.
	(ctf_fdopen): Check for endian-swapped raw CTF magic, and
	little-endian CTF archive magic.  Do not check the CTF version:
	ctf_simple_open does that in endian-safe ways.  Do not dereference
	null pointers on open failure.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix nullptr in with_command_1
@ 2019-08-21 21:57 gdb-buildbot
  2019-08-21 22:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-21 21:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 26c957f12762816a90d5145c7c527ca48c890855 ***

commit 26c957f12762816a90d5145c7c527ca48c890855
Author:     Pedro Alves <palves@redhat.com>
AuthorDate: Wed Aug 21 21:11:33 2019 +0100
Commit:     Pedro Alves <palves@redhat.com>
CommitDate: Wed Aug 21 21:11:33 2019 +0100

    Fix nullptr in with_command_1
    
    Running 'with' without arguments crashes GDB.  This fixes it.
    
    gdb/ChangeLog:
    2019-08-21  Bogdan Harjoc  <harjoc@gmail.com>
    
            * cli/cli-cmds.c (with_command_1): Error out if no arguments.
    
    gdb/testsuite/ChangeLog:
    2019-08-21  Pedro Alves  <palves@redhat.com>
    
            * gdb.base/with.exp: Test "with" with no arguments.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 01e60fb189..966bfb7d9f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-21  Bogdan Harjoc  <harjoc@gmail.com>
+
+	* cli/cli-cmds.c (with_command_1): Error out if no arguments.
+
 2019-08-21  Christian Biesinger  <cbiesinger@google.com>
 
 	* tui/tui-data.h (tui_gen_win_info): Add an =default
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 30e0958b60..4fc656775c 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -217,6 +217,9 @@ void
 with_command_1 (const char *set_cmd_prefix,
 		cmd_list_element *setlist, const char *args, int from_tty)
 {
+  if (args == nullptr)
+    error (_("Missing arguments."));
+
   const char *delim = strstr (args, "--");
   const char *nested_cmd = nullptr;
 
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7fea9cd071..e56cc16628 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-21  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/with.exp: Test "with" with no arguments.
+
 2019-08-21  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/gdb-caching-proc.exp: Sort files.
diff --git a/gdb/testsuite/gdb.base/with.exp b/gdb/testsuite/gdb.base/with.exp
index 9ea768563a..a972296d78 100644
--- a/gdb/testsuite/gdb.base/with.exp
+++ b/gdb/testsuite/gdb.base/with.exp
@@ -220,6 +220,8 @@ with_test_prefix "run control" {
 
 # Check errors.
 with_test_prefix "errors" {
+    gdb_test "with" "Missing arguments\\."
+
     # Try both an unknown root setting and an unknown prefixed
     # setting.  The errors come from different locations in the
     # sources.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ARM CMSE symbols
@ 2019-08-22  5:38 gdb-buildbot
  2019-08-22  9:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22  5:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT baf46cd78048e1b959462567556e1de1ef6b9039 ***

commit baf46cd78048e1b959462567556e1de1ef6b9039
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Aug 22 11:21:48 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Aug 22 14:14:23 2019 +0930

    ARM CMSE symbols
    
    This patch removes use of st_target_internal to cache the result of
    comparing symbol names against CMSE_PREFIX.  The problem with setting
    a bit in st_target_internal in swap_symbol_in is that calling
    bfd_elf_sym_name from swap_symbol_in requires symtab_hdr, and you
    don't know for sure whether swap_symbol_in is operating on dynsyms
    (and thus elf_tdata (abfd)->dynsymtab_hdr should be used) or on the
    normal symtab (thus elf_tdata (abfd)->symtab_hdr).  You can make an
    educated guess based on abfd->flags & DYNAMIC but that relies on
    knowing a lot about calls to bfd_elf_get_elf_syms, and is fragile in
    the face of possible future changes.
    
    include/
            * elf/arm.h (ARM_GET_SYM_CMSE_SPCL, ARM_SET_SYM_CMSE_SPCL): Delete.
    bfd/
            * elf32-arm.c (cmse_scan): Don't use ARM_GET_SYM_CMSE_SPCL,
            instead recognize CMSE_PREFIX in symbol name.
            (elf32_arm_gc_mark_extra_sections): Likewise.
            (elf32_arm_filter_cmse_symbols): Don't test ARM_GET_SYM_CMSE_SPCL.
            (elf32_arm_swap_symbol_in): Don't invoke ARM_SET_SYM_CMSE_SPCL.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 97d3726516..a725504c02 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-22  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (cmse_scan): Don't use ARM_GET_SYM_CMSE_SPCL,
+	instead recognize CMSE_PREFIX in symbol name.
+	(elf32_arm_gc_mark_extra_sections): Likewise.
+	(elf32_arm_filter_cmse_symbols): Don't test ARM_GET_SYM_CMSE_SPCL.
+	(elf32_arm_swap_symbol_in): Don't invoke ARM_SET_SYM_CMSE_SPCL.
+
 2019-08-20  Dennis Zhang  <dennis.zhang@arm.com>
 
 	* cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65,
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index d1548d6db3..b675fc60c1 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -6002,12 +6002,12 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
       if (i < ext_start)
 	{
 	  cmse_sym = &local_syms[i];
-	  /* Not a special symbol.  */
-	  if (!ARM_GET_SYM_CMSE_SPCL (cmse_sym->st_target_internal))
-	    continue;
 	  sym_name = bfd_elf_string_from_elf_section (input_bfd,
 						      symtab_hdr->sh_link,
 						      cmse_sym->st_name);
+	  if (!sym_name || !CONST_STRNEQ (sym_name, CMSE_PREFIX))
+	    continue;
+
 	  /* Special symbol with local binding.  */
 	  cmse_invalid = TRUE;
 	}
@@ -6015,9 +6015,7 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
 	{
 	  cmse_hash = elf32_arm_hash_entry (sym_hashes[i - ext_start]);
 	  sym_name = (char *) cmse_hash->root.root.root.string;
-
-	  /* Not a special symbol.  */
-	  if (!ARM_GET_SYM_CMSE_SPCL (cmse_hash->root.target_internal))
+	  if (!CONST_STRNEQ (sym_name, CMSE_PREFIX))
 	    continue;
 
 	  /* Special symbol has incorrect binding or type.  */
@@ -15990,7 +15988,8 @@ elf32_arm_gc_mark_extra_sections (struct bfd_link_info *info,
 
 		  /* Assume it is a special symbol.  If not, cmse_scan will
 		     warn about it and user can do something about it.  */
-		  if (ARM_GET_SYM_CMSE_SPCL (cmse_hash->root.target_internal))
+		  if (CONST_STRNEQ (cmse_hash->root.root.root.string,
+				    CMSE_PREFIX))
 		    {
 		      cmse_sec = cmse_hash->root.root.u.def.section;
 		      if (!cmse_sec->gc_mark
@@ -18610,9 +18609,6 @@ elf32_arm_filter_cmse_symbols (bfd *abfd ATTRIBUTE_UNUSED,
 	  || cmse_hash->root.type != STT_FUNC)
 	continue;
 
-      if (!ARM_GET_SYM_CMSE_SPCL (cmse_hash->root.target_internal))
-	continue;
-
       syms[dst_count++] = sym;
     }
   free (cmse_name);
@@ -19935,9 +19931,6 @@ elf32_arm_swap_symbol_in (bfd * abfd,
 			  const void *pshn,
 			  Elf_Internal_Sym *dst)
 {
-  Elf_Internal_Shdr *symtab_hdr;
-  const char *name = NULL;
-
   if (!bfd_elf32_swap_symbol_in (abfd, psrc, pshn, dst))
     return FALSE;
   dst->st_target_internal = 0;
@@ -19966,13 +19959,6 @@ elf32_arm_swap_symbol_in (bfd * abfd,
   else
     ARM_SET_SYM_BRANCH_TYPE (dst->st_target_internal, ST_BRANCH_UNKNOWN);
 
-  /* Mark CMSE special symbols.  */
-  symtab_hdr = & elf_symtab_hdr (abfd);
-  if (symtab_hdr->sh_size)
-    name = bfd_elf_sym_name (abfd, symtab_hdr, dst, NULL);
-  if (name && CONST_STRNEQ (name, CMSE_PREFIX))
-    ARM_SET_SYM_CMSE_SPCL (dst->st_target_internal);
-
   return TRUE;
 }
 
diff --git a/include/ChangeLog b/include/ChangeLog
index 1813cb38d8..e779c17702 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-22  Alan Modra  <amodra@gmail.com>
+
+	* elf/arm.h (ARM_GET_SYM_CMSE_SPCL, ARM_SET_SYM_CMSE_SPCL): Delete.
+
 2019-08-09  Mihailo Stojanovic  <mihailo.stojanovic@rt-rk.com>
 
 	* elf/mips.h (SHT_GNU_XHASH): New define.
diff --git a/include/elf/arm.h b/include/elf/arm.h
index 5cb9970644..75fb5e26ca 100644
--- a/include/elf/arm.h
+++ b/include/elf/arm.h
@@ -399,11 +399,4 @@ enum arm_st_branch_type {
 	   | ((TYPE) & ENUM_ARM_ST_BRANCH_TYPE_BITMASK))
 #endif
 
-/* Get or set whether a symbol is a special symbol of an entry function of CMSE
-   secure code.  */
-#define ARM_GET_SYM_CMSE_SPCL(SYM_TARGET_INTERNAL) \
-  (((SYM_TARGET_INTERNAL) >> 2) & 1)
-#define ARM_SET_SYM_CMSE_SPCL(SYM_TARGET_INTERNAL) \
-  (SYM_TARGET_INTERNAL) |= 4
-
 #endif /* _ELF_ARM_H */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [AArch64][gas] Update MTE system register encodings
@ 2019-08-22 10:46 gdb-buildbot
  2019-08-22 11:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 10:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a051e2f3e0c1cedf4be0e1fedcd383fd203c769c ***

commit a051e2f3e0c1cedf4be0e1fedcd383fd203c769c
Author:     Kyrylo Tkachov <kyrylo.tkachov@arm.com>
AuthorDate: Thu Aug 22 10:20:01 2019 +0100
Commit:     Kyrylo Tkachov <kyrylo.tkachov@arm.com>
CommitDate: Thu Aug 22 10:20:01 2019 +0100

    [AArch64][gas] Update MTE system register encodings
    
    The MTE specification adjusted the encoding of the TFSRE0_EL1, TFSR_EL1, TFSR_EL2, TFSR_EL3, TFSR_EL12 system registers.
    This patch brings binutils up to date.
    
    The references for the encodings are at:
    https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/tfsre0_el1 (also contains TFSR_EL12 description)
    https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/tfsr_el1
    https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/tfsr_el2
    https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/tfsr_el3
    
    Tested check-gas for aarch64-none-elf.
    
    opcodes/
    
            * aarch64-opc.c (aarch64_sys_regs): Update encoding of tfsre0_el1,
            tfsr_el1, tfsr_el2, tfsr_el3, tfsr_el12.
            (aarch64_sys_reg_supported_p): Update checks for the above.
    
    gas/
    
        * testsuite/gas/aarch64/sysreg-4.d: Update expected disassembly for
        tfsre0_el1, tfsr_el1, tfsr_el2, tfsr_el3, tfsr_el12 system registers.

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5ae7155f77..080f2fe5ed 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-22  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+	* testsuite/gas/aarch64/sysreg-4.d: Update expected disassembly for
+	tfsre0_el1, tfsr_el1, tfsr_el2, tfsr_el3, tfsr_el12 system registers.
+
 2019-08-20  Dennis Zhang  <dennis.zhang@arm.com>
 
 	* NEWS: Mention the Arm and AArch64 new processors.
diff --git a/gas/testsuite/gas/aarch64/sysreg-4.d b/gas/testsuite/gas/aarch64/sysreg-4.d
index bc3d0bdb7f..c25536d6ca 100644
--- a/gas/testsuite/gas/aarch64/sysreg-4.d
+++ b/gas/testsuite/gas/aarch64/sysreg-4.d
@@ -21,21 +21,21 @@ Disassembly of section \.text:
 .*:	d5380388 	mrs	x8, id_pfr2_el1
 .*:	d53b42e1 	mrs	x1, tco
 .*:	d53b42e2 	mrs	x2, tco
-.*:	d5386621 	mrs	x1, tfsre0_el1
-.*:	d5386501 	mrs	x1, tfsr_el1
-.*:	d53c6502 	mrs	x2, tfsr_el2
-.*:	d53e6603 	mrs	x3, tfsr_el3
-.*:	d53d660c 	mrs	x12, tfsr_el12
+.*:	d5385621 	mrs	x1, tfsre0_el1
+.*:	d5385601 	mrs	x1, tfsr_el1
+.*:	d53c5602 	mrs	x2, tfsr_el2
+.*:	d53e5603 	mrs	x3, tfsr_el3
+.*:	d53d560c 	mrs	x12, tfsr_el12
 .*:	d53810a1 	mrs	x1, rgsr_el1
 .*:	d53810c3 	mrs	x3, gcr_el1
 .*:	d5390084 	mrs	x4, gmid_el1
 .*:	d51b42e1 	msr	tco, x1
 .*:	d51b42e2 	msr	tco, x2
-.*:	d5186621 	msr	tfsre0_el1, x1
-.*:	d5186501 	msr	tfsr_el1, x1
-.*:	d51c6502 	msr	tfsr_el2, x2
-.*:	d51e6603 	msr	tfsr_el3, x3
-.*:	d51d660c 	msr	tfsr_el12, x12
+.*:	d5185621 	msr	tfsre0_el1, x1
+.*:	d5185601 	msr	tfsr_el1, x1
+.*:	d51c5602 	msr	tfsr_el2, x2
+.*:	d51e5603 	msr	tfsr_el3, x3
+.*:	d51d560c 	msr	tfsr_el12, x12
 .*:	d51810a1 	msr	rgsr_el1, x1
 .*:	d51810c3 	msr	gcr_el1, x3
 .*:	d503489f 	msr	tco, #0x8
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 2cd22183bc..0017bd47f5 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-22  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+	* aarch64-opc.c (aarch64_sys_regs): Update encoding of tfsre0_el1,
+	tfsr_el1, tfsr_el2, tfsr_el3, tfsr_el12.
+	(aarch64_sys_reg_supported_p): Update checks for the above.
+
 2019-08-12  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
 
 	* arm-dis.c (struct mopcode32 mve_opcodes): Modify the mask for
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index a008569818..2e205e56a6 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -3966,11 +3966,11 @@ const aarch64_sys_reg aarch64_sys_regs [] =
   { "rndr",		CPENC(3,3,C2,C4,0), F_ARCHEXT | F_REG_READ }, /* RO */
   { "rndrrs",		CPENC(3,3,C2,C4,1), F_ARCHEXT | F_REG_READ }, /* RO */
   { "tco",		CPENC(3,3,C4,C2,7), F_ARCHEXT },
-  { "tfsre0_el1",	CPENC(3,0,C6,C6,1), F_ARCHEXT },
-  { "tfsr_el1",		CPENC(3,0,C6,C5,0), F_ARCHEXT },
-  { "tfsr_el2",		CPENC(3,4,C6,C5,0), F_ARCHEXT },
-  { "tfsr_el3",		CPENC(3,6,C6,C6,0), F_ARCHEXT },
-  { "tfsr_el12",	CPENC(3,5,C6,C6,0), F_ARCHEXT },
+  { "tfsre0_el1",	CPENC(3,0,C5,C6,1), F_ARCHEXT },
+  { "tfsr_el1",		CPENC(3,0,C5,C6,0), F_ARCHEXT },
+  { "tfsr_el2",		CPENC(3,4,C5,C6,0), F_ARCHEXT },
+  { "tfsr_el3",		CPENC(3,6,C5,C6,0), F_ARCHEXT },
+  { "tfsr_el12",	CPENC(3,5,C5,C6,0), F_ARCHEXT },
   { "rgsr_el1",		CPENC(3,0,C1,C0,5), F_ARCHEXT },
   { "gcr_el1",		CPENC(3,0,C1,C0,6), F_ARCHEXT },
   { "gmid_el1",		CPENC(3,1,C0,C0,4), F_ARCHEXT | F_REG_READ }, /* RO */
@@ -4439,11 +4439,11 @@ aarch64_sys_reg_supported_p (const aarch64_feature_set features,
 
   /* System Registers in ARMv8.5-A with AARCH64_FEATURE_MEMTAG.  */
   if ((reg->value == CPENC (3, 3, C4, C2, 7)
-       || reg->value == CPENC (3, 0, C6, C6, 1)
-       || reg->value == CPENC (3, 0, C6, C5, 0)
-       || reg->value == CPENC (3, 4, C6, C5, 0)
-       || reg->value == CPENC (3, 6, C6, C6, 0)
-       || reg->value == CPENC (3, 5, C6, C6, 0)
+       || reg->value == CPENC (3, 0, C5, C6, 1)
+       || reg->value == CPENC (3, 0, C5, C6, 0)
+       || reg->value == CPENC (3, 4, C5, C6, 0)
+       || reg->value == CPENC (3, 6, C5, C6, 0)
+       || reg->value == CPENC (3, 5, C5, C6, 0)
        || reg->value == CPENC (3, 0, C1, C0, 5)
        || reg->value == CPENC (3, 0, C1, C0, 6)
        || reg->value == CPENC (3, 1, C0, C0, 4))


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] AArch64: Fix LD crash on weak and undefined TLS symbols. (PR/24602).
@ 2019-08-22 11:36 gdb-buildbot
  2019-08-22 11:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 11:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 652afeef247770b22c44ca292d1f4c65be40a696 ***

commit 652afeef247770b22c44ca292d1f4c65be40a696
Author:     Tamar Christina <tamar.christina@arm.com>
AuthorDate: Thu Aug 22 11:35:35 2019 +0100
Commit:     Tamar Christina <tamar.christina@arm.com>
CommitDate: Thu Aug 22 11:43:15 2019 +0100

    AArch64: Fix LD crash on weak and undefined TLS symbols. (PR/24602).
    
    This patch fixes a few linker crashes due to TLS code reaching an assert when it
    shouldn't.
    
    The first scenario is with weak TLS symbols that remain weak during linking.  In
    this case the mid-end would not have seen a TLS symbol and so wouldn't have
    allocated the TLS section.  We currently assert here and the linker crashes with
    a not very useful message.
    
    This patch changes this to return the value 0 for the TLS symbol in question
    emulating what lld and gold and other BFD targets do.  However because weak TLS
    is implementation defined and we don't define any behavior for it I also emit a
    warning to the user to inform them of such.
    
    Secondly when a strong TLS reference is undefined. The linker crashes even after
    it correctly reported that there is an undefined reference.  This changes it so
    that it gracefully exits and reports a useful error.
    
    bfd/ChangeLog:
    
            PR ld/24601
            * elfnn-aarch64.c (aarch64_relocate): Handle weak TLS and undefined TLS.
            Also Pass input_bfd to _bfd_aarch64_elf_resolve_relocation.
            * elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use it.
            * elfxx-aarch64.h (_bfd_aarch64_elf_resolve_relocation): Emit warning
            for weak TLS.
    
    ld/ChangeLog:
    
            PR ld/24601
            * testsuite/ld-aarch64/aarch64-elf.exp (undef-tls, weak-tls): New.
            * testsuite/ld-aarch64/undef-tls.d: New test.
            * testsuite/ld-aarch64/undef-tls.s: New test.
            * testsuite/ld-aarch64/weak-tls.d: New test.
            * testsuite/ld-aarch64/weak-tls.s: New test.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a725504c02..ef9eee4716 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2019-08-22  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24601
+	* elfnn-aarch64.c (aarch64_relocate): Handle weak TLS and undefined TLS.
+	Also Pass input_bfd to _bfd_aarch64_elf_resolve_relocation.
+	* elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use it.
+	* elfxx-aarch64.h (_bfd_aarch64_elf_resolve_relocation): Emit warning
+	for weak TLS.
+
 2019-08-22  Alan Modra  <amodra@gmail.com>
 
 	* elf32-arm.c (cmse_scan): Don't use ARM_GET_SYM_CMSE_SPCL,
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 4e6cbc9a3a..fd44505da4 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -3004,7 +3004,8 @@ aarch64_relocate (unsigned int r_type, bfd *input_bfd, asection *input_section,
 	   + offset);
 
   r_type = elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
-  value = _bfd_aarch64_elf_resolve_relocation (r_type, place, value, 0, FALSE);
+  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, r_type, place,
+					       value, 0, FALSE);
   return _bfd_aarch64_elf_put_addend (input_bfd,
 				      input_section->contents + offset, r_type,
 				      howto, value) == bfd_reloc_ok;
@@ -5585,7 +5586,8 @@ bad_ifunc_reloc:
 	  /* FALLTHROUGH */
 	case BFD_RELOC_AARCH64_CALL26:
 	case BFD_RELOC_AARCH64_JUMP26:
-	  value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
 						       signed_addend,
 						       weak_undef_p);
 	  return _bfd_aarch64_elf_put_addend (input_bfd, hit_data, bfd_r_type,
@@ -5662,7 +5664,8 @@ bad_ifunc_reloc:
 	    addend = (globals->root.sgot->output_section->vma
 		      + globals->root.sgot->output_offset);
 
-	  value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
 						       addend, weak_undef_p);
 	  return _bfd_aarch64_elf_put_addend (input_bfd, hit_data, bfd_r_type, howto, value);
 	case BFD_RELOC_AARCH64_ADD_LO12:
@@ -5840,7 +5843,8 @@ bad_ifunc_reloc:
 	    signed_addend = 0;
 	  }
       }
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   signed_addend, weak_undef_p);
       *unresolved_reloc_p = FALSE;
       break;
@@ -5900,7 +5904,8 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_MOVW_G2_S:
     case BFD_RELOC_AARCH64_MOVW_G3:
     case BFD_RELOC_AARCH64_TSTBR14:
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   signed_addend, weak_undef_p);
       break;
 
@@ -5945,7 +5950,8 @@ bad_ifunc_reloc:
 	  if (aarch64_relocation_aginst_gp_p (bfd_r_type))
 	    addend = (globals->root.sgot->output_section->vma
 		      + globals->root.sgot->output_offset);
-	  value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+	  value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						       place, value,
 						       addend, weak_undef_p);
 	}
       else
@@ -5992,7 +5998,8 @@ bad_ifunc_reloc:
 	if (aarch64_relocation_aginst_gp_p (bfd_r_type))
 	  addend = base_got->output_section->vma + base_got->output_offset;
 
-	value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
 						     addend, weak_undef_p);
       }
 
@@ -6029,7 +6036,8 @@ bad_ifunc_reloc:
 	       + globals->root.sgot->output_section->vma
 	       + globals->root.sgot->output_offset);
 
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   0, weak_undef_p);
       *unresolved_reloc_p = FALSE;
       break;
@@ -6042,7 +6050,8 @@ bad_ifunc_reloc:
 	return bfd_reloc_notsupported;
 
       value = symbol_got_offset (input_bfd, h, r_symndx);
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   0, weak_undef_p);
       *unresolved_reloc_p = FALSE;
       break;
@@ -6063,10 +6072,26 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1:
     case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC:
     case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2:
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
-						   signed_addend - dtpoff_base (info),
-						   weak_undef_p);
-      break;
+      {
+	if (!(weak_undef_p || elf_hash_table (info)->tls_sec))
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: TLS relocation %s against undefined symbol `%s'"),
+		 input_bfd, elfNN_aarch64_howto_table[howto_index].name,
+		 h->root.root.string);
+	    bfd_set_error (bfd_error_bad_value);
+	    return bfd_reloc_notsupported;
+	  }
+
+	bfd_vma def_value
+	  = weak_undef_p ? 0 : signed_addend - dtpoff_base (info);
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
+						     def_value, weak_undef_p);
+	break;
+      }
 
     case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12:
     case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12:
@@ -6084,11 +6109,27 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1:
     case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC:
     case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2:
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
-						   signed_addend - tpoff_base (info),
-						   weak_undef_p);
-      *unresolved_reloc_p = FALSE;
-      break;
+      {
+	if (!(weak_undef_p || elf_hash_table (info)->tls_sec))
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: TLS relocation %s against undefined symbol `%s'"),
+		 input_bfd, elfNN_aarch64_howto_table[howto_index].name,
+		 h->root.root.string);
+	    bfd_set_error (bfd_error_bad_value);
+	    return bfd_reloc_notsupported;
+	  }
+
+	bfd_vma def_value
+	  = weak_undef_p ? 0 : signed_addend - tpoff_base (info);
+	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						     place, value,
+						     def_value, weak_undef_p);
+        *unresolved_reloc_p = FALSE;
+	break;
+      }
 
     case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:
     case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
@@ -6103,7 +6144,8 @@ bad_ifunc_reloc:
 	       + globals->root.sgotplt->output_offset
 	       + globals->sgotplt_jump_table_size);
 
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   0, weak_undef_p);
       *unresolved_reloc_p = FALSE;
       break;
@@ -6121,7 +6163,8 @@ bad_ifunc_reloc:
       value -= (globals->root.sgot->output_section->vma
 		+ globals->root.sgot->output_offset);
 
-      value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
 						   0, weak_undef_p);
       *unresolved_reloc_p = FALSE;
       break;
diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
index 33af6c22e1..1f69280713 100644
--- a/bfd/elfxx-aarch64.c
+++ b/bfd/elfxx-aarch64.c
@@ -395,10 +395,12 @@ _bfd_aarch64_elf_put_addend (bfd *abfd,
 }
 
 bfd_vma
-_bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type r_type,
+_bfd_aarch64_elf_resolve_relocation (bfd *input_bfd,
+				     bfd_reloc_code_real_type r_type,
 				     bfd_vma place, bfd_vma value,
 				     bfd_vma addend, bfd_boolean weak_undef_p)
 {
+  bfd_boolean tls_reloc = TRUE;
   switch (r_type)
     {
     case BFD_RELOC_AARCH64_NONE:
@@ -446,6 +448,8 @@ _bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type r_type,
     case BFD_RELOC_AARCH64_MOVW_G2_NC:
     case BFD_RELOC_AARCH64_MOVW_G2_S:
     case BFD_RELOC_AARCH64_MOVW_G3:
+      tls_reloc = FALSE;
+      /* fall-through.  */
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
     case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
@@ -466,6 +470,15 @@ _bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type r_type,
     case BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12:
     case BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12:
     case BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12:
+      /* Weak Symbols and TLS relocations are implementation defined.  For this
+	 case we choose to emit 0.  */
+      if (weak_undef_p && tls_reloc)
+	{
+	  _bfd_error_handler (_("%pB: warning: Weak TLS is implementation "
+				"defined and may not work as expected"),
+				input_bfd);
+	  value = place;
+	}
       value = value + addend;
       break;
 
diff --git a/bfd/elfxx-aarch64.h b/bfd/elfxx-aarch64.h
index 9ab13bb865..f5988529d7 100644
--- a/bfd/elfxx-aarch64.h
+++ b/bfd/elfxx-aarch64.h
@@ -40,8 +40,8 @@ _bfd_aarch64_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
 			     reloc_howto_type *, bfd_signed_vma);
 
 extern bfd_vma
-_bfd_aarch64_elf_resolve_relocation (bfd_reloc_code_real_type, bfd_vma, bfd_vma,
-				     bfd_vma, bfd_boolean);
+_bfd_aarch64_elf_resolve_relocation (bfd *, bfd_reloc_code_real_type, bfd_vma,
+				     bfd_vma, bfd_vma, bfd_boolean);
 
 extern bfd_boolean
 _bfd_aarch64_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4f71ce81bd..ed646acffa 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,12 @@
+2019-08-22  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24601
+	* testsuite/ld-aarch64/aarch64-elf.exp (undef-tls, weak-tls): New.
+	* testsuite/ld-aarch64/undef-tls.d: New test.
+	* testsuite/ld-aarch64/undef-tls.s: New test.
+	* testsuite/ld-aarch64/weak-tls.d: New test.
+	* testsuite/ld-aarch64/weak-tls.s: New test.
+
 2019-08-20  Tamar Christina  <tamar.christina@arm.com>
 
 	* testsuite/ld-arm/cortex-a8-fix-b-plt.d: Update Testcase.
diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
index ab8d15271c..631fde0f31 100644
--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
@@ -424,3 +424,5 @@ run_dump_test "bti-pac-plt-1"
 run_dump_test "bti-pac-plt-2"
 
 run_dump_test "bti-warn"
+run_dump_test "weak-tls"
+run_dump_test "undef-tls"
diff --git a/ld/testsuite/ld-aarch64/undef-tls.d b/ld/testsuite/ld-aarch64/undef-tls.d
new file mode 100644
index 0000000000..8b43ca4c1d
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/undef-tls.d
@@ -0,0 +1,17 @@
+#source: undef-tls.s
+#ld: -e0 --emit-relocs
+#objdump: -dr
+#...
+#error:.*: in function `get':.*
+#error:.*: undefined reference to `tls'.*
+#error:.*: TLS relocation R_AARCH64_TLSLE_ADD_TPREL_HI12 against undefined symbol `tls'.*
+#error:.*: dangerous relocation: unsupported relocation.*
+#error:.*: undefined reference to `tls'.*
+#error:.*: TLS relocation R_AARCH64_TLSLE_ADD_TPREL_LO12_NC against undefined symbol `tls'.*
+#error:.*: dangerous relocation: unsupported relocation.*
+#error:.*: undefined reference to `dtl'.*
+#error:.*: TLS relocation R_AARCH64_TLSLD_ADD_DTPREL_HI12 against undefined symbol `dtl'.*
+#error:.*: dangerous relocation: unsupported relocation.*
+#error:.*: undefined reference to `dtl'.*
+#error:.*: TLS relocation R_AARCH64_TLSLD_ADD_DTPREL_LO12 against undefined symbol `dtl'.*
+#error:.*: dangerous relocation: unsupported relocation.*
diff --git a/ld/testsuite/ld-aarch64/undef-tls.s b/ld/testsuite/ld-aarch64/undef-tls.s
new file mode 100644
index 0000000000..6d57afbb54
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/undef-tls.s
@@ -0,0 +1,13 @@
+        .global get
+        .type   get, %function
+get:
+.LFB0:
+        mrs     x0, tpidr_el0
+        add     x0, x0, #:tprel_hi12:tls, lsl #12
+        add     x0, x0, #:tprel_lo12_nc:tls
+	add	x0, x0, #:dtprel_hi12:dtl
+	add	x0, x0, #:dtprel_lo12:dtl
+        ret
+.LFE0:
+        .size   get, .-get
+
diff --git a/ld/testsuite/ld-aarch64/weak-tls.d b/ld/testsuite/ld-aarch64/weak-tls.d
new file mode 100644
index 0000000000..a826940689
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/weak-tls.d
@@ -0,0 +1,8 @@
+#source: weak-tls.s
+#ld: -e0 --emit-relocs
+#objdump: -dr
+#...
+#error:.*: warning: Weak TLS is implementation defined and may not work as expected.*
+#error:.*: warning: Weak TLS is implementation defined and may not work as expected.*
+#error:.*: in function `get':.*
+#error:.*: relocation truncated to fit: R_AARCH64_TLSLD_ADD_DTPREL_LO12 against undefined symbol `dtl'.*
diff --git a/ld/testsuite/ld-aarch64/weak-tls.s b/ld/testsuite/ld-aarch64/weak-tls.s
new file mode 100644
index 0000000000..3520a85589
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/weak-tls.s
@@ -0,0 +1,16 @@
+        .global get
+        .type   get, %function
+	.global dtl
+	.weak dtl
+get:
+.LFB0:
+        mrs     x0, tpidr_el0
+        add     x0, x0, #:tprel_hi12:tls, lsl #12
+        add     x0, x0, #:tprel_lo12_nc:tls
+	add	x0, x0, #:dtprel_hi12:dtl
+	add	x0, x0, #:dtprel_lo12:dtl
+        ret
+.LFE0:
+        .size   get, .-get
+        .weak   tls
+


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Remove some dead code from the parser
@ 2019-08-22 12:18 gdb-buildbot
  2019-08-22 12:18 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 12:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 43771869e5021b6bdc02b6eaae103a33c05a821c ***

commit 43771869e5021b6bdc02b6eaae103a33c05a821c
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Thu Aug 22 10:07:00 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Aug 22 12:34:42 2019 +0100

    gdb/fortran: Remove some dead code from the parser
    
    The Fortran parser contains some code that looks like it was probably
    inherited from the C/C++ parser as it checks to see if the current
    language is C++, which should never be true when we're in the Fortran
    parser.
    
    gdb/ChangeLog:
    
            * f-exp.y (yylex): Remove is_a_field_of_this local variable, and
            all uses as this was never set to anything but a zero value.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 966bfb7d9f..b6d200d3d8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (yylex): Remove is_a_field_of_this local variable, and
+	all uses as this was never set to anything but a zero value.
+
 2019-08-21  Bogdan Harjoc  <harjoc@gmail.com>
 
 	* cli/cli-cmds.c (with_command_1): Error out if no arguments.
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index 14ea3869bb..9784ad57d8 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -1275,7 +1275,6 @@ yylex (void)
   {
     std::string tmp = copy_name (yylval.sval);
     struct block_symbol result;
-    struct field_of_this_result is_a_field_of_this;
     enum domain_enum_tag lookup_domains[] =
     {
       STRUCT_DOMAIN,
@@ -1286,15 +1285,8 @@ yylex (void)
 
     for (int i = 0; i < ARRAY_SIZE (lookup_domains); ++i)
       {
-	/* Initialize this in case we *don't* use it in this call; that
-	   way we can refer to it unconditionally below.  */
-	memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
-
 	result = lookup_symbol (tmp.c_str (), pstate->expression_context_block,
-				lookup_domains[i],
-				pstate->language ()->la_language
-				== language_cplus
-				  ? &is_a_field_of_this : NULL);
+				lookup_domains[i], NULL);
 	if (result.symbol && SYMBOL_CLASS (result.symbol) == LOC_TYPEDEF)
 	  {
 	    yylval.tsym.type = SYMBOL_TYPE (result.symbol);
@@ -1323,14 +1315,14 @@ yylex (void)
 	if (hextype == INT)
 	  {
 	    yylval.ssym.sym = result;
-	    yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
+	    yylval.ssym.is_a_field_of_this = false;
 	    return NAME_OR_INT;
 	  }
       }
     
     /* Any other kind of symbol */
     yylval.ssym.sym = result;
-    yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
+    yylval.ssym.is_a_field_of_this = false;
     return NAME;
   }
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix an illegal memory access when dumping corrupt x86_64 PE unwind data.
@ 2019-08-22 14:33 gdb-buildbot
  2019-08-22 14:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 14:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 03da31c6764c1bca9b0b0529344a8ea933c825ea ***

commit 03da31c6764c1bca9b0b0529344a8ea933c825ea
Author:     Nick Clifton <nickc@redhat.com>
AuthorDate: Thu Aug 22 14:37:03 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Thu Aug 22 14:37:03 2019 +0100

    Fix an illegal memory access when dumping corrupt x86_64 PE unwind data.
    
            PR 24922
            * pei-x86_64.c (pex64_xdata_print_uwd_codes): Add checks before
            reading data from extra records.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ef9eee4716..1c08d38908 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-22  Nick Clifton  <nickc@redhat.com>
+
+	PR 24922
+	* pei-x86_64.c (pex64_xdata_print_uwd_codes): Add checks before
+	reading data from extra records.
+
 2019-08-22  Tamar Christina  <tamar.christina@arm.com>
 
 	PR ld/24601
diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
index 8a88827b82..2588e6c6e9 100644
--- a/bfd/pei-x86_64.c
+++ b/bfd/pei-x86_64.c
@@ -228,27 +228,41 @@ pex64_xdata_print_uwd_codes (FILE *file, bfd *abfd,
       int unexpected = FALSE;
 
       fprintf (file, "\t  pc+0x%02x: ", (unsigned int) dta[0]);
+
       switch (PEX64_UNWCODE_CODE (dta[1]))
 	{
 	case UWOP_PUSH_NONVOL:
 	  fprintf (file, "push %s", pex_regs[info]);
 	  break;
+
 	case UWOP_ALLOC_LARGE:
 	  if (info == 0)
 	    {
-	      tmp = bfd_get_16 (abfd, &dta[2]) * 8;
+	      if (dta + 4 > ui->rawUnwindCodesEnd)
+		{
+		  fprintf (file, _("warning: corrupt unwind data\n"));
+		  return;
+		}
+	      tmp = bfd_get_16 (abfd, dta + 2) * 8;
 	      i++;
 	    }
 	  else
 	    {
-	      tmp = bfd_get_32 (abfd, &dta[2]);
+	      if (dta + 6 > ui->rawUnwindCodesEnd)
+		{
+		  fprintf (file, _("warning: corrupt unwind data\n"));
+		  return;
+		}
+	      tmp = bfd_get_32 (abfd, dta + 2);
 	      i += 2;
 	    }
 	  fprintf (file, "alloc large area: rsp = rsp - 0x%x", tmp);
 	  break;
+
 	case UWOP_ALLOC_SMALL:
 	  fprintf (file, "alloc small area: rsp = rsp - 0x%x", (info + 1) * 8);
 	  break;
+
 	case UWOP_SET_FPREG:
 	  /* According to the documentation, info field is unused.  */
 	  fprintf (file, "FPReg: %s = rsp + 0x%x (info = 0x%x)",
@@ -257,22 +271,40 @@ pex64_xdata_print_uwd_codes (FILE *file, bfd *abfd,
 	  unexpected = ui->FrameRegister == 0;
 	  save_allowed = FALSE;
 	  break;
+
 	case UWOP_SAVE_NONVOL:
-	  tmp = bfd_get_16 (abfd, &dta[2]) * 8;
+	  if (dta + 4 > ui->rawUnwindCodesEnd)
+	    {
+	      fprintf (file, _("warning: corrupt unwind data\n"));
+	      return;
+	    }
+	  tmp = bfd_get_16 (abfd, dta + 2) * 8;
 	  i++;
 	  fprintf (file, "save %s at rsp + 0x%x", pex_regs[info], tmp);
 	  unexpected = !save_allowed;
 	  break;
+
 	case UWOP_SAVE_NONVOL_FAR:
-	  tmp = bfd_get_32 (abfd, &dta[2]);
+	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	    {
+	      fprintf (file, _("warning: corrupt unwind data\n"));
+	      return;
+	    }
+	  tmp = bfd_get_32 (abfd, dta + 2);
 	  i += 2;
 	  fprintf (file, "save %s at rsp + 0x%x", pex_regs[info], tmp);
 	  unexpected = !save_allowed;
 	  break;
+
 	case UWOP_SAVE_XMM:
 	  if (ui->Version == 1)
 	    {
-	      tmp = bfd_get_16 (abfd, &dta[2]) * 8;
+	      if (dta + 4 > ui->rawUnwindCodesEnd)
+		{
+		  fprintf (file, _("warning: corrupt unwind data\n"));
+		  return;
+		}
+	      tmp = bfd_get_16 (abfd, dta + 2) * 8;
 	      i++;
 	      fprintf (file, "save mm%u at rsp + 0x%x", info, tmp);
 	      unexpected = !save_allowed;
@@ -283,24 +315,43 @@ pex64_xdata_print_uwd_codes (FILE *file, bfd *abfd,
 	      unexpected = TRUE;
 	    }
 	  break;
+
 	case UWOP_SAVE_XMM_FAR:
-	  tmp = bfd_get_32 (abfd, &dta[2]) * 8;
+	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	    {
+	      fprintf (file, _("warning: corrupt unwind data\n"));
+	      return;
+	    }
+	  tmp = bfd_get_32 (abfd, dta + 2) * 8;
 	  i += 2;
 	  fprintf (file, "save mm%u at rsp + 0x%x", info, tmp);
 	  unexpected = !save_allowed;
 	  break;
+
 	case UWOP_SAVE_XMM128:
-	  tmp = bfd_get_16 (abfd, &dta[2]) * 16;
+	  if (dta + 4 > ui->rawUnwindCodesEnd)
+	    {
+	      fprintf (file, _("warning: corrupt unwind data\n"));
+	      return;
+	    }
+	  tmp = bfd_get_16 (abfd, dta + 2) * 16;
 	  i++;
 	  fprintf (file, "save xmm%u at rsp + 0x%x", info, tmp);
 	  unexpected = !save_allowed;
 	  break;
+
 	case UWOP_SAVE_XMM128_FAR:
-	  tmp = bfd_get_32 (abfd, &dta[2]) * 16;
+	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	    {
+	      fprintf (file, _("warning: corrupt unwind data\n"));
+	      return;
+	    }
+	  tmp = bfd_get_32 (abfd, dta + 2) * 16;
 	  i += 2;
 	  fprintf (file, "save xmm%u at rsp + 0x%x", info, tmp);
 	  unexpected = !save_allowed;
 	  break;
+
 	case UWOP_PUSH_MACHFRAME:
 	  fprintf (file, "interrupt entry (SS, old RSP, EFLAGS, CS, RIP");
 	  if (info == 0)
@@ -310,11 +361,13 @@ pex64_xdata_print_uwd_codes (FILE *file, bfd *abfd,
 	  else
 	    fprintf (file, ", unknown(%u))", info);
 	  break;
+
 	default:
 	  /* PR 17512: file: 2245-7442-0.004.  */
 	  fprintf (file, _("Unknown: %x"), PEX64_UNWCODE_CODE (dta[1]));
 	  break;
-      }
+	}
+
       if (unexpected)
 	fprintf (file, " [Unexpected!]");
       fputc ('\n', file);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Arm: Add support for missing CPUs
@ 2019-08-22 15:14 gdb-buildbot
  2019-08-22 15:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 15:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0535e5d74d6164c49473fe0ce89213aa2b6270b8 ***

commit 0535e5d74d6164c49473fe0ce89213aa2b6270b8
Author:     Dennis Zhang <dennis.zhang@arm.com>
AuthorDate: Thu Aug 22 15:21:32 2019 +0100
Commit:     Tamar Christina <tamar.christina@arm.com>
CommitDate: Thu Aug 22 15:35:43 2019 +0100

    Arm: Add support for missing CPUs
    
    This patch adds support for following CPUs:
    Cortex-M35P, Cortex-A77, Cortex-A76AE.
    
    Related specifications can be found at https://developer.arm.com/ip-products/processors.
    
    gas/ChangeLog:
    
            * config/tc-arm.c: New entries for Cortex-M35P, Cortex-A77,
            and Cortex-A76AE.
            * doc/c-arm.texi: Document new processors.
            * testsuite/gas/arm/cpu-cortex-a76ae.d: New test.
            * testsuite/gas/arm/cpu-cortex-a77.d: New test.
            * testsuite/gas/arm/cpu-cortex-m35p.d: New test.
    
    bfd/ChangeLog:
    
            * cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1c08d38908..0eb514d314 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
+
+	* cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
+
 2019-08-22  Nick Clifton  <nickc@redhat.com>
 
 	PR 24922
diff --git a/bfd/cpu-arm.c b/bfd/cpu-arm.c
index 5a5da93cb4..8d70b84b8b 100644
--- a/bfd/cpu-arm.c
+++ b/bfd/cpu-arm.c
@@ -147,12 +147,15 @@ processors[] =
   { bfd_mach_arm_8,	  "cortex-a73"	    },
   { bfd_mach_arm_8,	  "cortex-a75"	    },
   { bfd_mach_arm_8,	  "cortex-a76"	    },
+  { bfd_mach_arm_8,	  "cortex-a76ae"    },
+  { bfd_mach_arm_8,	  "cortex-a77"	    },
   { bfd_mach_arm_6SM,	  "cortex-m0"	    },
   { bfd_mach_arm_6SM,	  "cortex-m0plus"   },
   { bfd_mach_arm_6SM,	  "cortex-m1"	    },
   { bfd_mach_arm_8M_BASE, "cortex-m23"	    },
   { bfd_mach_arm_7,	  "cortex-m3"	    },
   { bfd_mach_arm_8M_MAIN, "cortex-m33"	    },
+  { bfd_mach_arm_8M_MAIN, "cortex-m35p"	    },
   { bfd_mach_arm_7EM,	  "cortex-m4"	    },
   { bfd_mach_arm_7EM,	  "cortex-m7"	    },
   { bfd_mach_arm_7,	  "cortex-r4"	    },
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bd9887e424..4d6b571a42 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
+
+	* config/tc-arm.c: New entries for Cortex-M35P, Cortex-A77,
+	and Cortex-A76AE.
+	* doc/c-arm.texi: Document new processors.
+	* testsuite/gas/arm/cpu-cortex-a76ae.d: New test.
+	* testsuite/gas/arm/cpu-cortex-a77.d: New test.
+	* testsuite/gas/arm/cpu-cortex-m35p.d: New test.
+
 2019-08-22  Bosco Garca  <jbgg.gnu@gmail.com>
 	    Nick Clifton  <nickc@redhat.com>
 
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index c58748dfaa..27c6f0e52f 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -30591,6 +30591,12 @@ static const struct arm_cpu_option_table arm_cpus[] =
   ARM_CPU_OPT ("cortex-a76",    "Cortex-A76",	       ARM_ARCH_V8_2A,
 	       ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
 	       FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
+  ARM_CPU_OPT ("cortex-a76ae",    "Cortex-A76AE",      ARM_ARCH_V8_2A,
+	       ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
+	       FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
+  ARM_CPU_OPT ("cortex-a77",    "Cortex-A77",	       ARM_ARCH_V8_2A,
+	       ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
+	       FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
   ARM_CPU_OPT ("ares",    "Ares",	       ARM_ARCH_V8_2A,
 	       ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
 	       FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
@@ -30612,6 +30618,9 @@ static const struct arm_cpu_option_table arm_cpus[] =
   ARM_CPU_OPT ("cortex-r52",	  "Cortex-R52",	       ARM_ARCH_V8R,
 	      ARM_FEATURE_COPROC (CRC_EXT_ARMV8),
 	      FPU_ARCH_NEON_VFP_ARMV8),
+  ARM_CPU_OPT ("cortex-m35p",	  "Cortex-M35P",       ARM_ARCH_V8M_MAIN,
+	       ARM_FEATURE_CORE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP),
+	       FPU_NONE),
   ARM_CPU_OPT ("cortex-m33",	  "Cortex-M33",	       ARM_ARCH_V8M_MAIN,
 	       ARM_FEATURE_CORE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP),
 	       FPU_NONE),
diff --git a/gas/doc/c-arm.texi b/gas/doc/c-arm.texi
index 481eddf0cf..175de8eae1 100644
--- a/gas/doc/c-arm.texi
+++ b/gas/doc/c-arm.texi
@@ -129,6 +129,8 @@ recognized:
 @code{cortex-a73},
 @code{cortex-a75},
 @code{cortex-a76},
+@code{cortex-a76ae},
+@code{cortex-a77},
 @code{ares},
 @code{cortex-r4},
 @code{cortex-r4f},
@@ -136,6 +138,7 @@ recognized:
 @code{cortex-r7},
 @code{cortex-r8},
 @code{cortex-r52},
+@code{cortex-m35p},
 @code{cortex-m33},
 @code{cortex-m23},
 @code{cortex-m7},
diff --git a/gas/testsuite/gas/arm/cpu-cortex-a76ae.d b/gas/testsuite/gas/arm/cpu-cortex-a76ae.d
new file mode 100644
index 0000000000..7f7cf2952c
--- /dev/null
+++ b/gas/testsuite/gas/arm/cpu-cortex-a76ae.d
@@ -0,0 +1,6 @@
+# name: Assemble and dump for cortex-a76ae CPU
+# source: nop-asm.s
+# as: -mcpu=cortex-a76ae
+# objdump: -d -mcortex-a76ae
+
+#...
diff --git a/gas/testsuite/gas/arm/cpu-cortex-a77.d b/gas/testsuite/gas/arm/cpu-cortex-a77.d
new file mode 100644
index 0000000000..caff73fe07
--- /dev/null
+++ b/gas/testsuite/gas/arm/cpu-cortex-a77.d
@@ -0,0 +1,6 @@
+# name: Assemble and dump for cortex-a77 CPU
+# source: nop-asm.s
+# as: -mcpu=cortex-a77
+# objdump: -d -mcortex-a77
+
+#...
diff --git a/gas/testsuite/gas/arm/cpu-cortex-m35p.d b/gas/testsuite/gas/arm/cpu-cortex-m35p.d
new file mode 100644
index 0000000000..f60339f662
--- /dev/null
+++ b/gas/testsuite/gas/arm/cpu-cortex-m35p.d
@@ -0,0 +1,6 @@
+# name: Assemble and dump for cortex-m35p CPU
+# source: nop-asm.s
+# as: -mcpu=cortex-m35p
+# objdump: -d -M force-thumb -mcortex-m35p
+
+#...


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make GDB compile with Python 3 on MinGW
@ 2019-08-22 23:24 gdb-buildbot
  2019-08-22 23:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-22 23:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 272044897e178835f596c96740c5a1800ec6f9fb ***

commit 272044897e178835f596c96740c5a1800ec6f9fb
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Aug 13 14:48:05 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Thu Aug 22 17:44:58 2019 -0500

    Make GDB compile with Python 3 on MinGW
    
    PyFile_FromString and PyFile_AsFile have been removed in Python 3.
    There is no obvious replacement that works here, and we can't just
    pass our FILE* to a DLL in Windows because it may use a different
    C runtime.
    
    So we just call a Python function which reads and executes file
    contents. Care must be taken to execute it in the context of
    __main__.
    
    Tested by inverting the ifdef and running the testsuite on Debian
    Linux (even without the patch, I failed at running the testsuite
    on Windows). I did test with both Python 2 and 3.
    
    gdb/ChangeLog:
    
    2019-08-22  Christian Biesinger  <cbiesinger@google.com>
    
            * python/lib/gdb/__init__.py (_execute_file): New function.
            * python/python.c (python_run_simple_file): Call gdb._execute_file
            on Windows.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b6d200d3d8..ac84245c34 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* python/lib/gdb/__init__.py (_execute_file): New function.
+	* python/python.c (python_run_simple_file): Call gdb._execute_file
+	on Windows.
+
 2019-08-22  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* f-exp.y (yylex): Remove is_a_field_of_this local variable, and
diff --git a/gdb/python/lib/gdb/__init__.py b/gdb/python/lib/gdb/__init__.py
index 8af9e47117..9c23970f39 100644
--- a/gdb/python/lib/gdb/__init__.py
+++ b/gdb/python/lib/gdb/__init__.py
@@ -106,6 +106,32 @@ def _execute_unwinders(pending_frame):
 
     return None
 
+def _execute_file(filepath):
+    """This function is used to replace Python 2's PyRun_SimpleFile.
+
+    Loads and executes the given file.
+
+    We could use the runpy module, but its documentation says:
+    "Furthermore, any functions and classes defined by the executed code are
+    not guaranteed to work correctly after a runpy function has returned."
+    """
+    globals = sys.modules['__main__'].__dict__
+    set_file = False
+    # Set file (if not set) so that the imported file can use it (e.g. to
+    # access file-relative paths). This matches what PyRun_SimpleFile does.
+    if not hasattr(globals, '__file__'):
+        globals['__file__'] = filepath
+        set_file = True
+    try:
+        with open(filepath, 'rb') as file:
+            # We pass globals also as locals to match what Python does
+            # in PyRun_SimpleFile.
+            compiled = compile(file.read(), filepath, 'exec')
+            exec(compiled, globals, globals)
+    finally:
+        if set_file:
+            del globals['__file__']
+
 
 # Convenience variable to GDB's python directory
 PYTHONDIR = os.path.dirname(os.path.dirname(__file__))
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 162470dcc0..cca7c4cd6b 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -323,9 +323,8 @@ python_interactive_command (const char *arg, int from_tty)
    A FILE * from one runtime does not necessarily operate correctly in
    the other runtime.
 
-   To work around this potential issue, we create on Windows hosts the
-   FILE object using Python routines, thus making sure that it is
-   compatible with the Python library.  */
+   To work around this potential issue, we run code in Python to load
+   the script.  */
 
 static void
 python_run_simple_file (FILE *file, const char *filename)
@@ -339,15 +338,21 @@ python_run_simple_file (FILE *file, const char *filename)
   /* Because we have a string for a filename, and are using Python to
      open the file, we need to expand any tilde in the path first.  */
   gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
-  gdbpy_ref<> python_file (PyFile_FromString (full_path.get (), (char *) "r"));
-  if (python_file == NULL)
+
+  if (gdb_python_module == nullptr
+      || ! PyObject_HasAttrString (gdb_python_module, "_execute_file"))
+    error (_("Installation error: gdb._execute_file function is missing"));
+
+  gdbpy_ref<> return_value
+    (PyObject_CallMethod (gdb_python_module, "_execute_file", "s",
+			  full_path.get ()));
+  if (return_value == nullptr)
     {
-      gdbpy_print_stack ();
-      error (_("Error while opening file: %s"), full_path.get ());
+      /* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
+         behavior of the non-Windows codepath.  */
+      PyErr_PrintEx(0);
     }
 
-  PyRun_SimpleFile (PyFile_AsFile (python_file.get ()), filename);
-
 #endif /* _WIN32 */
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24933, Memory leak in elf_x86_64_get_synthetic_symtab
@ 2019-08-23 10:41 gdb-buildbot
  2019-08-23 11:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-23 10:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2600d80ccd04666f28608364be74d7ee552977ae ***

commit 2600d80ccd04666f28608364be74d7ee552977ae
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Fri Aug 23 19:16:25 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Aug 23 19:29:51 2019 +0930

    PR24933, Memory leak in elf_x86_64_get_synthetic_symtab
    
            PR 24933
            * elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
            on error without freeing plts[] contents.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0eb514d314..b39acb19b2 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-23  Alan Modra  <amodra@gmail.com>
+
+	PR 24933
+	* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
+	on error without freeing plts[] contents.
+
 2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
 
 	* cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 78ed41ad38..634f911ca5 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -2171,17 +2171,18 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *abfd,
 			      bfd_vma);
   bfd_boolean (*valid_plt_reloc_p) (unsigned int);
 
+  dynrelbuf = NULL;
   if (count == 0)
-    return -1;
+    goto bad_return;
 
   dynrelbuf = (arelent **) bfd_malloc (relsize);
   if (dynrelbuf == NULL)
-    return -1;
+    goto bad_return;
 
   dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, dynrelbuf,
 						dynsyms);
   if (dynrelcount <= 0)
-    return -1;
+    goto bad_return;
 
   /* Sort the relocs by address.  */
   qsort (dynrelbuf, dynrelcount, sizeof (arelent *),


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Stop the BFD library from failing when encountering a second set of relocs for the same section.
@ 2019-08-23 13:01 gdb-buildbot
  2019-08-23 13:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-23 13:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a7ba389645d178c43100ec47e513389ae8bf8f93 ***

commit a7ba389645d178c43100ec47e513389ae8bf8f93
Author:     Nick Clifton <nickc@redhat.com>
AuthorDate: Fri Aug 23 13:22:02 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Fri Aug 23 13:22:02 2019 +0100

    Stop the BFD library from failing when encountering a second set of relocs for the same section.
    
            PR 24456
            * elf.c (bfd_section_from_shdr): Issue an informative warning
            message and continue processing other sections after encountering
            a reloc section for a section which already has other relocs
            associated with it.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b39acb19b2..00afa81398 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-23  Nick Clifton  <nickc@redhat.com>
+
+	PR 24456
+	* elf.c (bfd_section_from_shdr): Issue an informative warning
+	message and continue processing other sections after encountering
+	a reloc section for a section which already has other relocs
+	associated with it.
+
 2019-08-23  Alan Modra  <amodra@gmail.com>
 
 	PR 24933
diff --git a/bfd/elf.c b/bfd/elf.c
index 42ae1627ba..5a061c9110 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2466,9 +2466,18 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
 	else
 	  p_hdr = &esdt->rel.hdr;
 
-	/* PR 17512: file: 0b4f81b7.  */
+	/* PR 17512: file: 0b4f81b7.
+	   Also see PR 24456, for a file which deliberately has two reloc
+	   sections.  */
 	if (*p_hdr != NULL)
-	  goto fail;
+	  {
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: warning: multiple relocation sections for section %pA \
+found - ignoring all but the first"),
+	       abfd, target_sect);
+	    goto success;
+	  }
 	hdr2 = (Elf_Internal_Shdr *) bfd_alloc (abfd, sizeof (*hdr2));
 	if (hdr2 == NULL)
 	  goto fail;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] or1k: Fix incorrect value in PLT GOT entries, causing infinite loop
@ 2019-08-23 14:14 gdb-buildbot
  2019-08-23 14:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-23 14:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 09f7b0de537d465fc8ed9f9433e348c1bc78aab2 ***

commit 09f7b0de537d465fc8ed9f9433e348c1bc78aab2
Author:     Stafford Horne <shorne@gmail.com>
AuthorDate: Fri Aug 23 22:25:55 2019 +0900
Commit:     Stafford Horne <shorne@gmail.com>
CommitDate: Fri Aug 23 22:25:55 2019 +0900

    or1k: Fix incorrect value in PLT GOT entries, causing infinite loop
    
    The PLT GOT entry should point to the first PLT entry which contains the
    runtime linker function.  It was pointing back to the symbol PLT entry
    causing an infinite loop.
    
    I found this when testing the OpenRISC glibc port which uses the runtime
    dynamic linker.  It seems other libc's we use so far have not been
    making use of the initial PLT GOT entries.
    
    bfd/ChangeLog:
    
            * elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
            PLT GOT entries.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 00afa81398..981e0cd4e9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-23  Stafford Horne  <shorne@gmail.com>
+
+	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
+	PLT GOT entries.
+
 2019-08-23  Nick Clifton  <nickc@redhat.com>
 
 	PR 24456
diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
index c2069a3180..0d1336ceac 100644
--- a/bfd/elf32-or1k.c
+++ b/bfd/elf32-or1k.c
@@ -2377,8 +2377,11 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,
       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,
 			    plt0, plt1, plt2, OR1K_JR(12));
 
-      /* Fill in the entry in the global offset table.  */
-      bfd_put_32 (output_bfd, plt_addr, sgot->contents + got_offset);
+      /* Fill in the entry in the global offset table.  We initialize it to
+	 point to the top of the plt.  This is done to lazy lookup the actual
+	 symbol as the first plt entry will be setup by libc to call the
+	 runtime dynamic linker.  */
+      bfd_put_32 (output_bfd, plt_base_addr, sgot->contents + got_offset);
 
       /* Fill in the entry in the .rela.plt section.  */
       rela.r_offset = got_addr;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix bug in nios2 prologue analysis.
@ 2019-08-23 16:00 gdb-buildbot
  2019-08-23 16:41 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-23 16:00 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT de8af80891ff0eee61cd219b316e176e9ae88e91 ***

commit de8af80891ff0eee61cd219b316e176e9ae88e91
Author:     Sandra Loosemore <sandra@codesourcery.com>
AuthorDate: Fri Aug 23 08:18:54 2019 -0700
Commit:     Sandra Loosemore <sandra@codesourcery.com>
CommitDate: Fri Aug 23 08:18:54 2019 -0700

    Fix bug in nios2 prologue analysis.
    
    The nios2 prologue analyzer was mistakenly using an unsigned int field
    to represent a 32-bit signed value.  This caused problems with an
    incorrect conversion being applied to negative values when they were
    automatically promoted for addition to a 64-bit CORE_ADDR value.
    
    This patch fixes test failures in gdb.base/large-frame.exp and
    gdb.dwarf2/dw2-ref-missing-frame.exp.  Normally the nios2 backend
    prefers to use the dwarf2 unwinder so the prologue analyzer is only
    invoked if there is no dwarf2 information.
    
    2019-08-23  Sandra Loosemore  <sandra@codesourcery.com>
    
            gdb/
            * nios2-tdep.c (struct reg_value): Improve comments.  Make
            the offset field signed.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ac84245c34..df8488b109 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-23  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* nios2-tdep.c (struct reg_value): Improve comments.  Make
+	the offset field signed.
+
 2019-08-22  Christian Biesinger  <cbiesinger@google.com>
 
 	* python/lib/gdb/__init__.py (_execute_file): New function.
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index 2a21c33b83..8d685d4aca 100644
--- a/gdb/nios2-tdep.c
+++ b/gdb/nios2-tdep.c
@@ -58,13 +58,15 @@ static int nios2_debug = 0;
    analysis; see the reg_value and reg_saved tables in
    struct nios2_unwind_cache, respectively.  */
 
-/* struct reg_value is used to record that a register has the same value
-   as reg at the given offset from the start of a function.  */
+/* struct reg_value is used to record that a register has reg's initial
+   value at the start of a function plus the given constant offset.
+   If reg == 0, then the value is just the offset.
+   If reg < 0, then the value is unknown.  */
 
 struct reg_value
 {
   int reg;
-  unsigned int offset;
+  int offset;
 };
 
 /* struct reg_saved is used to record that a register value has been saved at


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move gdb-dlfcn.[ch] to gdbsupport/
@ 2019-08-23 18:28 gdb-buildbot
  2019-08-23 18:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-23 18:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2d41fa1165c0e28d938ee3bae5c32db371dccf29 ***

commit 2d41fa1165c0e28d938ee3bae5c32db371dccf29
Author:     Sergio Durigan Junior <sergiodj@redhat.com>
AuthorDate: Wed Aug 21 16:22:45 2019 -0400
Commit:     Sergio Durigan Junior <sergiodj@redhat.com>
CommitDate: Fri Aug 23 13:13:18 2019 -0400

    Move gdb-dlfcn.[ch] to gdbsupport/
    
    I need to use 'gdb_dlopen' inside 'gdbsupport/', but it's not yet
    supported there.  This commit moves 'gdb-dlfcn.[ch]' to 'gdbsupport/',
    which makes it available also on gdbserver.
    
    gdb/ChangeLog:
    2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
    
            * configure.ac: Don't check for 'dlfcn.h' (moved to
            gdbsupport/common.m4).
            * Makefile.in (COMMON_SFILES): Move 'gdb-dlfcn.c' to
            'gdbsupport/'.
            (HFILES_NO_SRCDIR): Likewise, for 'gdb-dlfcn.h'.
            * compile/compile-c-support.c: Include
            'gdbsupport/gdb-dlfcn.h'.
            * gdbsupport/common.m4: Check for 'dlfcn.h'.
            * gdb-dlfcn.c: Move to...
            * gdbsupport/gdb-dlfcn.c: ... here.
            * gdb-dlfcn.h: Move to...
            * gdbsupport/gdb-dlfcn.h: ... here.
    
    gdb/gdbserver/ChangeLog:
    2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
    
            * Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
            (OBS): Add 'gdbsupport/gdb-dlfcn.o'.
            * config.in: Regenerate.
            * configure: Regenerate.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index df8488b109..1d85249789 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,18 @@
+2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* configure.ac: Don't check for 'dlfcn.h' (moved to
+	gdbsupport/common.m4).
+	* Makefile.in (COMMON_SFILES): Move 'gdb-dlfcn.c' to
+	'gdbsupport/'.
+	(HFILES_NO_SRCDIR): Likewise, for 'gdb-dlfcn.h'.
+	* compile/compile-c-support.c: Include
+	'gdbsupport/gdb-dlfcn.h'.
+	* gdbsupport/common.m4: Check for 'dlfcn.h'.
+	* gdb-dlfcn.c: Move to...
+	* gdbsupport/gdb-dlfcn.c: ... here.
+	* gdb-dlfcn.h: Move to...
+	* gdbsupport/gdb-dlfcn.h: ... here.
+
 2019-08-23  Sandra Loosemore  <sandra@codesourcery.com>
 
 	* nios2-tdep.c (struct reg_value): Improve comments.  Make
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index d5d095aae4..e7e26a44a0 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -964,6 +964,7 @@ COMMON_SFILES = \
 	gdbsupport/filestuff.c \
 	gdbsupport/format.c \
 	gdbsupport/job-control.c \
+	gdbsupport/gdb-dlfcn.c \
 	gdbsupport/gdb_tilde_expand.c \
 	gdbsupport/gdb_vecs.c \
 	gdbsupport/netstuff.c \
@@ -1028,7 +1029,6 @@ COMMON_SFILES = \
 	frame-unwind.c \
 	gcore.c \
 	gdb_bfd.c \
-	gdb-dlfcn.c \
 	gdb_obstack.c \
 	gdb_regex.c \
 	gdb_usleep.c \
@@ -1262,7 +1262,6 @@ HFILES_NO_SRCDIR = \
 	gcore.h \
 	gdb_bfd.h \
 	gdb_curses.h \
-	gdb-dlfcn.h \
 	gdb_expat.h \
 	gdb_obstack.h \
 	gdb_proc_service.h \
@@ -1460,6 +1459,7 @@ HFILES_NO_SRCDIR = \
 	gdbsupport/environ.h \
 	gdbsupport/fileio.h \
 	gdbsupport/format.h \
+	gdbsupport/gdb-dlfcn.h \
 	gdbsupport/gdb_assert.h \
 	gdbsupport/gdb_tilde_expand.h \
 	gdbsupport/gdb_locale.h \
diff --git a/gdb/compile/compile-c-support.c b/gdb/compile/compile-c-support.c
index a6727e83af..9de827a72c 100644
--- a/gdb/compile/compile-c-support.c
+++ b/gdb/compile/compile-c-support.c
@@ -22,12 +22,12 @@
 #include "compile-c.h"
 #include "compile-cplus.h"
 #include "compile.h"
-#include "gdb-dlfcn.h"
 #include "c-lang.h"
 #include "macrotab.h"
 #include "macroscope.h"
 #include "regcache.h"
 #include "gdbsupport/function-view.h"
+#include "gdbsupport/gdb-dlfcn.h"
 #include "gdbsupport/preprocessor.h"
 #include "gdbarch.h"
 
diff --git a/gdb/configure b/gdb/configure
index cb71bbf057..22a5f6051d 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -12024,8 +12024,7 @@ for ac_header in nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
 		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
 		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
 		  sys/reg.h sys/debugreg.h sys/select.h \
-		  termios.h elf_hp.h \
-		  dlfcn.h
+		  termios.h elf_hp.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -13516,7 +13515,7 @@ $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
   fi
 
 
-  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h
+  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 5a18c16405..9da8818fb5 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1308,8 +1308,7 @@ AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
 		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
 		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
 		  sys/reg.h sys/debugreg.h sys/select.h \
-		  termios.h elf_hp.h \
-		  dlfcn.h])
+		  termios.h elf_hp.h])
 AC_CHECK_HEADERS(sys/user.h, [], [],
 [#if HAVE_SYS_PARAM_H
 # include <sys/param.h>
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index adac3e8c8d..faafdfd967 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,10 @@
+2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
+	(OBS): Add 'gdbsupport/gdb-dlfcn.o'.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
 2019-08-15  Tom Tromey  <tromey@adacore.com>
 
 	* target.c (target_write_memory): Use gdb::byte_vector.
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index ba0356b1d5..ca0a4cbd10 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -210,6 +210,7 @@ SFILES = \
 	$(srcdir)/gdbsupport/fileio.c \
 	$(srcdir)/gdbsupport/filestuff.c \
 	$(srcdir)/gdbsupport/job-control.c \
+	$(srcdir)/gdbsupport/gdb-dlfcn.c \
 	$(srcdir)/gdbsupport/gdb_tilde_expand.c \
 	$(srcdir)/gdbsupport/gdb_vecs.c \
 	$(srcdir)/gdbsupport/netstuff.c \
@@ -255,6 +256,7 @@ OBS = \
 	gdbsupport/fileio.o \
 	gdbsupport/filestuff.o \
 	gdbsupport/format.o \
+	gdbsupport/gdb-dlfcn.o \
 	gdbsupport/gdb_tilde_expand.o \
 	gdbsupport/gdb_vecs.o \
 	gdbsupport/netstuff.o \
diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in
index 3991964f9b..f05e9be48a 100644
--- a/gdb/gdbserver/config.in
+++ b/gdb/gdbserver/config.in
@@ -90,6 +90,9 @@
 /* Define to 1 if you have the `dladdr' function. */
 #undef HAVE_DLADDR
 
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
 /* Define to 1 if the system has the type `Elf32_auxv_t'. */
 #undef HAVE_ELF32_AUXV_T
 
diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
index 7e5be51cb2..692cb0f308 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
@@ -6807,7 +6807,7 @@ $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
   fi
 
 
-  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h
+  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
diff --git a/gdb/gdbsupport/common.m4 b/gdb/gdbsupport/common.m4
index 5701dd9829..903889463f 100644
--- a/gdb/gdbsupport/common.m4
+++ b/gdb/gdbsupport/common.m4
@@ -29,7 +29,8 @@ AC_DEFUN([GDB_AC_COMMON], [
 		   sys/resource.h sys/socket.h dnl
 		   sys/un.h sys/wait.h dnl
 		   thread_db.h wait.h dnl
-		   termios.h)
+		   termios.h dnl
+		   dlfcn.h)
 
   AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction])
 
diff --git a/gdb/gdb-dlfcn.c b/gdb/gdbsupport/gdb-dlfcn.c
similarity index 99%
rename from gdb/gdb-dlfcn.c
rename to gdb/gdbsupport/gdb-dlfcn.c
index 4d060d4eb1..921f10f3d8 100644
--- a/gdb/gdb-dlfcn.c
+++ b/gdb/gdbsupport/gdb-dlfcn.c
@@ -17,7 +17,7 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#include "defs.h"
+#include "common-defs.h"
 #include "gdb-dlfcn.h"
 
 #ifdef HAVE_DLFCN_H
diff --git a/gdb/gdb-dlfcn.h b/gdb/gdbsupport/gdb-dlfcn.h
similarity index 100%
rename from gdb/gdb-dlfcn.h
rename to gdb/gdbsupport/gdb-dlfcn.h
diff --git a/gdb/jit.c b/gdb/jit.c
index 87f8d8f885..5fef03700c 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -36,7 +36,7 @@
 #include "symfile.h"
 #include "symtab.h"
 #include "target.h"
-#include "gdb-dlfcn.h"
+#include "gdbsupport/gdb-dlfcn.h"
 #include <sys/stat.h>
 #include "gdb_bfd.h"
 #include "readline/tilde.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64 segfault in ppc64_elf_edit_toc
@ 2019-08-24  1:17 gdb-buildbot
  2019-08-24  1:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-24  1:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6d5554a605a8ce908ba04b00fd960d02ca9fc613 ***

commit 6d5554a605a8ce908ba04b00fd960d02ca9fc613
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Sat Aug 24 09:59:03 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Sat Aug 24 10:05:40 2019 +0930

    PowerPC64 segfault in ppc64_elf_edit_toc
    
    Found on a GOT reference to __ehdr_start, which is tweaked to be
    undefined weak at some stages of linking.  SYMBOL_REFERENCES_LOCAL
    isn't a sufficient test.
    
            * elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
            symbols from GOT optimisation.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 981e0cd4e9..9f7a8cfc6a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-24  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
+	symbols from GOT optimisation.
+
 2019-08-23  Stafford Horne  <shorne@gmail.com>
 
 	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 60918d91a1..4eba829450 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -9112,6 +9112,11 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 			      r_symndx, ibfd))
 		goto got_error_ret;
 
+	      if (sym_sec == NULL
+		  || sym_sec->output_section == NULL
+		  || discarded_section (sym_sec))
+		continue;
+
 	      if (!SYMBOL_REFERENCES_LOCAL (info, h))
 		continue;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix compile warning in symtab.c
@ 2019-08-24 22:23 gdb-buildbot
  2019-08-24 23:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-24 22:23 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d0509ba44323dc5550852f0dbdcb2ccc2818d5b3 ***

commit d0509ba44323dc5550852f0dbdcb2ccc2818d5b3
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Fri Aug 9 14:25:15 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Sat Aug 24 16:45:59 2019 -0500

    Fix compile warning in symtab.c
    
    My compiler (g++ 8.2) can't tell that *bsc_ptr and *slot_ptr are
    only used in the cases when it does get initialized. Just initialize
    the vars earlier to avoid the warning, there does not seem to be a
    downside to it.
    
    ../../gdb/symtab.c: In function block_symbol lookup_static_symbol(const char*, domain_enum):
    ../../gdb/symtab.c:1366:11: warning: slot may be used uninitialized in this function [-Wmaybe-uninitialized]
         xfree (slot->value.not_found.name);
         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../gdb/symtab.c:2578:29: note: slot was declared here
       struct symbol_cache_slot *slot;
                                 ^~~~
    ../../gdb/symtab.c:1405:3: warning: bsc may be used uninitialized in this function [-Wmaybe-uninitialized]
       if (bsc == NULL)
       ^~
    ../../gdb/symtab.c:2577:30: note: bsc was declared here
       struct block_symbol_cache *bsc;
                                  ^~~
    ../../gdb/symtab.c: In function block_symbol lookup_global_symbol(const char*, const block*, domain_enum):
    ../../gdb/symtab.c:1366:11: warning: slot may be used uninitialized in this function [-Wmaybe-uninitialized]
         xfree (slot->value.not_found.name);
         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../gdb/symtab.c:2658:29: note: slot was declared here
       struct symbol_cache_slot *slot;
                                 ^~~~
    ../../gdb/symtab.c:1409:14: warning: bsc may be used uninitialized in this function [-Wmaybe-uninitialized]
           ++bsc->collisions;
             ~~~~~^~~~~~~~~~
    ../../gdb/symtab.c:2657:30: note: bsc was declared here
       struct block_symbol_cache *bsc;
                                  ^~~
    
    gdb/ChangeLog:
    
    2019-08-22  Christian Biesinger  <cbiesinger@google.com>
    
            * symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and *slot_ptr.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1d85249789..073ed74b4f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and
+	*slot_ptr.
+
 2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	* configure.ac: Don't check for 'dlfcn.h' (moved to
diff --git a/gdb/symtab.c b/gdb/symtab.c
index cd208ab921..d85c77b4ce 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1297,9 +1297,8 @@ set_symbol_cache_size_handler (const char *args, int from_tty,
    The result is the symbol if found, SYMBOL_LOOKUP_FAILED if a previous lookup
    failed (and thus this one will too), or NULL if the symbol is not present
    in the cache.
-   If the symbol is not present in the cache, then *BSC_PTR and *SLOT_PTR are
-   set to the cache and slot of the symbol to save the result of a full lookup
-   attempt.  */
+   *BSC_PTR and *SLOT_PTR are set to the cache and slot of the symbol, which
+   can be used to save the result of a full lookup attempt.  */
 
 static struct block_symbol
 symbol_cache_lookup (struct symbol_cache *cache,
@@ -1326,6 +1325,9 @@ symbol_cache_lookup (struct symbol_cache *cache,
   hash = hash_symbol_entry (objfile_context, name, domain);
   slot = bsc->symbols + hash % bsc->size;
 
+  *bsc_ptr = bsc;
+  *slot_ptr = slot;
+
   if (eq_symbol_entry (slot, objfile_context, name, domain))
     {
       if (symbol_lookup_debug)
@@ -1343,9 +1345,6 @@ symbol_cache_lookup (struct symbol_cache *cache,
 
   /* Symbol is not present in the cache.  */
 
-  *bsc_ptr = bsc;
-  *slot_ptr = slot;
-
   if (symbol_lookup_debug)
     {
       fprintf_unfiltered (gdb_stdlog,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert the RX target to make use of target descriptions.
@ 2019-08-25 11:38 gdb-buildbot
  2019-08-25 11:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-25 11:38 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e3ec872f8012377e50f0c9c888d2bc3163a356b2 ***

commit e3ec872f8012377e50f0c9c888d2bc3163a356b2
Author:     Yoshinori Sato <ysato@users.sourceforge.jp>
AuthorDate: Wed Aug 21 00:24:37 2019 +0900
Commit:     Yoshinori Sato <ysato@users.sourceforge.jp>
CommitDate: Sun Aug 25 17:00:08 2019 +0900

    Convert the RX target to make use of target descriptions.
    
    gdb/ChangeLog
    
    2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
    
            * gdb/rx-tdep.c (rx_register_names): New.
            (rx_register_name): Delete.
            (rx_psw_type): Delete.
            (rx_fpsw_type): Delete.
            (rx_register_type): Delete.
            (rx_gdbarch_init): Convert target-descriptions.
            (_initialize_rx_tdep): Add initialize_tdesc_rx.
            * gdb/features/Makefile: Add rx.xml.
            * gdb/features/rx.xml: New.
            * gdb/features/rx.c: Generated.
            * gdb/NEWS: Mention target description support.
    
    gdb/doc/ChangeLog:
    
    2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
    
            * gdb.texinfo (Standard Target Features): Add RX Features sub-section.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 073ed74b4f..cbb83347f1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
+
+        * gdb/rx-tdep.c (rx_register_names): New.
+        (rx_register_name): Delete.
+        (rx_psw_type): Delete.
+        (rx_fpsw_type): Delete.
+        (rx_register_type): Delete.
+        (rx_gdbarch_init): Convert target-descriptions.
+        (_initialize_rx_tdep): Add initialize_tdesc_rx.
+        * gdb/features/Makefile: Add rx.xml.
+        * gdb/features/rx.xml: New.
+        * gdb/features/rx.c: Generated.
+        * gdb/NEWS: Mention target description support.
+
 2019-08-22  Christian Biesinger  <cbiesinger@google.com>
 
 	* symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and
diff --git a/gdb/NEWS b/gdb/NEWS
index 0a4e0f260f..0d78237085 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -27,6 +27,8 @@
   provide the exitcode or exit status of the shell commands launched by
   GDB commands such as "shell", "pipe" and "make".
 
+* The RX port now supports XML target descriptions.
+
 * Python API
 
   ** The gdb.Value type has a new method 'format_string' which returns a
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 339f3375e0..7fa73fb40f 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
+
+        * gdb.texinfo (Standard Target Features): Add RX Features sub-section.
+
 2019-08-16  Alan Hayward  <alan.hayward@arm.com>
 
 	* gdb.texinfo (AArch64 Pointer Authentication)
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index bcf0420779..e1bc8143e6 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -44084,6 +44084,7 @@ registers using the capitalization used in the description.
 * OpenRISC 1000 Features::
 * PowerPC Features::
 * RISC-V Features::
+* RX Features::
 * S/390 and System z Features::
 * Sparc Features::
 * TIC6x Features::
@@ -44514,6 +44515,15 @@ target has floating point hardware, but can be moved into the csr
 feature if the target has the floating point control registers, but no
 other floating point hardware.
 
+@node RX Features
+@subsection RX Features
+@cindex target descriptions, RX Features
+
+The @samp{org.gnu.gdb.rx.core} feature is required for RX
+targets.  It should contain the registers @samp{r0} through
+@samp{r15}, @samp{usp}, @samp{isp}, @samp{psw}, @samp{pc}, @samp{intb},
+@samp{bpsw}, @samp{bpc}, @samp{fintv}, @samp{fpsw}, and @samp{acc}.
+
 @node S/390 and System z Features
 @subsection S/390 and System z Features
 @cindex target descriptions, S/390 features
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 0c84faf405..2b65d46df0 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -161,6 +161,7 @@ XMLTOC = \
 	rs6000/powerpc-vsx64.xml \
 	rs6000/powerpc-vsx64l.xml \
 	rs6000/rs6000.xml \
+	rx.xml \
 	s390-linux32.xml \
 	s390-linux32v1.xml \
 	s390-linux32v2.xml \
@@ -238,6 +239,7 @@ FEATURE_XMLFILES = aarch64-core.xml \
 	riscv/64bit-cpu.xml \
 	riscv/64bit-csr.xml \
 	riscv/64bit-fpu.xml \
+	rx.xml \
 	tic6x-c6xp.xml \
 	tic6x-core.xml \
 	tic6x-gp.xml
diff --git a/gdb/features/rx.c b/gdb/features/rx.c
new file mode 100644
index 0000000000..d2c29c126f
--- /dev/null
+++ b/gdb/features/rx.c
@@ -0,0 +1,80 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: rx.xml.tmp */
+
+#include "defs.h"
+#include "osabi.h"
+#include "target-descriptions.h"
+
+struct target_desc *tdesc_rx;
+static void
+initialize_tdesc_rx (void)
+{
+  struct target_desc *result = allocate_target_description ();
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.rx.core");
+  tdesc_type_with_fields *type_with_fields;
+  type_with_fields = tdesc_create_flags (feature, "psw_flags", 4);
+  tdesc_add_flag (type_with_fields, 0, "C");
+  tdesc_add_flag (type_with_fields, 1, "Z");
+  tdesc_add_flag (type_with_fields, 2, "S");
+  tdesc_add_flag (type_with_fields, 3, "O");
+  tdesc_add_flag (type_with_fields, 16, "I");
+  tdesc_add_flag (type_with_fields, 17, "U");
+  tdesc_add_flag (type_with_fields, 20, "PM");
+  tdesc_add_flag (type_with_fields, 24, "IPL0");
+  tdesc_add_flag (type_with_fields, 25, "IPL1");
+  tdesc_add_flag (type_with_fields, 26, "IPL2");
+  tdesc_add_flag (type_with_fields, 27, "IPL3");
+
+  type_with_fields = tdesc_create_flags (feature, "fpsw_flags", 4);
+  tdesc_add_flag (type_with_fields, 0, "RM0");
+  tdesc_add_flag (type_with_fields, 1, "RM1");
+  tdesc_add_flag (type_with_fields, 2, "CV");
+  tdesc_add_flag (type_with_fields, 3, "CO");
+  tdesc_add_flag (type_with_fields, 4, "CZ");
+  tdesc_add_flag (type_with_fields, 5, "CU");
+  tdesc_add_flag (type_with_fields, 6, "CX");
+  tdesc_add_flag (type_with_fields, 7, "CE");
+  tdesc_add_flag (type_with_fields, 8, "DN");
+  tdesc_add_flag (type_with_fields, 10, "EV");
+  tdesc_add_flag (type_with_fields, 11, "EO");
+  tdesc_add_flag (type_with_fields, 12, "EZ");
+  tdesc_add_flag (type_with_fields, 13, "EU");
+  tdesc_add_flag (type_with_fields, 14, "EX");
+  tdesc_add_flag (type_with_fields, 26, "FV");
+  tdesc_add_flag (type_with_fields, 27, "FO");
+  tdesc_add_flag (type_with_fields, 28, "FZ");
+  tdesc_add_flag (type_with_fields, 29, "FU");
+  tdesc_add_flag (type_with_fields, 30, "FX");
+  tdesc_add_flag (type_with_fields, 31, "FS");
+
+  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "usp", 16, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "isp", 17, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "psw", 18, 1, NULL, 32, "psw_flags");
+  tdesc_create_reg (feature, "pc", 19, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "intb", 20, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "bpsw", 21, 1, NULL, 32, "psw_flags");
+  tdesc_create_reg (feature, "bpc", 22, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "fintv", 23, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "fpsw", 24, 1, NULL, 32, "fpsw_flags");
+  tdesc_create_reg (feature, "acc", 25, 1, NULL, 64, "uint64");
+
+  tdesc_rx = result;
+}
diff --git a/gdb/features/rx.xml b/gdb/features/rx.xml
new file mode 100644
index 0000000000..597f92974b
--- /dev/null
+++ b/gdb/features/rx.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2019 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.rx.core">
+  <reg name="r0" bitsize="32" type="data_ptr"/>
+  <reg name="r1" bitsize="32" type="uint32"/>
+  <reg name="r2" bitsize="32" type="uint32"/>
+  <reg name="r3" bitsize="32" type="uint32"/>
+  <reg name="r4" bitsize="32" type="uint32"/>
+  <reg name="r5" bitsize="32" type="uint32"/>
+  <reg name="r6" bitsize="32" type="uint32"/>
+  <reg name="r7" bitsize="32" type="uint32"/>
+  <reg name="r8" bitsize="32" type="uint32"/>
+  <reg name="r9" bitsize="32" type="uint32"/>
+  <reg name="r10" bitsize="32" type="uint32"/>
+  <reg name="r11" bitsize="32" type="uint32"/>
+  <reg name="r12" bitsize="32" type="uint32"/>
+  <reg name="r13" bitsize="32" type="uint32"/>
+  <reg name="r14" bitsize="32" type="uint32"/>
+  <reg name="r15" bitsize="32" type="uint32"/>
+
+  <flags id="psw_flags" size="4">
+    <field name="C" start="0" end="0"/>
+    <field name="Z" start="1" end="1"/>
+    <field name="S" start="2" end="2"/>
+    <field name="O" start="3" end="3"/>
+    <field name="I" start="16" end="16"/>
+    <field name="U" start="17" end="17"/>
+    <field name="PM" start="20" end="20"/>
+    <field name="IPL0" start="24" end="24"/>
+    <field name="IPL1" start="25" end="25"/>
+    <field name="IPL2" start="26" end="26"/>
+    <field name="IPL3" start="27" end="27"/>
+  </flags>
+
+  <flags id="fpsw_flags" size="4">
+    <field name="RM0" start="0" end="0"/>
+    <field name="RM1" start="1" end="1"/>
+    <field name="CV" start="2" end="2"/>
+    <field name="CO" start="3" end="3"/>
+    <field name="CZ" start="4" end="4"/>
+    <field name="CU" start="5" end="5"/>
+    <field name="CX" start="6" end="6"/>
+    <field name="CE" start="7" end="7"/>
+    <field name="DN" start="8" end="8"/>
+    <field name="EV" start="10" end="10"/>
+    <field name="EO" start="11" end="11"/>
+    <field name="EZ" start="12" end="12"/>
+    <field name="EU" start="13" end="13"/>
+    <field name="EX" start="14" end="14"/>
+    <field name="FV" start="26" end="26"/>
+    <field name="FO" start="27" end="27"/>
+    <field name="FZ" start="28" end="28"/>
+    <field name="FU" start="29" end="29"/>
+    <field name="FX" start="30" end="30"/>
+    <field name="FS" start="31" end="31"/>
+  </flags>
+
+  <reg name="usp" bitsize="32" type="data_ptr"/>
+  <reg name="isp" bitsize="32" type="data_ptr"/>
+  <reg name="psw" bitsize="32" type="psw_flags"/>
+  <reg name="pc" bitsize="32" type="code_ptr"/>
+  <reg name="intb" bitsize="32" type="data_ptr"/>
+  <reg name="bpsw" bitsize="32" type="psw_flags"/>
+  <reg name="bpc" bitsize="32" type="code_ptr"/>
+  <reg name="fintv" bitsize="32" type="code_ptr"/>
+  <reg name="fpsw" bitsize="32" type="fpsw_flags"/>
+  <reg name="acc" bitsize="64" type="uint64"/>
+</feature>
diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c
index 4cbf919db9..45cc8b4535 100644
--- a/gdb/rx-tdep.c
+++ b/gdb/rx-tdep.c
@@ -33,11 +33,15 @@
 #include "value.h"
 #include "gdbcore.h"
 #include "dwarf2-frame.h"
+#include "remote.h"
+#include "target-descriptions.h"
 
 #include "elf/rx.h"
 #include "elf-bfd.h"
 #include <algorithm>
 
+#include "features/rx.c"
+
 /* Certain important register numbers.  */
 enum
 {
@@ -114,117 +118,13 @@ struct rx_prologue
   int reg_offset[RX_NUM_REGS];
 };
 
-/* Implement the "register_name" gdbarch method.  */
-static const char *
-rx_register_name (struct gdbarch *gdbarch, int regnr)
-{
-  static const char *const reg_names[] = {
-    "r0",
-    "r1",
-    "r2",
-    "r3",
-    "r4",
-    "r5",
-    "r6",
-    "r7",
-    "r8",
-    "r9",
-    "r10",
-    "r11",
-    "r12",
-    "r13",
-    "r14",
-    "r15",
-    "usp",
-    "isp",
-    "psw",
-    "pc",
-    "intb",
-    "bpsw",
-    "bpc",
-    "fintv",
-    "fpsw",
-    "acc"
-  };
-
-  return reg_names[regnr];
-}
-
-/* Construct the flags type for PSW and BPSW.  */
-
-static struct type *
-rx_psw_type (struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  if (tdep->rx_psw_type == NULL)
-    {
-      tdep->rx_psw_type = arch_flags_type (gdbarch, "rx_psw_type", 32);
-      append_flags_type_flag (tdep->rx_psw_type, 0, "C");
-      append_flags_type_flag (tdep->rx_psw_type, 1, "Z");
-      append_flags_type_flag (tdep->rx_psw_type, 2, "S");
-      append_flags_type_flag (tdep->rx_psw_type, 3, "O");
-      append_flags_type_flag (tdep->rx_psw_type, 16, "I");
-      append_flags_type_flag (tdep->rx_psw_type, 17, "U");
-      append_flags_type_flag (tdep->rx_psw_type, 20, "PM");
-      append_flags_type_flag (tdep->rx_psw_type, 24, "IPL0");
-      append_flags_type_flag (tdep->rx_psw_type, 25, "IPL1");
-      append_flags_type_flag (tdep->rx_psw_type, 26, "IPL2");
-      append_flags_type_flag (tdep->rx_psw_type, 27, "IPL3");
-    }
-  return tdep->rx_psw_type;
-}
-
-/* Construct flags type for FPSW.  */
-
-static struct type *
-rx_fpsw_type (struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  if (tdep->rx_fpsw_type == NULL)
-    {
-      tdep->rx_fpsw_type = arch_flags_type (gdbarch, "rx_fpsw_type", 32);
-      append_flags_type_flag (tdep->rx_fpsw_type, 0, "RM0");
-      append_flags_type_flag (tdep->rx_fpsw_type, 1, "RM1");
-      append_flags_type_flag (tdep->rx_fpsw_type, 2, "CV");
-      append_flags_type_flag (tdep->rx_fpsw_type, 3, "CO");
-      append_flags_type_flag (tdep->rx_fpsw_type, 4, "CZ");
-      append_flags_type_flag (tdep->rx_fpsw_type, 5, "CU");
-      append_flags_type_flag (tdep->rx_fpsw_type, 6, "CX");
-      append_flags_type_flag (tdep->rx_fpsw_type, 7, "CE");
-      append_flags_type_flag (tdep->rx_fpsw_type, 8, "DN");
-      append_flags_type_flag (tdep->rx_fpsw_type, 10, "EV");
-      append_flags_type_flag (tdep->rx_fpsw_type, 11, "EO");
-      append_flags_type_flag (tdep->rx_fpsw_type, 12, "EZ");
-      append_flags_type_flag (tdep->rx_fpsw_type, 13, "EU");
-      append_flags_type_flag (tdep->rx_fpsw_type, 14, "EX");
-      append_flags_type_flag (tdep->rx_fpsw_type, 26, "FV");
-      append_flags_type_flag (tdep->rx_fpsw_type, 27, "FO");
-      append_flags_type_flag (tdep->rx_fpsw_type, 28, "FZ");
-      append_flags_type_flag (tdep->rx_fpsw_type, 29, "FU");
-      append_flags_type_flag (tdep->rx_fpsw_type, 30, "FX");
-      append_flags_type_flag (tdep->rx_fpsw_type, 31, "FS");
-    }
-
-  return tdep->rx_fpsw_type;
-}
-
-/* Implement the "register_type" gdbarch method.  */
-static struct type *
-rx_register_type (struct gdbarch *gdbarch, int reg_nr)
-{
-  if (reg_nr == RX_PC_REGNUM)
-    return builtin_type (gdbarch)->builtin_func_ptr;
-  else if (reg_nr == RX_PSW_REGNUM || reg_nr == RX_BPSW_REGNUM)
-    return rx_psw_type (gdbarch);
-  else if (reg_nr == RX_FPSW_REGNUM)
-    return rx_fpsw_type (gdbarch);
-  else if (reg_nr == RX_ACC_REGNUM)
-    return builtin_type (gdbarch)->builtin_unsigned_long_long;
-  else
-    return builtin_type (gdbarch)->builtin_unsigned_long;
-}
+/* RX register names */
+static const char *const rx_register_names[] = {
+  "r0",  "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7",
+  "r8",  "r9",  "r10", "r11", "r12", "r13", "r14", "r15",
+  "usp", "isp", "psw", "pc",  "intb", "bpsw","bpc","fintv",
+  "fpsw", "acc",
+};
 
 
 /* Function for finding saved registers in a 'struct pv_area'; this
@@ -1044,6 +944,8 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   struct gdbarch *gdbarch;
   struct gdbarch_tdep *tdep;
   int elf_flags;
+  struct tdesc_arch_data *tdesc_data = NULL;
+  const struct target_desc *tdesc = info.target_desc;
 
   /* Extract the elf_flags if available.  */
   if (info.abfd != NULL
@@ -1065,16 +967,42 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       return arches->gdbarch;
     }
 
-  /* None found, create a new architecture from the information
-     provided.  */
+  if (tdesc == NULL)
+      tdesc = tdesc_rx;
+
+  /* Check any target description for validity.  */
+  if (tdesc_has_registers (tdesc))
+    {
+      const struct tdesc_feature *feature;
+      bool valid_p = true;
+
+      feature = tdesc_find_feature (tdesc, "org.gnu.gdb.rx.core");
+
+      if (feature != NULL)
+	{
+	  tdesc_data = tdesc_data_alloc ();
+	  for (int i = 0; i < RX_NUM_REGS; i++)
+	    valid_p &= tdesc_numbered_register (feature, tdesc_data, i,
+                                            rx_register_names[i]);
+	}
+
+      if (!valid_p)
+	{
+	  tdesc_data_cleanup (tdesc_data);
+	  return NULL;
+	}
+    }
+
+  gdb_assert(tdesc_data != NULL);
+
   tdep = XCNEW (struct gdbarch_tdep);
   gdbarch = gdbarch_alloc (&info, tdep);
   tdep->elf_flags = elf_flags;
 
   set_gdbarch_num_regs (gdbarch, RX_NUM_REGS);
+  tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+
   set_gdbarch_num_pseudo_regs (gdbarch, 0);
-  set_gdbarch_register_name (gdbarch, rx_register_name);
-  set_gdbarch_register_type (gdbarch, rx_register_type);
   set_gdbarch_pc_regnum (gdbarch, RX_PC_REGNUM);
   set_gdbarch_sp_regnum (gdbarch, RX_SP_REGNUM);
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
@@ -1092,6 +1020,7 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_ptr_bit (gdbarch, 32);
   set_gdbarch_float_bit (gdbarch, 32);
   set_gdbarch_float_format (gdbarch, floatformats_ieee_single);
+
   if (elf_flags & E_FLAG_RX_64BIT_DOUBLES)
     {
       set_gdbarch_double_bit (gdbarch, 64);
@@ -1132,4 +1061,5 @@ void
 _initialize_rx_tdep (void)
 {
   register_gdbarch_init (bfd_arch_rx, rx_gdbarch_init);
+  initialize_tdesc_rx ();
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] dwarf2read: replace gdb::optional<bool> with enum
@ 2019-08-25 23:11 gdb-buildbot
  2019-08-26  1:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-25 23:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT beadd3e84ed8e652015f07eb4734a6d3b17e79cb ***

commit beadd3e84ed8e652015f07eb4734a6d3b17e79cb
Author:     Simon Marchi <simon.marchi@efficios.com>
AuthorDate: Sun Aug 25 18:09:47 2019 -0400
Commit:     Simon Marchi <simon.marchi@efficios.com>
CommitDate: Sun Aug 25 18:09:47 2019 -0400

    dwarf2read: replace gdb::optional<bool> with enum
    
    gdb::optional<bool> is dangerous, because it's easy to do:
    
      if (opt_bool)
    
    when you actually meant
    
      if (*opt_bool)
    
    or vice-versa.  The first checks if the optional is set, the second
    checks if the wrapped bool is true.
    
    Replace it with an enum that explicitly defines the three possible
    states.
    
    gdb/ChangeLog:
    
            * dwarf2read.c (dw2_debug_names_iterator::next): Use enum to
            represent whether the symbol is static, dynamic, or we don't
            know.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cbb83347f1..5f64ca6d4a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (dw2_debug_names_iterator::next): Use enum to
+	represent whether the symbol is static, dynamic, or we don't
+	know.
+
 2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
 
         * gdb/rx-tdep.c (rx_register_names): New.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index de9755f6ce..a0b989fd0c 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -5843,7 +5843,11 @@ dw2_debug_names_iterator::next ()
       return NULL;
     }
   const mapped_debug_names::index_val &indexval = indexval_it->second;
-  gdb::optional<bool> is_static;
+  enum class symbol_linkage {
+    unknown,
+    static_,
+    extern_,
+  } symbol_linkage = symbol_linkage::unknown;
   dwarf2_per_cu_data *per_cu = NULL;
   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
     {
@@ -5895,12 +5899,12 @@ dw2_debug_names_iterator::next ()
 	case DW_IDX_GNU_internal:
 	  if (!m_map.augmentation_is_gdb)
 	    break;
-	  is_static = true;
+	  symbol_linkage = symbol_linkage::static_;
 	  break;
 	case DW_IDX_GNU_external:
 	  if (!m_map.augmentation_is_gdb)
 	    break;
-	  is_static = false;
+	  symbol_linkage = symbol_linkage::extern_;
 	  break;
 	}
     }
@@ -5910,10 +5914,11 @@ dw2_debug_names_iterator::next ()
     goto again;
 
   /* Check static vs global.  */
-  if (is_static.has_value () && m_block_index.has_value ())
+  if (symbol_linkage != symbol_linkage::unknown && m_block_index.has_value ())
     {
 	const bool want_static = *m_block_index == STATIC_BLOCK;
-	if (want_static != *is_static)
+	const bool symbol_is_static = symbol_linkage == symbol_linkage::static_;
+	if (want_static != symbol_is_static)
 	  goto again;
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] dwarf2read: fix compilation issue with gcc 4.8
@ 2019-08-26  2:14 gdb-buildbot
  2019-08-26  2:49 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-26  2:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 23c13d42999cdcf9d224f089891fd3f3c8bdc6aa ***

commit 23c13d42999cdcf9d224f089891fd3f3c8bdc6aa
Author:     Simon Marchi <simon.marchi@efficios.com>
AuthorDate: Sun Aug 25 21:30:02 2019 -0400
Commit:     Simon Marchi <simon.marchi@efficios.com>
CommitDate: Sun Aug 25 21:30:12 2019 -0400

    dwarf2read: fix compilation issue with gcc 4.8
    
    gcc 4.8 (and probably other versions too) doesn't like that the local
    variable symbol_linkage has the same name as the enum class defined in
    the same context:
    
          CXX    dwarf2read.o
        /home/smarchi/src/binutils-gdb/gdb/dwarf2read.c: In member function dwarf2_per_cu_data* dw2_debug_names_iterator::next():
        /home/smarchi/src/binutils-gdb/gdb/dwarf2read.c:5850:22: error: symbol_linkage is not a class, namespace, or enumeration
           } symbol_linkage = symbol_linkage::unknown;
                          ^
    
    Rename the local variable to avoid this.
    
    This problem was originally reported with the Netbsd builder on the
    buildbot, which uses gcc 5.5, I believe.  I am not able to test it on
    that builder right now, but chances are that the fix will work there
    too.
    
    gdb/ChangeLog:
    
            * dwarf2read.c (dw2_debug_names_iterator::next): Rename local
            variable symbol_linkage to symbol_linkage_.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5f64ca6d4a..d4b1e539c3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (dw2_debug_names_iterator::next): Rename local
+	variable symbol_linkage to symbol_linkage_.
+
 2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
 
 	* dwarf2read.c (dw2_debug_names_iterator::next): Use enum to
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index a0b989fd0c..af4af195a0 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -5847,7 +5847,7 @@ dw2_debug_names_iterator::next ()
     unknown,
     static_,
     extern_,
-  } symbol_linkage = symbol_linkage::unknown;
+  } symbol_linkage_ = symbol_linkage::unknown;
   dwarf2_per_cu_data *per_cu = NULL;
   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
     {
@@ -5899,12 +5899,12 @@ dw2_debug_names_iterator::next ()
 	case DW_IDX_GNU_internal:
 	  if (!m_map.augmentation_is_gdb)
 	    break;
-	  symbol_linkage = symbol_linkage::static_;
+	  symbol_linkage_ = symbol_linkage::static_;
 	  break;
 	case DW_IDX_GNU_external:
 	  if (!m_map.augmentation_is_gdb)
 	    break;
-	  symbol_linkage = symbol_linkage::extern_;
+	  symbol_linkage_ = symbol_linkage::extern_;
 	  break;
 	}
     }
@@ -5914,10 +5914,11 @@ dw2_debug_names_iterator::next ()
     goto again;
 
   /* Check static vs global.  */
-  if (symbol_linkage != symbol_linkage::unknown && m_block_index.has_value ())
+  if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
     {
 	const bool want_static = *m_block_index == STATIC_BLOCK;
-	const bool symbol_is_static = symbol_linkage == symbol_linkage::static_;
+	const bool symbol_is_static =
+	  symbol_linkage_ == symbol_linkage::static_;
 	if (want_static != symbol_is_static)
 	  goto again;
     }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use raw strings on gdb.python/py-xmethods.exp (and fix Python 3.8's "SyntaxWarning: invalid escape sequence")
@ 2019-08-26 13:56 gdb-buildbot
  2019-08-26 14:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-26 13:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d9c4ba536c522b8dc2194d4100270a159be7894a ***

commit d9c4ba536c522b8dc2194d4100270a159be7894a
Author:     Sergio Durigan Junior <sergiodj@redhat.com>
AuthorDate: Sun Aug 25 12:10:35 2019 -0400
Commit:     Sergio Durigan Junior <sergiodj@redhat.com>
CommitDate: Mon Aug 26 09:18:37 2019 -0400

    Use raw strings on gdb.python/py-xmethods.exp (and fix Python 3.8's "SyntaxWarning: invalid escape sequence")
    
    The way unrecognized escape sequences are handled has changed in
    Python 3.8: users now see a SyntaxWarning message, which will
    eventually become a SyntaxError in future versions of Python:
    
      (gdb) source /blabla/gdb.python/py-xmethods/py-xmethods.py
      /blabla/gdb.python/py-xmethods/py-xmethods.py:204: SyntaxWarning: invalid escape seque
      nce \+
        'operator\+',
      /blabla/gdb.python/py-xmethods/py-xmethods.py:211: SyntaxWarning: invalid escape seque
      nce \+
        'operator\+\+',
    
    One of our testcases, gdb.python/py-xmethods.exp, contains strings in
    the form of "operator\+".  This is not recognized by Python, but is
    still needed by the testsuite to work properly.  The solution is
    simple: we just have to make sure these strings are marked as
    raw (i.e, r"").  This is what this patch does.  I took the opportunity
    to also convert other strings to raw, which, in two cases, allowed the
    removal of an extra backslash.
    
    I tested this using Python 3.7 and Python 3.8, and everything works
    fine.
    
    I think I could push this as obvious, but decided to send it to
    gdb-patches just in case.
    
    gdb/testsuite/ChangeLog:
    2019-08-26  Sergio Durigan Junior  <sergiodj@redhat.com>
    
            * gdb.python/py-xmethods.exp: Use raw strings when passing
            arguments to SimpleXMethodMatcher.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 639bea20e7..e8445f8e88 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdb.python/py-xmethods.exp: Use raw strings when passing
+	arguments to SimpleXMethodMatcher.
+
 2019-08-22  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.multi/multi-term-settings.exp (coretest): Make gdb_test messages
diff --git a/gdb/testsuite/gdb.python/py-xmethods.py b/gdb/testsuite/gdb.python/py-xmethods.py
index 587842d736..cea48b80d8 100644
--- a/gdb/testsuite/gdb.python/py-xmethods.py
+++ b/gdb/testsuite/gdb.python/py-xmethods.py
@@ -199,34 +199,34 @@ class G_methods_matcher(XMethodMatcher):
 
 
 global_dm_list = [
-    SimpleXMethodMatcher('A_plus_A',
-                         '^dop::A$',
-                         'operator\+',
+    SimpleXMethodMatcher(r'A_plus_A',
+                         r'^dop::A$',
+                         r'operator\+',
                          A_plus_A,
                          # This is a replacement, hence match the arg type
                          # exactly!
                          type_A.const().reference()),
-    SimpleXMethodMatcher('plus_plus_A',
-                         '^dop::A$',
-                         'operator\+\+',
+    SimpleXMethodMatcher(r'plus_plus_A',
+                         r'^dop::A$',
+                         r'operator\+\+',
                          plus_plus_A),
-    SimpleXMethodMatcher('A_geta',
-                         '^dop::A$',
-                         '^geta$',
+    SimpleXMethodMatcher(r'A_geta',
+                         r'^dop::A$',
+                         r'^geta$',
                          A_geta),
-    SimpleXMethodMatcher('A_getarrayind',
-                         '^dop::A$',
-                         '^getarrayind$',
+    SimpleXMethodMatcher(r'A_getarrayind',
+                         r'^dop::A$',
+                         r'^getarrayind$',
                          A_getarrayind,
                          type_int),
-    SimpleXMethodMatcher('A_indexoper',
-                         '^dop::A$',
-                         'operator\\[\\]',
+    SimpleXMethodMatcher(r'A_indexoper',
+                         r'^dop::A$',
+                         r'operator\[\]',
                          A_indexoper,
                          type_int),
-    SimpleXMethodMatcher('B_indexoper',
-                         '^dop::B$',
-                         'operator\\[\\]',
+    SimpleXMethodMatcher(r'B_indexoper',
+                         r'^dop::B$',
+                         r'operator\[\]',
                          B_indexoper,
                          type_int)
 ]


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Make skip_libstdcxx_probe_tests return 1 if true
@ 2019-08-26 17:29 gdb-buildbot
  2019-08-26 17:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-26 17:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b694989f508a83dd7c1f5d0d08716439d312e1cb ***

commit b694989f508a83dd7c1f5d0d08716439d312e1cb
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Mon Aug 26 18:48:02 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Mon Aug 26 18:48:02 2019 +0200

    [gdb/testsuite] Make skip_libstdcxx_probe_tests return 1 if true
    
    The tcl proc skip_libstdcxx_probe_tests currently returns 0 if the probe tests
    need to be skipped, while tcl interprets 0 as false rather than true, which is
    confusing.
    
    Fix this by making skip_libstdcxx_probe_tests return 1 if the probe tests need
    to be skipped.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-08-26  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdb.exp (skip_libstdcxx_probe_tests_prompt): Return 1 if probe
            * tests need to be skipped.
            * gdb.cp/exceptprint.exp: Update call to skip_libstdcxx_probe_tests.
            * gdb.mi/mi-catch-cpp-exceptions.exp: Update call to
            mi_skip_libstdcxx_probe_tests.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e8445f8e88..c41b4981e3 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-26  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (skip_libstdcxx_probe_tests_prompt): Return 1 if probe
+	* tests need to be skipped.
+	* gdb.cp/exceptprint.exp: Update call to skip_libstdcxx_probe_tests.
+	* gdb.mi/mi-catch-cpp-exceptions.exp: Update call to
+	mi_skip_libstdcxx_probe_tests.
+
 2019-08-26  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	* gdb.python/py-xmethods.exp: Use raw strings when passing
diff --git a/gdb/testsuite/gdb.cp/exceptprint.exp b/gdb/testsuite/gdb.cp/exceptprint.exp
index 46378d1b69..f6dcd0f5bd 100644
--- a/gdb/testsuite/gdb.cp/exceptprint.exp
+++ b/gdb/testsuite/gdb.cp/exceptprint.exp
@@ -27,7 +27,7 @@ if {![runto_main]} {
     return -1
 }
 
-if {![skip_libstdcxx_probe_tests]} {
+if {[skip_libstdcxx_probe_tests]} {
     untested "could not find libstdc++ stap probe"
     return -1
 }
diff --git a/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp b/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp
index 029dc1bd02..2951497882 100644
--- a/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp
+++ b/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp
@@ -36,7 +36,7 @@ mi_gdb_load ${binfile}
 if {![mi_run_to_main]} {
     return -1
 }
-set libstdcxx_probe_tests_supported [mi_skip_libstdcxx_probe_tests]
+set libstdcxx_probe_tests_supported [expr ![mi_skip_libstdcxx_probe_tests]]
 
 # Grab some line numbers we'll need.
 set catch_1_lineno [gdb_get_line_number "Catch 1"]
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index af56e8aa12..76805fb5ec 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3158,20 +3158,21 @@ proc skip_unwinder_tests {} {
     return $ok
 }
 
-# Return 0 if we should skip tests that require the libstdc++ stap
+# Return 1 if we should skip tests that require the libstdc++ stap
 # probes.  This must be invoked while gdb is running, after shared
 # libraries have been loaded.  PROMPT_REGEXP is the expected prompt.
 
 proc skip_libstdcxx_probe_tests_prompt { prompt_regexp } {
-    set ok 0
+    set supported 0
     gdb_test_multiple "info probe" "check for stap probe in libstdc++" {
 	-re ".*libstdcxx.*catch.*\r\n$prompt_regexp" {
-	    set ok 1
+	    set supported 1
 	}
 	-re "\r\n$prompt_regexp" {
 	}
     } "$prompt_regexp"
-    return $ok
+    set skip [expr !$supported]
+    return $skip
 }
 
 # As skip_libstdcxx_probe_tests_prompt, with gdb_prompt.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb, c++] Improve error message when using libstdcxx without SDT probes
@ 2019-08-26 18:01 gdb-buildbot
  2019-08-26 18:24 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-26 18:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5c31b35808e467d39d05ffa95428e22bb10fd72d ***

commit 5c31b35808e467d39d05ffa95428e22bb10fd72d
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Mon Aug 26 19:24:59 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Mon Aug 26 19:24:59 2019 +0200

    [gdb, c++] Improve error message when using libstdcxx without SDT probes
    
    When using catch catch/rethrow/catch, a libstdcxx with SDT probes is required
    for both the regexp argument, and the convenience variable $_exception (
    https://sourceware.org/gdb/current/onlinedocs/gdb/Set-Catchpoints.html ).
    
    Currently, when using these features with a libstdcxx without SDT probes, we
    get the cryptic error message:
    ...
    not stopped at a C++ exception catchpoint
    ...
    
    Improve this by instead emitting the more helpful:
    ...
    did not find exception probe (does libstdcxx have SDT probes?)
    ...
    
    Tested on x86_64-linux.
    
    gdb/ChangeLog:
    
    2019-08-26  Tom de Vries  <tdevries@suse.de>
    
            PR c++/24852
            * break-catch-throw.c (fetch_probe_arguments): Improve error mesage
            when pc_probe.prob == NULL.
    
    gdb/testsuite/ChangeLog:
    
    2019-08-26  Tom de Vries  <tdevries@suse.de>
    
            PR c++/24852
            * gdb.cp/no-libstdcxx-probe.exp: New test.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d4b1e539c3..f171031961 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-26  Tom de Vries  <tdevries@suse.de>
+
+	PR c++/24852
+	* break-catch-throw.c (fetch_probe_arguments): Improve error mesage
+	when pc_probe.prob == NULL.
+
 2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
 
 	* dwarf2read.c (dw2_debug_names_iterator::next): Rename local
diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c
index 0677a55ee5..2d91285312 100644
--- a/gdb/break-catch-throw.c
+++ b/gdb/break-catch-throw.c
@@ -106,8 +106,10 @@ fetch_probe_arguments (struct value **arg0, struct value **arg1)
   unsigned n_args;
 
   pc_probe = find_probe_by_pc (pc);
-  if (pc_probe.prob == NULL
-      || pc_probe.prob->get_provider () != "libstdcxx"
+  if (pc_probe.prob == NULL)
+    error (_("did not find exception probe (does libstdcxx have SDT probes?)"));
+
+  if (pc_probe.prob->get_provider () != "libstdcxx"
       || (pc_probe.prob->get_name () != "catch"
 	  && pc_probe.prob->get_name () != "throw"
 	  && pc_probe.prob->get_name () != "rethrow"))
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c41b4981e3..3117fe78bf 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-26  Tom de Vries  <tdevries@suse.de>
+
+	PR c++/24852
+	* gdb.cp/no-libstdcxx-probe.exp: New test.
+
 2019-08-26  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdb.exp (skip_libstdcxx_probe_tests_prompt): Return 1 if probe
diff --git a/gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp b/gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp
new file mode 100644
index 0000000000..79826ea2d2
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp
@@ -0,0 +1,41 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+standard_testfile exceptprint.cc
+
+if {[skip_cplus_tests]} {
+    return -1
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+    return -1
+}
+
+if {![runto_main]} {
+    return -1
+}
+
+if { [skip_libstdcxx_probe_tests] == 0 } {
+    untested "Have libstdc++ stap probe"
+    return -1
+}
+
+gdb_test "catch throw" "Catchpoint $decimal \\(throw\\)" \
+    "catch throw"
+
+gdb_test "continue" "Continuing.*Catchpoint $decimal.*"
+
+gdb_test "print \$_exception" \
+    "did not find exception probe \\(does libstdcxx have SDT probes\\?\\).*"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Factor out the common code in lookup_{static,global}_symbol
@ 2019-08-26 22:05 gdb-buildbot
  2019-08-26 22:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-26 22:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9aa5520697ee3b65bfbb705c21c2dfb2c0dee12e ***

commit 9aa5520697ee3b65bfbb705c21c2dfb2c0dee12e
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Fri Aug 2 19:59:37 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Mon Aug 26 16:24:33 2019 -0500

    Factor out the common code in lookup_{static,global}_symbol
    
    The two functions are extremely similar; this factors out their code into
    a shared _internal function.
    
    gdb/ChangeLog:
    
    2019-08-26  Christian Biesinger  <cbiesinger@google.com>
    
            * symtab.c (lookup_static_symbol): Call the new function (and move
            it down to be next to lookup_global_symbol).
            (struct global_sym_lookup_data): Add block_enum member and rename to...
            (struct global_or_static_sym_lookup_data): ...this.
            (lookup_symbol_global_iterator_cb): Pass block_index instead of
            GLOBAL_BLOCK to lookup_symbol_in_objfile and rename to...
            (lookup_symbol_global_or_static_iterator_cb): ...this.
            (lookup_global_or_static_symbol): New function.
            (lookup_global_symbol): Call new function.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f171031961..dda3115532 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2019-08-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (lookup_static_symbol): Call the new function (and move
+	it down to be next to lookup_global_symbol).
+	(struct global_sym_lookup_data): Add block_enum member and rename to...
+	(struct global_or_static_sym_lookup_data): ...this.
+	(lookup_symbol_global_iterator_cb): Pass block_index instead of
+	GLOBAL_BLOCK to lookup_symbol_in_objfile and rename to...
+	(lookup_symbol_global_or_static_iterator_cb): ...this.
+	(lookup_global_or_static_symbol): New function.
+	(lookup_global_symbol): Call new function.
+
 2019-08-26  Tom de Vries  <tdevries@suse.de>
 
 	PR c++/24852
diff --git a/gdb/symtab.c b/gdb/symtab.c
index d85c77b4ce..787ecfe33b 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2566,47 +2566,9 @@ lookup_symbol_in_objfile (struct objfile *objfile, enum block_enum block_index,
   return result;
 }
 
-/* See symtab.h.  */
-
-struct block_symbol
-lookup_static_symbol (const char *name, const domain_enum domain)
-{
-  struct symbol_cache *cache = get_symbol_cache (current_program_space);
-  struct block_symbol result;
-  struct block_symbol_cache *bsc;
-  struct symbol_cache_slot *slot;
-
-  /* Lookup in STATIC_BLOCK is not current-objfile-dependent, so just pass
-     NULL for OBJFILE_CONTEXT.  */
-  result = symbol_cache_lookup (cache, NULL, STATIC_BLOCK, name, domain,
-				&bsc, &slot);
-  if (result.symbol != NULL)
-    {
-      if (SYMBOL_LOOKUP_FAILED_P (result))
-	return {};
-      return result;
-    }
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      result = lookup_symbol_in_objfile (objfile, STATIC_BLOCK, name, domain);
-      if (result.symbol != NULL)
-	{
-	  /* Still pass NULL for OBJFILE_CONTEXT here.  */
-	  symbol_cache_mark_found (bsc, slot, NULL, result.symbol,
-				   result.block);
-	  return result;
-	}
-    }
-
-  /* Still pass NULL for OBJFILE_CONTEXT here.  */
-  symbol_cache_mark_not_found (bsc, slot, NULL, name, domain);
-  return {};
-}
-
 /* Private data to be used with lookup_symbol_global_iterator_cb.  */
 
-struct global_sym_lookup_data
+struct global_or_static_sym_lookup_data
 {
   /* The name of the symbol we are searching for.  */
   const char *name;
@@ -2614,27 +2576,30 @@ struct global_sym_lookup_data
   /* The domain to use for our search.  */
   domain_enum domain;
 
+  /* The block index in which to search.  */
+  enum block_enum block_index;
+
   /* The field where the callback should store the symbol if found.
      It should be initialized to {NULL, NULL} before the search is started.  */
   struct block_symbol result;
 };
 
 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
-   It searches by name for a symbol in the GLOBAL_BLOCK of the given
-   OBJFILE.  The arguments for the search are passed via CB_DATA,
-   which in reality is a pointer to struct global_sym_lookup_data.  */
+   It searches by name for a symbol in the block given by BLOCK_INDEX of the
+   given OBJFILE.  The arguments for the search are passed via CB_DATA, which
+   in reality is a pointer to struct global_or_static_sym_lookup_data.  */
 
 static int
-lookup_symbol_global_iterator_cb (struct objfile *objfile,
-				  void *cb_data)
+lookup_symbol_global_or_static_iterator_cb (struct objfile *objfile,
+					    void *cb_data)
 {
-  struct global_sym_lookup_data *data =
-    (struct global_sym_lookup_data *) cb_data;
+  struct global_or_static_sym_lookup_data *data =
+    (struct global_or_static_sym_lookup_data *) cb_data;
 
   gdb_assert (data->result.symbol == NULL
 	      && data->result.block == NULL);
 
-  data->result = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK,
+  data->result = lookup_symbol_in_objfile (objfile, data->block_index,
 					   data->name, data->domain);
 
   /* If we found a match, tell the iterator to stop.  Otherwise,
@@ -2642,25 +2607,28 @@ lookup_symbol_global_iterator_cb (struct objfile *objfile,
   return (data->result.symbol != NULL);
 }
 
-/* See symtab.h.  */
+/* This function contains the common code of lookup_{global,static}_symbol.
+   OBJFILE is only used if BLOCK_INDEX is GLOBAL_SCOPE, in which case it is
+   the objfile to start the lookup in.  */
 
-struct block_symbol
-lookup_global_symbol (const char *name,
-		      const struct block *block,
-		      const domain_enum domain)
+static struct block_symbol
+lookup_global_or_static_symbol (const char *name,
+				enum block_enum block_index,
+				struct objfile *objfile,
+				const domain_enum domain)
 {
   struct symbol_cache *cache = get_symbol_cache (current_program_space);
   struct block_symbol result;
-  struct objfile *objfile;
-  struct global_sym_lookup_data lookup_data;
+  struct global_or_static_sym_lookup_data lookup_data;
   struct block_symbol_cache *bsc;
   struct symbol_cache_slot *slot;
 
-  objfile = lookup_objfile_from_block (block);
+  gdb_assert (block_index == GLOBAL_BLOCK || block_index == STATIC_BLOCK);
+  gdb_assert (objfile == nullptr || block_index == GLOBAL_BLOCK);
 
   /* First see if we can find the symbol in the cache.
      This works because we use the current objfile to qualify the lookup.  */
-  result = symbol_cache_lookup (cache, objfile, GLOBAL_BLOCK, name, domain,
+  result = symbol_cache_lookup (cache, objfile, block_index, name, domain,
 				&bsc, &slot);
   if (result.symbol != NULL)
     {
@@ -2678,10 +2646,11 @@ lookup_global_symbol (const char *name,
     {
       memset (&lookup_data, 0, sizeof (lookup_data));
       lookup_data.name = name;
+      lookup_data.block_index = block_index;
       lookup_data.domain = domain;
       gdbarch_iterate_over_objfiles_in_search_order
 	(objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch (),
-	 lookup_symbol_global_iterator_cb, &lookup_data, objfile);
+	 lookup_symbol_global_or_static_iterator_cb, &lookup_data, objfile);
       result = lookup_data.result;
     }
 
@@ -2693,6 +2662,25 @@ lookup_global_symbol (const char *name,
   return result;
 }
 
+/* See symtab.h.  */
+
+struct block_symbol
+lookup_static_symbol (const char *name, const domain_enum domain)
+{
+  return lookup_global_or_static_symbol (name, STATIC_BLOCK, nullptr, domain);
+}
+
+/* See symtab.h.  */
+
+struct block_symbol
+lookup_global_symbol (const char *name,
+		      const struct block *block,
+		      const domain_enum domain)
+{
+  struct objfile *objfile = lookup_objfile_from_block (block);
+  return lookup_global_or_static_symbol (name, GLOBAL_BLOCK, objfile, domain);
+}
+
 int
 symbol_matches_domain (enum language symbol_language,
 		       domain_enum symbol_domain,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add support for the MVE VMOV instruction to the ARM assembler.  This instruction copies the value of one vector register to another vector register.  The patch also modifies the decoding of VORR instruction which is effecting decoding of VMOV instruction.
@ 2019-08-27 11:48 gdb-buildbot
  2019-08-27 12:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-27 11:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c4a23bf878f2e9a64034006c91596401faf6db3e ***

commit c4a23bf878f2e9a64034006c91596401faf6db3e
Author:     Srinath Parvathaneni <srinath.parvathaneni@arm.com>
AuthorDate: Tue Aug 27 12:08:21 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Tue Aug 27 12:08:21 2019 +0100

    Add support for the MVE VMOV instruction to the ARM assembler.  This instruction copies the value of one vector register to another vector register.  The patch also modifies the decoding of VORR instruction which is effecting decoding of VMOV instruction.
    
    gas     * config/tc-arm.c (parse_neon_mov): Add check to accept vector
            register to both the arguments in VMOV instruction.
            * testsuite/gas/arm/mve-vmov-1.d: Modify.
            * testsuite/gas/arm/mve-vmov-1.s: Likewise.
            * testsuite/gas/arm/mve-vorr.d: Likewise.
    
    opcodes * arm-dis.c (mve_opcodes): Add entry for MVE_VMOV_VEC_TO_VEC.
            (is_mve_undefined): Add case for MVE_VMOV_VEC_TO_VEC.
            (print_insn_mve): Add condition to check Qm==Qn of VORR instruction.

diff --git a/gas/ChangeLog b/gas/ChangeLog
index ff9b3e4762..980d970bbc 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/tc-arm.c (parse_neon_mov): Add check to accept vector
+	register to both the arguments in VMOV instruction.
+	* testsuite/gas/arm/mve-vmov-1.d: Modify.
+	* testsuite/gas/arm/mve-vmov-1.s: Likewise.
+	* testsuite/gas/arm/mve-vorr.d: Likewise.
+
 2019-08-23  Nick Clifton  <nickc@redhat.com>
 
 	* po/sv.po: Updated Swedish translation.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 27c6f0e52f..9a367ca728 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -6743,8 +6743,10 @@ parse_neon_mov (char **str, int *which_operand)
 	      inst.operands[i].present = 1;
 	    }
 	}
-      else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
-					   &optype)) != FAIL)
+      else if (((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
+		&optype)) != FAIL)
+	       || ((val = arm_typed_reg_parse (&ptr, REG_TYPE_MQ, &rtype,
+		   &optype)) != FAIL))
 	{
 	  /* Case 0: VMOV<c><q> <Qd>, <Qm>
 	     Case 1: VMOV<c><q> <Dd>, <Dm>
diff --git a/gas/testsuite/gas/arm/mve-vmov-1.d b/gas/testsuite/gas/arm/mve-vmov-1.d
index 5f317d8646..504b3e7936 100644
--- a/gas/testsuite/gas/arm/mve-vmov-1.d
+++ b/gas/testsuite/gas/arm/mve-vmov-1.d
@@ -4154,3 +4154,28 @@ Disassembly of section .text:
 [^>]*> ef80 0e74 	vmov.i64	q0, #0x0000000000ff0000
 [^>]*> ef80 0e72 	vmov.i64	q0, #0x000000000000ff00
 [^>]*> ef80 0e71 	vmov.i64	q0, #0x00000000000000ff
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef2e e15e 	vmov	q7, q7
diff --git a/gas/testsuite/gas/arm/mve-vmov-1.s b/gas/testsuite/gas/arm/mve-vmov-1.s
index 60c77d0a7c..d24fae60f3 100644
--- a/gas/testsuite/gas/arm/mve-vmov-1.s
+++ b/gas/testsuite/gas/arm/mve-vmov-1.s
@@ -130,3 +130,9 @@ vmov.i64 q0, #4278190080 @ 0x00000000FF000000
 vmov.i64 q0, #16711680 @ 0x00000000000FF0000
 vmov.i64 q0, #65280 @ 0x0000000000000FF00
 vmov.i64 q0, #255 @ 0x000000000000000FF
+
+.irp op1, q0, q1, q2, q4, q7
+.irp op2, q0, q1, q2, q4, q7
+vmov \op1, \op2
+.endr
+.endr
diff --git a/gas/testsuite/gas/arm/mve-vorr.d b/gas/testsuite/gas/arm/mve-vorr.d
index 72dcc89538..96a69d8d13 100644
--- a/gas/testsuite/gas/arm/mve-vorr.d
+++ b/gas/testsuite/gas/arm/mve-vorr.d
@@ -5,14 +5,14 @@
 .*: +file format .*arm.*
 
 Disassembly of section .text:
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
-[^>]*> ef20 0150 	vorr	q0, q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
+[^>]*> ef20 0150 	vmov	q0, q0
 [^>]*> ef20 0152 	vorr	q0, q0, q1
 [^>]*> ef20 0152 	vorr	q0, q0, q1
 [^>]*> ef20 0152 	vorr	q0, q0, q1
@@ -53,14 +53,14 @@ Disassembly of section .text:
 [^>]*> ef22 0150 	vorr	q0, q1, q0
 [^>]*> ef22 0150 	vorr	q0, q1, q0
 [^>]*> ef22 0150 	vorr	q0, q1, q0
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
-[^>]*> ef22 0152 	vorr	q0, q1, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
+[^>]*> ef22 0152 	vmov	q0, q1
 [^>]*> ef22 0154 	vorr	q0, q1, q2
 [^>]*> ef22 0154 	vorr	q0, q1, q2
 [^>]*> ef22 0154 	vorr	q0, q1, q2
@@ -101,14 +101,14 @@ Disassembly of section .text:
 [^>]*> ef24 0152 	vorr	q0, q2, q1
 [^>]*> ef24 0152 	vorr	q0, q2, q1
 [^>]*> ef24 0152 	vorr	q0, q2, q1
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
-[^>]*> ef24 0154 	vorr	q0, q2, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
+[^>]*> ef24 0154 	vmov	q0, q2
 [^>]*> ef24 0158 	vorr	q0, q2, q4
 [^>]*> ef24 0158 	vorr	q0, q2, q4
 [^>]*> ef24 0158 	vorr	q0, q2, q4
@@ -149,14 +149,14 @@ Disassembly of section .text:
 [^>]*> ef28 0154 	vorr	q0, q4, q2
 [^>]*> ef28 0154 	vorr	q0, q4, q2
 [^>]*> ef28 0154 	vorr	q0, q4, q2
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
-[^>]*> ef28 0158 	vorr	q0, q4, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
+[^>]*> ef28 0158 	vmov	q0, q4
 [^>]*> ef28 015e 	vorr	q0, q4, q7
 [^>]*> ef28 015e 	vorr	q0, q4, q7
 [^>]*> ef28 015e 	vorr	q0, q4, q7
@@ -197,22 +197,22 @@ Disassembly of section .text:
 [^>]*> ef2e 0158 	vorr	q0, q7, q4
 [^>]*> ef2e 0158 	vorr	q0, q7, q4
 [^>]*> ef2e 0158 	vorr	q0, q7, q4
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef2e 015e 	vorr	q0, q7, q7
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
-[^>]*> ef20 2150 	vorr	q1, q0, q0
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef2e 015e 	vmov	q0, q7
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
+[^>]*> ef20 2150 	vmov	q1, q0
 [^>]*> ef20 2152 	vorr	q1, q0, q1
 [^>]*> ef20 2152 	vorr	q1, q0, q1
 [^>]*> ef20 2152 	vorr	q1, q0, q1
@@ -253,14 +253,14 @@ Disassembly of section .text:
 [^>]*> ef22 2150 	vorr	q1, q1, q0
 [^>]*> ef22 2150 	vorr	q1, q1, q0
 [^>]*> ef22 2150 	vorr	q1, q1, q0
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
-[^>]*> ef22 2152 	vorr	q1, q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
+[^>]*> ef22 2152 	vmov	q1, q1
 [^>]*> ef22 2154 	vorr	q1, q1, q2
 [^>]*> ef22 2154 	vorr	q1, q1, q2
 [^>]*> ef22 2154 	vorr	q1, q1, q2
@@ -301,14 +301,14 @@ Disassembly of section .text:
 [^>]*> ef24 2152 	vorr	q1, q2, q1
 [^>]*> ef24 2152 	vorr	q1, q2, q1
 [^>]*> ef24 2152 	vorr	q1, q2, q1
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
-[^>]*> ef24 2154 	vorr	q1, q2, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
+[^>]*> ef24 2154 	vmov	q1, q2
 [^>]*> ef24 2158 	vorr	q1, q2, q4
 [^>]*> ef24 2158 	vorr	q1, q2, q4
 [^>]*> ef24 2158 	vorr	q1, q2, q4
@@ -349,14 +349,14 @@ Disassembly of section .text:
 [^>]*> ef28 2154 	vorr	q1, q4, q2
 [^>]*> ef28 2154 	vorr	q1, q4, q2
 [^>]*> ef28 2154 	vorr	q1, q4, q2
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
-[^>]*> ef28 2158 	vorr	q1, q4, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
+[^>]*> ef28 2158 	vmov	q1, q4
 [^>]*> ef28 215e 	vorr	q1, q4, q7
 [^>]*> ef28 215e 	vorr	q1, q4, q7
 [^>]*> ef28 215e 	vorr	q1, q4, q7
@@ -397,22 +397,22 @@ Disassembly of section .text:
 [^>]*> ef2e 2158 	vorr	q1, q7, q4
 [^>]*> ef2e 2158 	vorr	q1, q7, q4
 [^>]*> ef2e 2158 	vorr	q1, q7, q4
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef2e 215e 	vorr	q1, q7, q7
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
-[^>]*> ef20 4150 	vorr	q2, q0, q0
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef2e 215e 	vmov	q1, q7
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
+[^>]*> ef20 4150 	vmov	q2, q0
 [^>]*> ef20 4152 	vorr	q2, q0, q1
 [^>]*> ef20 4152 	vorr	q2, q0, q1
 [^>]*> ef20 4152 	vorr	q2, q0, q1
@@ -453,14 +453,14 @@ Disassembly of section .text:
 [^>]*> ef22 4150 	vorr	q2, q1, q0
 [^>]*> ef22 4150 	vorr	q2, q1, q0
 [^>]*> ef22 4150 	vorr	q2, q1, q0
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
-[^>]*> ef22 4152 	vorr	q2, q1, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
+[^>]*> ef22 4152 	vmov	q2, q1
 [^>]*> ef22 4154 	vorr	q2, q1, q2
 [^>]*> ef22 4154 	vorr	q2, q1, q2
 [^>]*> ef22 4154 	vorr	q2, q1, q2
@@ -501,14 +501,14 @@ Disassembly of section .text:
 [^>]*> ef24 4152 	vorr	q2, q2, q1
 [^>]*> ef24 4152 	vorr	q2, q2, q1
 [^>]*> ef24 4152 	vorr	q2, q2, q1
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
-[^>]*> ef24 4154 	vorr	q2, q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
+[^>]*> ef24 4154 	vmov	q2, q2
 [^>]*> ef24 4158 	vorr	q2, q2, q4
 [^>]*> ef24 4158 	vorr	q2, q2, q4
 [^>]*> ef24 4158 	vorr	q2, q2, q4
@@ -549,14 +549,14 @@ Disassembly of section .text:
 [^>]*> ef28 4154 	vorr	q2, q4, q2
 [^>]*> ef28 4154 	vorr	q2, q4, q2
 [^>]*> ef28 4154 	vorr	q2, q4, q2
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
-[^>]*> ef28 4158 	vorr	q2, q4, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
+[^>]*> ef28 4158 	vmov	q2, q4
 [^>]*> ef28 415e 	vorr	q2, q4, q7
 [^>]*> ef28 415e 	vorr	q2, q4, q7
 [^>]*> ef28 415e 	vorr	q2, q4, q7
@@ -597,22 +597,22 @@ Disassembly of section .text:
 [^>]*> ef2e 4158 	vorr	q2, q7, q4
 [^>]*> ef2e 4158 	vorr	q2, q7, q4
 [^>]*> ef2e 4158 	vorr	q2, q7, q4
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef2e 415e 	vorr	q2, q7, q7
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
-[^>]*> ef20 8150 	vorr	q4, q0, q0
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef2e 415e 	vmov	q2, q7
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
+[^>]*> ef20 8150 	vmov	q4, q0
 [^>]*> ef20 8152 	vorr	q4, q0, q1
 [^>]*> ef20 8152 	vorr	q4, q0, q1
 [^>]*> ef20 8152 	vorr	q4, q0, q1
@@ -653,14 +653,14 @@ Disassembly of section .text:
 [^>]*> ef22 8150 	vorr	q4, q1, q0
 [^>]*> ef22 8150 	vorr	q4, q1, q0
 [^>]*> ef22 8150 	vorr	q4, q1, q0
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
-[^>]*> ef22 8152 	vorr	q4, q1, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
+[^>]*> ef22 8152 	vmov	q4, q1
 [^>]*> ef22 8154 	vorr	q4, q1, q2
 [^>]*> ef22 8154 	vorr	q4, q1, q2
 [^>]*> ef22 8154 	vorr	q4, q1, q2
@@ -701,14 +701,14 @@ Disassembly of section .text:
 [^>]*> ef24 8152 	vorr	q4, q2, q1
 [^>]*> ef24 8152 	vorr	q4, q2, q1
 [^>]*> ef24 8152 	vorr	q4, q2, q1
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
-[^>]*> ef24 8154 	vorr	q4, q2, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
+[^>]*> ef24 8154 	vmov	q4, q2
 [^>]*> ef24 8158 	vorr	q4, q2, q4
 [^>]*> ef24 8158 	vorr	q4, q2, q4
 [^>]*> ef24 8158 	vorr	q4, q2, q4
@@ -749,14 +749,14 @@ Disassembly of section .text:
 [^>]*> ef28 8154 	vorr	q4, q4, q2
 [^>]*> ef28 8154 	vorr	q4, q4, q2
 [^>]*> ef28 8154 	vorr	q4, q4, q2
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
-[^>]*> ef28 8158 	vorr	q4, q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
+[^>]*> ef28 8158 	vmov	q4, q4
 [^>]*> ef28 815e 	vorr	q4, q4, q7
 [^>]*> ef28 815e 	vorr	q4, q4, q7
 [^>]*> ef28 815e 	vorr	q4, q4, q7
@@ -797,22 +797,22 @@ Disassembly of section .text:
 [^>]*> ef2e 8158 	vorr	q4, q7, q4
 [^>]*> ef2e 8158 	vorr	q4, q7, q4
 [^>]*> ef2e 8158 	vorr	q4, q7, q4
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef2e 815e 	vorr	q4, q7, q7
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
-[^>]*> ef20 e150 	vorr	q7, q0, q0
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef2e 815e 	vmov	q4, q7
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
+[^>]*> ef20 e150 	vmov	q7, q0
 [^>]*> ef20 e152 	vorr	q7, q0, q1
 [^>]*> ef20 e152 	vorr	q7, q0, q1
 [^>]*> ef20 e152 	vorr	q7, q0, q1
@@ -853,14 +853,14 @@ Disassembly of section .text:
 [^>]*> ef22 e150 	vorr	q7, q1, q0
 [^>]*> ef22 e150 	vorr	q7, q1, q0
 [^>]*> ef22 e150 	vorr	q7, q1, q0
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
-[^>]*> ef22 e152 	vorr	q7, q1, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
+[^>]*> ef22 e152 	vmov	q7, q1
 [^>]*> ef22 e154 	vorr	q7, q1, q2
 [^>]*> ef22 e154 	vorr	q7, q1, q2
 [^>]*> ef22 e154 	vorr	q7, q1, q2
@@ -901,14 +901,14 @@ Disassembly of section .text:
 [^>]*> ef24 e152 	vorr	q7, q2, q1
 [^>]*> ef24 e152 	vorr	q7, q2, q1
 [^>]*> ef24 e152 	vorr	q7, q2, q1
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
-[^>]*> ef24 e154 	vorr	q7, q2, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
+[^>]*> ef24 e154 	vmov	q7, q2
 [^>]*> ef24 e158 	vorr	q7, q2, q4
 [^>]*> ef24 e158 	vorr	q7, q2, q4
 [^>]*> ef24 e158 	vorr	q7, q2, q4
@@ -949,14 +949,14 @@ Disassembly of section .text:
 [^>]*> ef28 e154 	vorr	q7, q4, q2
 [^>]*> ef28 e154 	vorr	q7, q4, q2
 [^>]*> ef28 e154 	vorr	q7, q4, q2
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
-[^>]*> ef28 e158 	vorr	q7, q4, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
+[^>]*> ef28 e158 	vmov	q7, q4
 [^>]*> ef28 e15e 	vorr	q7, q4, q7
 [^>]*> ef28 e15e 	vorr	q7, q4, q7
 [^>]*> ef28 e15e 	vorr	q7, q4, q7
@@ -997,14 +997,14 @@ Disassembly of section .text:
 [^>]*> ef2e e158 	vorr	q7, q7, q4
 [^>]*> ef2e e158 	vorr	q7, q7, q4
 [^>]*> ef2e e158 	vorr	q7, q7, q4
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
-[^>]*> ef2e e15e 	vorr	q7, q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
+[^>]*> ef2e e15e 	vmov	q7, q7
 [^>]*> ef80 0150 	vorr.i32	q0, #0	; 0x00000000
 [^>]*> ff87 015f 	vorr.i32	q0, #255	; 0x000000ff
 [^>]*> ff87 035f 	vorr.i32	q0, #65280	; 0x0000ff00
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 0017bd47f5..bec2b59cc4 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* arm-dis.c (mve_opcodes): Add entry for MVE_VMOV_VEC_TO_VEC.
+	(is_mve_undefined): Add case for MVE_VMOV_VEC_TO_VEC.
+	(print_insn_mve): Add condition to check Qm==Qn of VORR instruction.
+
 2019-08-22  Kyrylo Tkachov <kyrylo.tkachov@arm.com>
 
 	* aarch64-opc.c (aarch64_sys_regs): Update encoding of tfsre0_el1,
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index 50d1306c19..8ff86bf4d6 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -2951,6 +2951,16 @@ static const struct mopcode32 mve_opcodes[] =
    0xef200150, 0xffb11f51,
    "vorr%v\t%13-15,22Q, %17-19,7Q, %1-3,5Q"},
 
+  /* Vector VMOV, vector to vector move. While decoding MVE_VORR_REG if
+     "Qm==Qn", VORR should replaced by its alias VMOV. For that to happen
+     MVE_VMOV_VEC_TO_VEC need to placed after MVE_VORR_REG in this mve_opcodes
+     array.  */
+
+  {ARM_FEATURE_COPROC (FPU_MVE),
+   MVE_VMOV_VEC_TO_VEC,
+   0xef200150, 0xffb11f51,
+   "vmov%v\t%13-15,22Q, %17-19,7Q"},
+
   /* Vector VQDMULL T1 variant.  */
   {ARM_FEATURE_COPROC (FPU_MVE),
    MVE_VQDMULL_T1,
@@ -6104,6 +6114,12 @@ is_mve_undefined (unsigned long given, enum mve_instructions matched_insn,
       else
 	return FALSE;
 
+    case MVE_VMOV_VEC_TO_VEC:
+      if ((arm_decode_field (given, 5, 5) == 1)
+	  || (arm_decode_field (given, 22, 22) == 1))
+	  return TRUE;
+      return FALSE;
+
     case MVE_VMOV_IMM_TO_VEC:
       if (arm_decode_field (given, 5, 5) == 0)
       {
@@ -9214,6 +9230,13 @@ print_insn_mve (struct disassemble_info *info, long given)
 	  if (is_mve_undefined (given, insn->mve_op, &undefined_cond))
 	    is_undefined = TRUE;
 
+	  /* In "VORR Qd, Qm, Qn", if Qm==Qn, VORR is nothing but VMOV,
+	     i.e "VMOV Qd, Qm".  */
+	  if ((insn->mve_op == MVE_VORR_REG)
+	      && (arm_decode_field (given, 1, 3)
+		  == arm_decode_field (given, 17, 19)))
+	    continue;
+
 	  for (c = insn->assembler; *c; c++)
 	    {
 	      if (*c == '%')


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Add new -n flag to some info commands
@ 2019-08-27 16:22 gdb-buildbot
  2019-08-27 19:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-27 16:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4acfdd20c9ef3c0368868b4221554f0abef04196 ***

commit 4acfdd20c9ef3c0368868b4221554f0abef04196
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Mon Jul 22 16:53:06 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Tue Aug 27 16:21:42 2019 +0100

    gdb: Add new -n flag to some info commands
    
    The 'info variables', its alias 'whereis', and 'info functions' all
    include non-debug symbols in the output by default.  The list of
    non-debug symbols can sometimes be quite long, resulting in the
    debug symbol based results being scrolled off the screen.
    
    This commit adds a '-n' flag to all of the commands listed above that
    excludes the non-debug symbols from the results, leaving just the
    debug symbol based results.
    
    gdb/ChangeLog:
    
            * cli/cli-utils.c (info_print_options_defs): Delete.
            (make_info_print_options_def_group): Delete.
            (extract_info_print_options): Delete.
            (info_print_command_completer): Delete.
            (info_print_args_help): Add extra parameter, and optionally
            include text about -n flag.
            * cli/cli-utils.h (struct info_print_options): Delete.
            (extract_info_print_options): Delete declaration.
            (info_print_command_completer): Delete declaration.
            (info_print_args_help): Add extra parameter, extend header
            comment.
            * python/python.c (gdbpy_rbreak): Pass additional parameter to
            search_symbols.
            * stack.c (struct info_print_options): New type.
            (info_print_options_defs): New file scoped variable.
            (make_info_print_options_def_group): New static function.
            (info_print_command_completer): New static function.
            (info_locals_command): Update to use new local functions.
            (info_args_command): Likewise.
            (_initialize_stack): Add extra parameter to calls to
            info_print_args_help.
            * symtab.c (search_symbols): Add extra parameter, use this to
            possibly excluse non-debug symbols.
            (symtab_symbol_info): Add extra parameter, which is passed on to
            search_symbols.
            (struct info_print_options): New type.
            (info_print_options_defs): New file scoped variable.
            (make_info_print_options_def_group): New static function.
            (info_print_command_completer): New static function.
            (info_variables_command): Update to use local functions, and pass
            extra parameter through to symtab_symbol_info.
            (info_functions_command): Likewise.
            (info_types_command): Pass additional argument through to
            symtab_symbol_info.
            (rbreak_command): Pass extra argument to search_symbols.
            (_initialize_symtab): Add extra arguments for calls to
            info_print_args_help, and update help text for 'info variables',
            'whereis', and 'info functions' commands.
            * symtab.h (search_symbols): Add extra argument to declaration.
            * NEWS: Mention new flags.
    
    gdb/doc/ChangeLog:
    
            * gdb.texinfo (Symbols): Add information about the -n flag to
            "info variables" and "info functions".
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/info-fun.exp: Extend to test the -n flag for 'info
            functions'.  Reindent as needed.
            * gdb.base/info-var-f1.c: New file.
            * gdb.base/info-var-f2.c: New file.
            * gdb.base/info-var.exp: New file.
            * gdb.base/info-var.h: New file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index dda3115532..c7d2dae4ff 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,46 @@
+2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-utils.c (info_print_options_defs): Delete.
+	(make_info_print_options_def_group): Delete.
+	(extract_info_print_options): Delete.
+	(info_print_command_completer): Delete.
+	(info_print_args_help): Add extra parameter, and optionally
+	include text about -n flag.
+	* cli/cli-utils.h (struct info_print_options): Delete.
+	(extract_info_print_options): Delete declaration.
+	(info_print_command_completer): Delete declaration.
+	(info_print_args_help): Add extra parameter, extend header
+	comment.
+	* python/python.c (gdbpy_rbreak): Pass additional parameter to
+	search_symbols.
+	* stack.c (struct info_print_options): New type.
+	(info_print_options_defs): New file scoped variable.
+	(make_info_print_options_def_group): New static function.
+	(info_print_command_completer): New static function.
+	(info_locals_command): Update to use new local functions.
+	(info_args_command): Likewise.
+	(_initialize_stack): Add extra parameter to calls to
+	info_print_args_help.
+	* symtab.c (search_symbols): Add extra parameter, use this to
+	possibly excluse non-debug symbols.
+	(symtab_symbol_info): Add extra parameter, which is passed on to
+	search_symbols.
+	(struct info_print_options): New type.
+	(info_print_options_defs): New file scoped variable.
+	(make_info_print_options_def_group): New static function.
+	(info_print_command_completer): New static function.
+	(info_variables_command): Update to use local functions, and pass
+	extra parameter through to symtab_symbol_info.
+	(info_functions_command): Likewise.
+	(info_types_command): Pass additional argument through to
+	symtab_symbol_info.
+	(rbreak_command): Pass extra argument to search_symbols.
+	(_initialize_symtab): Add extra arguments for calls to
+	info_print_args_help, and update help text for 'info variables',
+	'whereis', and 'info functions' commands.
+	* symtab.h (search_symbols): Add extra argument to declaration.
+	* NEWS: Mention new flags.
+
 2019-08-26  Christian Biesinger  <cbiesinger@google.com>
 
 	* symtab.c (lookup_static_symbol): Call the new function (and move
diff --git a/gdb/NEWS b/gdb/NEWS
index 0d78237085..f382e887c0 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -256,6 +256,11 @@ maint show test-options-completion-result
      printing of some header information in a similar fashion to "info
      variables" and "info functions".
 
+  ** The "info variables", "info functions", and "whereis" commands
+     now take a '-n' flag that excludes non-debug symbols (symbols
+     from the symbol table, not from the debug info such as DWARF)
+     from the results.
+
 * Completion improvements
 
   ** GDB can now complete the options of the "thread apply all" and
diff --git a/gdb/cli/cli-utils.c b/gdb/cli/cli-utils.c
index c6405505d9..b6b21c95b0 100644
--- a/gdb/cli/cli-utils.c
+++ b/gdb/cli/cli-utils.c
@@ -194,7 +194,8 @@ report_unrecognized_option_error (const char *command, const char *args)
 
 const char *
 info_print_args_help (const char *prefix,
-		      const char *entity_kind)
+		      const char *entity_kind,
+		      bool document_n_flag)
 {
   return xstrprintf (_("\
 %sIf NAMEREGEXP is provided, only prints the %s whose name\n\
@@ -204,8 +205,11 @@ matches TYPEREGEXP.  Note that the matching is done with the type\n\
 printed by the 'whatis' command.\n\
 By default, the command might produce headers and/or messages indicating\n\
 why no %s can be printed.\n\
-The flag -q disables the production of these headers and messages."),
-		     prefix, entity_kind, entity_kind, entity_kind);
+The flag -q disables the production of these headers and messages.%s"),
+		     prefix, entity_kind, entity_kind, entity_kind,
+		     (document_n_flag ? _("\n\
+By default, the command will include non-debug symbols in the output;\n\
+these can be excluded using the -n flag.") : ""));
 }
 
 /* See documentation in cli-utils.h.  */
@@ -435,58 +439,3 @@ validate_flags_qcs (const char *which_command, qcs_flags *flags)
     error (_("%s: -c and -s are mutually exclusive"), which_command);
 }
 
-/* The options used by the 'info variables' commands and similar.  */
-
-static const gdb::option::option_def info_print_options_defs[] = {
-  gdb::option::boolean_option_def<info_print_options> {
-    "q",
-    [] (info_print_options *opt) { return &opt->quiet; },
-    nullptr, /* show_cmd_cb */
-    nullptr /* set_doc */
-  },
-
-  gdb::option::string_option_def<info_print_options> {
-    "t",
-    [] (info_print_options *opt) { return &opt->type_regexp; },
-    nullptr, /* show_cmd_cb */
-    nullptr /* set_doc */
-  }
-};
-
-/* Returns the option group used by 'info variables' and similar.  */
-
-static gdb::option::option_def_group
-make_info_print_options_def_group (info_print_options *opts)
-{
-  return {{info_print_options_defs}, opts};
-}
-
-/* See documentation in cli-utils.h.  */
-
-void
-extract_info_print_options (info_print_options *opts,
-			    const char **args)
-{
-  auto grp = make_info_print_options_def_group (opts);
-  gdb::option::process_options
-    (args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
-  if (*args != nullptr && **args == '\0')
-    *args = nullptr;
-}
-
-/* See documentation in cli-utils.h.  */
-
-void
-info_print_command_completer (struct cmd_list_element *ignore,
-			      completion_tracker &tracker,
-			      const char *text, const char * /* word */)
-{
-  const auto group
-    = make_info_print_options_def_group (nullptr);
-  if (gdb::option::complete_options
-      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
-    return;
-
-  const char *word = advance_to_expression_complete_word_point (tracker, text);
-  symbol_completer (ignore, tracker, text, word);
-}
diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
index 17cdd842b2..cbe8ff66e1 100644
--- a/gdb/cli/cli-utils.h
+++ b/gdb/cli/cli-utils.h
@@ -47,38 +47,6 @@ extern int get_number (char **);
    error instead of returning 0.  */
 extern ULONGEST get_ulongest (const char **pp, int trailer = '\0');
 
-/* Structure to hold the values of the options used by the 'info
-   variables' command and other similar commands.  These correspond to the
-   -q and -t options.  */
-
-struct info_print_options
-{
-  int quiet = false;
-  char *type_regexp = nullptr;
-
-  ~info_print_options ()
-  {
-    xfree (type_regexp);
-  }
-};
-
-/* Extract options from ARGS for commands like 'info variables', placing
-   the options into OPTS.  ARGS is updated to point to the first character
-   after the options, or, if there is nothing after the options, then ARGS
-   is set to nullptr.  */
-
-extern void extract_info_print_options (info_print_options *opts,
-					const char **args);
-
-/* Function that can be used as a command completer for 'info variable'
-   and friends.  This offers command option completion as well as symbol
-   completion.  At the moment all symbols are offered for all commands.  */
-
-extern void info_print_command_completer (struct cmd_list_element *ignore,
-					  completion_tracker &tracker,
-					  const char *text,
-					  const char * /* word */);
-
 /* Throws an error telling the user that ARGS starts with an option
    unrecognized by COMMAND.  */
 
@@ -87,10 +55,13 @@ extern void report_unrecognized_option_error (const char *command,
 
 
 /* Builds the help string for a command documented by PREFIX,
-   followed by the extract_info_print_args help for ENTITY_KIND.  */
+   followed by the extract_info_print_args help for ENTITY_KIND.  If
+   DOCUMENT_N_FLAG is true then help text descibing the -n flag is also
+   included.  */
 
 const char *info_print_args_help (const char *prefix,
-				  const char *entity_kind);
+				  const char *entity_kind,
+				  bool document_n_flag);
 
 /* Parse a number or a range.
    A number will be of the form handled by get_number.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 7fa73fb40f..a5328259e0 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Symbols): Add information about the -n flag to
+	"info variables" and "info functions".
+
 2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
 
         * gdb.texinfo (Standard Target Features): Add RX Features sub-section.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index e1bc8143e6..53b7de91e4 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -18594,7 +18594,7 @@ The matching is case-sensitive, except on operating systems that
 have case-insensitive filesystem (e.g., MS-Windows).
 
 @kindex info functions
-@item info functions [-q]
+@item info functions [-q] [-n]
 Print the names and data types of all defined functions.
 Similarly to @samp{info types}, this command groups its output by source
 files and annotates each function definition with its source line
@@ -18607,11 +18607,16 @@ to print the function name and type according to the
 language of the function, other values mean to use
 the manually specified language (see @ref{Manually, ,Set Language Manually}).
 
+The @samp{-n} flag excludes @dfn{non-debugging symbols} from the
+results.  A non-debugging symbol is a symbol that comes from the
+executable's symbol table, not from the debug information (for
+example, DWARF) associated with the executable.
+
 The optional flag @samp{-q}, which stands for @samp{quiet}, disables
 printing header information and messages explaining why no functions
 have been printed.
 
-@item info functions [-q] [-t @var{type_regexp}] [@var{regexp}]
+@item info functions [-q] [-n] [-t @var{type_regexp}] [@var{regexp}]
 Like @samp{info functions}, but only print the names and data types
 of the functions selected with the provided regexp(s).
 
@@ -18641,7 +18646,7 @@ is printed only if its name matches @var{regexp} and its type matches
 
 
 @kindex info variables
-@item info variables [-q]
+@item info variables [-q] [-n]
 Print the names and data types of all variables that are defined
 outside of functions (i.e.@: excluding local variables).
 The printed variables are grouped by source files and annotated with
@@ -18654,11 +18659,13 @@ to print the variable name and type according to the
 language of the variable, other values mean to use
 the manually specified language (see @ref{Manually, ,Set Language Manually}).
 
+The @samp{-n} flag excludes non-debugging symbols from the results.
+
 The optional flag @samp{-q}, which stands for @samp{quiet}, disables
 printing header information and messages explaining why no variables
 have been printed.
 
-@item info variables [-q] [-t @var{type_regexp}] [@var{regexp}]
+@item info variables [-q] [-n] [-t @var{type_regexp}] [@var{regexp}]
 Like @kbd{info variables}, but only print the variables selected
 with the provided regexp(s).
 
diff --git a/gdb/python/python.c b/gdb/python/python.c
index cca7c4cd6b..b309ae91ba 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -739,10 +739,10 @@ gdbpy_rbreak (PyObject *self, PyObject *args, PyObject *kw)
       const char **files = symtab_paths.vec.data ();
 
       symbols = search_symbols (regex, FUNCTIONS_DOMAIN, NULL,
-				symtab_paths.vec.size (), files);
+				symtab_paths.vec.size (), files, false);
     }
   else
-    symbols = search_symbols (regex, FUNCTIONS_DOMAIN, NULL, 0, NULL);
+    symbols = search_symbols (regex, FUNCTIONS_DOMAIN, NULL, 0, NULL, false);
 
   /* Count the number of symbols (both symbols and optionally minimal
      symbols) so we can correctly check the throttle limit.  */
diff --git a/gdb/stack.c b/gdb/stack.c
index 06431ea354..10a88e99ab 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -2417,13 +2417,76 @@ print_frame_local_vars (struct frame_info *frame,
     }
 }
 
+/* Structure to hold the values of the options used by the 'info
+   variables' command and other similar commands.  These correspond to the
+   -q and -t options.  */
+
+struct info_print_options
+{
+  int quiet = false;
+  char *type_regexp = nullptr;
+
+  ~info_print_options ()
+  {
+    xfree (type_regexp);
+  }
+};
+
+/* The options used by the 'info locals' and 'info args' commands.  */
+
+static const gdb::option::option_def info_print_options_defs[] = {
+  gdb::option::boolean_option_def<info_print_options> {
+    "q",
+    [] (info_print_options *opt) { return &opt->quiet; },
+    nullptr, /* show_cmd_cb */
+    nullptr /* set_doc */
+  },
+
+  gdb::option::string_option_def<info_print_options> {
+    "t",
+    [] (info_print_options *opt) { return &opt->type_regexp; },
+    nullptr, /* show_cmd_cb */
+    nullptr /* set_doc */
+  }
+};
+
+/* Returns the option group used by 'info locals' and 'info args'
+   commands.  */
+
+static gdb::option::option_def_group
+make_info_print_options_def_group (info_print_options *opts)
+{
+  return {{info_print_options_defs}, opts};
+}
+
+/* Command completer for 'info locals' and 'info args'.  */
+
+static void
+info_print_command_completer (struct cmd_list_element *ignore,
+			      completion_tracker &tracker,
+			      const char *text, const char * /* word */)
+{
+  const auto group
+    = make_info_print_options_def_group (nullptr);
+  if (gdb::option::complete_options
+      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
+    return;
+
+  const char *word = advance_to_expression_complete_word_point (tracker, text);
+  symbol_completer (ignore, tracker, text, word);
+}
+
 /* Implement the 'info locals' command.  */
 
 void
 info_locals_command (const char *args, int from_tty)
 {
   info_print_options opts;
-  extract_info_print_options (&opts, &args);
+  auto grp = make_info_print_options_def_group (&opts);
+  gdb::option::process_options
+    (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
+  if (args != nullptr && *args == '\0')
+    args = nullptr;
 
   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
 			  opts.quiet, args, opts.type_regexp,
@@ -2530,7 +2593,11 @@ void
 info_args_command (const char *args, int from_tty)
 {
   info_print_options opts;
-  extract_info_print_options (&opts, &args);
+  auto grp = make_info_print_options_def_group (&opts);
+  gdb::option::process_options
+    (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
+  if (args != nullptr && *args == '\0')
+    args = nullptr;
 
   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
 			opts.quiet, args, opts.type_regexp, gdb_stdout);
@@ -3487,14 +3554,16 @@ Usage: info frame level LEVEL"),
 All local variables of current stack frame or those matching REGEXPs.\n\
 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
 Prints the local variables of the current stack frame.\n"),
-				  _("local variables")));
+					_("local variables"),
+					false));
   set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
   cmd = add_info ("args", info_args_command,
 		  info_print_args_help (_("\
 All argument variables of current stack frame or those matching REGEXPs.\n\
 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
 Prints the argument variables of the current stack frame.\n"),
-				  _("argument variables")));
+					_("argument variables"),
+					false));
   set_cmd_completer_handle_brkchars (cmd, info_print_command_completer);
 
   if (dbx_commands)
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 787ecfe33b..7762c85708 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4453,12 +4453,16 @@ sort_search_symbols_remove_dups (std::vector<symbol_search> *result)
 
    Within each file the results are sorted locally; each symtab's global and
    static blocks are separately alphabetized.
-   Duplicate entries are removed.  */
+   Duplicate entries are removed.
+
+   When EXCLUDE_MINSYMS is false then matching minsyms are also returned,
+   otherwise they are excluded.  */
 
 std::vector<symbol_search>
 search_symbols (const char *regexp, enum search_domain kind,
 		const char *t_regexp,
-		int nfiles, const char *files[])
+		int nfiles, const char *files[],
+		bool exclude_minsyms)
 {
   const struct blockvector *bv;
   const struct block *b;
@@ -4674,6 +4678,7 @@ search_symbols (const char *regexp, enum search_domain kind,
      as we assume that a minimal symbol does not have a type.  */
 
   if ((found_misc || (nfiles == 0 && kind != FUNCTIONS_DOMAIN))
+      && !exclude_minsyms
       && !treg.has_value ())
     {
       for (objfile *objfile : current_program_space->objfiles ())
@@ -4820,7 +4825,7 @@ print_msymbol_info (struct bound_minimal_symbol msymbol)
    matches.  */
 
 static void
-symtab_symbol_info (bool quiet,
+symtab_symbol_info (bool quiet, bool exclude_minsyms,
 		    const char *regexp, enum search_domain kind,
 		    const char *t_regexp, int from_tty)
 {
@@ -4836,7 +4841,8 @@ symtab_symbol_info (bool quiet,
 
   /* Must make sure that if we're interrupted, symbols gets freed.  */
   std::vector<symbol_search> symbols = search_symbols (regexp, kind,
-						       t_regexp, 0, NULL);
+						       t_regexp, 0, NULL,
+						       exclude_minsyms);
 
   if (!quiet)
     {
@@ -4889,15 +4895,87 @@ symtab_symbol_info (bool quiet,
     }
 }
 
+/* Structure to hold the values of the options used by the 'info variables'
+   and 'info functions' commands.  These correspond to the -q, -t, and -n
+   options.  */
+
+struct info_print_options
+{
+  int quiet = false;
+  int exclude_minsyms = false;
+  char *type_regexp = nullptr;
+
+  ~info_print_options ()
+  {
+    xfree (type_regexp);
+  }
+};
+
+/* The options used by the 'info variables' and 'info functions'
+   commands.  */
+
+static const gdb::option::option_def info_print_options_defs[] = {
+  gdb::option::boolean_option_def<info_print_options> {
+    "q",
+    [] (info_print_options *opt) { return &opt->quiet; },
+    nullptr, /* show_cmd_cb */
+    nullptr /* set_doc */
+  },
+
+  gdb::option::boolean_option_def<info_print_options> {
+    "n",
+    [] (info_print_options *opt) { return &opt->exclude_minsyms; },
+    nullptr, /* show_cmd_cb */
+    nullptr /* set_doc */
+  },
+
+  gdb::option::string_option_def<info_print_options> {
+    "t",
+    [] (info_print_options *opt) { return &opt->type_regexp; },
+    nullptr, /* show_cmd_cb */
+    nullptr /* set_doc */
+  }
+};
+
+/* Returns the option group used by 'info variables' and 'info
+   functions'.  */
+
+static gdb::option::option_def_group
+make_info_print_options_def_group (info_print_options *opts)
+{
+  return {{info_print_options_defs}, opts};
+}
+
+/* Command completer for 'info variables' and 'info functions'.  */
+
+static void
+info_print_command_completer (struct cmd_list_element *ignore,
+			      completion_tracker &tracker,
+			      const char *text, const char * /* word */)
+{
+  const auto group
+    = make_info_print_options_def_group (nullptr);
+  if (gdb::option::complete_options
+      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
+    return;
+
+  const char *word = advance_to_expression_complete_word_point (tracker, text);
+  symbol_completer (ignore, tracker, text, word);
+}
+
 /* Implement the 'info variables' command.  */
 
 static void
 info_variables_command (const char *args, int from_tty)
 {
   info_print_options opts;
-  extract_info_print_options (&opts, &args);
+  auto grp = make_info_print_options_def_group (&opts);
+  gdb::option::process_options
+    (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
+  if (args != nullptr && *args == '\0')
+    args = nullptr;
 
-  symtab_symbol_info (opts.quiet, args, VARIABLES_DOMAIN,
+  symtab_symbol_info (opts.quiet, opts.exclude_minsyms, args, VARIABLES_DOMAIN,
 		      opts.type_regexp, from_tty);
 }
 
@@ -4907,10 +4985,14 @@ static void
 info_functions_command (const char *args, int from_tty)
 {
   info_print_options opts;
-  extract_info_print_options (&opts, &args);
+  auto grp = make_info_print_options_def_group (&opts);
+  gdb::option::process_options
+    (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
+  if (args != nullptr && *args == '\0')
+    args = nullptr;
 
-  symtab_symbol_info (opts.quiet, args, FUNCTIONS_DOMAIN,
-		      opts.type_regexp, from_tty);
+  symtab_symbol_info (opts.quiet, opts.exclude_minsyms, args,
+		      FUNCTIONS_DOMAIN, opts.type_regexp, from_tty);
 }
 
 /* Holds the -q option for the 'info types' command.  */
@@ -4951,7 +5033,7 @@ info_types_command (const char *args, int from_tty)
     (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
   if (args != nullptr && *args == '\0')
     args = nullptr;
-  symtab_symbol_info (opts.quiet, args, TYPES_DOMAIN, NULL, from_tty);
+  symtab_symbol_info (opts.quiet, false, args, TYPES_DOMAIN, NULL, from_tty);
 }
 
 /* Command completer for 'info types' command.  */
@@ -5012,7 +5094,8 @@ rbreak_command (const char *regexp, int from_tty)
   std::vector<symbol_search> symbols = search_symbols (regexp,
 						       FUNCTIONS_DOMAIN,
 						       NULL,
-						       nfiles, files);
+						       nfiles, files,
+						       false);
 
   scoped_rbreak_breakpoints finalize;
   for (const symbol_search &p : symbols)
@@ -6201,27 +6284,30 @@ _initialize_symtab (void)
   c = add_info ("variables", info_variables_command,
 		info_print_args_help (_("\
 All global and static variable names or those matching REGEXPs.\n\
-Usage: info variables [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
+Usage: info variables [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n\
 Prints the global and static variables.\n"),
-				  _("global and static variables")));
+				      _("global and static variables"),
+				      true));
   set_cmd_completer_handle_brkchars (c, info_print_command_completer);
   if (dbx_commands)
     {
       c = add_com ("whereis", class_info, info_variables_command,
 		   info_print_args_help (_("\
 All global and static variable names, or those matching REGEXPs.\n\
-Usage: whereis [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
+Usage: whereis [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n\
 Prints the global and static variables.\n"),
-				   _("global and static variables")));
+					 _("global and static variables"),
+					 true));
       set_cmd_completer_handle_brkchars (c, info_print_command_completer);
     }
 
   c = add_info ("functions", info_functions_command,
 		info_print_args_help (_("\
 All function names or those matching REGEXPs.\n\
-Usage: info functions [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
+Usage: info functions [-q] [-n] [-t TYPEREGEXP] [NAMEREGEXP]\n\
 Prints the functions.\n"),
-				  _("functions")));
+				      _("functions"),
+				      true));
   set_cmd_completer_handle_brkchars (c, info_print_command_completer);
 
   c = add_info ("types", info_types_command, _("\
diff --git a/gdb/symtab.h b/gdb/symtab.h
index f2d59a9f90..f38e544cdb 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -2027,7 +2027,8 @@ extern std::vector<symbol_search> search_symbols (const char *,
 						  enum search_domain,
 						  const char *,
 						  int,
-						  const char **);
+						  const char **,
+						  bool);
 extern bool treg_matches_sym_type_name (const compiled_regex &treg,
 					const struct symbol *sym);
 
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3117fe78bf..7b6793b0a2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/info-fun.exp: Extend to test the -n flag for 'info
+	functions'.  Reindent as needed.
+	* gdb.base/info-var-f1.c: New file.
+	* gdb.base/info-var-f2.c: New file.
+	* gdb.base/info-var.exp: New file.
+	* gdb.base/info-var.h: New file.
+
 2019-08-26  Tom de Vries  <tdevries@suse.de>
 
 	PR c++/24852
diff --git a/gdb/testsuite/gdb.base/info-fun.exp b/gdb/testsuite/gdb.base/info-fun.exp
index 208525eda6..cee3a09ac1 100644
--- a/gdb/testsuite/gdb.base/info-fun.exp
+++ b/gdb/testsuite/gdb.base/info-fun.exp
@@ -30,54 +30,63 @@ if [get_compiler_info] {
     return -1
 }
 
-# SEP must be last for the possible `unsupported' error path.
-foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" {
+foreach_with_prefix n_flag { 0 1 } {
 
-    set sep_lib_flags $lib_flags
-    if {$libsepdebug != "NO"} {
-	lappend sep_lib_flags {debug}
-    }
-    if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $sep_lib_flags] != ""
-	 || [gdb_compile $srcdir/$subdir/${srcfile} ${binfile} \
-		 executable $bin_flags] != "" } {
-      untested "failed to compile"
-      return -1
-    }
+    # SEP must be last for the possible `unsupported' error path.
+    foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" {
 
-    if {$libsepdebug == "SEP"} {
-	if {[gdb_gnu_strip_debug $binfile_lib] != 0} {
-	    unsupported "could not split debug of $binfile_lib."
-	    return
-	} else {
-	    pass "split solib"
+	set sep_lib_flags $lib_flags
+	if {$libsepdebug != "NO"} {
+	    lappend sep_lib_flags {debug}
+	}
+	if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $sep_lib_flags] != ""
+	     || [gdb_compile $srcdir/$subdir/${srcfile} ${binfile} \
+		     executable $bin_flags] != "" } {
+	    untested "failed to compile"
+	    return -1
 	}
-    }
 
-    clean_restart $executable
+	if {$libsepdebug == "SEP"} {
+	    if {[gdb_gnu_strip_debug $binfile_lib] != 0} {
+		unsupported "could not split debug of $binfile_lib."
+		return
+	    } else {
+		pass "split solib"
+	    }
+	}
+
+	clean_restart $executable
+
+	if ![runto_main] then {
+	    fail "can't run to main"
+	    return 0
+	}
 
-    if ![runto_main] then {
-      fail "can't run to main"
-      return 0
-    }
+	set match_str {All functions matching regular expression "foo":[\r\n]*}
+	if { "$libsepdebug" != "NO"  } {
+	    append match_str {File .*/info-fun-solib[.]c:[\r\n]*}
+	    append match_str {\d+:\tint foo\(void\);[\r\n]*}
+	}
 
-    set match_str {All functions matching regular expression "foo":[\r\n]*}
-    if { "$libsepdebug" != "NO"  } {
-	append match_str {File .*/info-fun-solib[.]c:[\r\n]*}
-	append match_str {\d+:\tint foo\(void\);[\r\n]*}
-    }
-    append match_str {Non-debugging symbols:[\r\n]*}
-    # Note: Targets like {m68k,ppc64,s390x}-linux also have, e.g.,
-    # 00000011.plt_call.foo+0 (m68k).
-    set plt_foo_match "($hex \[^\r\n\]*plt\[^\r\n\]*foo\[^\r\n\]*\[\r\n\]*)?"
-    append match_str $plt_foo_match
-    # This text we want to match precisely.
-    append match_str "$hex *foo(@plt)?\[\r\n\]*"
-    # Watch for again to not have to worry about the order of appearance.
-    append match_str $plt_foo_match
-    if { "$libsepdebug" == "NO"  } {
-	# Note: The ".?" is for targets like m68k-linux that have ".foo" here.
-	append match_str "$hex *.?foo\[\r\n\]*"
-    }
+	set opt ""
+	if { !$n_flag } {
+	    append match_str {Non-debugging symbols:[\r\n]*}
+	    # Note: Targets like {m68k,ppc64,s390x}-linux also have, e.g.,
+	    # 00000011.plt_call.foo+0 (m68k).
+	    set plt_foo_match "($hex \[^\r\n\]*plt\[^\r\n\]*foo\[^\r\n\]*\[\r\n\]*)?"
+	    append match_str $plt_foo_match
+	    # This text we want to match precisely.
+	    append match_str "$hex *foo(@plt)?\[\r\n\]*"
+	    # Watch for again to not have to worry about the order of appearance.
+	    append match_str $plt_foo_match
+	    if { "$libsepdebug" == "NO"  } {
+		# Note: The ".?" is for targets like m68k-linux that have ".foo" here.
+		append match_str "$hex *.?foo\[\r\n\]*"
+	    }
+	} else {
+	    set opt "-n"
+	}
 
-    gdb_test "info fun foo" "$match_str"
-}}
+	gdb_test "info fun $opt foo" "$match_str"
+    }}
+}
diff --git a/gdb/testsuite/gdb.base/info-var-f1.c b/gdb/testsuite/gdb.base/info-var-f1.c
new file mode 100644
index 0000000000..b0587f12da
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-var-f1.c
@@ -0,0 +1,24 @@
+/* Copyright 2019 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "info-var.h"
+
+static int f1_var = -3;
+
+int
+main ()
+{
+  return global_var + get_offset() + f1_var;
+}
diff --git a/gdb/testsuite/gdb.base/info-var-f2.c b/gdb/testsuite/gdb.base/info-var-f2.c
new file mode 100644
index 0000000000..fdff696ebe
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-var-f2.c
@@ -0,0 +1,26 @@
+/* Copyright 2019 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "info-var.h"
+
+int global_var = 1;
+
+static int f2_var = 2;
+
+int
+get_offset (void)
+{
+  return f2_var;
+}
diff --git a/gdb/testsuite/gdb.base/info-var.exp b/gdb/testsuite/gdb.base/info-var.exp
new file mode 100644
index 0000000000..5a07d6214d
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-var.exp
@@ -0,0 +1,60 @@
+# Copyright 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Some basic testing of 'info variables'.
+
+standard_testfile info-var-f1.c info-var-f2.c
+
+if {[prepare_for_testing "failed to prepare" \
+	 "${testfile}" "$srcfile $srcfile2" "debug"]} {
+    return -1
+}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+gdb_test "info variables" \
+    [multi_line \
+	 "All defined variables:" \
+	 "" \
+	 "File .*${srcfile}:" \
+	 "18:\[ \t\]+static int f1_var;" \
+	 "" \
+	 "File .*${srcfile2}:" \
+	 "18:\[ \t\]+int global_var;" \
+	 "20:\[ \t\]+static int f2_var;" \
+	 "" \
+	 "Non-debugging symbols:" \
+	 ".*"]
+
+gdb_test "info variables -n" \
+    [multi_line \
+	 "All defined variables:" \
+	 "" \
+	 "File .*${srcfile}:" \
+	 "18:\[ \t\]+static int f1_var;" \
+	 "" \
+	 "File .*${srcfile2}:" \
+	 "18:\[ \t\]+int global_var;" \
+	 "20:\[ \t\]+static int f2_var;" ]
+
+gdb_test "info variables -n global" \
+    [multi_line \
+	 "All variables matching regular expression \"global\":" \
+	 "" \
+	 "File .*${srcfile2}:" \
+	 "18:\[ \t\]+int global_var;" ]
diff --git a/gdb/testsuite/gdb.base/info-var.h b/gdb/testsuite/gdb.base/info-var.h
new file mode 100644
index 0000000000..d65db82474
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-var.h
@@ -0,0 +1,18 @@
+/* Copyright 2019 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+extern int global_var;
+
+extern int get_offset (void);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix compiler warning in linux-namespaces.c
@ 2019-08-27 19:31 gdb-buildbot
  2019-08-27 19:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-27 19:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 550105b77914a8b06498318775b28e85c610b9a3 ***

commit 550105b77914a8b06498318775b28e85c610b9a3
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Aug 27 13:22:38 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Tue Aug 27 13:53:05 2019 -0500

    Fix compiler warning in linux-namespaces.c
    
    ../../gdb/nat/linux-namespaces.c: In function void mnsh_main(int):
    ../../gdb/nat/linux-namespaces.c:604:8: warning: fd may be used uninitialized in this function [-Wmaybe-uninitialized]
      close (fd);
      ~~~~~~^~~~
    
    And the warning is correct -- mnsh_recv_message can return -1 and leave fd
    uninitialized, and mnsh_main will still call close (fd) if that happens.
    
    Initialize fd to -1 to avoid that.
    
    gdb/ChangeLog:
    
    2019-08-27  Christian Biesinger  <cbiesinger@google.com>
    
            * nat/linux-namespaces.c (mnsh_main): Initialize fd (to -1).

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c7d2dae4ff..002825312c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* nat/linux-namespaces.c (mnsh_main): Initialize fd (to -1).
+
 2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* cli/cli-utils.c (info_print_options_defs): Delete.
diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c
index 503f755903..e49bc1ade3 100644
--- a/gdb/nat/linux-namespaces.c
+++ b/gdb/nat/linux-namespaces.c
@@ -562,7 +562,7 @@ mnsh_main (int sock)
   while (1)
     {
       enum mnsh_msg_type type;
-      int fd, int1, int2;
+      int fd = -1, int1, int2;
       char buf[PATH_MAX];
       ssize_t size, response = -1;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Implement la_print_typedef for Fortran
@ 2019-08-28 13:33 gdb-buildbot
  2019-08-28 13:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-28 13:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1f20c35ea4a0095e6a9d9b7819f6c437a0c4cfc1 ***

commit 1f20c35ea4a0095e6a9d9b7819f6c437a0c4cfc1
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Tue Jul 9 15:47:19 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Wed Aug 28 13:33:54 2019 +0100

    gdb/fortran: Implement la_print_typedef for Fortran
    
    Implement an la_print_typedef method for Fortran, this allows 'info
    types' to work for Fortran.  The implementation is just copied from
    ada_print_typedef (with the appropriate changes).
    
    To support the testing of this patch I added a new proc,
    fortran_character1, to lib/fortran.exp which returns a regexp to match
    a 1-byte character type.  The regexp returned is correct for current
    versions of gFortran.  All of the other regexp are guesses based on
    all of the other support procs in lib/fortran.exp, I haven't tested
    them myself.
    
    gdb/ChangeLog:
    
            * f-lang.c (f_language_defn): Use f_print_typedef.
            * f-lang.h (f_print_typedef): Declare.
            * f-typeprint.c (f_print_typedef): Define.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.fortran/info-types.exp: New file.
            * gdb.fortran/info-types.f90: New file.
            * lib/fortran.exp (fortran_character1): New proc.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 002825312c..4767e03b7e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (f_language_defn): Use f_print_typedef.
+	* f-lang.h (f_print_typedef): Declare.
+	* f-typeprint.c (f_print_typedef): Define.
+
 2019-08-27  Christian Biesinger  <cbiesinger@google.com>
 
 	* nat/linux-namespaces.c (mnsh_main): Initialize fd (to -1).
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index e93a5f3427..ce7f1471c5 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -644,7 +644,7 @@ extern const struct language_defn f_language_defn =
   f_printstr,			/* function to print string constant */
   f_emit_char,			/* Function to print a single character */
   f_print_type,			/* Print a type using appropriate syntax */
-  default_print_typedef,	/* Print a typedef using appropriate syntax */
+  f_print_typedef,		/* Print a typedef using appropriate syntax */
   f_val_print,			/* Print a value using appropriate syntax */
   c_value_print,		/* FIXME */
   default_read_var_value,	/* la_read_var_value */
diff --git a/gdb/f-lang.h b/gdb/f-lang.h
index 1ba529d76c..cf6024c445 100644
--- a/gdb/f-lang.h
+++ b/gdb/f-lang.h
@@ -28,6 +28,11 @@ struct parser_state;
 
 extern int f_parse (struct parser_state *);
 
+/* Implement the la_print_typedef language method for Fortran.  */
+
+extern void f_print_typedef (struct type *type, struct symbol *new_symbol,
+			     struct ui_file *stream);
+
 extern void f_print_type (struct type *, const char *, struct ui_file *, int,
 			  int, const struct type_print_options *);
 
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index 17ac02f4cc..92b5093874 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -45,6 +45,17 @@ void f_type_print_varspec_prefix (struct type *, struct ui_file *,
 void f_type_print_base (struct type *, struct ui_file *, int, int);
 \f
 
+/* See documentation in f-lang.h.  */
+
+void
+f_print_typedef (struct type *type, struct symbol *new_symbol,
+		 struct ui_file *stream)
+{
+  type = check_typedef (type);
+  f_print_type (type, "", stream, 0, 0, &type_print_raw_options);
+  fprintf_filtered (stream, "\n");
+}
+
 /* LEVEL is the depth to indent lines by.  */
 
 void
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7b6793b0a2..02a3c01667 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/info-types.exp: New file.
+	* gdb.fortran/info-types.f90: New file.
+	* lib/fortran.exp (fortran_character1): New proc.
+
 2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/info-fun.exp: Extend to test the -n flag for 'info
diff --git a/gdb/testsuite/gdb.fortran/info-types.exp b/gdb/testsuite/gdb.fortran/info-types.exp
new file mode 100644
index 0000000000..9571dc4559
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/info-types.exp
@@ -0,0 +1,45 @@
+# Copyright 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This file tests 'info types' for some Fortran types.
+
+load_lib "fortran.exp"
+
+if { [skip_fortran_tests] } { continue }
+
+standard_testfile .f90
+
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } {
+    return -1
+}
+
+if { ![runto MAIN__] } {
+    perror "Could not run to breakpoint `MAIN__'."
+    continue
+}
+
+set integer4 [fortran_int4]
+set logical4 [fortran_logical4]
+set character1 [fortran_character1]
+
+gdb_test "info types" \
+    [multi_line \
+	 "All defined types:" \
+	 "" \
+	 "File .*:" \
+	 "\[\t \]+${character1}" \
+	 "\[\t \]+${integer4}" \
+	 "\[\t \]+${logical4}" \
+	 "16:\[\t \]+Type s1;" ]
diff --git a/gdb/testsuite/gdb.fortran/info-types.f90 b/gdb/testsuite/gdb.fortran/info-types.f90
new file mode 100644
index 0000000000..21c9d9df63
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/info-types.f90
@@ -0,0 +1,25 @@
+! Copyright 2019 Free Software Foundation, Inc.
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 2 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+program info_types_test
+  type :: s1
+     integer :: a
+  end type s1
+
+  logical :: l
+  type (s1) :: var_a
+  var_a%a = 1
+  l = .FALSE.
+end program info_types_test
diff --git a/gdb/testsuite/lib/fortran.exp b/gdb/testsuite/lib/fortran.exp
index d3a35cd291..81811dbc3c 100644
--- a/gdb/testsuite/lib/fortran.exp
+++ b/gdb/testsuite/lib/fortran.exp
@@ -88,3 +88,15 @@ proc fortran_logical4 {} {
 	return "unknown"
     }
 }
+
+proc fortran_character1 {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]} {
+	return "character1"
+    } elseif {[test_compiler_info {gcc-*}]} {
+	return "character\\(kind=1\\)"
+    } elseif {[test_compiler_info {icc-*}]} {
+	return "CHARACTER\\(1\\)"
+    } else {
+	return "unknown"
+    }
+}


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/fortran: Don't include module symbols when searching for types
@ 2019-08-28 13:58 gdb-buildbot
  2019-08-28 14:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-28 13:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d8f27c6018adbb32a3ebba39a5abac44a6b9e67c ***

commit d8f27c6018adbb32a3ebba39a5abac44a6b9e67c
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Tue Jul 9 15:49:07 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Wed Aug 28 13:33:55 2019 +0100

    gdb/fortran: Don't include module symbols when searching for types
    
    Currently the 'info types' command will return symbols that correspond
    to Fortran modules.  This is because the symbols are created with
    domain MODULE_DOMAIN and address_class LOC_TYPEDEF.  The address_class
    LOC_TYPEDEF is the same address_class used for type symbols which is
    why the modules show up when listing types.
    
    This commit explicitly prevents symbols in the MODULE_DOMAIN from
    appearing when we search for symbols in the TYPES_DOMAIN, this
    prevents the Fortran module symbols from appearing in the output of
    'info types'.
    
    gdb/ChangeLog:
    
            * symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
            when searching for types.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.fortran/info-types.exp: Add module.
            * gdb.fortran/info-types.f90: Update expected results.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4767e03b7e..a82f7c64ae 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
+	when searching for types.
+
 2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* f-lang.c (f_language_defn): Use f_print_typedef.
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 7762c85708..88e34de05b 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4659,7 +4659,8 @@ search_symbols (const char *regexp, enum search_domain kind,
 				      || treg_matches_sym_type_name (*treg,
 								     sym)))
 			      || (kind == TYPES_DOMAIN
-				  && SYMBOL_CLASS (sym) == LOC_TYPEDEF))))
+				  && SYMBOL_CLASS (sym) == LOC_TYPEDEF
+				  && SYMBOL_DOMAIN (sym) != MODULE_DOMAIN))))
 		    {
 		      /* match */
 		      result.emplace_back (i, sym);
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 02a3c01667..3939a747c5 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/info-types.exp: Add module.
+	* gdb.fortran/info-types.f90: Update expected results.
+
 2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.fortran/info-types.exp: New file.
diff --git a/gdb/testsuite/gdb.fortran/info-types.exp b/gdb/testsuite/gdb.fortran/info-types.exp
index 9571dc4559..81e67395e8 100644
--- a/gdb/testsuite/gdb.fortran/info-types.exp
+++ b/gdb/testsuite/gdb.fortran/info-types.exp
@@ -42,4 +42,6 @@ gdb_test "info types" \
 	 "\[\t \]+${character1}" \
 	 "\[\t \]+${integer4}" \
 	 "\[\t \]+${logical4}" \
-	 "16:\[\t \]+Type s1;" ]
+	 "20:\[\t \]+Type __vtype_mod1_M1t1;" \
+	 "17:\[\t \]+Type m1t1;" \
+	 "22:\[\t \]+Type s1;" ]
diff --git a/gdb/testsuite/gdb.fortran/info-types.f90 b/gdb/testsuite/gdb.fortran/info-types.f90
index 21c9d9df63..0e27e1ddf0 100644
--- a/gdb/testsuite/gdb.fortran/info-types.f90
+++ b/gdb/testsuite/gdb.fortran/info-types.f90
@@ -13,13 +13,24 @@
 ! You should have received a copy of the GNU General Public License
 ! along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+module mod1
+  type :: m1t1
+     integer :: b
+  end type m1t1
+end module mod1
+
 program info_types_test
+  use mod1
+
   type :: s1
      integer :: a
   end type s1
 
   logical :: l
   type (s1) :: var_a
+  type (m1t1) :: var_b
+
   var_a%a = 1
+  var_b%b = 2
   l = .FALSE.
 end program info_types_test


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix Gnulib glob.c resource leaks found by Coverity
@ 2019-08-28 15:15 gdb-buildbot
  2019-08-28 16:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-28 15:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8ae0786c30a3a8d846994d0a6e7a00646f0bcd20 ***

commit 8ae0786c30a3a8d846994d0a6e7a00646f0bcd20
Author:     Gary Benson <gbenson@redhat.com>
AuthorDate: Wed Aug 28 15:19:28 2019 +0100
Commit:     Gary Benson <gbenson@redhat.com>
CommitDate: Wed Aug 28 15:19:28 2019 +0100

    Fix Gnulib glob.c resource leaks found by Coverity
    
    Coverity discovered a number of resource leaks in Gnulib's glob.c.
    This commit backports the Gnulib commits that fix the leaks.
    
    gnulib/ChangeLog:
    
            * patches/0003-Fix-glob-c-Coverity-issues.patch: New file.
            * update-gnulib.sh: List the above.
            * import/glob.c: Rebuild.

diff --git a/gnulib/ChangeLog b/gnulib/ChangeLog
index 0117dc5bae..181fccd44b 100644
--- a/gnulib/ChangeLog
+++ b/gnulib/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* patches/0003-Fix-glob-c-Coverity-issues.patch: New file.
+	* update-gnulib.sh: List the above.
+	* import/glob.c: Rebuild.
+
 2019-06-21  Gary Benson  <gbenson@redhat.com>
 
 	* update-gnulib.sh: Adjust paths.
diff --git a/gnulib/import/glob.c b/gnulib/import/glob.c
index 4b04b902e5..416d210b63 100644
--- a/gnulib/import/glob.c
+++ b/gnulib/import/glob.c
@@ -734,6 +734,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                       pwtmpbuf = malloc (pwbuflen);
                       if (pwtmpbuf == NULL)
                         {
+                          if (__glibc_unlikely (malloc_name))
+                            free (name);
                           retval = GLOB_NOSPACE;
                           goto out;
                         }
@@ -762,6 +764,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                           if (newp == NULL)
                             {
                               free (malloc_pwtmpbuf);
+                              if (__glibc_unlikely (malloc_name))
+                                free (name);
                               retval = GLOB_NOSPACE;
                               goto out;
                             }
@@ -797,23 +801,30 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                               malloc_home_dir = 1;
                             }
                           memcpy (home_dir, p->pw_dir, home_dir_len);
-
-                          free (pwtmpbuf);
                         }
                     }
+                  free (malloc_pwtmpbuf);
+                }
+              else
+                {
+                  if (__glibc_unlikely (malloc_name))
+                    free (name);
                 }
             }
           if (home_dir == NULL || home_dir[0] == '\0')
             {
+              if (__glibc_unlikely (malloc_home_dir))
+                free (home_dir);
               if (flags & GLOB_TILDE_CHECK)
                 {
-                  if (__glibc_unlikely (malloc_home_dir))
-                    free (home_dir);
                   retval = GLOB_NOMATCH;
                   goto out;
                 }
               else
-                home_dir = (char *) "~"; /* No luck.  */
+                {
+                  home_dir = (char *) "~"; /* No luck.  */
+                  malloc_home_dir = 0;
+                }
             }
 #  endif /* WINDOWS32 */
 # endif
@@ -855,6 +866,9 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               dirname = newp;
               dirlen += home_len - 1;
               malloc_dirname = !use_alloca;
+
+              if (__glibc_unlikely (malloc_home_dir))
+                free (home_dir);
             }
           dirname_modified = 1;
         }
@@ -1027,9 +1041,12 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                 free (malloc_pwtmpbuf);
 
                 if (flags & GLOB_TILDE_CHECK)
-                  /* We have to regard it as an error if we cannot find the
-                     home directory.  */
-                  return GLOB_NOMATCH;
+                  {
+                    /* We have to regard it as an error if we cannot find the
+                       home directory.  */
+                    retval = GLOB_NOMATCH;
+                    goto out;
+                  }
               }
           }
         }
@@ -1059,7 +1076,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               free (pglob->gl_pathv);
               pglob->gl_pathv = NULL;
               pglob->gl_pathc = 0;
-              return GLOB_NOSPACE;
+              retval = GLOB_NOSPACE;
+              goto out;
             }
 
           new_gl_pathv = realloc (pglob->gl_pathv,
@@ -1077,12 +1095,19 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               p = mempcpy (pglob->gl_pathv[newcount], dirname, dirlen);
               p[0] = '/';
               p[1] = '\0';
+              if (__glibc_unlikely (malloc_dirname))
+                free (dirname);
             }
           else
             {
-              pglob->gl_pathv[newcount] = strdup (dirname);
-              if (pglob->gl_pathv[newcount] == NULL)
-                goto nospace;
+              if (__glibc_unlikely (malloc_dirname))
+                pglob->gl_pathv[newcount] = dirname;
+              else
+                {
+                  pglob->gl_pathv[newcount] = strdup (dirname);
+                  if (pglob->gl_pathv[newcount] == NULL)
+                    goto nospace;
+                }
             }
           pglob->gl_pathv[++newcount] = NULL;
           ++pglob->gl_pathc;
@@ -1092,7 +1117,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
         }
 
       /* Not found.  */
-      return GLOB_NOMATCH;
+      retval = GLOB_NOMATCH;
+      goto out;
     }
 
   meta = __glob_pattern_type (dirname, !(flags & GLOB_NOESCAPE));
@@ -1138,7 +1164,10 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
       if (status != 0)
         {
           if ((flags & GLOB_NOCHECK) == 0 || status != GLOB_NOMATCH)
-            return status;
+            {
+              retval = status;
+              goto out;
+            }
           goto no_matches;
         }
 
@@ -1157,7 +1186,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
             if (interrupt_state)
               {
                 globfree (&dirs);
-                return GLOB_ABORTED;
+                retval = GLOB_ABORTED;
+                goto out;
               }
           }
 #endif /* SHELL.  */
@@ -1176,7 +1206,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               globfree (&dirs);
               globfree (pglob);
               pglob->gl_pathc = 0;
-              return status;
+              retval = status;
+              goto out;
             }
 
           /* Stick the directory on the front of each name.  */
@@ -1187,7 +1218,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               globfree (&dirs);
               globfree (pglob);
               pglob->gl_pathc = 0;
-              return GLOB_NOSPACE;
+              retval = GLOB_NOSPACE;
+              goto out;
             }
         }
 
@@ -1209,7 +1241,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                 {
                 nospace2:
                   globfree (&dirs);
-                  return GLOB_NOSPACE;
+                  retval = GLOB_NOSPACE;
+                  goto out;
                 }
 
               new_gl_pathv = realloc (pglob->gl_pathv,
@@ -1224,7 +1257,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
                   globfree (&dirs);
                   globfree (pglob);
                   pglob->gl_pathc = 0;
-                  return GLOB_NOSPACE;
+                  retval = GLOB_NOSPACE;
+                  goto out;
                 }
 
               ++pglob->gl_pathc;
@@ -1236,7 +1270,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
           else
             {
               globfree (&dirs);
-              return GLOB_NOMATCH;
+              retval = GLOB_NOMATCH;
+              goto out;
             }
         }
 
@@ -1282,7 +1317,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               flags = orig_flags;
               goto no_matches;
             }
-          return status;
+          retval = status;
+          goto out;
         }
 
       if (dirlen > 0)
@@ -1294,7 +1330,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
             {
               globfree (pglob);
               pglob->gl_pathc = 0;
-              return GLOB_NOSPACE;
+              retval = GLOB_NOSPACE;
+              goto out;
             }
         }
     }
@@ -1319,7 +1356,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
               {
                 globfree (pglob);
                 pglob->gl_pathc = 0;
-                return GLOB_NOSPACE;
+                retval = GLOB_NOSPACE;
+                goto out;
               }
             strcpy (&new[len - 2], "/");
             pglob->gl_pathv[i] = new;
diff --git a/gnulib/patches/0003-Fix-glob-c-Coverity-issues.patch b/gnulib/patches/0003-Fix-glob-c-Coverity-issues.patch
new file mode 100644
index 0000000000..f976bb9e1a
--- /dev/null
+++ b/gnulib/patches/0003-Fix-glob-c-Coverity-issues.patch
@@ -0,0 +1,279 @@
+Coverity discovered a number of resource leaks in Gnulib.
+The solution is to backport the following Gnulib commits:
+
+  commit 0eee3ccaae5bb3d0016a0da8b8e5108767c02748
+  Author: Bruno Haible <bruno@clisp.org>
+  Date:   Fri Mar 31 22:41:38 2017 +0200
+
+      glob: Fix memory leaks.
+
+      * lib/glob.c (glob): Free allocated memory before returning.
+      Reported by Coverity via Tim Rhsen.
+
+  commit b1d7f3165ba1c7a44a29017eb80491094aa240ba
+  Author: Bruno Haible <bruno@clisp.org>
+  Date:   Fri Mar 31 22:43:35 2017 +0200
+
+      glob: Fix invalid free() call.
+
+      * lib/glob.c (glob): Reset malloc_home_dir when assigning a pointer to
+      static storage to home_dir.
+      Reported by Coverity via Tim Rhsen.
+
+  commit 1540f3441555f756558f3a18e5f68914c0b72227
+  Author: Bruno Haible <bruno@clisp.org>
+  Date:   Sat Apr 1 15:15:18 2017 +0200
+
+      glob: Fix more memory leaks.
+
+      * lib/glob.c (glob): Free allocated memory before returning.
+      Reported by Coverity via Tim Rhsen.
+
+  commit b19cb256c9a4d3a138c27181cffee5513edb0e81
+  Author: Bruno Haible <bruno@clisp.org>
+  Date:   Thu Jul 6 23:21:49 2017 +0200
+
+      glob: Fix more memory leaks.
+
+      * lib/glob.c (glob): Free dirname before returning.
+      Reported by Coverity and Tim Rhsen.
+
+  commit 8cb994d1fc4a957359780e1a4187b4f250c1cea5
+  Author: Tim Rhsen <tim.ruehsen@gmx.de>
+  Date:   Mon Jul 10 19:02:19 2017 +0200
+
+      glob: Fix more memory leaks.
+
+      * lib/glob.c (glob): Use 'goto out' in order to free dirname before
+      returning.
+      Reported by Tim Rhsen.
+
+diff --git a/gnulib/import/glob.c b/gnulib/import/glob.c
+index 4b04b90..416d210 100644
+--- a/gdb/gnulib/import/glob.c
++++ b/gdb/gnulib/import/glob.c
+@@ -734,6 +734,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                       pwtmpbuf = malloc (pwbuflen);
+                       if (pwtmpbuf == NULL)
+                         {
++                          if (__glibc_unlikely (malloc_name))
++                            free (name);
+                           retval = GLOB_NOSPACE;
+                           goto out;
+                         }
+@@ -762,6 +764,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                           if (newp == NULL)
+                             {
+                               free (malloc_pwtmpbuf);
++                              if (__glibc_unlikely (malloc_name))
++                                free (name);
+                               retval = GLOB_NOSPACE;
+                               goto out;
+                             }
+@@ -797,23 +801,30 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                               malloc_home_dir = 1;
+                             }
+                           memcpy (home_dir, p->pw_dir, home_dir_len);
+-
+-                          free (pwtmpbuf);
+                         }
+                     }
++                  free (malloc_pwtmpbuf);
++                }
++              else
++                {
++                  if (__glibc_unlikely (malloc_name))
++                    free (name);
+                 }
+             }
+           if (home_dir == NULL || home_dir[0] == '\0')
+             {
++              if (__glibc_unlikely (malloc_home_dir))
++                free (home_dir);
+               if (flags & GLOB_TILDE_CHECK)
+                 {
+-                  if (__glibc_unlikely (malloc_home_dir))
+-                    free (home_dir);
+                   retval = GLOB_NOMATCH;
+                   goto out;
+                 }
+               else
+-                home_dir = (char *) "~"; /* No luck.  */
++                {
++                  home_dir = (char *) "~"; /* No luck.  */
++                  malloc_home_dir = 0;
++                }
+             }
+ #  endif /* WINDOWS32 */
+ # endif
+@@ -855,6 +866,9 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               dirname = newp;
+               dirlen += home_len - 1;
+               malloc_dirname = !use_alloca;
++
++              if (__glibc_unlikely (malloc_home_dir))
++                free (home_dir);
+             }
+           dirname_modified = 1;
+         }
+@@ -1027,9 +1041,12 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                 free (malloc_pwtmpbuf);
+ 
+                 if (flags & GLOB_TILDE_CHECK)
+-                  /* We have to regard it as an error if we cannot find the
+-                     home directory.  */
+-                  return GLOB_NOMATCH;
++                  {
++                    /* We have to regard it as an error if we cannot find the
++                       home directory.  */
++                    retval = GLOB_NOMATCH;
++                    goto out;
++                  }
+               }
+           }
+         }
+@@ -1059,7 +1076,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               free (pglob->gl_pathv);
+               pglob->gl_pathv = NULL;
+               pglob->gl_pathc = 0;
+-              return GLOB_NOSPACE;
++              retval = GLOB_NOSPACE;
++              goto out;
+             }
+ 
+           new_gl_pathv = realloc (pglob->gl_pathv,
+@@ -1077,12 +1095,19 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               p = mempcpy (pglob->gl_pathv[newcount], dirname, dirlen);
+               p[0] = '/';
+               p[1] = '\0';
++              if (__glibc_unlikely (malloc_dirname))
++                free (dirname);
+             }
+           else
+             {
+-              pglob->gl_pathv[newcount] = strdup (dirname);
+-              if (pglob->gl_pathv[newcount] == NULL)
+-                goto nospace;
++              if (__glibc_unlikely (malloc_dirname))
++                pglob->gl_pathv[newcount] = dirname;
++              else
++                {
++                  pglob->gl_pathv[newcount] = strdup (dirname);
++                  if (pglob->gl_pathv[newcount] == NULL)
++                    goto nospace;
++                }
+             }
+           pglob->gl_pathv[++newcount] = NULL;
+           ++pglob->gl_pathc;
+@@ -1092,7 +1117,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+         }
+ 
+       /* Not found.  */
+-      return GLOB_NOMATCH;
++      retval = GLOB_NOMATCH;
++      goto out;
+     }
+ 
+   meta = __glob_pattern_type (dirname, !(flags & GLOB_NOESCAPE));
+@@ -1138,7 +1164,10 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+       if (status != 0)
+         {
+           if ((flags & GLOB_NOCHECK) == 0 || status != GLOB_NOMATCH)
+-            return status;
++            {
++              retval = status;
++              goto out;
++            }
+           goto no_matches;
+         }
+ 
+@@ -1157,7 +1186,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+             if (interrupt_state)
+               {
+                 globfree (&dirs);
+-                return GLOB_ABORTED;
++                retval = GLOB_ABORTED;
++                goto out;
+               }
+           }
+ #endif /* SHELL.  */
+@@ -1176,7 +1206,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               globfree (&dirs);
+               globfree (pglob);
+               pglob->gl_pathc = 0;
+-              return status;
++              retval = status;
++              goto out;
+             }
+ 
+           /* Stick the directory on the front of each name.  */
+@@ -1187,7 +1218,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               globfree (&dirs);
+               globfree (pglob);
+               pglob->gl_pathc = 0;
+-              return GLOB_NOSPACE;
++              retval = GLOB_NOSPACE;
++              goto out;
+             }
+         }
+ 
+@@ -1209,7 +1241,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                 {
+                 nospace2:
+                   globfree (&dirs);
+-                  return GLOB_NOSPACE;
++                  retval = GLOB_NOSPACE;
++                  goto out;
+                 }
+ 
+               new_gl_pathv = realloc (pglob->gl_pathv,
+@@ -1224,7 +1257,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+                   globfree (&dirs);
+                   globfree (pglob);
+                   pglob->gl_pathc = 0;
+-                  return GLOB_NOSPACE;
++                  retval = GLOB_NOSPACE;
++                  goto out;
+                 }
+ 
+               ++pglob->gl_pathc;
+@@ -1236,7 +1270,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+           else
+             {
+               globfree (&dirs);
+-              return GLOB_NOMATCH;
++              retval = GLOB_NOMATCH;
++              goto out;
+             }
+         }
+ 
+@@ -1282,7 +1317,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               flags = orig_flags;
+               goto no_matches;
+             }
+-          return status;
++          retval = status;
++          goto out;
+         }
+ 
+       if (dirlen > 0)
+@@ -1294,7 +1330,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+             {
+               globfree (pglob);
+               pglob->gl_pathc = 0;
+-              return GLOB_NOSPACE;
++              retval = GLOB_NOSPACE;
++              goto out;
+             }
+         }
+     }
+@@ -1319,7 +1356,8 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
+               {
+                 globfree (pglob);
+                 pglob->gl_pathc = 0;
+-                return GLOB_NOSPACE;
++                retval = GLOB_NOSPACE;
++                goto out;
+               }
+             strcpy (&new[len - 2], "/");
+             pglob->gl_pathv[i] = new;
diff --git a/gnulib/update-gnulib.sh b/gnulib/update-gnulib.sh
index 0e1df226de..0c8357c888 100755
--- a/gnulib/update-gnulib.sh
+++ b/gnulib/update-gnulib.sh
@@ -171,6 +171,7 @@ apply_patches ()
 
 apply_patches "patches/0001-Fix-PR-gdb-23558-Use-system-s-getcwd-when-cross-comp.patch"
 apply_patches "patches/0002-mkostemp-mkostemps-Fix-compilation-error-in-C-mode-o.patch"
+apply_patches "patches/0003-Fix-glob-c-Coverity-issues.patch"
 
 # Regenerate all necessary files...
 aclocal -Iimport/m4 -I../config &&


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix info-var.exp for debug info from other files
@ 2019-08-28 17:56 gdb-buildbot
  2019-08-28 18:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-28 17:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 48352473b1d2c213749a324f392cf8ec53d273a6 ***

commit 48352473b1d2c213749a324f392cf8ec53d273a6
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Wed Aug 28 19:13:29 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Wed Aug 28 19:13:29 2019 +0200

    [gdb/testsuite] Fix info-var.exp for debug info from other files
    
    On openSUSE Leap 15.1, I get:
    ...
    FAIL: gdb.base/info-var.exp: info variables
    FAIL: gdb.base/info-var.exp: info variables -n
    ...
    because the info variables command prints info also for init.c:
    ...
    File init.c:^M
    24:     const int _IO_stdin_used;^M
    ...
    while the regexps in the test-case only expect info for info-var-f1.c and
    info-var-f2.c.
    
    Fix this by extending the regexps.
    
    Tested on x86_64-linux, both openSUSE Leap 15.1 and Fedora 30.
    
    gdb/testsuite/ChangeLog:
    
    2019-08-28  Tom de Vries  <tdevries@suse.de>
    
            * gdb.base/info-var.exp: Allow info variables to print info for files
            other than info-var-f1.c and info-var-f2.c.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3939a747c5..06ee15c97a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/info-var.exp: Allow info variables to print info for files
+	other than info-var-f1.c and info-var-f2.c.
+
 2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.fortran/info-types.exp: Add module.
diff --git a/gdb/testsuite/gdb.base/info-var.exp b/gdb/testsuite/gdb.base/info-var.exp
index 5a07d6214d..6dd896d8aa 100644
--- a/gdb/testsuite/gdb.base/info-var.exp
+++ b/gdb/testsuite/gdb.base/info-var.exp
@@ -37,7 +37,10 @@ gdb_test "info variables" \
 	 "File .*${srcfile2}:" \
 	 "18:\[ \t\]+int global_var;" \
 	 "20:\[ \t\]+static int f2_var;" \
-	 "" \
+	 "(" \
+	 "File .*:(" \
+	 "$decimal:.*" \
+	 ")+)*" \
 	 "Non-debugging symbols:" \
 	 ".*"]
 
@@ -50,7 +53,10 @@ gdb_test "info variables -n" \
 	 "" \
 	 "File .*${srcfile2}:" \
 	 "18:\[ \t\]+int global_var;" \
-	 "20:\[ \t\]+static int f2_var;" ]
+	 "20:\[ \t\]+static int f2_var;(" \
+	 "" \
+	 "File .*:(" \
+	 "$decimal:.*)+)*"]
 
 gdb_test "info variables -n global" \
     [multi_line \


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24891, objdump memory leaks when parsing malformed archive
@ 2019-08-29  0:55 gdb-buildbot
  2019-08-29  1:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29  0:55 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 83cf0d04dcdc9a4e7f105a517390e4c1af444340 ***

commit 83cf0d04dcdc9a4e7f105a517390e4c1af444340
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Aug 28 16:34:34 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Aug 29 07:50:40 2019 +0930

    PR24891, objdump memory leaks when parsing malformed archive
    
    BFD was leaking memory in bfd_check_format_matches.  As part of
    deciding the proper format of an archive, BFD looks at the format of
    the first file stored.  That file's bfd was left open for reasons
    given in a comment removed in git commit 0e71e4955cd1 that said:
                 /* We ought to close `first' here, but we can't, because
                    we have no way to remove it from the archive cache.
                    It's close to impossible to figure out when we can
                    release bfd_ardata.  FIXME.  */
    Well, things have changed since that comment was true and we now can
    remove files from the archive cache.  Closing the first file is good
    and cures some of the leaks.  Other leaks are caused by
    bfd_check_format_matches throwing away bfd tdata before trying a new
    match.  That lost the element cache set up when format checking the
    first element in the archive.  The easiest and cleanest fix is to
    simply disable the caching when checking the first element.
    
            PR 24891
            * bfd.c (struct bfd): Add no_element_cache.
            * archive.c (_bfd_get_elt_at_filepos): Don't add element to
            archive cache when no_element_cache.
            (bfd_generic_archive_p): Set no_element_cache when opening first
            element to check format.  Close first element too.
            (do_slurp_bsd_armap): Don't zero ardata->cache here.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9f7a8cfc6a..fe7f8eee6a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,14 @@
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	PR 24891
+	* bfd.c (struct bfd): Add no_element_cache.
+	* archive.c (_bfd_get_elt_at_filepos): Don't add element to
+	archive cache when no_element_cache.
+	(bfd_generic_archive_p): Set no_element_cache when opening first
+	element to check format.  Close first element too.
+	(do_slurp_bsd_armap): Don't zero ardata->cache here.
+	* bfd-in2.h: Regenerate.
+
 2019-08-24  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
diff --git a/bfd/archive.c b/bfd/archive.c
index 0a7da3a0cb..3baf83d40c 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -734,7 +734,8 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
   /* Copy is_linker_input.  */
   n_bfd->is_linker_input = archive->is_linker_input;
 
-  if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_bfd))
+  if (archive->no_element_cache
+      || _bfd_add_bfd_to_archive_cache (archive, filepos, n_bfd))
     return n_bfd;
 
   free (new_areldata);
@@ -885,6 +886,7 @@ bfd_generic_archive_p (bfd *abfd)
   if (abfd->target_defaulted && bfd_has_map (abfd))
     {
       bfd *first;
+      unsigned int save;
 
       /* This archive has a map, so we may presume that the contents
 	 are object files.  Make sure that if the first file in the
@@ -897,14 +899,17 @@ bfd_generic_archive_p (bfd *abfd)
 	 normal archive, regardless of the format of the object files.
 	 We do accept an empty archive.  */
 
+      save = abfd->no_element_cache;
+      abfd->no_element_cache = 1;
       first = bfd_openr_next_archived_file (abfd, NULL);
+      abfd->no_element_cache = save;
       if (first != NULL)
 	{
 	  first->target_defaulted = FALSE;
 	  if (bfd_check_format (first, bfd_object)
 	      && first->xvec != abfd->xvec)
 	    bfd_set_error (bfd_error_wrong_object_format);
-	  /* And we ought to close `first' here too.  */
+	  bfd_close (first);
 	}
     }
 
@@ -974,7 +979,6 @@ do_slurp_bsd_armap (bfd *abfd)
       goto byebye;
     }
 
-  ardata->cache = 0;
   rbase = raw_armap + BSD_SYMDEF_COUNT_SIZE;
   stringbase = ((char *) rbase
 		+ ardata->symdef_count * BSD_SYMDEF_SIZE
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index cf44bd0751..63b4792818 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -7180,6 +7180,9 @@ struct bfd
   /* Set if this is a thin archive.  */
   unsigned int is_thin_archive : 1;
 
+  /* Set if this archive should not cache element positions.  */
+  unsigned int no_element_cache : 1;
+
   /* Set if only required symbols should be added in the link hash table for
      this object.  Used by VMS linkers.  */
   unsigned int selective_search : 1;
diff --git a/bfd/bfd.c b/bfd/bfd.c
index a9b224b925..f56a8d342f 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -220,6 +220,9 @@ CODE_FRAGMENT
 .  {* Set if this is a thin archive.  *}
 .  unsigned int is_thin_archive : 1;
 .
+.  {* Set if this archive should not cache element positions.  *}
+.  unsigned int no_element_cache : 1;
+.
 .  {* Set if only required symbols should be added in the link hash table for
 .     this object.  Used by VMS linkers.  *}
 .  unsigned int selective_search : 1;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Fix a gp relaxation reloc overflow error.
@ 2019-08-29  1:25 gdb-buildbot
  2019-08-29  2:04 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29  1:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 507685a390b47d853f22176273cb949e2ee8da81 ***

commit 507685a390b47d853f22176273cb949e2ee8da81
Author:     Jim Wilson <jimw@sifive.com>
AuthorDate: Wed Aug 28 17:47:01 2019 -0700
Commit:     Jim Wilson <jimw@sifive.com>
CommitDate: Wed Aug 28 17:47:01 2019 -0700

    RISC-V: Fix a gp relaxation reloc overflow error.
    
    This was broken when I changed how we compute the value for the gp register.
    It used to be computed inside the sdata section.  Now it is computed at the
    end which makes it an abs section symbol.  There is code that tries to use
    the alignment of the section that the gp value is in, but this does not work
    if it is in the abs section, as the abs section has alignment of 1 byte.
    There are people using alternative linker scripts that still define it in the
    sdata section, so the code is still useful.  Thus adding a check to disable
    this when gp is in the abs section.
    
            bfd/
            * elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
            section when setting max_alignment.  Update comment.
            (_bfd_riscv_relax_pc): Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fe7f8eee6a..ded2898771 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-28  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
+	section when setting max_alignment.  Update comment.
+	(_bfd_riscv_relax_pc): Likewise.
+
 2019-08-29  Alan Modra  <amodra@gmail.com>
 
 	PR 24891
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index d14c29e833..4729bae09a 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -3533,12 +3533,13 @@ _bfd_riscv_relax_lui (bfd *abfd,
 
   if (gp)
     {
-      /* If gp and the symbol are in the same output section, then
-	 consider only that section's alignment.  */
+      /* If gp and the symbol are in the same output section, which is not the
+	 abs section, then consider only that output section's alignment.  */
       struct bfd_link_hash_entry *h =
 	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE,
 			      TRUE);
-      if (h->u.def.section->output_section == sym_sec->output_section)
+      if (h->u.def.section->output_section == sym_sec->output_section
+	  && sym_sec->output_section != bfd_abs_section_ptr)
 	max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
     }
 
@@ -3767,11 +3768,13 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
 
   if (gp)
     {
-      /* If gp and the symbol are in the same output section, then
-	 consider only that section's alignment.  */
+      /* If gp and the symbol are in the same output section, which is not the
+	 abs section, then consider only that output section's alignment.  */
       struct bfd_link_hash_entry *h =
-	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE, TRUE);
-      if (h->u.def.section->output_section == sym_sec->output_section)
+	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE,
+			      TRUE);
+      if (h->u.def.section->output_section == sym_sec->output_section
+	  && sym_sec->output_section != bfd_abs_section_ptr)
 	max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64 xlate_pcrel_opt
@ 2019-08-29  4:31 gdb-buildbot
  2019-08-29 11:52 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29  4:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT dd9b12c2451f0e46e73ec54d8762727d428b4c14 ***

commit dd9b12c2451f0e46e73ec54d8762727d428b4c14
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Aug 29 11:30:11 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Aug 29 12:57:33 2019 +0930

    PowerPC64 xlate_pcrel_opt
    
    We can easily support an offset on the second instruction of a
    sequence marked with R_PPC64_PCREL_OPT.  For example,
      pla ra,symbol@pcrel
      ld rt,off(ra)
    can be optimised to
      pld rt,symbol+off@pcrel
      nop
    
            * elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
            on second insn, return it in poff.
            (ppc64_elf_relocate_section): Add offset to paddi addend for
            PCREL_OPT.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ded2898771..e604dc75f8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
+	on second insn, return it in poff.
+	(ppc64_elf_relocate_section): Add offset to paddi addend for
+	PCREL_OPT.
+
 2019-08-28  Jim Wilson  <jimw@sifive.com>
 
 	* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 4eba829450..a5bd3426ee 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -8265,25 +8265,26 @@ ok_lo_toc_insn (unsigned int insn, enum elf_ppc64_reloc_type r_type)
 
 /* PCREL_OPT in one instance flags to the linker that a pair of insns:
      pld ra,symbol@got@pcrel
-     load/store rt,0(ra)
+     load/store rt,off(ra)
    or
      pla ra,symbol@pcrel
-     load/store rt,0(ra)
+     load/store rt,off(ra)
    may be translated to
-     pload/pstore rt,symbol@pcrel
+     pload/pstore rt,symbol+off@pcrel
      nop.
    This function returns true if the optimization is possible, placing
-   the prefix insn in *PINSN1 and a NOP in *PINSN2.
+   the prefix insn in *PINSN1, a NOP in *PINSN2 and the offset in *POFF.
 
    On entry to this function, the linker has already determined that
    the pld can be replaced with pla: *PINSN1 is that pla insn,
    while *PINSN2 is the second instruction.  */
 
 static bfd_boolean
-xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2)
+xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
 {
   uint32_t insn2 = *pinsn2 >> 32;
   uint64_t i1new;
+  bfd_signed_vma off;
 
   /* Check that regs match.  */
   if (((insn2 >> 16) & 31) != ((*pinsn1 >> 21) & 31))
@@ -8306,27 +8307,28 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2)
     case 52: /* stfs */
     case 54: /* stfd */
       /* These are the PMLS cases, where we just need to tack a prefix
-	 on the insn.  Check that the D field is zero.  */
-      if ((insn2 & 0xffff) != 0)
-	return FALSE;
+	 on the insn.  */
       i1new = ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
 	       | (insn2 & ((63ULL << 26) | (31ULL << 21))));
+      off = insn2 & 0xffff;
       break;
 
     case 58: /* lwa, ld */
-      if ((insn2 & 0xfffd) != 0)
+      if ((insn2 & 1) != 0)
 	return FALSE;
       i1new = ((1ULL << 58) | (1ULL << 52)
 	       | (insn2 & 2 ? 41ULL << 26 : 57ULL << 26)
 	       | (insn2 & (31ULL << 21)));
+      off = insn2 & 0xfffc;
       break;
 
     case 57: /* lxsd, lxssp */
-      if ((insn2 & 0xfffc) != 0 || (insn2 & 3) < 2)
+      if ((insn2 & 3) < 2)
 	return FALSE;
       i1new = ((1ULL << 58) | (1ULL << 52)
 	       | ((40ULL | (insn2 & 3)) << 26)
 	       | (insn2 & (31ULL << 21)));
+      off = insn2 & 0xfffc;
       break;
 
     case 61: /* stxsd, stxssp, lxv, stxv  */
@@ -8334,40 +8336,39 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2)
 	return FALSE;
       else if ((insn2 & 3) >= 2)
 	{
-	  if ((insn2 & 0xfffc) != 0)
-	    return FALSE;
 	  i1new = ((1ULL << 58) | (1ULL << 52)
 		   | ((44ULL | (insn2 & 3)) << 26)
 		   | (insn2 & (31ULL << 21)));
+	  off = insn2 & 0xfffc;
 	}
       else
 	{
-	  if ((insn2 & 0xfff0) != 0)
-	    return FALSE;
 	  i1new = ((1ULL << 58) | (1ULL << 52)
 		   | ((50ULL | (insn2 & 4) | ((insn2 & 8) >> 3)) << 26)
 		   | (insn2 & (31ULL << 21)));
+	  off = insn2 & 0xfff0;
 	}
       break;
 
     case 56: /* lq */
-      if ((insn2 & 0xffff) != 0)
-	return FALSE;
       i1new = ((1ULL << 58) | (1ULL << 52)
 	       | (insn2 & ((63ULL << 26) | (31ULL << 21))));
+      off = insn2 & 0xffff;
       break;
 
     case 62: /* std, stq */
-      if ((insn2 & 0xfffd) != 0)
+      if ((insn2 & 1) != 0)
 	return FALSE;
       i1new = ((1ULL << 58) | (1ULL << 52)
 	       | ((insn2 & 2) == 0 ? 61ULL << 26 : 60ULL << 26)
 	       | (insn2 & (31ULL << 21)));
+      off = insn2 & 0xfffc;
       break;
     }
 
   *pinsn1 = i1new;
   *pinsn2 = (uint64_t) NOP << 32;
+  *poff = (off ^ 0x8000) - 0x8000;
   return TRUE;
 }
 
@@ -15408,12 +15409,15 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 		      if (off2 + 4 <= input_section->size)
 			{
 			  uint64_t pinsn2;
+			  bfd_signed_vma addend_off;
 			  pinsn2 = bfd_get_32 (input_bfd, contents + off2);
 			  pinsn2 <<= 32;
 			  if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
 			    break;
-			  if (xlate_pcrel_opt (&pinsn, &pinsn2))
+			  if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
 			    {
+			      addend += addend_off;
+			      rel->r_addend = addend;
 			      bfd_put_32 (input_bfd, pinsn >> 32,
 					  contents + offset);
 			      bfd_put_32 (input_bfd, pinsn,
@@ -15428,7 +15432,6 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	  break;
 	}
 
-      /* Set `addend'.  */
       tls_type = 0;
       save_unresolved_reloc = unresolved_reloc;
       switch (r_type)


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24697, R_PPC_EMB_SDA21 cannot be used when making a shared object
@ 2019-08-29 12:16 gdb-buildbot
  2019-08-29 13:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29 12:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c0d9f31dbd8765dd925e6a4b4acdb9b23d1706f6 ***

commit c0d9f31dbd8765dd925e6a4b4acdb9b23d1706f6
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Aug 29 18:35:54 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Aug 29 21:07:00 2019 +0930

    PR24697, R_PPC_EMB_SDA21 cannot be used when making a shared object
    
    This removes a restriction on various R_PPC_EMB relocations that has
    been present for ppc32 since 1996-04-26 git commit e25a798839.  As far
    as I know, only those relocs that would require addressing via r2 for
    .sdata2/.sbss2 access are disallowed in shared libraries.
    
            PR 24697
            * elf32-ppc.c (ppc_elf_check_relocs): Call bad_shared_reloc
            when !bfd_link_executable for R_PPC_EMB_SDA2I16 and
            R_PPC_EMB_SDA2REL.  Don't call bad_shared_reloc for any other
            reloc.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e604dc75f8..d292e87f56 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	PR 24697
+	* elf32-ppc.c (ppc_elf_check_relocs): Call bad_shared_reloc
+	when !bfd_link_executable for R_PPC_EMB_SDA2I16 and
+	R_PPC_EMB_SDA2REL.  Don't call bad_shared_reloc for any other
+	reloc.
+
 2019-08-29  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 78d39efe48..5e5834a70c 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -3096,11 +3096,6 @@ ppc_elf_check_relocs (bfd *abfd,
 
 	  /* Indirect .sdata relocation.  */
 	case R_PPC_EMB_SDAI16:
-	  if (bfd_link_pic (info))
-	    {
-	      bad_shared_reloc (abfd, r_type);
-	      return FALSE;
-	    }
 	  htab->sdata[0].sym->ref_regular = 1;
 	  if (!elf_allocate_pointer_linker_section (abfd, &htab->sdata[0],
 						    h, rel))
@@ -3114,7 +3109,7 @@ ppc_elf_check_relocs (bfd *abfd,
 
 	  /* Indirect .sdata2 relocation.  */
 	case R_PPC_EMB_SDA2I16:
-	  if (bfd_link_pic (info))
+	  if (!bfd_link_executable (info))
 	    {
 	      bad_shared_reloc (abfd, r_type);
 	      return FALSE;
@@ -3160,7 +3155,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	  break;
 
 	case R_PPC_EMB_SDA2REL:
-	  if (bfd_link_pic (info))
+	  if (!bfd_link_executable (info))
 	    {
 	      bad_shared_reloc (abfd, r_type);
 	      return FALSE;
@@ -3177,11 +3172,6 @@ ppc_elf_check_relocs (bfd *abfd,
 	case R_PPC_VLE_SDA21:
 	case R_PPC_EMB_SDA21:
 	case R_PPC_EMB_RELSDA:
-	  if (bfd_link_pic (info))
-	    {
-	      bad_shared_reloc (abfd, r_type);
-	      return FALSE;
-	    }
 	  if (h != NULL)
 	    {
 	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
@@ -3194,11 +3184,6 @@ ppc_elf_check_relocs (bfd *abfd,
 	case R_PPC_EMB_NADDR16_LO:
 	case R_PPC_EMB_NADDR16_HI:
 	case R_PPC_EMB_NADDR16_HA:
-	  if (bfd_link_pic (info))
-	    {
-	      bad_shared_reloc (abfd, r_type);
-	      return FALSE;
-	    }
 	  if (h != NULL)
 	    h->non_got_ref = TRUE;
 	  break;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb.fortran/info-types.exp regexp
@ 2019-08-29 13:44 gdb-buildbot
  2019-08-29 14:17 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29 13:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8077c50dbb74ee63c038dbd3527c372dbe180fbb ***

commit 8077c50dbb74ee63c038dbd3527c372dbe180fbb
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Aug 29 14:43:11 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Aug 29 14:43:11 2019 +0200

    [gdb/testsuite] Fix gdb.fortran/info-types.exp regexp
    
    The gdb.fortran/info-types.exp test-case passes with gcc 7 (though not on
    openSUSE, due to the extra debug info) and fails with gcc 4.8 and gcc 8.
    
    Fix the gdb_test regexp to fix all those cases.
    
    gdb/testsuite/ChangeLog:
    
    2019-08-29  Tom de Vries  <tdevries@suse.de>
    
            * gdb.fortran/info-types.exp: Fix gdb_test regexp to allow more
            diverse debug info.
            * lib/fortran.exp (fortran_int8): New proc, based on fortran_int4.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 06ee15c97a..b1dc7df4bb 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-29  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/info-types.exp: Fix gdb_test regexp to allow more
+	diverse debug info.
+	* lib/fortran.exp (fortran_int8): New proc, based on fortran_int4.
+
 2019-08-28  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/info-var.exp: Allow info variables to print info for files
diff --git a/gdb/testsuite/gdb.fortran/info-types.exp b/gdb/testsuite/gdb.fortran/info-types.exp
index 81e67395e8..30646287ee 100644
--- a/gdb/testsuite/gdb.fortran/info-types.exp
+++ b/gdb/testsuite/gdb.fortran/info-types.exp
@@ -31,6 +31,7 @@ if { ![runto MAIN__] } {
 }
 
 set integer4 [fortran_int4]
+set integer8 [fortran_int8]
 set logical4 [fortran_logical4]
 set character1 [fortran_character1]
 
@@ -41,7 +42,9 @@ gdb_test "info types" \
 	 "File .*:" \
 	 "\[\t \]+${character1}" \
 	 "\[\t \]+${integer4}" \
-	 "\[\t \]+${logical4}" \
-	 "20:\[\t \]+Type __vtype_mod1_M1t1;" \
-	 "17:\[\t \]+Type m1t1;" \
-	 "22:\[\t \]+Type s1;" ]
+	 "(\[\t \]+${integer8}" \
+	 ")?\[\t \]+${logical4}" \
+	 "(20:\[\t \]+Type __vtype_mod1_M1t1;" \
+	 ")?$decimal:\[\t \]+Type m1t1;" \
+	 "22:\[\t \]+Type s1;(" \
+	 ".*)?"]
diff --git a/gdb/testsuite/lib/fortran.exp b/gdb/testsuite/lib/fortran.exp
index 81811dbc3c..d523608807 100644
--- a/gdb/testsuite/lib/fortran.exp
+++ b/gdb/testsuite/lib/fortran.exp
@@ -41,6 +41,18 @@ proc fortran_int4 {} {
     }
 }
 
+proc fortran_int8 {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]} {
+	return "int8"
+    } elseif {[test_compiler_info {gcc-*}]} {
+	return "integer\\(kind=8\\)"
+    } elseif {[test_compiler_info {icc-*}]} {
+	return "INTEGER\\(8\\)"
+    } else {
+	return "unknown"
+    }
+}
+
 proc fortran_real4 {} {
     if {[test_compiler_info {gcc-4-[012]-*}]} {
 	return "real4"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix PR win32/24284: tcp_auto_retry doesn't work in MinGW
@ 2019-08-29 17:21 gdb-buildbot
  2019-08-29 18:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29 17:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 16d01f9cd49f553a958a69ad3c9f781ebd402da8 ***

commit 16d01f9cd49f553a958a69ad3c9f781ebd402da8
Author:     Bernhard Wodok <barto@gmx.net>
AuthorDate: Tue Aug 27 11:40:31 2019 -0400
Commit:     Sergio Durigan Junior <sergiodj@redhat.com>
CommitDate: Thu Aug 29 12:35:58 2019 -0400

    Fix PR win32/24284: tcp_auto_retry doesn't work in MinGW
    
    This was reported by Bernhard Wodok, along with a patch to fix the
    issue.  I adjusted the patch a bit, and I'm submitting the patch on
    his behalf.
    
    According to Bernhard, the issue can be reproduced by doing:
    
      1. start gdb
      2. enter 'target remote :2345'
      3. observe that it throws a "connection refused" error immediately
      instead of waiting and throwing a timeout error
    
    I.e., I believe it can be reproduced by our current tests, which is
    why I'm not proposing any extra tests here (well, I don't use nor have
    any Windows system to test this, so...).
    
    The problem happens because, on ser-tcp:wait_for_connect, we call
    'gdb_select' passing 0 as its first argument, which, when using MinGW,
    ends up using the 'gdb_select' version from mingw-hdep.c, and when the
    first argument is 0 this means that WaitForMultipleObjects will be
    called with 0 as its first argument as well.  According to the MS API
    docs, this is forbidden:
    
      https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitformultipleobjects
    
    The proposed fix is simple: we just call Sleep when N == 0 (and when
    TIMEOUT is non-NULL), and return 0.  It makes sense to me.
    
    Both Bernhard and Paul Carroll confirmed that the fix works.  I'm
    Cc'ing Bernhard in case you have any questions about the patch.
    
    OK?
    
    gdb/ChangeLog:
    2019-08-29  Bernhard Wodok  <barto@gmx.net>
                Sergio Durigan Junior  <sergiodj@redhat.com>
    
            PR win32/24284
            * mingw-hdep.c (gdb_select): Handle case when 'n' is zero.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a82f7c64ae..fba2f4a995 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-29  Bernhard Wodok  <barto@gmx.net>
+	    Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR win32/24284
+	* mingw-hdep.c (gdb_select): Handle case when 'n' is zero.
+
 2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
diff --git a/gdb/mingw-hdep.c b/gdb/mingw-hdep.c
index 44fb22e9a1..0af1b39acd 100644
--- a/gdb/mingw-hdep.c
+++ b/gdb/mingw-hdep.c
@@ -64,6 +64,17 @@ gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
   int num_ready;
   size_t indx;
 
+  if (n == 0)
+    {
+      /* The MS API says that the first argument to
+	 WaitForMultipleObjects cannot be zero.  That's why we just
+	 use a regular Sleep here.  */
+      if (timeout != NULL)
+	Sleep (timeout->tv_sec * 1000 + timeout->tv_usec / 1000);
+
+      return 0;
+    }
+
   num_ready = 0;
   num_handles = 0;
   num_scbs = 0;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Run argv0-symlink.exp only on native target and local host.
@ 2019-08-29 22:28 gdb-buildbot
  2019-08-30  8:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-29 22:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2ea1a07a0a6a15a55df28eeefddf71a4ac47e17d ***

commit 2ea1a07a0a6a15a55df28eeefddf71a4ac47e17d
Author:     Sandra Loosemore <sandra@codesourcery.com>
AuthorDate: Thu Aug 29 14:48:05 2019 -0700
Commit:     Sandra Loosemore <sandra@codesourcery.com>
CommitDate: Thu Aug 29 14:48:05 2019 -0700

    Run argv0-symlink.exp only on native target and local host.
    
    This testcase was originally for PR gdb/15415, a problem with the
    "run" command expanding symlinks in the name of the program being run.
    It does not correctly distinguish between files on build, host, and
    target, and it is not clear if it would be testing anything useful in
    configurations where "run" is not being used.
    
    2019-08-29  Sandra Loosemore  <sandra@codesourcery.com>
    
            * gdb.base/argv0-symlink.exp: Run only on native target
            and local host.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b1dc7df4bb..e0991e091a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-29  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/argv0-symlink.exp: Run only on native target
+	and local host.
+
 2019-08-29  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.fortran/info-types.exp: Fix gdb_test regexp to allow more
diff --git a/gdb/testsuite/gdb.base/argv0-symlink.exp b/gdb/testsuite/gdb.base/argv0-symlink.exp
index cce6ca613d..33301bd7c3 100644
--- a/gdb/testsuite/gdb.base/argv0-symlink.exp
+++ b/gdb/testsuite/gdb.base/argv0-symlink.exp
@@ -13,6 +13,23 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# This testcase was originally for PR gdb/15415, a problem with the "run"
+# command expanding symlinks in the name of the program being run.
+# This test uses pathnames on build to create symbolic links on host and
+# expects the test program running on target to see those symbolic links.
+# Therefore, it can't work reliably on anything other than configurations 
+# where build/host/target are all the same.
+
+if { ![isnative] } {
+    unsupported "argv0-symlink.exp not supported on non-native target"
+    return -1
+}
+
+if { [is_remote host] } {
+    unsupported "argv0-symlink.exp not supported on remote host"
+    return -1
+}
+
 standard_testfile
 
 set has_argv0 [gdb_has_argv0]


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [ARC] [COMMITTED] Fix FASTMATH field.
@ 2019-08-30  9:11 gdb-buildbot
  2019-08-30 14:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30  9:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cd18a823d1ad0787cb0745bf71c7ba447db10c58 ***

commit cd18a823d1ad0787cb0745bf71c7ba447db10c58
Author:     Claudiu Zissulescu <claziss@gmail.com>
AuthorDate: Fri Aug 30 11:31:19 2019 +0300
Commit:     Claudiu Zissulescu <claziss@gmail.com>
CommitDate: Fri Aug 30 11:31:19 2019 +0300

    [ARC] [COMMITTED] Fix FASTMATH field.
    
    Move FASTMATH to the right enum.
    
    2019-08-30  Claudiu Zissulescu <claziss@gmail.com>
    
            * opcode/arc.h (FASTMATH): Move it from insn_class_t to
            insn_subclass_t enum.

diff --git a/include/ChangeLog b/include/ChangeLog
index e779c17702..3055551062 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Claudiu Zissulescu <claziss@gmail.com>
+
+	* opcode/arc.h (FASTMATH): Move it from insn_class_t to
+	insn_subclass_t enum.
+
 2019-08-22  Alan Modra  <amodra@gmail.com>
 
 	* elf/arm.h (ARM_GET_SYM_CMSE_SPCL, ARM_SET_SYM_CMSE_SPCL): Delete.
diff --git a/include/opcode/arc.h b/include/opcode/arc.h
index 14654b5d6c..d6a2b885a1 100644
--- a/include/opcode/arc.h
+++ b/include/opcode/arc.h
@@ -59,7 +59,6 @@ typedef enum
   EI,
   ENTER,
   FLOAT,
-  FASTMATH,
   INVALID,
   JLI,
   JUMP,
@@ -99,6 +98,7 @@ typedef enum
   DP       = (1U << 6),
   DPA      = (1U << 7),
   DPX      = (1U << 8),
+  FASTMATH = (1U << 23),
   LL64     = (1U << 9),
   MPY1E    = (1U << 10),
   MPY6E    = (1U << 11),


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Copy BFD_COMPRESS/BFD_DECOMPRESS/BFD_COMPRESS_GABI for thin archive
@ 2019-08-30 15:17 gdb-buildbot
  2019-08-30 15:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 15:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6744bcad05396a5901149a202270e523e454769d ***

commit 6744bcad05396a5901149a202270e523e454769d
Author:     H.J. Lu <hjl.tools@gmail.com>
AuthorDate: Fri Aug 30 07:46:15 2019 -0700
Commit:     H.J. Lu <hjl.tools@gmail.com>
CommitDate: Fri Aug 30 07:46:27 2019 -0700

    Copy BFD_COMPRESS/BFD_DECOMPRESS/BFD_COMPRESS_GABI for thin archive
    
    We need to copy BFD_COMPRESS, BFD_DECOMPRESS and BFD_COMPRESS_GABI flags
    for thin archive.
    
            PR ld/24951
            * archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
            BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d292e87f56..bb99231c64 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24951
+	* archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
+	BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.
+
 2019-08-29  Alan Modra  <amodra@gmail.com>
 
 	PR 24697
diff --git a/bfd/archive.c b/bfd/archive.c
index 3baf83d40c..690718e949 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -692,6 +692,13 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
 	      return NULL;
 	    }
 	  n_bfd->proxy_origin = bfd_tell (archive);
+
+	  /* Copy BFD_COMPRESS, BFD_DECOMPRESS and BFD_COMPRESS_GABI
+	     flags.  */
+	  n_bfd->flags |= archive->flags & (BFD_COMPRESS
+					    | BFD_DECOMPRESS
+					    | BFD_COMPRESS_GABI);
+
 	  return n_bfd;
 	}
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove NO_DATA_STRING
@ 2019-08-30 19:52 gdb-buildbot
  2019-08-30 20:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 19:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1f6d2f100ae6de462f1e81b5de17de059f6b17ef ***

commit 1f6d2f100ae6de462f1e81b5de17de059f6b17ef
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Jul 14 08:21:16 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:02 2019 -0600

    Remove NO_DATA_STRING
    
    NO_DATA_STRING shouldn't be used.  It's referenced in a single spot,
    in tui_data_window::display_all_data.  This patch removes the use and
    replaces it with the more correct text.  A later patch (though not in
    this series) will remove this call entirely, when it's more obviously
    correct to do so.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.c (tui_data_window::display_all_data): Change
            text.
            * tui/tui-data.h (NO_DATA_STRING): Remove define.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fba2f4a995..0cb864fdfc 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_all_data): Change
+	text.
+	* tui/tui-data.h (NO_DATA_STRING): Remove define.
+
 2019-08-29  Bernhard Wodok  <barto@gmx.net>
 	    Sergio Durigan Junior  <sergiodj@redhat.com>
 
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index f43035674d..1810fa3e72 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -98,7 +98,6 @@ public:
 
 /* Constant definitions.  */
 #define DEFAULT_TAB_LEN         8
-#define NO_DATA_STRING          "[ No Data Values Displayed ]"
 #define SRC_NAME                "src"
 #define CMD_NAME                "cmd"
 #define DATA_NAME               "regs"
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 71037d4104..24b182f2ae 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -437,7 +437,7 @@ void
 tui_data_window::display_all_data ()
 {
   if (regs_content.empty ())
-    erase_data_content (NO_DATA_STRING);
+    erase_data_content (_("[ Register Values Unavailable ]"));
   else
     {
       erase_data_content (NULL);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove tui_data_window::display_all_data
@ 2019-08-30 20:53 gdb-buildbot
  2019-08-30 20:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 20:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 18bb55c7225dfd07ec8d75226a83da1872db8b90 ***

commit 18bb55c7225dfd07ec8d75226a83da1872db8b90
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Jul 14 08:27:34 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:02 2019 -0600

    Remove tui_data_window::display_all_data
    
    tui_data_window::rerender clears the data item windows, and then calls
    display_all_data.  However, that method only does anything if the
    contents are not empty.  So, display_all_data can be renamed and the
    wrapper removed.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.h (struct tui_data_window) <display_all_data>:
            Don't declare.
            * tui/tui-regs.c (tui_data_window::show_registers): Call
            rerender.
            (tui_data_window::rerender): Rename from display_all_data.
            (tui_data_window::rerender): Remove old implementation.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0cb864fdfc..e5f3f218cb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <display_all_data>:
+	Don't declare.
+	* tui/tui-regs.c (tui_data_window::show_registers): Call
+	rerender.
+	(tui_data_window::rerender): Rename from display_all_data.
+	(tui_data_window::rerender): Remove old implementation.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.c (tui_data_window::display_all_data): Change
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 24b182f2ae..7bac19da28 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -161,7 +161,7 @@ tui_data_window::show_registers (struct reggroup *group)
       for (auto &&data_item_win : regs_content)
 	data_item_win.highlight = false;
       current_group = group;
-      display_all_data ();
+      rerender ();
     }
   else
     {
@@ -434,7 +434,7 @@ tui_data_window::erase_data_content (const char *prompt)
 /* See tui-regs.h.  */
 
 void
-tui_data_window::display_all_data ()
+tui_data_window::rerender ()
 {
   if (regs_content.empty ())
     erase_data_content (_("[ Register Values Unavailable ]"));
@@ -500,20 +500,6 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
 
 /* See tui-regs.h.  */
 
-void
-tui_data_window::rerender ()
-{
-  /* Delete all data item windows.  */
-  for (auto &&win : regs_content)
-    {
-      tui_delete_win (win.handle);
-      win.handle = NULL;
-    }
-  display_all_data ();
-}
-
-/* See tui-regs.h.  */
-
 void
 tui_data_window::refresh_window ()
 {
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 95e944038c..fa76cae0b1 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -121,10 +121,6 @@ private:
      past the register area (-1) is returned.  */
   int first_reg_element_no_inline (int line_no) const;
 
-  /* Displays the data that is in the data window's content.  It does
-     not set the content.  */
-  void display_all_data ();
-
   /* Delete all the item windows in the data window.  This is usually
      done when the data window is scrolled.  */
   void delete_data_content_windows ();


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some checks of .empty()
@ 2019-08-30 21:05 gdb-buildbot
  2019-08-30 21:43 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 21:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0670413d0eb264302e10a1baa163bc9c8c279a21 ***

commit 0670413d0eb264302e10a1baa163bc9c8c279a21
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Jul 14 09:07:10 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:03 2019 -0600

    Remove some checks of .empty()
    
    A few methods in tui_data_window check whether the contents are empty;
    but all the callers already check this, so these calls can be removed.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.c (tui_data_window::last_regs_line_no)
            (tui_data_window::display_registers_from)
            (tui_data_window::display_reg_element_at_line)
            (tui_data_window::display_registers_from_line): Remove checks of
            "empty".

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e5f3f218cb..c8b69f4d52 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::display_reg_element_at_line)
+	(tui_data_window::display_registers_from_line): Remove checks of
+	"empty".
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.h (struct tui_data_window) <display_all_data>:
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 7bac19da28..636ae10148 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -98,14 +98,9 @@ tui_get_register (struct frame_info *frame,
 int
 tui_data_window::last_regs_line_no () const
 {
-  int num_lines = (-1);
-
-  if (!regs_content.empty ())
-    {
-      num_lines = regs_content.size () / regs_column_count;
-      if (regs_content.size () % regs_column_count)
-	num_lines++;
-    }
+  int num_lines = regs_content.size () / regs_column_count;
+  if (regs_content.size () % regs_column_count)
+    num_lines++;
   return num_lines;
 }
 
@@ -245,74 +240,71 @@ tui_data_window::show_register_group (struct reggroup *group,
 void
 tui_data_window::display_registers_from (int start_element_no)
 {
-  if (!regs_content.empty ())
+  int j, item_win_width, cur_y;
+
+  int max_len = 0;
+  for (auto &&data_item_win : regs_content)
     {
-      int j, item_win_width, cur_y;
+      const char *p;
+      int len;
 
-      int max_len = 0;
-      for (auto &&data_item_win : regs_content)
-        {
-          const char *p;
-          int len;
-
-          len = 0;
-          p = data_item_win.content.get ();
-          if (p != 0)
-	    len = strlen (p);
-
-          if (len > max_len)
-            max_len = len;
-        }
-      item_win_width = max_len + 1;
-      int i = start_element_no;
-
-      regs_column_count = (width - 2) / item_win_width;
-      if (regs_column_count == 0)
-        regs_column_count = 1;
-      item_win_width = (width - 2) / regs_column_count;
-
-      /* Now create each data "sub" window, and write the display into
-	 it.  */
-      cur_y = 1;
-      while (i < regs_content.size ()
-	     && cur_y <= viewport_height)
+      len = 0;
+      p = data_item_win.content.get ();
+      if (p != 0)
+	len = strlen (p);
+
+      if (len > max_len)
+	max_len = len;
+    }
+  item_win_width = max_len + 1;
+  int i = start_element_no;
+
+  regs_column_count = (width - 2) / item_win_width;
+  if (regs_column_count == 0)
+    regs_column_count = 1;
+  item_win_width = (width - 2) / regs_column_count;
+
+  /* Now create each data "sub" window, and write the display into
+     it.  */
+  cur_y = 1;
+  while (i < regs_content.size ()
+	 && cur_y <= viewport_height)
+    {
+      for (j = 0;
+	   j < regs_column_count && i < regs_content.size ();
+	   j++)
 	{
-	  for (j = 0;
-	       j < regs_column_count && i < regs_content.size ();
-	       j++)
+	  struct tui_data_item_window *data_item_win;
+
+	  /* Create the window if necessary.  */
+	  data_item_win = &regs_content[i];
+	  if (data_item_win->handle != NULL
+	      && (data_item_win->height != 1
+		  || data_item_win->width != item_win_width
+		  || data_item_win->origin.x != (item_win_width * j) + 1
+		  || data_item_win->origin.y != cur_y))
 	    {
-	      struct tui_data_item_window *data_item_win;
-
-	      /* Create the window if necessary.  */
-	      data_item_win = &regs_content[i];
-              if (data_item_win->handle != NULL
-                  && (data_item_win->height != 1
-                      || data_item_win->width != item_win_width
-                      || data_item_win->origin.x != (item_win_width * j) + 1
-                      || data_item_win->origin.y != cur_y))
-                {
-                  tui_delete_win (data_item_win->handle);
-                  data_item_win->handle = 0;
-                }
+	      tui_delete_win (data_item_win->handle);
+	      data_item_win->handle = 0;
+	    }
                   
-	      if (data_item_win->handle == NULL)
-		{
-		  data_item_win->height = 1;
-		  data_item_win->width = item_win_width;
-		  data_item_win->origin.x = (item_win_width * j) + 1;
-		  data_item_win->origin.y = cur_y;
-		  data_item_win->make_visible (true);
-                  scrollok (data_item_win->handle, FALSE);
-		}
-              touchwin (data_item_win->handle);
-
-	      /* Get the printable representation of the register
-                 and display it.  */
-              tui_display_register (data_item_win);
-	      i++;		/* Next register.  */
+	  if (data_item_win->handle == NULL)
+	    {
+	      data_item_win->height = 1;
+	      data_item_win->width = item_win_width;
+	      data_item_win->origin.x = (item_win_width * j) + 1;
+	      data_item_win->origin.y = cur_y;
+	      data_item_win->make_visible (true);
+	      scrollok (data_item_win->handle, FALSE);
 	    }
-	  cur_y++;		/* Next row.  */
+	  touchwin (data_item_win->handle);
+
+	  /* Get the printable representation of the register
+	     and display it.  */
+	  tui_display_register (data_item_win);
+	  i++;		/* Next register.  */
 	}
+      cur_y++;		/* Next row.  */
     }
 }
 
@@ -322,27 +314,24 @@ void
 tui_data_window::display_reg_element_at_line (int start_element_no,
 					      int start_line_no)
 {
-  if (!regs_content.empty ())
-    {
-      int element_no = start_element_no;
+  int element_no = start_element_no;
 
-      if (start_element_no != 0 && start_line_no != 0)
-	{
-	  int last_line_no, first_line_on_last_page;
-
-	  last_line_no = last_regs_line_no ();
-	  first_line_on_last_page = last_line_no - (height - 2);
-	  if (first_line_on_last_page < 0)
-	    first_line_on_last_page = 0;
-
-	  /* If the element_no causes us to scroll past the end of the
-	     registers, adjust what element to really start the
-	     display at.  */
-	  if (start_line_no > first_line_on_last_page)
-	    element_no = first_reg_element_no_inline (first_line_on_last_page);
-	}
-      display_registers_from (element_no);
+  if (start_element_no != 0 && start_line_no != 0)
+    {
+      int last_line_no, first_line_on_last_page;
+
+      last_line_no = last_regs_line_no ();
+      first_line_on_last_page = last_line_no - (height - 2);
+      if (first_line_on_last_page < 0)
+	first_line_on_last_page = 0;
+
+      /* If the element_no causes us to scroll past the end of the
+	 registers, adjust what element to really start the
+	 display at.  */
+      if (start_line_no > first_line_on_last_page)
+	element_no = first_reg_element_no_inline (first_line_on_last_page);
     }
+  display_registers_from (element_no);
 }
 
 /* See tui-regs.h.  */
@@ -351,34 +340,30 @@ int
 tui_data_window::display_registers_from_line (int line_no)
 {
   check_and_display_highlight_if_needed ();
-  if (!regs_content.empty ())
-    {
-      int element_no;
 
-      if (line_no < 0)
-	line_no = 0;
-      else
+  int element_no;
+
+  if (line_no < 0)
+    line_no = 0;
+  else
+    {
+      /* Make sure that we don't display off the end of the
+	 registers.  */
+      if (line_no >= last_regs_line_no ())
 	{
-	  /* Make sure that we don't display off the end of the
-	     registers.  */
-	  if (line_no >= last_regs_line_no ())
-	    {
-	      line_no = line_from_reg_element_no (regs_content.size () - 1);
-	      if (line_no < 0)
-		line_no = 0;
-	    }
+	  line_no = line_from_reg_element_no (regs_content.size () - 1);
+	  if (line_no < 0)
+	    line_no = 0;
 	}
-
-      element_no = first_reg_element_no_inline (line_no);
-      if (element_no < regs_content.size ())
-	display_reg_element_at_line (element_no, line_no);
-      else
-	line_no = (-1);
-
-      return line_no;
     }
 
-  return (-1);			/* Nothing was displayed.  */
+  element_no = first_reg_element_no_inline (line_no);
+  if (element_no < regs_content.size ())
+    display_reg_element_at_line (element_no, line_no);
+  else
+    line_no = (-1);
+
+  return line_no;
 }
 
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some calls in tui_data_window
@ 2019-08-30 21:37 gdb-buildbot
  2019-08-30 23:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 21:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1bf2866a59530d9e8384807bc44b833e8647d329 ***

commit 1bf2866a59530d9e8384807bc44b833e8647d329
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Jul 14 09:11:46 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:04 2019 -0600

    Remove some calls in tui_data_window
    
    This patch removes a call to erase_data_content in refresh_all and
    then removes some other calls that are more clearly unnecessary once
    one follows calls from that point.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.c (tui_data_window::display_registers_from_line)
            (tui_data_window::rerender): Don't call
            check_and_display_highlight_if_needed.
            (tui_data_window::refresh_all): Remove call to
            erase_data_content.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c8b69f4d52..b95be65f6f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
+	(tui_data_window::rerender): Don't call
+	check_and_display_highlight_if_needed.
+	(tui_data_window::refresh_all): Remove call to
+	erase_data_content.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 636ae10148..4a09a59044 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -339,8 +339,6 @@ tui_data_window::display_reg_element_at_line (int start_element_no,
 int
 tui_data_window::display_registers_from_line (int line_no)
 {
-  check_and_display_highlight_if_needed ();
-
   int element_no;
 
   if (line_no < 0)
@@ -427,7 +425,6 @@ tui_data_window::rerender ()
     {
       erase_data_content (NULL);
       delete_data_content_windows ();
-      check_and_display_highlight_if_needed ();
       display_registers_from (0);
     }
 }
@@ -450,10 +447,7 @@ tui_data_window::refresh_all ()
 	    first_line = line_from_reg_element_no (first_element);
 
 	  if (first_line >= 0)
-	    {
-	      erase_data_content (NULL);
-	      display_registers_from_line (first_line);
-	    }
+	    display_registers_from_line (first_line);
 	}
     }
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Private data members in tui_data_window
@ 2019-08-30 22:10 gdb-buildbot
  2019-08-30 23:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 22:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89df7f9056d72418720ac655e1ad97decc471da9 ***

commit 89df7f9056d72418720ac655e1ad97decc471da9
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Jul 14 19:45:55 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:04 2019 -0600

    Private data members in tui_data_window
    
    This changes tui_data_window so that the data members are private.
    This required the addition of a simple accessor method in one case.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.h (struct tui_data_window) <regs_content,
            regs_column_count, current_group>: Move later.  Now private.
            <get_current_group>: New method.
            * tui/tui-regs.c (tui_reg_command): Update.
            * tui/tui-layout.c (tui_set_layout): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b95be65f6f..2a2c08cae4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <regs_content,
+	regs_column_count, current_group>: Move later.  Now private.
+	<get_current_group>: New method.
+	* tui/tui-regs.c (tui_reg_command): Update.
+	* tui/tui-layout.c (tui_set_layout): Update.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 01d50e437e..387a4f51af 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -189,7 +189,7 @@ tui_set_layout (enum tui_layout_type layout_type)
       tui_update_source_windows_with_addr (gdbarch, addr);
       if (new_layout == SRC_DATA_COMMAND
 	  || new_layout == DISASSEM_DATA_COMMAND)
-	TUI_DATA_WIN->show_registers (TUI_DATA_WIN->current_group);
+	TUI_DATA_WIN->show_registers (TUI_DATA_WIN->get_current_group ());
     }
 }
 
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 4a09a59044..98096e2cdc 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -622,7 +622,7 @@ tui_reg_command (const char *args, int from_tty)
       if (TUI_DATA_WIN == NULL || !TUI_DATA_WIN->is_visible ())
 	tui_reg_layout ();
 
-      struct reggroup *current_group = TUI_DATA_WIN->current_group;
+      struct reggroup *current_group = TUI_DATA_WIN->get_current_group ();
       if (strncmp (args, "next", len) == 0)
 	match = tui_reg_next (current_group, gdbarch);
       else if (strncmp (args, "prev", len) == 0)
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index fa76cae0b1..2606c39f5a 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -63,15 +63,15 @@ struct tui_data_window : public tui_win_info
     return DATA_NAME;
   }
 
-  /* Windows that are used to display registers.  */
-  std::vector<tui_data_item_window> regs_content;
-  int regs_column_count = 0;
-  struct reggroup *current_group = nullptr;
-
   void check_register_values (struct frame_info *frame);
 
   void show_registers (struct reggroup *group);
 
+  struct reggroup *get_current_group () const
+  {
+    return current_group;
+  }
+
 protected:
 
   void do_scroll_vertical (int num_to_scroll) override;
@@ -126,6 +126,11 @@ private:
   void delete_data_content_windows ();
 
   void erase_data_content (const char *prompt);
+
+  /* Windows that are used to display registers.  */
+  std::vector<tui_data_item_window> regs_content;
+  int regs_column_count = 0;
+  struct reggroup *current_group = nullptr;
 };
 
 #endif /* TUI_TUI_REGS_H */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify register display
@ 2019-08-30 22:32 gdb-buildbot
  2019-08-31  1:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 22:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cdaa6eb4394c42b49b090181dbfaae4e327090de ***

commit cdaa6eb4394c42b49b090181dbfaae4e327090de
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Mon Jul 15 15:28:56 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:05 2019 -0600

    Simplify register display
    
    This patch starts with the observation that the code in
    tui_data_window::display_registers_from can all be replaced with a
    call to resize.  To make this work propertly, it also changes
    tui_display_register to be the "rerender" method on
    tui_data_item_window.
    
    The refresh_window method is needed due to the use of nested windows
    here.  The ncurses man page makes it sound like this is not very well
    supported; and experience bears this out: negelecting the touchwin
    call in this path will cause the register window to blank when
    switching focus.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.h (struct tui_data_item_window) <rerender,
            refresh_window>: Declare.
            * tui/tui-regs.c (tui_data_window::display_registers_from): Call
            resize.
            (tui_data_item_window::rerender): Rename from
            tui_display_register.
            (tui_data_item_window::refresh_window): New method.
            * tui/tui-layout.c (tui_gen_win_info::resize): Do nothing on
            no-op.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2a2c08cae4..388f5ebe92 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_item_window) <rerender,
+	refresh_window>: Declare.
+	* tui/tui-regs.c (tui_data_window::display_registers_from): Call
+	resize.
+	(tui_data_item_window::rerender): Rename from
+	tui_display_register.
+	(tui_data_item_window::refresh_window): New method.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Do nothing on
+	no-op.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.h (struct tui_data_window) <regs_content,
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 387a4f51af..7ec704e52f 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -580,6 +580,11 @@ void
 tui_gen_win_info::resize (int height_, int width_,
 			  int origin_x_, int origin_y_)
 {
+  if (width == width_ && height == height_
+      && origin.x == origin_x_ && origin.y == origin_y_
+      && handle != nullptr)
+    return;
+
   width = width_;
   height = height_;
   if (height > 1)
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 98096e2cdc..f62ba065eb 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -42,8 +42,6 @@
 
 #include "gdb_curses.h"
 
-static void tui_display_register (struct tui_data_item_window *data);
-
 /* Get the register from the frame and return a printable
    representation of it.  */
 
@@ -274,34 +272,9 @@ tui_data_window::display_registers_from (int start_element_no)
 	   j < regs_column_count && i < regs_content.size ();
 	   j++)
 	{
-	  struct tui_data_item_window *data_item_win;
-
 	  /* Create the window if necessary.  */
-	  data_item_win = &regs_content[i];
-	  if (data_item_win->handle != NULL
-	      && (data_item_win->height != 1
-		  || data_item_win->width != item_win_width
-		  || data_item_win->origin.x != (item_win_width * j) + 1
-		  || data_item_win->origin.y != cur_y))
-	    {
-	      tui_delete_win (data_item_win->handle);
-	      data_item_win->handle = 0;
-	    }
-                  
-	  if (data_item_win->handle == NULL)
-	    {
-	      data_item_win->height = 1;
-	      data_item_win->width = item_win_width;
-	      data_item_win->origin.x = (item_win_width * j) + 1;
-	      data_item_win->origin.y = cur_y;
-	      data_item_win->make_visible (true);
-	      scrollok (data_item_win->handle, FALSE);
-	    }
-	  touchwin (data_item_win->handle);
-
-	  /* Get the printable representation of the register
-	     and display it.  */
-	  tui_display_register (data_item_win);
+	  regs_content[i].resize (1, item_win_width,
+				  (item_win_width * j) + 1, cur_y);
 	  i++;		/* Next register.  */
 	}
       cur_y++;		/* Next row.  */
@@ -508,43 +481,54 @@ tui_data_window::check_register_values (struct frame_info *frame)
 			    &data_item_win.highlight);
 
 	  if (data_item_win.highlight || was_hilighted)
-	    tui_display_register (&data_item_win);
+	    data_item_win.rerender ();
 	}
     }
 }
 
 /* Display a register in a window.  If hilite is TRUE, then the value
    will be displayed in reverse video.  */
-static void
-tui_display_register (struct tui_data_item_window *data)
+void
+tui_data_item_window::rerender ()
 {
-  if (data->handle != NULL)
-    {
-      int i;
-
-      if (data->highlight)
-	/* We ignore the return value, casting it to void in order to avoid
-	   a compiler warning.  The warning itself was introduced by a patch
-	   to ncurses 5.7 dated 2009-08-29, changing this macro to expand
-	   to code that causes the compiler to generate an unused-value
-	   warning.  */
-	(void) wstandout (data->handle);
+  int i;
+
+  scrollok (handle, FALSE);
+  if (highlight)
+    /* We ignore the return value, casting it to void in order to avoid
+       a compiler warning.  The warning itself was introduced by a patch
+       to ncurses 5.7 dated 2009-08-29, changing this macro to expand
+       to code that causes the compiler to generate an unused-value
+       warning.  */
+    (void) wstandout (handle);
       
-      wmove (data->handle, 0, 0);
-      for (i = 1; i < data->width; i++)
-        waddch (data->handle, ' ');
-      wmove (data->handle, 0, 0);
-      if (data->content)
-        waddstr (data->handle, data->content.get ());
-
-      if (data->highlight)
-	/* We ignore the return value, casting it to void in order to avoid
-	   a compiler warning.  The warning itself was introduced by a patch
-	   to ncurses 5.7 dated 2009-08-29, changing this macro to expand
-	   to code that causes the compiler to generate an unused-value
-	   warning.  */
-	(void) wstandend (data->handle);
-      data->refresh_window ();
+  wmove (handle, 0, 0);
+  for (i = 1; i < width; i++)
+    waddch (handle, ' ');
+  wmove (handle, 0, 0);
+  if (content)
+    waddstr (handle, content.get ());
+
+  if (highlight)
+    /* We ignore the return value, casting it to void in order to avoid
+       a compiler warning.  The warning itself was introduced by a patch
+       to ncurses 5.7 dated 2009-08-29, changing this macro to expand
+       to code that causes the compiler to generate an unused-value
+       warning.  */
+    (void) wstandend (handle);
+  refresh_window ();
+}
+
+void
+tui_data_item_window::refresh_window ()
+{
+  if (handle != nullptr)
+    {
+      /* This seems to be needed because the data items are nested
+	 windows, which according to the ncurses man pages aren't well
+	 supported.  */
+      touchwin (handle);
+      wrefresh (handle);
     }
 }
 
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 2606c39f5a..1f9fa73f1c 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -37,6 +37,10 @@ struct tui_data_item_window : public tui_gen_win_info
 
   tui_data_item_window (tui_data_item_window &&) = default;
 
+  void rerender () override;
+
+  void refresh_window () override;
+
   const char *name = nullptr;
   /* The register number, or data display number.  */
   int item_no = -1;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove NULL checks from box_win
@ 2019-08-30 23:36 gdb-buildbot
  2019-08-31  1:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 23:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 108e13abdf90acc44b1aba4a0f3ee1d49a0f7934 ***

commit 108e13abdf90acc44b1aba4a0f3ee1d49a0f7934
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Mon Jul 15 15:59:53 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:05 2019 -0600

    Remove NULL checks from box_win
    
    box_win can't be called with a NULL window, or with an invisible
    window.  So, the NULL checks in that function can be removed.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-wingeneral.c (box_win): Assume win_info and
            win_info->handle cannot be NULL.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 388f5ebe92..9c8299b93f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Assume win_info and
+	win_info->handle cannot be NULL.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.h (struct tui_data_item_window) <rerender,
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index ab0363f856..01f288be86 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -58,30 +58,27 @@ static void
 box_win (struct tui_win_info *win_info, 
 	 bool highlight_flag)
 {
-  if (win_info && win_info->handle)
-    {
-      WINDOW *win;
-      int attrs;
+  WINDOW *win;
+  int attrs;
 
-      win = win_info->handle;
-      if (highlight_flag)
-        attrs = tui_active_border_attrs;
-      else
-        attrs = tui_border_attrs;
+  win = win_info->handle;
+  if (highlight_flag)
+    attrs = tui_active_border_attrs;
+  else
+    attrs = tui_border_attrs;
 
-      wattron (win, attrs);
+  wattron (win, attrs);
 #ifdef HAVE_WBORDER
-      wborder (win, tui_border_vline, tui_border_vline,
-               tui_border_hline, tui_border_hline,
-               tui_border_ulcorner, tui_border_urcorner,
-               tui_border_llcorner, tui_border_lrcorner);
+  wborder (win, tui_border_vline, tui_border_vline,
+	   tui_border_hline, tui_border_hline,
+	   tui_border_ulcorner, tui_border_urcorner,
+	   tui_border_llcorner, tui_border_lrcorner);
 #else
-      box (win, tui_border_vline, tui_border_hline);
+  box (win, tui_border_vline, tui_border_hline);
 #endif
-      if (!win_info->title.empty ())
-        mvwaddstr (win, 0, 3, win_info->title.c_str ());
-      wattroff (win, attrs);
-    }
+  if (!win_info->title.empty ())
+    mvwaddstr (win, 0, 3, win_info->title.c_str ());
+  wattroff (win, attrs);
 }
 
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't call touchwin in tui_gen_win_info::refresh_window
@ 2019-08-30 23:43 gdb-buildbot
  2019-08-31  2:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-30 23:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 772f3f0398b53cdb88cd744132cf7265928c12a0 ***

commit 772f3f0398b53cdb88cd744132cf7265928c12a0
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Wed Jul 17 16:11:40 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:06 2019 -0600

    Don't call touchwin in tui_gen_win_info::refresh_window
    
    The call to touchwin in tui_gen_win_info::refresh_window was an
    artifact of some earlier refactorings.  Testing shows it isn't needed
    any more -- I believe it was only ever needed for the data item window
    display problem; but that's been solved more locally.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
            call touchwin.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9c8299b93f..4f20a78a8c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
+	call touchwin.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-wingeneral.c (box_win): Assume win_info and
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 01f288be86..f900eab013 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -38,10 +38,7 @@ void
 tui_gen_win_info::refresh_window ()
 {
   if (handle != NULL)
-    {
-      touchwin (handle);
-      wrefresh (handle);
-    }
+    wrefresh (handle);
 }
 
 /* Function to delete the curses window, checking for NULL.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't call tui_refresh_all from show_layout
@ 2019-08-31  0:20 gdb-buildbot
  2019-08-31  3:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  0:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 715bb467feab6e94e01bdf4f5aced092df7398c0 ***

commit 715bb467feab6e94e01bdf4f5aced092df7398c0
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 13:46:23 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:07 2019 -0600

    Don't call tui_refresh_all from show_layout
    
    show_layout calls tui_refresh_all in one case.  However, it doesn't
    need to any more, because the resize method on each window will also
    update the contents.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-layout.c (show_layout): Don't call tui_refresh_all.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4f20a78a8c..2a027a212d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_layout): Don't call tui_refresh_all.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 7ec704e52f..df7056ae97 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -82,7 +82,6 @@ show_layout (enum tui_layout_type layout)
 	case SRC_DATA_COMMAND:
 	case DISASSEM_DATA_COMMAND:
 	  show_data (layout);
-	  tui_refresh_all ();
 	  break;
 	  /* Now show the new layout.  */
 	case SRC_COMMAND:


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Turn two locator functions into methods
@ 2019-08-31  1:42 gdb-buildbot
  2019-08-31  4:23 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  1:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e594a5d19e855cf19a89dab29196d13f53ced7da ***

commit e594a5d19e855cf19a89dab29196d13f53ced7da
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:01:56 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:07 2019 -0600

    Turn two locator functions into methods
    
    This changes tui_set_locator_fullname and tui_set_locator_info to be
    methods on tui_locator_window.  This enables some subsequent
    cleannups.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
            set_locator_fullname>: New methods.
            * tui/tui-stack.c (tui_locator_window::set_locator_fullname):
            Rename from tui_set_locator_fullname.
            (tui_locator_window::set_locator_info): Rename from
            tui_set_locator_info.  Return bool.
            (tui_update_locator_fullname, tui_show_frame_info): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2a027a212d..a069b0a6e1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
+	set_locator_fullname>: New methods.
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
+	Rename from tui_set_locator_fullname.
+	(tui_locator_window::set_locator_info): Rename from
+	tui_set_locator_info.  Return bool.
+	(tui_update_locator_fullname, tui_show_frame_info): Update.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-layout.c (show_layout): Don't call tui_refresh_all.
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 0d411331bb..a4adf36365 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -58,15 +58,6 @@ static struct tui_locator_window _locator;
    Returns a pointer to a static area holding the result.  */
 static char *tui_get_function_from_frame (struct frame_info *fi);
 
-/* Set the full_name portion of the locator.  */
-static void tui_set_locator_fullname (const char *fullname);
-
-/* Update the locator, with the provided arguments.  */
-static int tui_set_locator_info (struct gdbarch *gdbarch,
-				 const char *fullname,
-				 const char *procname,
-                                 int lineno, CORE_ADDR addr);
-
 static void tui_update_command (const char *, int);
 \f
 
@@ -295,9 +286,10 @@ tui_locator_window::rerender ()
   tui_show_locator_content ();
 }
 
-/* Set the filename portion of the locator.  */
-static void
-tui_set_locator_fullname (const char *fullname)
+/* See tui-stack.h.  */
+
+void
+tui_locator_window::set_locator_fullname (const char *fullname)
 {
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
 
@@ -305,20 +297,16 @@ tui_set_locator_fullname (const char *fullname)
   strcat_to_buf (locator->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
 }
 
-/* Update the locator, with the provided arguments.
+/* See tui-stack.h.  */
 
-   Returns 1 if any of the locator's fields were actually changed,
-   and 0 otherwise.  */
-
-static int
-tui_set_locator_info (struct gdbarch *gdbarch,
-		      const char *fullname,
-		      const char *procname, 
-		      int lineno,
-                      CORE_ADDR addr)
+bool
+tui_locator_window::set_locator_info (struct gdbarch *gdbarch_in,
+				      const char *fullname,
+				      const char *procname, 
+				      int lineno,
+				      CORE_ADDR addr_in)
 {
-  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-  int locator_changed_p = 0;
+  bool locator_changed_p = false;
 
   if (procname == NULL)
     procname = "";
@@ -326,20 +314,20 @@ tui_set_locator_info (struct gdbarch *gdbarch,
   if (fullname == NULL)
     fullname = "";
 
-  locator_changed_p |= strncmp (locator->proc_name, procname,
+  locator_changed_p |= strncmp (proc_name, procname,
 				MAX_LOCATOR_ELEMENT_LEN) != 0;
-  locator_changed_p |= lineno != locator->line_no;
-  locator_changed_p |= addr != locator->addr;
-  locator_changed_p |= gdbarch != locator->gdbarch;
-  locator_changed_p |= strncmp (locator->full_name, fullname,
+  locator_changed_p |= lineno != line_no;
+  locator_changed_p |= addr_in != addr;
+  locator_changed_p |= gdbarch_in != gdbarch;
+  locator_changed_p |= strncmp (full_name, fullname,
 				MAX_LOCATOR_ELEMENT_LEN) != 0;
 
-  locator->proc_name[0] = (char) 0;
-  strcat_to_buf (locator->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname);
-  locator->line_no = lineno;
-  locator->addr = addr;
-  locator->gdbarch = gdbarch;
-  tui_set_locator_fullname (fullname);
+  proc_name[0] = (char) 0;
+  strcat_to_buf (proc_name, MAX_LOCATOR_ELEMENT_LEN, procname);
+  line_no = lineno;
+  addr = addr_in;
+  gdbarch = gdbarch_in;
+  set_locator_fullname (fullname);
 
   return locator_changed_p;
 }
@@ -348,7 +336,9 @@ tui_set_locator_info (struct gdbarch *gdbarch,
 void
 tui_update_locator_fullname (const char *fullname)
 {
-  tui_set_locator_fullname (fullname);
+  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
+
+  locator->set_locator_fullname (fullname);
   tui_show_locator_content ();
 }
 
@@ -361,11 +351,11 @@ tui_update_locator_fullname (const char *fullname)
 int
 tui_show_frame_info (struct frame_info *fi)
 {
-  int locator_changed_p;
+  bool locator_changed_p;
+  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
 
   if (fi)
     {
-      struct tui_locator_window *locator = tui_locator_win_info_ptr ();
       CORE_ADDR pc;
 
       symtab_and_line sal = find_frame_sal (fi);
@@ -376,16 +366,16 @@ tui_show_frame_info (struct frame_info *fi)
 
       if (get_frame_pc_if_available (fi, &pc))
 	locator_changed_p
-	  = tui_set_locator_info (get_frame_arch (fi),
-				  (sal.symtab == 0
-				   ? "??" : fullname),
-				  tui_get_function_from_frame (fi),
-				  sal.line,
-				  pc);
+	  = locator->set_locator_info (get_frame_arch (fi),
+				       (sal.symtab == 0
+					? "??" : fullname),
+				       tui_get_function_from_frame (fi),
+				       sal.line,
+				       pc);
       else
 	locator_changed_p
-	  = tui_set_locator_info (get_frame_arch (fi),
-				  "??", _("<unavailable>"), sal.line, 0);
+	  = locator->set_locator_info (get_frame_arch (fi),
+				       "??", _("<unavailable>"), sal.line, 0);
 
       /* If the locator information has not changed, then frame information has
 	 not changed.  If frame information has not changed, then the windows'
@@ -405,7 +395,7 @@ tui_show_frame_info (struct frame_info *fi)
   else
     {
       locator_changed_p
-	= tui_set_locator_info (NULL, NULL, NULL, 0, (CORE_ADDR) 0);
+	= locator->set_locator_info (NULL, NULL, NULL, 0, (CORE_ADDR) 0);
 
       if (!locator_changed_p)
 	return 0;
diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h
index 951cf2c407..86239b0d28 100644
--- a/gdb/tui/tui-stack.h
+++ b/gdb/tui/tui-stack.h
@@ -45,6 +45,18 @@ struct tui_locator_window : public tui_gen_win_info
 
   void rerender () override;
 
+  /* Update the locator, with the provided arguments.
+
+     Returns true if any of the locator's fields were actually
+     changed, and false otherwise.  */
+  bool set_locator_info (struct gdbarch *gdbarch,
+			 const char *fullname,
+			 const char *procname,
+			 int lineno, CORE_ADDR addr);
+
+  /* Set the full_name portion of the locator.  */
+  void set_locator_fullname (const char *fullname);
+
   char full_name[MAX_LOCATOR_ELEMENT_LEN];
   char proc_name[MAX_LOCATOR_ELEMENT_LEN];
   int line_no = 0;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Minor rearrangement of tui-stack.c
@ 2019-08-31  2:53 gdb-buildbot
  2019-08-31  7:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  2:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 12a8555a5402b46da5ad39e29156c0d6b3a81a78 ***

commit 12a8555a5402b46da5ad39e29156c0d6b3a81a78
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:12:31 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:09 2019 -0600

    Minor rearrangement of tui-stack.c
    
    This move _initialize_tui_stack to the end of tui-stack.c, per the gdb
    style; and then removes two unnecessary forward declarations.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.c (_initialize_tui_stack): Move later.
            Remove unnecessary forward declarations.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 38619ef647..981189e178 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (_initialize_tui_stack): Move later.
+	Remove unnecessary forward declarations.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index f6b6bb72b2..36208d0cac 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -53,12 +53,6 @@
 
 static struct tui_locator_window _locator;
 
-/* Get a printable name for the function at the address.
-   The symbol name is demangled if demangling is turned on.
-   Returns a pointer to a static area holding the result.  */
-static char *tui_get_function_from_frame (struct frame_info *fi);
-
-static void tui_update_command (const char *, int);
 \f
 
 /* Accessor for the locator win info.  Answers a pointer to the static
@@ -405,6 +399,13 @@ tui_show_locator_content ()
   locator->rerender ();
 }
 
+/* Command to update the display with the current execution point.  */
+static void
+tui_update_command (const char *arg, int from_tty)
+{
+  execute_command ("frame 0", from_tty);
+}
+
 /* Function to initialize gdb commands, for tui window stack
    manipulation.  */
 
@@ -415,10 +416,3 @@ _initialize_tui_stack (void)
 	   _("Update the source window and locator to "
 	     "display the current execution point."));
 }
-
-/* Command to update the display with the current execution point.  */
-static void
-tui_update_command (const char *arg, int from_tty)
-{
-  execute_command ("frame 0", from_tty);
-}


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't call wrefresh from tui_cont_sig
@ 2019-08-31  3:30 gdb-buildbot
  2019-08-31  8:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  3:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 55b2657bdc4f9494c13f5b6f69dd7f67d72275c0 ***

commit 55b2657bdc4f9494c13f5b6f69dd7f67d72275c0
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:34:39 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:10 2019 -0600

    Don't call wrefresh from tui_cont_sig
    
    tui_cont_sig does not need to call wrefresh, because this is already
    done by tui_refresh_all_win.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-io.c (tui_cont_sig): Don't call wrefresh.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 981189e178..6f35232897 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (tui_cont_sig): Don't call wrefresh.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.c (_initialize_tui_stack): Move later.
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index ac7f098275..ee581a2ff6 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -851,8 +851,6 @@ tui_cont_sig (int sig)
 
       /* Force a refresh of the screen.  */
       tui_refresh_all_win ();
-
-      wrefresh (TUI_CMD_WIN->handle);
     }
   signal (sig, tui_cont_sig);
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove "\nError: " suffix from nat/fork-inferior.c:trace_start_error warning message
@ 2019-08-31  4:56 gdb-buildbot
  2019-08-31 10:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  4:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 47a536d940d2f2bccfec51539b857da06ebc429e ***

commit 47a536d940d2f2bccfec51539b857da06ebc429e
Author:     Sergio Durigan Junior <sergiodj@redhat.com>
AuthorDate: Thu Aug 29 16:11:45 2019 -0400
Commit:     Sergio Durigan Junior <sergiodj@redhat.com>
CommitDate: Fri Aug 30 17:04:37 2019 -0400

    Remove "\nError: " suffix from nat/fork-inferior.c:trace_start_error warning message
    
    Rationale: https://sourceware.org/ml/gdb-patches/2019-08/msg00651.html
    
    This very simple patch removes the "\nError: " suffix from the warning
    message printed by nat/fork-inferior.c:trace_start_error.  This proved
    to just pollute the screen, causing things like:
    
      Starting program: /usr/bin/true
      warning: Could not trace the inferior process.
      Error:
      warning: ptrace: Permission denied
    
    This "Error: " string is not useful at all, and can confuse things,
    therefore let's just remove it and simplify the resulting messages:
    
      Starting program: /usr/bin/true
      warning: Could not trace the inferior process.
      warning: ptrace: Permission denied
    
    gdb/ChangeLog:
    2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>
    
            * nat/fork-inferior.c (trace_start_error): Remove "\nError: "
            suffix from warning message.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2cc7b5809e..ebcfae1f97 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* nat/fork-inferior.c (trace_start_error): Remove "\nError: "
+	suffix from warning message.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-winsource.h (struct tui_source_window_base)
diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c
index 68b51aa814..355e9bef43 100644
--- a/gdb/nat/fork-inferior.c
+++ b/gdb/nat/fork-inferior.c
@@ -580,7 +580,7 @@ trace_start_error (const char *fmt, ...)
   va_list ap;
 
   va_start (ap, fmt);
-  warning ("Could not trace the inferior process.\nError: ");
+  warning ("Could not trace the inferior process.");
   vwarning (fmt, ap);
   va_end (ap);
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Force linker error exit after unresolvable reloc.
@ 2019-08-31  5:12 gdb-buildbot
  2019-08-31 11:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  5:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fdd502691f8b893e321f19260464831f9726c5d4 ***

commit fdd502691f8b893e321f19260464831f9726c5d4
Author:     Jim Wilson <jimw@sifive.com>
AuthorDate: Fri Aug 30 15:14:36 2019 -0700
Commit:     Jim Wilson <jimw@sifive.com>
CommitDate: Fri Aug 30 15:14:36 2019 -0700

    RISC-V: Force linker error exit after unresolvable reloc.
    
    This was noticed while trying to test the compiler -msave-restore support.
    Putting non-pic code in a shared library gives a linker error, but doesn't
    stop the build.
    
    rohan:2030$ cat libtmp.c
    extern int sub2 (int);
    int sub (int i) { return sub2 (i + 10); }
    rohan:2031$ cat libtmp2.c
    extern int sub (int);
    int sub2 (int i) { return sub (i + 10); }
    rohan:2032$ riscv64-unknown-linux-gnu-gcc --shared -o libtmp.so libtmp.c
    rohan:2033$ riscv64-unknown-linux-gnu-gcc --shared -o libtmp2.so libtmp2.c libtmp.so
    /home/jimw/FOSS/install-riscv64/lib/gcc/riscv64-unknown-linux-gnu/8.3.0/../../../../riscv64-unknown-linux-gnu/bin/ld: /tmp/cctrsIBe.o(.text+0x18): unresolvable R_RISCV_CALL relocation against symbol `sub'
    rohan:2034$ echo $?
    0
    rohan:2035$ ls -lt libtmp2.so
    -rwxr-xr-x 1 jimw jimw 6912 Aug 30 14:32 libtmp2.so
    rohan:2036$
    
    The patch fixes this by forcing a linker error.  I now get this.
    
    ohan:2059$ sh tmp.script
    /home/jimw/FOSS/BINUTILS/X-riscv64-linux/ld/ld-new: libtmp2.o(.text+0x18): unresolvable R_RISCV_CALL relocation against symbol `sub'
    /home/jimw/FOSS/BINUTILS/X-riscv64-linux/ld/ld-new: final link failed: bad value
    rohan:2060$ echo $?
    1
    rohan:2061$ ls -lt libtmp2.so
    ls: cannot access 'libtmp2.so': No such file or directory
    
            bfd/
            * elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
            error, call bfd_set_error, set ret to FALSE, and goto out label.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bb99231c64..1fc39dce5f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-30  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
+	error, call bfd_set_error, set ret to FALSE, and goto out label.
+
 2019-08-30  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/24951
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index 4729bae09a..ef2471eb99 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -2297,7 +2297,10 @@ riscv_elf_relocate_section (bfd *output_bfd,
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     h->root.root.string);
-	  continue;
+
+	  bfd_set_error (bfd_error_bad_value);
+	  ret = FALSE;
+	  goto out;
 	}
 
       if (r == bfd_reloc_ok)


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Swap tui_show_locator_content and tui_locator_window::rerender
@ 2019-08-31  5:30 gdb-buildbot
  2019-08-31  5:17 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  5:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 99ab33fb2dab538b13df0f8c02ea02ff1fd6c4db ***

commit 99ab33fb2dab538b13df0f8c02ea02ff1fd6c4db
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:04:14 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:08 2019 -0600

    Swap tui_show_locator_content and tui_locator_window::rerender
    
    This swaps the bodies ot tui_show_locator_content and
    tui_locator_window::rerender, so that the latter does the work, and
    the former is now just an exported convenience wrapper.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
            (tui_locator_window::rerender): Rewrite using body of previous
            tui_show_locator_content.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a069b0a6e1..8905a2424a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
+	(tui_locator_window::rerender): Rewrite using body of previous
+	tui_show_locator_content.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index a4adf36365..48062fed71 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -254,38 +254,27 @@ tui_get_function_from_frame (struct frame_info *fi)
 }
 
 void
-tui_show_locator_content (void)
+tui_locator_window::rerender ()
 {
-  char *string;
-  struct tui_locator_window *locator;
-
-  locator = tui_locator_win_info_ptr ();
-
-  if (locator != NULL && locator->handle != NULL)
+  if (handle != NULL)
     {
-      string = tui_make_status_line (locator);
-      wmove (locator->handle, 0, 0);
+      char *string = tui_make_status_line (this);
+      wmove (handle, 0, 0);
       /* We ignore the return value from wstandout and wstandend, casting
 	 them to void in order to avoid a compiler warning.  The warning
 	 itself was introduced by a patch to ncurses 5.7 dated 2009-08-29,
 	 changing these macro to expand to code that causes the compiler
 	 to generate an unused-value warning.  */
-      (void) wstandout (locator->handle);
-      waddstr (locator->handle, string);
-      wclrtoeol (locator->handle);
-      (void) wstandend (locator->handle);
-      locator->refresh_window ();
-      wmove (locator->handle, 0, 0);
+      (void) wstandout (handle);
+      waddstr (handle, string);
+      wclrtoeol (handle);
+      (void) wstandend (handle);
+      refresh_window ();
+      wmove (handle, 0, 0);
       xfree (string);
     }
 }
 
-void
-tui_locator_window::rerender ()
-{
-  tui_show_locator_content ();
-}
-
 /* See tui-stack.h.  */
 
 void
@@ -411,6 +400,13 @@ tui_show_frame_info (struct frame_info *fi)
     }
 }
 
+void
+tui_show_locator_content ()
+{
+  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
+  locator->rerender ();
+}
+
 /* Function to initialize gdb commands, for tui window stack
    manipulation.  */
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make tui_locator_window::set_locator_fullname re-render
@ 2019-08-31  6:20 gdb-buildbot
  2019-08-31  6:29 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  6:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 900ac24287a26146a6a5f4b3b9d6610f3b574428 ***

commit 900ac24287a26146a6a5f4b3b9d6610f3b574428
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:08:53 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:09 2019 -0600

    Make tui_locator_window::set_locator_fullname re-render
    
    This changes tui_locator_window::set_locator_fullname to re-render the
    locator window, so that the callers don't need to do this.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
            rerender.
            (tui_update_locator_fullname, tui_show_frame_info): Don't call
            tui_show_locator_content.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8905a2424a..38619ef647 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
+	rerender.
+	(tui_update_locator_fullname, tui_show_frame_info): Don't call
+	tui_show_locator_content.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 48062fed71..f6b6bb72b2 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -284,6 +284,7 @@ tui_locator_window::set_locator_fullname (const char *fullname)
 
   locator->full_name[0] = 0;
   strcat_to_buf (locator->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
+  rerender ();
 }
 
 /* See tui-stack.h.  */
@@ -328,7 +329,6 @@ tui_update_locator_fullname (const char *fullname)
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
 
   locator->set_locator_fullname (fullname);
-  tui_show_locator_content ();
 }
 
 /* Function to print the frame information for the TUI.  The windows are
@@ -372,7 +372,6 @@ tui_show_frame_info (struct frame_info *fi)
       if (!locator_changed_p)
 	return 0;
 
-      tui_show_locator_content ();
       for (struct tui_source_window_base *win_info : tui_source_windows ())
 	{
 	  win_info->maybe_update (fi, sal, locator->line_no, locator->addr);
@@ -389,7 +388,6 @@ tui_show_frame_info (struct frame_info *fi)
       if (!locator_changed_p)
 	return 0;
 
-      tui_show_locator_content ();
       for (struct tui_source_window_base *win_info : tui_source_windows ())
 	{
 	  win_info->erase_source_content ();


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove tui_win_info::refresh_all
@ 2019-08-31  9:14 gdb-buildbot
  2019-08-31  9:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-08-31  9:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d6a00eba2accffec92a5974c2ad1f79612a6679e ***

commit d6a00eba2accffec92a5974c2ad1f79612a6679e
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:38:39 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Aug 30 12:57:10 2019 -0600

    Remove tui_win_info::refresh_all
    
    The TUI has two duplicate "re-render this window" methods, "rerender"
    and "refresh_all".  They differ only slightly in semantics, so I
    wanted to see if they could be unified.
    
    After looking into this, I decided that refresh_all was not needed.
    There are 4 calls to tui_refresh_all_win (the only caller of this
    method):
    
    1. tui_enable.  This sets the layout, which renders the windows.
    
    2. tui_cont_sig.  Here, I think it's sufficient to simply redraw the
       current window contents from the curses backing store, because gdb
       state didn't change while it was suspended
    
    3. tui_dispatch_ctrl_char.  This is the C-l handler, and here it's
       explicitly enough to just refresh the screen (as above).
    
    4. tui_refresh_all_command.  This is the command equivalent of C-l.
    
    So, this patch removes this method entirely and simplifies
    tui_refresh_all_win.
    
    gdb/ChangeLog
    2019-08-30  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-winsource.h (struct tui_source_window_base)
            <refresh_all>: Don't declare.
            * tui/tui-winsource.c (tui_source_window_base::refresh_all):
            Remove.
            * tui/tui-win.c (tui_refresh_all_win): Don't call refresh_all or
            tui_show_locator_content.
            * tui/tui-regs.h (struct tui_data_window) <refresh_all>: Don't
            declare.
            * tui/tui-regs.c (tui_data_window::refresh_all): Remove.
            * tui/tui-data.h (struct tui_win_info) <refresh_all>: Don't
            declare.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6f35232897..2cc7b5809e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<refresh_all>: Don't declare.
+	* tui/tui-winsource.c (tui_source_window_base::refresh_all):
+	Remove.
+	* tui/tui-win.c (tui_refresh_all_win): Don't call refresh_all or
+	tui_show_locator_content.
+	* tui/tui-regs.h (struct tui_data_window) <refresh_all>: Don't
+	declare.
+	* tui/tui-regs.c (tui_data_window::refresh_all): Remove.
+	* tui/tui-data.h (struct tui_win_info) <refresh_all>: Don't
+	declare.
+
 2019-08-30  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-io.c (tui_cont_sig): Don't call wrefresh.
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 1810fa3e72..23f769f6ba 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -162,12 +162,6 @@ public:
   {
   }
 
-  /* Called after all the TUI windows are refreshed, to let this
-     window have a chance to update itself further.  */
-  virtual void refresh_all ()
-  {
-  }
-
   /* Compute the maximum height of this window.  */
   virtual int max_height () const;
 
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index f62ba065eb..48e78fc9db 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -403,29 +403,6 @@ tui_data_window::rerender ()
 }
 
 
-/* Function to redisplay the contents of the data window.  */
-void
-tui_data_window::refresh_all ()
-{
-  erase_data_content (NULL);
-  if (!regs_content.empty ())
-    {
-      int first_element = first_data_item_displayed ();
-
-      if (first_element >= 0)	/* Re-use existing windows.  */
-	{
-	  int first_line = (-1);
-
-	  if (first_element < regs_content.size ())
-	    first_line = line_from_reg_element_no (first_element);
-
-	  if (first_line >= 0)
-	    display_registers_from_line (first_line);
-	}
-    }
-}
-
-
 /* Scroll the data window vertically forward or backward.  */
 void
 tui_data_window::do_scroll_vertical (int num_to_scroll)
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 1f9fa73f1c..abf44c88b6 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -58,8 +58,6 @@ struct tui_data_window : public tui_win_info
 
   DISABLE_COPY_AND_ASSIGN (tui_data_window);
 
-  void refresh_all () override;
-
   void refresh_window () override;
 
   const char *name () const override
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 64e38880a2..8d41372cf9 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -504,12 +504,6 @@ tui_refresh_all_win (void)
 {
   clearok (curscr, TRUE);
   tui_refresh_all ();
-  for (tui_win_info *win_info : all_tui_windows ())
-    {
-      if (win_info->is_visible ())
-	win_info->refresh_all ();
-    }
-  tui_show_locator_content ();
 }
 
 void
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 0a3eb78bb5..7a4821dc52 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -280,16 +280,6 @@ tui_source_window_base::~tui_source_window_base ()
 
 /* See tui-data.h.  */
 
-void
-tui_source_window_base::refresh_all ()
-{
-  show_source_content ();
-  check_and_display_highlight_if_needed ();
-  update_exec_info ();
-}
-
-/* See tui-data.h.  */
-
 void
 tui_source_window_base::update_tab_width ()
 {
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index 1804ca7224..4c98ca3ceb 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -103,8 +103,6 @@ public:
 
   void clear_detail ();
 
-  void refresh_all () override;
-
   /* Refill the source window's source cache and update it.  If this
      is a disassembly window, then just update it.  */
   void refill ();


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Fix linker problems with tls copy relocs.
@ 2019-09-01  6:49 gdb-buildbot
  2019-09-01  8:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-01  6:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3e7bd7f24146f162565edf878840449f36a8d974 ***

commit 3e7bd7f24146f162565edf878840449f36a8d974
Author:     Jim Wilson <jimw@sifive.com>
AuthorDate: Sat Aug 31 21:22:36 2019 -0700
Commit:     Jim Wilson <jimw@sifive.com>
CommitDate: Sat Aug 31 21:22:36 2019 -0700

    RISC-V: Fix linker problems with tls copy relocs.
    
    The linker doesn't allocate memory space for sections that are only SEC_ALLOC
    and SEC_THREAD_LOCAL.  See the IS_TBSS test in ld/ldlang.c.  So we need to
    pretend that .tdata.dyn sections have contents to get the right result.  It
    will be marked this way anyways if there is a .tdata section to merge with.
    
            bfd/
            PR 23825
            * elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
            SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1fc39dce5f..2b06383768 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-31  Jim Wilson  <jimw@sifive.com>
+
+	PR 23825
+	* elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
+	SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.
+
 2019-08-30  Jim Wilson  <jimw@sifive.com>
 
 	* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index ef2471eb99..1d04ae9b7e 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -373,9 +373,23 @@ riscv_elf_create_dynamic_sections (bfd *dynobj,
 
   if (!bfd_link_pic (info))
     {
+      /* Technically, this section doesn't have contents.  It is used as the
+	 target of TLS copy relocs, to copy TLS data from shared libraries into
+	 the executable.  However, if we don't mark it as loadable, then it
+	 matches the IS_TBSS test in ldlang.c, and there is no run-time address
+	 space allocated for it even though it has SEC_ALLOC.  That test is
+	 correct for .tbss, but not correct for this section.  There is also
+	 a second problem that having a section with no contents can only work
+	 if it comes after all sections with contents in the same segment,
+	 but the linker script does not guarantee that.  This is just mixed in
+	 with other .tdata.* sections.  We can fix both problems by lying and
+	 saying that there are contents.  This section is expected to be small
+	 so this should not cause a significant extra program startup cost.  */
       htab->sdyntdata =
 	bfd_make_section_anyway_with_flags (dynobj, ".tdata.dyn",
 					    (SEC_ALLOC | SEC_THREAD_LOCAL
+					     | SEC_LOAD | SEC_DATA
+					     | SEC_HAS_CONTENTS
 					     | SEC_LINKER_CREATED));
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Memory leak in dwarf2.c
@ 2019-09-02  2:11 gdb-buildbot
  2019-09-02  2:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-02  2:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 22b31fea07587034636251ccb81041e4e8e0bd93 ***

commit 22b31fea07587034636251ccb81041e4e8e0bd93
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 2 09:54:55 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 2 10:08:17 2019 +0930

    Memory leak in dwarf2.c
    
    This fixes a small leak of debug_filename.  bfd_openr copies the file
    name since git commit 1be5090bca.
    
            PR 11983
            * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
            on success.  Tidy.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2b06383768..47f694ad75 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-02  Alan Modra  <amodra@gmail.com>
+
+	PR 11983
+	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
+	on success.  Tidy.
+
 2019-08-31  Jim Wilson  <jimw@sifive.com>
 
 	PR 23825
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index a8beec4947..88638b903f 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -4385,18 +4385,20 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
 	   fail more quickly.  */
 	return FALSE;
 
+      debug_bfd = bfd_openr (debug_filename, NULL);
+      free (debug_filename);
+      if (debug_bfd == NULL)
+	/* FIXME: Should we report our failure to follow the debuglink ?  */
+	return FALSE;
+
       /* Set BFD_DECOMPRESS to decompress debug sections.  */
-      if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
-	  || !(debug_bfd->flags |= BFD_DECOMPRESS,
-	       bfd_check_format (debug_bfd, bfd_object))
+      debug_bfd->flags |= BFD_DECOMPRESS;
+      if (!bfd_check_format (debug_bfd, bfd_object)
 	  || (msec = find_debug_info (debug_bfd,
 				      debug_sections, NULL)) == NULL
 	  || !bfd_generic_link_read_symbols (debug_bfd))
 	{
-	  if (debug_bfd)
-	    bfd_close (debug_bfd);
-	  /* FIXME: Should we report our failure to follow the debuglink ?  */
-	  free (debug_filename);
+	  bfd_close (debug_bfd);
 	  return FALSE;
 	}
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Re: Memory leak in dwarf2.c
@ 2019-09-02  8:27 gdb-buildbot
  2019-09-02  9:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-02  8:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 217d2eaa69c2a5d58cdfd11619c4f2e41c986826 ***

commit 217d2eaa69c2a5d58cdfd11619c4f2e41c986826
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 2 16:48:44 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 2 16:50:22 2019 +0930

    Re: Memory leak in dwarf2.c
    
            PR 11983
            * dwarf2.c (read_alt_indirect_string): Free debug_filename
            on success.  Tidy.
            (read_alt_indirect_ref): Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 47f694ad75..f033af7443 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -3,6 +3,8 @@
 	PR 11983
 	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
 	on success.  Tidy.
+	(read_alt_indirect_string): Likewise.
+	(read_alt_indirect_ref): Likewise.
 
 2019-08-31  Jim Wilson  <jimw@sifive.com>
 
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 88638b903f..ed6dcd48c7 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -802,20 +802,21 @@ read_alt_indirect_string (struct comp_unit * unit,
 
   if (stash->alt_bfd_ptr == NULL)
     {
-      bfd *  debug_bfd;
-      char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
+      bfd *debug_bfd;
+      char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
 
       if (debug_filename == NULL)
 	return NULL;
 
-      if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
-	  || ! bfd_check_format (debug_bfd, bfd_object))
-	{
-	  if (debug_bfd)
-	    bfd_close (debug_bfd);
+      debug_bfd = bfd_openr (debug_filename, NULL);
+      free (debug_filename);
+      if (debug_bfd == NULL)
+	/* FIXME: Should we report our failure to follow the debuglink ?  */
+	return NULL;
 
-	  /* FIXME: Should we report our failure to follow the debuglink ?  */
-	  free (debug_filename);
+      if (!bfd_check_format (debug_bfd, bfd_object))
+	{
+	  bfd_close (debug_bfd);
 	  return NULL;
 	}
       stash->alt_bfd_ptr = debug_bfd;
@@ -850,20 +851,21 @@ read_alt_indirect_ref (struct comp_unit * unit,
 
   if (stash->alt_bfd_ptr == NULL)
     {
-      bfd *  debug_bfd;
-      char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
+      bfd *debug_bfd;
+      char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
 
       if (debug_filename == NULL)
 	return FALSE;
 
-      if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
-	  || ! bfd_check_format (debug_bfd, bfd_object))
-	{
-	  if (debug_bfd)
-	    bfd_close (debug_bfd);
+      debug_bfd = bfd_openr (debug_filename, NULL);
+      free (debug_filename);
+      if (debug_bfd == NULL)
+	/* FIXME: Should we report our failure to follow the debuglink ?  */
+	return NULL;
 
-	  /* FIXME: Should we report our failure to follow the debuglink ?  */
-	  free (debug_filename);
+      if (!bfd_check_format (debug_bfd, bfd_object))
+	{
+	  bfd_close (debug_bfd);
 	  return NULL;
 	}
       stash->alt_bfd_ptr = debug_bfd;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Refactor svr4_create_solib_event_breakpoints
@ 2019-09-02 14:04 gdb-buildbot
  2019-09-02 14:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-02 14:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e661ef01e50a2cb38c006b0fe444a1b41bfc9400 ***

commit e661ef01e50a2cb38c006b0fe444a1b41bfc9400
Author:     Alan Hayward <alan.hayward@arm.com>
AuthorDate: Wed Aug 21 15:05:40 2019 +0100
Commit:     Alan Hayward <alan.hayward@arm.com>
CommitDate: Mon Sep 2 13:57:12 2019 +0100

    Refactor svr4_create_solib_event_breakpoints
    
    Move the bulk of svr4_create_solib_event_breakpoints into a new
    function to simplify the logic. No functional changes.
    
    gdb/ChangeLog:
    
            * solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
            code to here...
            (svr4_create_solib_event_breakpoints): ...from here.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ebcfae1f97..e35ff66c54 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
+	code to here...
+	(svr4_create_solib_event_breakpoints): ...from here.
+
 2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	* nat/fork-inferior.c (trace_start_error): Remove "\nError: "
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index c0c505acaa..b21eacb68f 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -2061,6 +2061,61 @@ svr4_create_probe_breakpoints (svr4_info *info, struct gdbarch *gdbarch,
   svr4_update_solib_event_breakpoints ();
 }
 
+/* Find all the glibc named probes.  Only if all of the probes are found, then
+   create them and return true.  Otherwise return false.  If WITH_PREFIX is set
+   then add "rtld" to the front of the probe names.  */
+static bool
+svr4_find_and_create_probe_breakpoints (svr4_info *info,
+					struct gdbarch *gdbarch,
+					struct obj_section *os,
+					bool with_prefix)
+{
+  std::vector<probe *> probes[NUM_PROBES];
+  bool checked_can_use_probe_arguments = false;
+
+  for (int i = 0; i < NUM_PROBES; i++)
+    {
+      const char *name = probe_info[i].name;
+      char buf[32];
+
+      /* Fedora 17 and Red Hat Enterprise Linux 6.2-6.4 shipped with an early
+	 version of the probes code in which the probes' names were prefixed
+	 with "rtld_" and the "map_failed" probe did not exist.  The locations
+	 of the probes are otherwise the same, so we check for probes with
+	 prefixed names if probes with unprefixed names are not present.  */
+      if (with_prefix)
+	{
+	  xsnprintf (buf, sizeof (buf), "rtld_%s", name);
+	  name = buf;
+	}
+
+      probes[i] = find_probes_in_objfile (os->objfile, "rtld", name);
+
+      /* The "map_failed" probe did not exist in early
+	 versions of the probes code in which the probes'
+	 names were prefixed with "rtld_".  */
+      if (with_prefix && streq (name, "rtld_map_failed"))
+	continue;
+
+      /* Ensure at least one probe for the current name was found.  */
+      if (probes[i].empty ())
+	return false;
+
+      /* Ensure probe arguments can be evaluated.  */
+      if (!checked_can_use_probe_arguments)
+	{
+	  probe *p = probes[i][0];
+	  if (!p->can_evaluate_arguments ())
+	    return false;
+	  checked_can_use_probe_arguments = true;
+	}
+    }
+
+  /* All probes found.  Now create them.  */
+  svr4_create_probe_breakpoints (info, gdbarch, probes, os->objfile);
+  return true;
+}
+
 /* Both the SunOS and the SVR4 dynamic linkers call a marker function
    before and after mapping and unmapping shared libraries.  The sole
    purpose of this method is to allow debuggers to set a breakpoint so
@@ -2077,74 +2132,12 @@ static void
 svr4_create_solib_event_breakpoints (svr4_info *info, struct gdbarch *gdbarch,
 				     CORE_ADDR address)
 {
-  struct obj_section *os;
-
-  os = find_pc_section (address);
-  if (os != NULL)
-    {
-      int with_prefix;
-
-      for (with_prefix = 0; with_prefix <= 1; with_prefix++)
-	{
-	  std::vector<probe *> probes[NUM_PROBES];
-	  int all_probes_found = 1;
-	  int checked_can_use_probe_arguments = 0;
-
-	  for (int i = 0; i < NUM_PROBES; i++)
-	    {
-	      const char *name = probe_info[i].name;
-	      probe *p;
-	      char buf[32];
-
-	      /* Fedora 17 and Red Hat Enterprise Linux 6.2-6.4
-		 shipped with an early version of the probes code in
-		 which the probes' names were prefixed with "rtld_"
-		 and the "map_failed" probe did not exist.  The
-		 locations of the probes are otherwise the same, so
-		 we check for probes with prefixed names if probes
-		 with unprefixed names are not present.  */
-	      if (with_prefix)
-		{
-		  xsnprintf (buf, sizeof (buf), "rtld_%s", name);
-		  name = buf;
-		}
-
-	      probes[i] = find_probes_in_objfile (os->objfile, "rtld", name);
-
-	      /* The "map_failed" probe did not exist in early
-		 versions of the probes code in which the probes'
-		 names were prefixed with "rtld_".  */
-	      if (strcmp (name, "rtld_map_failed") == 0)
-		continue;
-
-	      if (probes[i].empty ())
-		{
-		  all_probes_found = 0;
-		  break;
-		}
-
-	      /* Ensure probe arguments can be evaluated.  */
-	      if (!checked_can_use_probe_arguments)
-		{
-		  p = probes[i][0];
-		  if (!p->can_evaluate_arguments ())
-		    {
-		      all_probes_found = 0;
-		      break;
-		    }
-		  checked_can_use_probe_arguments = 1;
-		}
-	    }
-
-	  if (all_probes_found)
-	    svr4_create_probe_breakpoints (info, gdbarch, probes, os->objfile);
-
-	  if (all_probes_found)
-	    return;
-	}
-    }
+  struct obj_section *os = find_pc_section (address);
 
-  create_solib_event_breakpoint (gdbarch, address);
+  if (os == nullptr
+      || (!svr4_find_and_create_probe_breakpoints (info, gdbarch, os, false)
+	  && !svr4_find_and_create_probe_breakpoints (info, gdbarch, os, true)))
+    create_solib_event_breakpoint (gdbarch, address);
 }
 
 /* Helper function for gdb_bfd_lookup_symbol.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use gdbarch for probe::get_argument_count
@ 2019-09-02 15:09 gdb-buildbot
  2019-09-02 15:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-02 15:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fe01123efb30a273645dc194ae2100197f93a00a ***

commit fe01123efb30a273645dc194ae2100197f93a00a
Author:     Alan Hayward <alan.hayward@arm.com>
AuthorDate: Wed Aug 21 15:24:02 2019 +0100
Commit:     Alan Hayward <alan.hayward@arm.com>
CommitDate: Mon Sep 2 13:58:48 2019 +0100

    Use gdbarch for probe::get_argument_count
    
    The probe function get_argument_count does not need a frame, only
    the current gdbarch.  Switch the code to pass gdbarch instead.
    No functional changes.
    
    gdb/ChangeLog:
    
            * break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
            * dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
            * probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
            (compile_probe_arg): Likewise.
            * probe.h (get_argument_count): Likewise.
            * solib-svr4.c (solib_event_probe_action): Likewise.
            * stap-probe.c (stap_probe::get_argument_count): Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e35ff66c54..d0e4258c4f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
+	* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
+	* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
+	(compile_probe_arg): Likewise.
+	* probe.h (get_argument_count): Likewise.
+	* solib-svr4.c (solib_event_probe_action): Likewise.
+	* stap-probe.c (stap_probe::get_argument_count): Likewise.
+
 2019-09-02  Alan Hayward  <alan.hayward@arm.com>
 
 	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c
index 2d91285312..e9523a6eb8 100644
--- a/gdb/break-catch-throw.c
+++ b/gdb/break-catch-throw.c
@@ -115,7 +115,7 @@ fetch_probe_arguments (struct value **arg0, struct value **arg1)
 	  && pc_probe.prob->get_name () != "rethrow"))
     error (_("not stopped at a C++ exception catchpoint"));
 
-  n_args = pc_probe.prob->get_argument_count (frame);
+  n_args = pc_probe.prob->get_argument_count (get_frame_arch (frame));
   if (n_args < 2)
     error (_("C++ exception catchpoint has too few arguments"));
 
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index 2d92edb11c..e9e71fd4c9 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -122,7 +122,7 @@ public:
   CORE_ADDR get_relocated_address (struct objfile *objfile) override;
 
   /* See probe.h.  */
-  unsigned get_argument_count (struct frame_info *frame) override;
+  unsigned get_argument_count (struct gdbarch *gdbarch) override;
 
   /* See probe.h.  */
   bool can_evaluate_arguments () const override;
@@ -693,7 +693,7 @@ dtrace_probe::get_relocated_address (struct objfile *objfile)
 /* Implementation of the get_argument_count method.  */
 
 unsigned
-dtrace_probe::get_argument_count (struct frame_info *frame)
+dtrace_probe::get_argument_count (struct gdbarch *gdbarch)
 {
   return m_args.size ();
 }
diff --git a/gdb/probe.c b/gdb/probe.c
index cdc6e021d2..8b108d6b02 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -695,7 +695,7 @@ probe_safe_evaluate_at_pc (struct frame_info *frame, unsigned n)
   if (!probe.prob)
     return NULL;
 
-  n_args = probe.prob->get_argument_count (frame);
+  n_args = probe.prob->get_argument_count (get_frame_arch (frame));
   if (n >= n_args)
     return NULL;
 
@@ -818,7 +818,7 @@ compute_probe_arg (struct gdbarch *arch, struct internalvar *ivar,
   if (pc_probe.prob == NULL)
     error (_("No probe at PC %s"), core_addr_to_string (pc));
 
-  n_args = pc_probe.prob->get_argument_count (frame);
+  n_args = pc_probe.prob->get_argument_count (arch);
   if (sel == -1)
     return value_from_longest (builtin_type (arch)->builtin_int, n_args);
 
@@ -840,7 +840,6 @@ compile_probe_arg (struct internalvar *ivar, struct agent_expr *expr,
   int sel = (int) (uintptr_t) data;
   struct bound_probe pc_probe;
   int n_args;
-  struct frame_info *frame = get_selected_frame (NULL);
 
   /* SEL == -1 means "_probe_argc".  */
   gdb_assert (sel >= -1);
@@ -849,7 +848,7 @@ compile_probe_arg (struct internalvar *ivar, struct agent_expr *expr,
   if (pc_probe.prob == NULL)
     error (_("No probe at PC %s"), core_addr_to_string (pc));
 
-  n_args = pc_probe.prob->get_argument_count (frame);
+  n_args = pc_probe.prob->get_argument_count (expr->gdbarch);
 
   if (sel == -1)
     {
diff --git a/gdb/probe.h b/gdb/probe.h
index 8abf69e354..7410c5aadf 100644
--- a/gdb/probe.h
+++ b/gdb/probe.h
@@ -131,7 +131,7 @@ public:
 
   /* Return the number of arguments of the probe.  This function can
      throw an exception.  */
-  virtual unsigned get_argument_count (struct frame_info *frame) = 0;
+  virtual unsigned get_argument_count (struct gdbarch *gdbarch) = 0;
 
   /* Return 1 if the probe interface can evaluate the arguments of
      probe, zero otherwise.  See the comments on
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index b21eacb68f..2a44dd6985 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -1756,7 +1756,7 @@ solib_event_probe_action (struct probe_and_action *pa)
        arg2: struct link_map *new (optional, for incremental updates)  */
   try
     {
-      probe_argc = pa->prob->get_argument_count (frame);
+      probe_argc = pa->prob->get_argument_count (get_frame_arch (frame));
     }
   catch (const gdb_exception_error &ex)
     {
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index b6de873d2c..700b657967 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -136,7 +136,7 @@ public:
   CORE_ADDR get_relocated_address (struct objfile *objfile) override;
 
   /* See probe.h.  */
-  unsigned get_argument_count (struct frame_info *frame) override;
+  unsigned get_argument_count (struct gdbarch *gdbarch) override;
 
   /* See probe.h.  */
   bool can_evaluate_arguments () const override;
@@ -1301,10 +1301,8 @@ stap_probe::get_relocated_address (struct objfile *objfile)
    argument string.  */
 
 unsigned
-stap_probe::get_argument_count (struct frame_info *frame)
+stap_probe::get_argument_count (struct gdbarch *gdbarch)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-
   if (!m_have_parsed_args)
     {
       if (this->can_evaluate_arguments ())


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Check arguments for all probes before using them
@ 2019-09-02 15:29 gdb-buildbot
  2019-09-02 16:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-02 15:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d90b8f2632cded4792f18d8bb92bacc21d93eb0a ***

commit d90b8f2632cded4792f18d8bb92bacc21d93eb0a
Author:     Alan Hayward <alan.hayward@arm.com>
AuthorDate: Wed Aug 21 15:36:37 2019 +0100
Commit:     Alan Hayward <alan.hayward@arm.com>
CommitDate: Mon Sep 2 14:00:42 2019 +0100

    Check arguments for all probes before using them
    
    There is a long standing bug in the Arm toolchain where invalid
    stap probes get created due to the probes referring to symbols which
    have been resolved away.
    
    More details are here:
    https://bugzilla.redhat.com/show_bug.cgi?id=1196181
    
    When these invalid probes are present, GDB will create the breakpoints
    and then fail to stop. The errors are only spotted the first time
    GDB stops, which is too late.
    
    The solution is to ensure the arguments for all the probes are
    resolved before using them.
    
    This fixes >100 timeouts when running break-interp.exp when using
    bad probes.
    
    gdb/ChangeLog:
    
            * solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
            probe arguments.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d0e4258c4f..08615f462e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
+	probe arguments.
+
 2019-09-02  Alan Hayward  <alan.hayward@arm.com>
 
 	* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index 2a44dd6985..ffae26bfc5 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -2071,7 +2071,6 @@ svr4_find_and_create_probe_breakpoints (svr4_info *info,
 					bool with_prefix)
 {
   std::vector<probe *> probes[NUM_PROBES];
-  bool checked_can_use_probe_arguments = false;
 
   for (int i = 0; i < NUM_PROBES; i++)
     {
@@ -2102,12 +2101,23 @@ svr4_find_and_create_probe_breakpoints (svr4_info *info,
 	return false;
 
       /* Ensure probe arguments can be evaluated.  */
-      if (!checked_can_use_probe_arguments)
+      for (probe *p : probes[i])
 	{
-	  probe *p = probes[i][0];
 	  if (!p->can_evaluate_arguments ())
 	    return false;
-	  checked_can_use_probe_arguments = true;
+	  /* This will fail if the probe is invalid.  This has been seen on Arm
+	     due to references to symbols that have been resolved away.  */
+	  try
+	    {
+	      p->get_argument_count (gdbarch);
+	    }
+	  catch (const gdb_exception_error &ex)
+	    {
+	      exception_print (gdb_stderr, ex);
+	      warning (_("Initializing probes-based dynamic linker interface "
+			 "failed.\nReverting to original interface."));
+	      return false;
+	    }
 	}
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix a potential buffer overrun in the MMIX disassembler when processing a corrupt input file.
@ 2019-09-03  9:35 gdb-buildbot
  2019-09-03 10:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-03  9:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1e4b5e7d354a41276cb8dfbaae79915e1730dbd8 ***

commit 1e4b5e7d354a41276cb8dfbaae79915e1730dbd8
Author:     Nick Clifton <nickc@redhat.com>
AuthorDate: Tue Sep 3 09:53:25 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Tue Sep 3 09:53:25 2019 +0100

    Fix a potential buffer overrun in the MMIX disassembler when processing a corrupt input file.
    
            PR 24958
            * mmix-dis.c (MAX_REG_NAME_LEN): Define.
            (MAX_SPEC_REG_NAME_LEN): Define.
            (struct mmix_dis_info): Use defined constants for array lengths.
            (get_reg_name): New function.
            (get_sprec_reg_name): New function.
            (print_insn_mmix): Use new functions.

diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index bec2b59cc4..87e3f74663 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-03  Nick Clifton  <nickc@redhat.com>
+
+	PR 24958
+	* mmix-dis.c (MAX_REG_NAME_LEN): Define.
+	(MAX_SPEC_REG_NAME_LEN): Define.
+	(struct mmix_dis_info): Use defined constants for array lengths.
+	(get_reg_name): New function.
+	(get_sprec_reg_name): New function.
+	(print_insn_mmix): Use new functions.
+
 2019-08-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
 
 	* arm-dis.c (mve_opcodes): Add entry for MVE_VMOV_VEC_TO_VEC.
diff --git a/opcodes/mmix-dis.c b/opcodes/mmix-dis.c
index 80a58ed6ec..93688d3cb7 100644
--- a/opcodes/mmix-dis.c
+++ b/opcodes/mmix-dis.c
@@ -54,15 +54,17 @@
 #define INSN_IMMEDIATE_BIT (IMM_OFFSET_BIT << 24)
 #define INSN_BACKWARD_OFFSET_BIT (1 << 24)
 
+#define MAX_REG_NAME_LEN       256
+#define MAX_SPEC_REG_NAME_LEN  32
 struct mmix_dis_info
  {
-   const char *reg_name[256];
-   const char *spec_reg_name[32];
+   const char *reg_name[MAX_REG_NAME_LEN];
+   const char *spec_reg_name[MAX_SPEC_REG_NAME_LEN];
 
    /* Waste a little memory so we don't have to allocate each separately.
       We could have an array with static contents for these, but on the
       other hand, we don't have to.  */
-   char basic_reg_name[256][sizeof ("$255")];
+   char basic_reg_name[MAX_REG_NAME_LEN][sizeof ("$255")];
  };
 
 /* Initialize a target-specific array in INFO.  */
@@ -111,7 +113,7 @@ initialize_mmix_dis_info (struct disassemble_info *info)
 	  for (i = 0; i < nsyms && syms[i] != NULL; i++)
 	    {
 	      if (syms[i]->section == reg_section
-		  && syms[i]->value < 256
+		  && syms[i]->value < MAX_REG_NAME_LEN
 		  && minfop->reg_name[syms[i]->value] == NULL)
 		minfop->reg_name[syms[i]->value] = syms[i]->name;
 	    }
@@ -119,7 +121,7 @@ initialize_mmix_dis_info (struct disassemble_info *info)
     }
 
   /* Fill in the rest with the canonical names.  */
-  for (i = 0; i < 256; i++)
+  for (i = 0; i < MAX_REG_NAME_LEN; i++)
     if (minfop->reg_name[i] == NULL)
       {
 	sprintf (minfop->basic_reg_name[i], "$%ld", i);
@@ -238,6 +240,22 @@ get_opcode (unsigned long insn)
   return NULL;
 }
 
+static inline const char *
+get_reg_name (const struct mmix_dis_info * minfop, unsigned int x)
+{
+  if (x >= MAX_REG_NAME_LEN)
+    return _("*illegal*");
+  return minfop->reg_name[x];
+}
+
+static inline const char *
+get_spec_reg_name (const struct mmix_dis_info * minfop, unsigned int x)
+{
+  if (x >= MAX_SPEC_REG_NAME_LEN)
+    return _("*illegal*");
+  return minfop->spec_reg_name[x];
+}
+
 /* The main disassembly function.  */
 
 int
@@ -333,15 +351,15 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
     case mmix_operands_regs:
       /*  All registers: "$X,$Y,$Z".  */
       (*info->fprintf_func) (info->stream, "%s,%s,%s",
-			     minfop->reg_name[x],
-			     minfop->reg_name[y],
-			     minfop->reg_name[z]);
+			     get_reg_name (minfop, x),
+			     get_reg_name (minfop, y),
+			     get_reg_name (minfop, z));
       break;
 
     case mmix_operands_reg_yz:
       /* Like SETH - "$X,YZ".  */
       (*info->fprintf_func) (info->stream, "%s,0x%x",
-			     minfop->reg_name[x], y * 256 + z);
+			     get_reg_name (minfop, x), y * 256 + z);
       break;
 
     case mmix_operands_regs_z_opt:
@@ -350,12 +368,13 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
       /* The regular "$X,$Y,$Z|Z".  */
       if (insn & INSN_IMMEDIATE_BIT)
 	(*info->fprintf_func) (info->stream, "%s,%s,%d",
-			       minfop->reg_name[x], minfop->reg_name[y], z);
+			       get_reg_name (minfop, x),
+			       get_reg_name (minfop, y), z);
       else
 	(*info->fprintf_func) (info->stream, "%s,%s,%s",
-			       minfop->reg_name[x],
-			       minfop->reg_name[y],
-			       minfop->reg_name[z]);
+			       get_reg_name (minfop, x),
+			       get_reg_name (minfop, y),
+			       get_reg_name (minfop, z));
       break;
 
     case mmix_operands_jmp:
@@ -378,23 +397,23 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
 	{
 	  if (insn & INSN_IMMEDIATE_BIT)
 	    (*info->fprintf_func) (info->stream, "%s,%s,%d",
-				   minfop->reg_name[x],
+				   get_reg_name (minfop, x),
 				   ROUND_MODE (y), z);
 	  else
 	    (*info->fprintf_func) (info->stream, "%s,%s,%s",
-				   minfop->reg_name[x],
+				   get_reg_name (minfop, x),
 				   ROUND_MODE (y),
-				   minfop->reg_name[z]);
+				   get_reg_name (minfop, z));
 	}
       else
 	{
 	  if (insn & INSN_IMMEDIATE_BIT)
 	    (*info->fprintf_func) (info->stream, "%s,%d",
-				   minfop->reg_name[x], z);
+				   get_reg_name (minfop, x), z);
 	  else
 	    (*info->fprintf_func) (info->stream, "%s,%s",
-				   minfop->reg_name[x],
-				   minfop->reg_name[z]);
+				   get_reg_name (minfop, x),
+				   get_reg_name (minfop, z));
 	}
       break;
 
@@ -408,13 +427,13 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
 	 "$X,ROUND_MODE,$Z".  */
       if (y != 0)
 	(*info->fprintf_func) (info->stream, "%s,%s,%s",
-			       minfop->reg_name[x],
+			       get_reg_name (minfop, x),
 			       ROUND_MODE (y),
-			       minfop->reg_name[z]);
+			       get_reg_name (minfop, z));
       else
 	(*info->fprintf_func) (info->stream, "%s,%s",
-			       minfop->reg_name[x],
-			       minfop->reg_name[z]);
+			       get_reg_name (minfop, x),
+			       get_reg_name (minfop, z));
       break;
 
     case mmix_operands_sync:
@@ -427,22 +446,22 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
       /* Like SYNCD - "X,$Y,$Z|Z".  */
       if (insn & INSN_IMMEDIATE_BIT)
 	(*info->fprintf_func) (info->stream, "%d,%s,%d",
-			       x, minfop->reg_name[y], z);
+			       x, get_reg_name (minfop, y), z);
       else
 	(*info->fprintf_func) (info->stream, "%d,%s,%s",
-			       x, minfop->reg_name[y],
-			       minfop->reg_name[z]);
+			       x, get_reg_name (minfop, y),
+			       get_reg_name (minfop, z));
       break;
 
     case mmix_operands_neg:
       /* Like NEG and NEGU - "$X,Y,$Z|Z".  */
       if (insn & INSN_IMMEDIATE_BIT)
 	(*info->fprintf_func) (info->stream, "%s,%d,%d",
-			       minfop->reg_name[x], y, z);
+			       get_reg_name (minfop, x), y, z);
       else
 	(*info->fprintf_func) (info->stream, "%s,%d,%s",
-			       minfop->reg_name[x], y,
-			       minfop->reg_name[z]);
+			       get_reg_name (minfop, x), y,
+			       get_reg_name (minfop, z));
       break;
 
     case mmix_operands_pushj:
@@ -456,7 +475,7 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
 
 	info->target = memaddr + offset;
 
-	(*info->fprintf_func) (info->stream, "%s,", minfop->reg_name[x]);
+	(*info->fprintf_func) (info->stream, "%s,", get_reg_name (minfop, x));
 	(*info->print_address_func) (memaddr + offset, info);
       }
       break;
@@ -464,26 +483,26 @@ print_insn_mmix (bfd_vma memaddr, struct disassemble_info *info)
     case mmix_operands_get:
       /* GET - "X,spec_reg".  */
       (*info->fprintf_func) (info->stream, "%s,%s",
-			     minfop->reg_name[x],
-			     minfop->spec_reg_name[z]);
+			     get_reg_name (minfop, x),
+			     get_spec_reg_name (minfop, z));
       break;
 
     case mmix_operands_put:
       /* PUT - "spec_reg,$Z|Z".  */
       if (insn & INSN_IMMEDIATE_BIT)
 	(*info->fprintf_func) (info->stream, "%s,%d",
-			       minfop->spec_reg_name[x], z);
+			       get_spec_reg_name (minfop, x), z);
       else
 	(*info->fprintf_func) (info->stream, "%s,%s",
-			       minfop->spec_reg_name[x],
-			       minfop->reg_name[z]);
+			       get_spec_reg_name (minfop, x),
+			       get_reg_name (minfop, z));
       break;
 
     case mmix_operands_set:
       /*  Two registers, "$X,$Y".  */
       (*info->fprintf_func) (info->stream, "%s,%s",
-			     minfop->reg_name[x],
-			     minfop->reg_name[y]);
+			     get_reg_name (minfop, x),
+			     get_reg_name (minfop, y));
       break;
 
     case mmix_operands_save:


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix buffer underrun bug in the TI C30 disassembler.
@ 2019-09-03 15:14 gdb-buildbot
  2019-09-03 15:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-03 15:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f44b758d3133ef0a7f3131c1e12ed20feb33ee61 ***

commit f44b758d3133ef0a7f3131c1e12ed20feb33ee61
Author:     Nick Clifton <nickc@redhat.com>
AuthorDate: Tue Sep 3 15:37:12 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Tue Sep 3 15:37:12 2019 +0100

    Fix buffer underrun bug in the TI C30 disassembler.
    
            PR 24961
            * tic30-dis.c (get_indirect_operand): Check for bufcnt being
            greater than zero before indexing via (bufcnt -1).

diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 87e3f74663..64b6a07ac4 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-03  Nick Clifton  <nickc@redhat.com>
+
+	PR 24961
+	* tic30-dis.c (get_indirect_operand): Check for bufcnt being
+	greater than zero before indexing via (bufcnt -1).
+
 2019-09-03  Nick Clifton  <nickc@redhat.com>
 
 	PR 24958
diff --git a/opcodes/tic30-dis.c b/opcodes/tic30-dis.c
index c64aceb29f..668c519df8 100644
--- a/opcodes/tic30-dis.c
+++ b/opcodes/tic30-dis.c
@@ -253,7 +253,9 @@ get_indirect_operand (unsigned short fragment,
 		for (i = 0, bufcnt = 0; i < len; i++, bufcnt++)
 		  {
 		    buffer[bufcnt] = current_ind->syntax[i];
-		    if (buffer[bufcnt - 1] == 'a' && buffer[bufcnt] == 'r')
+		    if (bufcnt > 0
+			&& buffer[bufcnt - 1] == 'a'
+			&& buffer[bufcnt] == 'r')
 		      buffer[++bufcnt] = arnum + '0';
 		    if (buffer[bufcnt] == '('
 			&& current_ind->displacement == DISP_REQUIRED)


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Handle biased types
@ 2019-09-03 17:01 gdb-buildbot
  2019-09-03 17:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-03 17:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4e962e74e45f2b0365e5b21504f33480c468ff00 ***

commit 4e962e74e45f2b0365e5b21504f33480c468ff00
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Mon May 13 13:21:48 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 3 10:20:40 2019 -0600

    Handle biased types
    
    In Ada, the programmer can request that a range type with a non-zero
    base be stored in the minimal number of bits required for the range.
    This is done by biasing the values; so, for example, a range of -7..-4
    may be stored as two bits with a bias of -7.
    
    This patch implements this for gdb.  It is done by adding a bias to
    struct range_bounds and then adjusting a few spots to handle this.
    
    The test case is written to use -fgnat-encodings=minimal, but a future
    compiler patch will change the compiler to emit DW_AT_GNU_bias with
    -fgnat-encodings=gdb.  It seemed good to get the gdb patch in first.
    
    Tested on x86-64 Fedora 29; plus a variety of targets using AdaCore's
    internal test suite.
    
    gdb/ChangeLog
    2019-09-03  Tom Tromey  <tromey@adacore.com>
    
            * ada-valprint.c (ada_val_print_num): Don't recurse for range
            types.
            (has_negatives): Unbias a range type bound.
            * dwarf2read.c (read_subrange_type): Handle DW_AT_GNU_bias.
            * gdbtypes.c (operator==): Handle new field.
            (create_range_type): Add "bias" parameter.
            (create_static_range_type, resolve_dynamic_range): Update.
            * gdbtypes.h (struct range_bounds) <bias>: New member.
            (create_range_type): Add bias parameter.
            * printcmd.c (print_scalar_formatted): Unbias range types.
            * value.c (unpack_long): Unbias range types.
            (pack_long): Bias range types.
    
    gdb/testsuite/ChangeLog
    2019-09-03  Tom Tromey  <tromey@adacore.com>
    
            * gdb.ada/bias.exp: New file.
            * gdb.ada/bias/bias.adb: New file.
            * gdb.ada/print_chars.exp: Add regression test.
            * gdb.ada/print_chars/foo.adb (My_Character): New type.
            (MC): New variable.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 08615f462e..5d88be8a72 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,18 @@
+2019-09-03  Tom Tromey  <tromey@adacore.com>
+
+	* ada-valprint.c (ada_val_print_num): Don't recurse for range
+	types.
+	(has_negatives): Unbias a range type bound.
+	* dwarf2read.c (read_subrange_type): Handle DW_AT_GNU_bias.
+	* gdbtypes.c (operator==): Handle new field.
+	(create_range_type): Add "bias" parameter.
+	(create_static_range_type, resolve_dynamic_range): Update.
+	* gdbtypes.h (struct range_bounds) <bias>: New member.
+	(create_range_type): Add bias parameter.
+	* printcmd.c (print_scalar_formatted): Unbias range types.
+	* value.c (unpack_long): Unbias range types.
+	(pack_long): Bias range types.
+
 2019-09-02  Alan Hayward  <alan.hayward@arm.com>
 
 	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 609f2d4391..347c67f95c 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -2361,7 +2361,7 @@ has_negatives (struct type *type)
     case TYPE_CODE_INT:
       return !TYPE_UNSIGNED (type);
     case TYPE_CODE_RANGE:
-      return TYPE_LOW_BOUND (type) < 0;
+      return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
     }
 }
 
diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c
index 0654049d77..3060eb676b 100644
--- a/gdb/ada-valprint.c
+++ b/gdb/ada-valprint.c
@@ -841,8 +841,15 @@ ada_val_print_num (struct type *type, const gdb_byte *valaddr,
       fputs_filtered (str.c_str (), stream);
       return;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+  else if (TYPE_CODE (type) == TYPE_CODE_RANGE
+	   && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ENUM
+	       || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_BOOL
+	       || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CHAR))
     {
+      /* For enum-valued ranges, we want to recurse, because we'll end
+	 up printing the constant's name rather than its numeric
+	 value.  Character and fixed-point types are also printed
+	 differently, so recuse for those as well.  */
       struct type *target_type = TYPE_TARGET_TYPE (type);
 
       if (TYPE_LENGTH (type) != TYPE_LENGTH (target_type))
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index af4af195a0..fb888da7b8 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -17901,6 +17901,11 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
 	}
     }
 
+  LONGEST bias = 0;
+  struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
+  if (bias_attr != nullptr && attr_form_is_constant (bias_attr))
+    bias = dwarf2_get_attr_constant_value (bias_attr, 0);
+
   /* Normally, the DWARF producers are expected to use a signed
      constant form (Eg. DW_FORM_sdata) to express negative bounds.
      But this is unfortunately not always the case, as witnessed
@@ -17917,7 +17922,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
     high.data.const_val |= negative_mask;
 
-  range_type = create_range_type (NULL, orig_base_type, &low, &high);
+  range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
 
   if (high_bound_is_count)
     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 177455e612..4bc02e08f9 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -901,7 +901,8 @@ operator== (const range_bounds &l, const range_bounds &r)
   return (FIELD_EQ (low)
 	  && FIELD_EQ (high)
 	  && FIELD_EQ (flag_upper_bound_is_count)
-	  && FIELD_EQ (flag_bound_evaluated));
+	  && FIELD_EQ (flag_bound_evaluated)
+	  && FIELD_EQ (bias));
 
 #undef FIELD_EQ
 }
@@ -912,7 +913,8 @@ operator== (const range_bounds &l, const range_bounds &r)
 struct type *
 create_range_type (struct type *result_type, struct type *index_type,
 		   const struct dynamic_prop *low_bound,
-		   const struct dynamic_prop *high_bound)
+		   const struct dynamic_prop *high_bound,
+		   LONGEST bias)
 {
   /* The INDEX_TYPE should be a type capable of holding the upper and lower
      bounds, as such a zero sized, or void type makes no sense.  */
@@ -932,6 +934,7 @@ create_range_type (struct type *result_type, struct type *index_type,
     TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
   TYPE_RANGE_DATA (result_type)->low = *low_bound;
   TYPE_RANGE_DATA (result_type)->high = *high_bound;
+  TYPE_RANGE_DATA (result_type)->bias = bias;
 
   if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
     TYPE_UNSIGNED (result_type) = 1;
@@ -968,7 +971,7 @@ create_static_range_type (struct type *result_type, struct type *index_type,
   high.kind = PROP_CONST;
   high.data.const_val = high_bound;
 
-  result_type = create_range_type (result_type, index_type, &low, &high);
+  result_type = create_range_type (result_type, index_type, &low, &high, 0);
 
   return result_type;
 }
@@ -2015,9 +2018,10 @@ resolve_dynamic_range (struct type *dyn_range_type,
   static_target_type
     = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type),
 				     addr_stack, 0);
+  LONGEST bias = TYPE_RANGE_DATA (dyn_range_type)->bias;
   static_range_type = create_range_type (copy_type (dyn_range_type),
 					 static_target_type,
-					 &low_bound, &high_bound);
+					 &low_bound, &high_bound, bias);
   TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1;
   return static_range_type;
 }
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 7268d3e4aa..c62b8a31ba 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -617,6 +617,11 @@ struct range_bounds
 
   struct dynamic_prop high;
 
+  /* * The bias.  Sometimes a range value is biased before storage.
+     The bias is added to the stored bits to form the true value.  */
+
+  LONGEST bias;
+
   /* True if HIGH range bound contains the number of elements in the
      subrange.  This affects how the final high bound is computed.  */
 
@@ -1951,7 +1956,8 @@ extern struct type *create_array_type_with_stride
 
 extern struct type *create_range_type (struct type *, struct type *,
 				       const struct dynamic_prop *,
-				       const struct dynamic_prop *);
+				       const struct dynamic_prop *,
+				       LONGEST);
 
 extern struct type *create_array_type (struct type *, struct type *,
 				       struct type *);
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 9b29b53ca7..22356bfd6d 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -405,21 +405,30 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
 
   /* Historically gdb has printed floats by first casting them to a
      long, and then printing the long.  PR cli/16242 suggests changing
-     this to using C-style hex float format.  */
-  gdb::byte_vector converted_float_bytes;
-  if (TYPE_CODE (type) == TYPE_CODE_FLT
-      && (options->format == 'o'
-	  || options->format == 'x'
-	  || options->format == 't'
-	  || options->format == 'z'
-	  || options->format == 'd'
-	  || options->format == 'u'))
-    {
-      LONGEST val_long = unpack_long (type, valaddr);
-      converted_float_bytes.resize (TYPE_LENGTH (type));
-      store_signed_integer (converted_float_bytes.data (), TYPE_LENGTH (type),
-			    byte_order, val_long);
-      valaddr = converted_float_bytes.data ();
+     this to using C-style hex float format.
+
+     Biased range types must also be unbiased here; the unbiasing is
+     done by unpack_long.  */
+  gdb::byte_vector converted_bytes;
+  /* Some cases below will unpack the value again.  In the biased
+     range case, we want to avoid this, so we store the unpacked value
+     here for possible use later.  */
+  gdb::optional<LONGEST> val_long;
+  if ((TYPE_CODE (type) == TYPE_CODE_FLT
+       && (options->format == 'o'
+	   || options->format == 'x'
+	   || options->format == 't'
+	   || options->format == 'z'
+	   || options->format == 'd'
+	   || options->format == 'u'))
+      || (TYPE_CODE (type) == TYPE_CODE_RANGE
+	  && TYPE_RANGE_DATA (type)->bias != 0))
+    {
+      val_long.emplace (unpack_long (type, valaddr));
+      converted_bytes.resize (TYPE_LENGTH (type));
+      store_signed_integer (converted_bytes.data (), TYPE_LENGTH (type),
+			    byte_order, *val_long);
+      valaddr = converted_bytes.data ();
     }
 
   /* Printing a non-float type as 'f' will interpret the data as if it were
@@ -469,7 +478,8 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
       {
 	struct value_print_options opts = *options;
 
-	LONGEST val_long = unpack_long (type, valaddr);
+	if (!val_long.has_value ())
+	  val_long.emplace (unpack_long (type, valaddr));
 
 	opts.format = 0;
 	if (TYPE_UNSIGNED (type))
@@ -477,15 +487,15 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
  	else
 	  type = builtin_type (gdbarch)->builtin_true_char;
 
-	value_print (value_from_longest (type, val_long), stream, &opts);
+	value_print (value_from_longest (type, *val_long), stream, &opts);
       }
       break;
 
     case 'a':
       {
-	CORE_ADDR addr = unpack_pointer (type, valaddr);
-
-	print_address (gdbarch, addr, stream);
+	if (!val_long.has_value ())
+	  val_long.emplace (unpack_long (type, valaddr));
+	print_address (gdbarch, *val_long, stream);
       }
       break;
 
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e0991e091a..d2dc356148 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-03  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/bias.exp: New file.
+	* gdb.ada/bias/bias.adb: New file.
+	* gdb.ada/print_chars.exp: Add regression test.
+	* gdb.ada/print_chars/foo.adb (My_Character): New type.
+	(MC): New variable.
+
 2019-08-29  Sandra Loosemore  <sandra@codesourcery.com>
 
 	* gdb.base/argv0-symlink.exp: Run only on native target
diff --git a/gdb/testsuite/gdb.ada/bias.exp b/gdb/testsuite/gdb.ada/bias.exp
new file mode 100644
index 0000000000..76ca6c08c6
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/bias.exp
@@ -0,0 +1,56 @@
+# Copyright 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+load_lib "ada.exp"
+
+standard_ada_testfile bias
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
+	 {debug additional_flags=-fgnat-encodings=minimal}] != "" } {
+  return -1
+}
+
+clean_restart ${testfile}
+
+set bp_location [gdb_get_line_number "STOP" ${testdir}/bias.adb]
+runto "bias.adb:$bp_location"
+
+gdb_test "print x" " = 64"
+gdb_test "print y" " = -5"
+
+gdb_test "print cval" " = 65"
+gdb_test "print/c cval" " = 65 'A'"
+
+# Some binary arithmetic checks.
+gdb_test "print y < y1" " = false"
+gdb_test "print y <= y1" " = false"
+gdb_test "print y > y1" " = true"
+gdb_test "print y >= y1" " = true"
+gdb_test "print y = y" " = true"
+gdb_test "print y /= y" " = false"
+gdb_test "print y /= y1" " = true"
+
+gdb_test "print x + x1" " = 65"
+gdb_test "ptype x + x1" "type = range 1 \\.\\. 64"
+gdb_test "print x / x1" " = 64"
+gdb_test "print x * x1" " = 64"
+gdb_test "print x - x1" " = 63"
+
+# Test that storing un-biases.
+gdb_test "print x := 5" " = 5"
+gdb_test "print x" " = 5" "re-read x after storing"
+
+gdb_test "print spr" " = \\(r => -4, s => -5\\)"
+gdb_test "print a" " = \\(-7, -5, -4\\)"
diff --git a/gdb/testsuite/gdb.ada/bias/bias.adb b/gdb/testsuite/gdb.ada/bias/bias.adb
new file mode 100644
index 0000000000..ad46d20dd2
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/bias/bias.adb
@@ -0,0 +1,52 @@
+--  Copyright 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+with Pck; use Pck;
+
+procedure Bias is
+   type Small is range -7 .. -4;
+   for Small'Size use 2;
+   Y : Small := -5;
+   Y1 : Small := -7;
+
+   type Repeat_Count_T is range 1 .. 2 ** 6;
+   for Repeat_Count_T'Size use 6;
+   X : Repeat_Count_T := 64;
+   X1 : Repeat_Count_T := 1;
+
+   type Char_Range is range 65 .. 68;
+   for Char_Range'Size use 2;
+   Cval : Char_Range := 65;
+
+   type Some_Packed_Record is record
+      R: Small;
+      S: Small;
+   end record;
+   pragma Pack (Some_Packed_Record);
+   SPR : Some_Packed_Record := (R => -4, S => -5);
+
+   type Packed_Array is array (1 .. 3) of Small;
+   pragma pack (Packed_Array);
+   A : Packed_Array := (-7, -5, -4);
+
+begin
+   Do_Nothing (Y'Address);		--  STOP
+   Do_Nothing (Y1'Address);
+   Do_Nothing (X'Address);
+   Do_Nothing (X1'Address);
+   Do_Nothing (Cval'Address);
+   Do_Nothing (SPR'Address);
+   Do_Nothing (A'Address);
+end Bias;
diff --git a/gdb/testsuite/gdb.ada/bias/pck.adb b/gdb/testsuite/gdb.ada/bias/pck.adb
new file mode 100644
index 0000000000..fb433861df
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/bias/pck.adb
@@ -0,0 +1,23 @@
+--  Copyright 2012-2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+with System;
+
+package body Pck is
+   procedure Do_Nothing (A : System.Address) is
+   begin
+      null;
+   end Do_Nothing;
+end Pck;
diff --git a/gdb/testsuite/gdb.ada/bias/pck.ads b/gdb/testsuite/gdb.ada/bias/pck.ads
new file mode 100644
index 0000000000..a40fa62c8e
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/bias/pck.ads
@@ -0,0 +1,20 @@
+--  Copyright 2012-2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+with System;
+
+package Pck is
+   procedure Do_Nothing (A : System.Address);
+end Pck;
diff --git a/gdb/testsuite/gdb.ada/print_chars.exp b/gdb/testsuite/gdb.ada/print_chars.exp
index 992b134764..9a0e215784 100644
--- a/gdb/testsuite/gdb.ada/print_chars.exp
+++ b/gdb/testsuite/gdb.ada/print_chars.exp
@@ -39,4 +39,4 @@ gdb_test "print WWC" \
          "= 99 'c'"  \
          "print WWC"
 
-
+gdb_test "print MC" " = 77 'M'"
diff --git a/gdb/testsuite/gdb.ada/print_chars/foo.adb b/gdb/testsuite/gdb.ada/print_chars/foo.adb
index 40d0c06094..c89c0d3cef 100644
--- a/gdb/testsuite/gdb.ada/print_chars/foo.adb
+++ b/gdb/testsuite/gdb.ada/print_chars/foo.adb
@@ -19,6 +19,9 @@ procedure Foo is
    C : Character := 'a';
    WC : Wide_Character := 'b';
    WWC : Wide_Wide_Character := 'c';
+
+   type My_Character is new Character;
+   MC : My_Character := 'M';
 begin
    Do_Nothing (C'Address);  -- START
    Do_Nothing (WC'Address);
diff --git a/gdb/value.c b/gdb/value.c
index 9103d8f41c..d58a964649 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -2751,10 +2751,16 @@ unpack_long (struct type *type, const gdb_byte *valaddr)
     case TYPE_CODE_CHAR:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_MEMBERPTR:
-      if (nosign)
-	return extract_unsigned_integer (valaddr, len, byte_order);
-      else
-	return extract_signed_integer (valaddr, len, byte_order);
+      {
+	LONGEST result;
+	if (nosign)
+	  result = extract_unsigned_integer (valaddr, len, byte_order);
+	else
+	  result = extract_signed_integer (valaddr, len, byte_order);
+	if (code == TYPE_CODE_RANGE)
+	  result += TYPE_RANGE_DATA (type)->bias;
+	return result;
+      }
 
     case TYPE_CODE_FLT:
     case TYPE_CODE_DECFLOAT:
@@ -3315,12 +3321,14 @@ pack_long (gdb_byte *buf, struct type *type, LONGEST num)
 
   switch (TYPE_CODE (type))
     {
+    case TYPE_CODE_RANGE:
+      num -= TYPE_RANGE_DATA (type)->bias;
+      /* Fall through.  */
     case TYPE_CODE_INT:
     case TYPE_CODE_CHAR:
     case TYPE_CODE_ENUM:
     case TYPE_CODE_FLAGS:
     case TYPE_CODE_BOOL:
-    case TYPE_CODE_RANGE:
     case TYPE_CODE_MEMBERPTR:
       store_signed_integer (buf, len, byte_order, num);
       break;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Handle missing domain types in: maintenance print psymbols
@ 2019-09-03 22:11 gdb-buildbot
  2019-09-03 22:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-03 22:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 06ff036ed22bac6c6cc622b2f3d23534b44fff67 ***

commit 06ff036ed22bac6c6cc622b2f3d23534b44fff67
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Tue Sep 3 15:54:57 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Tue Sep 3 22:29:07 2019 +0100

    gdb: Handle missing domain types in: maintenance print psymbols
    
    Some domain_enum values were not handled in print_partial_symbols
    which means that 'maintenance print psymbols' would print '<invalid
    domain>' when it shouldn't have.
    
    gdb/ChangeLog:
    
            * psymtab.c (print_partial_symbols): Handle missing domain_enum
            values MODULE_DOMAIN and COMMON_BLOCK_DOMAIN.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5d88be8a72..f55d1a8e31 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* psymtab.c (print_partial_symbols): Handle missing domain_enum
+	values MODULE_DOMAIN and COMMON_BLOCK_DOMAIN.
+
 2019-09-03  Tom Tromey  <tromey@adacore.com>
 
 	* ada-valprint.c (ada_val_print_num): Don't recurse for range
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 6cc7566580..6f9bf7268f 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -853,9 +853,15 @@ print_partial_symbols (struct gdbarch *gdbarch, struct objfile *objfile,
 	case STRUCT_DOMAIN:
 	  fputs_filtered ("struct domain, ", outfile);
 	  break;
+	case MODULE_DOMAIN:
+	  fputs_filtered ("module domain, ", outfile);
+	  break;
 	case LABEL_DOMAIN:
 	  fputs_filtered ("label domain, ", outfile);
 	  break;
+	case COMMON_BLOCK_DOMAIN:
+	  fputs_filtered ("common block domain, ", outfile);
+	  break;
 	default:
 	  fputs_filtered ("<invalid domain>, ", outfile);
 	  break;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Avoid expect's buffer overflow in info-var.exp test.
@ 2019-09-04 21:19 gdb-buildbot
  2019-09-04 21:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-04 21:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 98b0ebab0a1eb0c1f179ebe633250e7201d35bce ***

commit 98b0ebab0a1eb0c1f179ebe633250e7201d35bce
Author:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
AuthorDate: Sat Aug 31 17:25:54 2019 +0200
Commit:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
CommitDate: Wed Sep 4 22:16:56 2019 +0200

    Avoid expect's buffer overflow in info-var.exp test.
    
    Once the executable is started, info variables can show thousands
    of variables belonging to glibc (see below).
    
    This long list of variables then causes the test to fail, due
    to expect's buffer overflow:
      Running /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var.exp ...
      ERROR: internal buffer is full.
      ERROR: internal buffer is full.
      ERROR: internal buffer is full.
    
    Fix this by testing 'info variables' without running the executable.
    
    gdb ./info-var
    ...
    Reading symbols from ./info-var...
    (gdb) |info variables|wc
         27      54     971
    (gdb) start
    Temporary breakpoint 1 at 0x1129: file /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var-f1.c, line 23.
    Starting program: /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/outputs/gdb.base/info-var/info-var
    
    Temporary breakpoint 1, main ()
        at /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var-f1.c:23
    23        return global_var + get_offset() + f1_var;
    (gdb) |info variables|wc
       4334   14581  130738
    (gdb)
    
    gdb/testsuite/ChangeLog
    2019-09-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
            * gdb.base/info-var.exp: Test info variables without running
            to main, to avoid expect's buffer overflow.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d2dc356148..46c7b5f927 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/info-var.exp: Test info variables without running
+	to main, to avoid expect's buffer overflow.
+
 2019-09-03  Tom Tromey  <tromey@adacore.com>
 
 	* gdb.ada/bias.exp: New file.
diff --git a/gdb/testsuite/gdb.base/info-var.exp b/gdb/testsuite/gdb.base/info-var.exp
index 6dd896d8aa..c9b7485ffb 100644
--- a/gdb/testsuite/gdb.base/info-var.exp
+++ b/gdb/testsuite/gdb.base/info-var.exp
@@ -22,10 +22,9 @@ if {[prepare_for_testing "failed to prepare" \
     return -1
 }
 
-if ![runto_main] then {
-    fail "can't run to main"
-    return 0
-}
+# Note: we do not run to main, as otherwise, the output of info variables
+# can be very long, showing thousands of glibc variables.
+# This long output then causes expect's buffer to overflow.
 
 gdb_test "info variables" \
     [multi_line \


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24955, libbfd terminating program on out of memory
@ 2019-09-05  4:49 gdb-buildbot
  2019-09-05  5:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-05  4:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 89bdc77eabf5ede68322f6e47e003c1dc45b9ccb ***

commit 89bdc77eabf5ede68322f6e47e003c1dc45b9ccb
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 2 16:13:05 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Sep 5 11:33:34 2019 +0930

    PR24955, libbfd terminating program on out of memory
    
    This patch fixes the worst of the cases where libbfd might terminate
    a program due to calling xstrdup or xmalloc.  I've also fixed some
    error paths that didn't clean up properly.
    
            PR 24955
            * libbfd-in.h (bfd_strdup): New inline function.
            * archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
            bfd on error.
            * elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
            * opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
            on error.
            (bfd_openstreamr): Use bfd_strdup.
            (bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
            * plugin.c (try_load_plugin): Use bfd_malloc.
            * libbfd.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f033af7443..319ba5a571 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,17 @@
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	PR 24955
+	* libbfd-in.h (bfd_strdup): New inline function.
+	* archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
+	bfd on error.
+	* elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
+	* opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
+	on error.
+	(bfd_openstreamr): Use bfd_strdup.
+	(bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
+	* plugin.c (try_load_plugin): Use bfd_malloc.
+	* libbfd.h: Regenerate.
+
 2019-09-02  Alan Modra  <amodra@gmail.com>
 
 	PR 11983
diff --git a/bfd/archive.c b/bfd/archive.c
index 690718e949..ef71e8a796 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -728,7 +728,9 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
   else
     {
       n_bfd->origin = n_bfd->proxy_origin;
-      n_bfd->filename = xstrdup (filename);
+      n_bfd->filename = bfd_strdup (filename);
+      if (n_bfd->filename == NULL)
+	goto out;
     }
 
   n_bfd->arelt_data = new_areldata;
@@ -745,8 +747,10 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
       || _bfd_add_bfd_to_archive_cache (archive, filepos, n_bfd))
     return n_bfd;
 
+ out:
   free (new_areldata);
   n_bfd->arelt_data = NULL;
+  bfd_close (n_bfd);
   return NULL;
 }
 
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 9a73c3b71f..625ae993df 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -1652,6 +1652,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
   bfd_vma high_offset;
   bfd_vma shdr_end;
   bfd_vma loadbase;
+  char *filename;
 
   /* Read in the ELF header in external format.  */
   err = target_read_memory (ehdr_vma, (bfd_byte *) &x_ehdr, sizeof x_ehdr);
@@ -1859,14 +1860,22 @@ NAME(_bfd_elf,bfd_from_remote_memory)
       free (contents);
       return NULL;
     }
+  filename = bfd_strdup ("<in-memory>");
+  if (filename == NULL)
+    {
+      free (bim);
+      free (contents);
+      return NULL;
+    }
   nbfd = _bfd_new_bfd ();
   if (nbfd == NULL)
     {
+      free (filename);
       free (bim);
       free (contents);
       return NULL;
     }
-  nbfd->filename = xstrdup ("<in-memory>");
+  nbfd->filename = filename;
   nbfd->xvec = templ->xvec;
   bim->size = high_offset;
   bim->buffer = contents;
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index 7a97dfae19..cac4d3b022 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -123,6 +123,15 @@ extern void *bfd_realloc2
 extern void *bfd_zmalloc2
   (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 
+static inline char *
+bfd_strdup (const char *str)
+{
+  size_t len = strlen (str) + 1;
+  char *buf = bfd_malloc (len);
+  if (buf != NULL)
+    memcpy (buf, str, len);
+  return buf;
+}
 /* These routines allocate and free things on the BFD's objalloc.  */
 
 extern void *bfd_alloc2
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 13f4c5b408..aabe247068 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -128,6 +128,15 @@ extern void *bfd_realloc2
 extern void *bfd_zmalloc2
   (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 
+static inline char *
+bfd_strdup (const char *str)
+{
+  size_t len = strlen (str) + 1;
+  char *buf = bfd_malloc (len);
+  if (buf != NULL)
+    memcpy (buf, str, len);
+  return buf;
+}
 /* These routines allocate and free things on the BFD's objalloc.  */
 
 extern void *bfd_alloc2
diff --git a/bfd/opncls.c b/bfd/opncls.c
index b8cda411e6..07f89b9a4c 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -223,6 +223,8 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
   if (nbfd->iostream == NULL)
     {
       bfd_set_error (bfd_error_system_call);
+      if (fd != -1)
+	close (fd);
       _bfd_delete_bfd (nbfd);
       return NULL;
     }
@@ -231,7 +233,13 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = xstrdup (filename);
+  nbfd->filename = bfd_strdup (filename);
+  if (nbfd->filename == NULL)
+    {
+      fclose (nbfd->iostream);
+      _bfd_delete_bfd (nbfd);
+      return NULL;
+    }
 
   /* Figure out whether the user is opening the file for reading,
      writing, or both, by looking at the MODE argument.  */
@@ -243,8 +251,9 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
   else
     nbfd->direction = write_direction;
 
-  if (! bfd_cache_init (nbfd))
+  if (!bfd_cache_init (nbfd))
     {
+      fclose (nbfd->iostream);
       _bfd_delete_bfd (nbfd);
       return NULL;
     }
@@ -398,7 +407,12 @@ bfd_openstreamr (const char *filename, const char *target, void *streamarg)
   nbfd->iostream = stream;
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = xstrdup (filename);
+  nbfd->filename = bfd_strdup (filename);
+  if (nbfd->filename == NULL)
+    {
+      _bfd_delete_bfd (nbfd);
+      return NULL;
+    }
   nbfd->direction = read_direction;
 
   if (! bfd_cache_init (nbfd))
@@ -594,7 +608,12 @@ bfd_openr_iovec (const char *filename, const char *target,
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = xstrdup (filename);
+  nbfd->filename = bfd_strdup (filename);
+  if (nbfd->filename == NULL)
+    {
+      _bfd_delete_bfd (nbfd);
+      return NULL;
+    }
   nbfd->direction = read_direction;
 
   /* `open_p (...)' would get expanded by an the open(2) syscall macro.  */
@@ -661,7 +680,12 @@ bfd_openw (const char *filename, const char *target)
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = xstrdup (filename);
+  nbfd->filename = bfd_strdup (filename);
+  if (nbfd->filename == NULL)
+    {
+      _bfd_delete_bfd (nbfd);
+      return NULL;
+    }
   nbfd->direction = write_direction;
 
   if (bfd_open_file (nbfd) == NULL)
@@ -801,7 +825,12 @@ bfd_create (const char *filename, bfd *templ)
     return NULL;
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = xstrdup (filename);
+  nbfd->filename = bfd_strdup (filename);
+  if (nbfd->filename == NULL)
+    {
+      _bfd_delete_bfd (nbfd);
+      return NULL;
+    }
   if (templ)
     nbfd->xvec = templ->xvec;
   nbfd->direction = no_direction;
diff --git a/bfd/plugin.c b/bfd/plugin.c
index 376e92cdb3..5f760e9c42 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -262,7 +262,9 @@ try_load_plugin (const char *pname, bfd *abfd, int *has_plugin_p)
 	}
     }
 
-  plugin_list_iter = (struct plugin_list_entry *) xmalloc (sizeof *plugin_list_iter);
+  plugin_list_iter = bfd_malloc (sizeof *plugin_list_iter);
+  if (plugin_list_iter == NULL)
+    return 0;
   plugin_list_iter->handle = plugin_handle;
   plugin_list_iter->claim_file = NULL;
   plugin_list_iter->next = plugin_list;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] R_PPC64_PCREL_OPT
@ 2019-09-05  5:56 gdb-buildbot
  2019-09-05  6:37 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-05  5:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 77486630b13e9e586b0a1556cba9876a0ede99da ***

commit 77486630b13e9e586b0a1556cba9876a0ede99da
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 4 15:30:37 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Sep 5 13:56:20 2019 +0930

    R_PPC64_PCREL_OPT
    
    The loads and stores handled in the second instruction of a sequence
    marked by R_PPC64_PCREL_OPT may be a prefix instruction.  For example:
     pld ra,symbol@got@pcrel
    0:
     pld rt,off(ra)
     .reloc 0b-8,R_PPC64_PCREL_OPT,(.-8)-(0b-8)
    can be optimised to
     pld rt,symbol+off@pcrel
     pnop
    
            * elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
            in second instruction.
            (ppc64_elf_relocate_section): Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 319ba5a571..7f587df81a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
+	in second instruction.
+	(ppc64_elf_relocate_section): Likewise.
+
 2019-09-05  Alan Modra  <amodra@gmail.com>
 
 	PR 24955
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index a5bd3426ee..e39b6faf17 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -8282,12 +8282,31 @@ ok_lo_toc_insn (unsigned int insn, enum elf_ppc64_reloc_type r_type)
 static bfd_boolean
 xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
 {
-  uint32_t insn2 = *pinsn2 >> 32;
-  uint64_t i1new;
+  uint64_t insn1 = *pinsn1;
+  uint64_t insn2 = *pinsn2;
   bfd_signed_vma off;
 
+  if ((insn2 & (63ULL << 58)) == 1ULL << 58)
+    {
+      /* Check that regs match.  */
+      if (((insn2 >> 16) & 31) != ((insn1 >> 21) & 31))
+	return FALSE;
+
+      /* P8LS or PMLS form, non-pcrel.  */
+      if ((insn2 & (-1ULL << 50) & ~(1ULL << 56)) != (1ULL << 58))
+	return FALSE;
+
+      *pinsn1 = (insn2 & ~(31 << 16) & ~0x3ffff0000ffffULL) | (1ULL << 52);
+      *pinsn2 = PNOP;
+      off = ((insn2 >> 16) & 0x3ffff0000ULL) | (insn2 & 0xffff);
+      *poff = (off ^ 0x200000000ULL) - 0x200000000ULL;
+      return TRUE;
+    }
+
+  insn2 >>= 32;
+
   /* Check that regs match.  */
-  if (((insn2 >> 16) & 31) != ((*pinsn1 >> 21) & 31))
+  if (((insn2 >> 16) & 31) != ((insn1 >> 21) & 31))
     return FALSE;
 
   switch ((insn2 >> 26) & 63)
@@ -8308,7 +8327,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
     case 54: /* stfd */
       /* These are the PMLS cases, where we just need to tack a prefix
 	 on the insn.  */
-      i1new = ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
+      insn1 = ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
 	       | (insn2 & ((63ULL << 26) | (31ULL << 21))));
       off = insn2 & 0xffff;
       break;
@@ -8316,7 +8335,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
     case 58: /* lwa, ld */
       if ((insn2 & 1) != 0)
 	return FALSE;
-      i1new = ((1ULL << 58) | (1ULL << 52)
+      insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | (insn2 & 2 ? 41ULL << 26 : 57ULL << 26)
 	       | (insn2 & (31ULL << 21)));
       off = insn2 & 0xfffc;
@@ -8325,7 +8344,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
     case 57: /* lxsd, lxssp */
       if ((insn2 & 3) < 2)
 	return FALSE;
-      i1new = ((1ULL << 58) | (1ULL << 52)
+      insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | ((40ULL | (insn2 & 3)) << 26)
 	       | (insn2 & (31ULL << 21)));
       off = insn2 & 0xfffc;
@@ -8336,14 +8355,14 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
 	return FALSE;
       else if ((insn2 & 3) >= 2)
 	{
-	  i1new = ((1ULL << 58) | (1ULL << 52)
+	  insn1 = ((1ULL << 58) | (1ULL << 52)
 		   | ((44ULL | (insn2 & 3)) << 26)
 		   | (insn2 & (31ULL << 21)));
 	  off = insn2 & 0xfffc;
 	}
       else
 	{
-	  i1new = ((1ULL << 58) | (1ULL << 52)
+	  insn1 = ((1ULL << 58) | (1ULL << 52)
 		   | ((50ULL | (insn2 & 4) | ((insn2 & 8) >> 3)) << 26)
 		   | (insn2 & (31ULL << 21)));
 	  off = insn2 & 0xfff0;
@@ -8351,7 +8370,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
       break;
 
     case 56: /* lq */
-      i1new = ((1ULL << 58) | (1ULL << 52)
+      insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | (insn2 & ((63ULL << 26) | (31ULL << 21))));
       off = insn2 & 0xffff;
       break;
@@ -8359,14 +8378,14 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
     case 62: /* std, stq */
       if ((insn2 & 1) != 0)
 	return FALSE;
-      i1new = ((1ULL << 58) | (1ULL << 52)
+      insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | ((insn2 & 2) == 0 ? 61ULL << 26 : 60ULL << 26)
 	       | (insn2 & (31ULL << 21)));
       off = insn2 & 0xfffc;
       break;
     }
 
-  *pinsn1 = i1new;
+  *pinsn1 = insn1;
   *pinsn2 = (uint64_t) NOP << 32;
   *poff = (off ^ 0x8000) - 0x8000;
   return TRUE;
@@ -15413,7 +15432,12 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 			  pinsn2 = bfd_get_32 (input_bfd, contents + off2);
 			  pinsn2 <<= 32;
 			  if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
-			    break;
+			    {
+			      if (off2 + 8 > input_section->size)
+				break;
+			      pinsn2 |= bfd_get_32 (input_bfd,
+						    contents + off2 + 4);
+			    }
 			  if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
 			    {
 			      addend += addend_off;
@@ -15424,6 +15448,9 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 					  contents + offset + 4);
 			      bfd_put_32 (input_bfd, pinsn2 >> 32,
 					  contents + off2);
+			      if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
+				bfd_put_32 (input_bfd, pinsn2,
+					    contents + off2 + 4);
 			    }
 			}
 		    }
diff --git a/ld/ChangeLog b/ld/ChangeLog
index b654eb9d36..0da9e2542d 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	* testsuite/ld-powerpc/pcrelopt.s,
+	* testsuite/ld-powerpc/pcrelopt.d: Test offset and prefix in
+	second instruction.
+
 2019-08-29  Alan Modra  <amodra@gmail.com>
 
 	PR ld/24406
diff --git a/ld/testsuite/ld-powerpc/pcrelopt.d b/ld/testsuite/ld-powerpc/pcrelopt.d
index 18fdb95abf..aeaa0cdb5d 100644
--- a/ld/testsuite/ld-powerpc/pcrelopt.d
+++ b/ld/testsuite/ld-powerpc/pcrelopt.d
@@ -80,10 +80,17 @@ Disassembly of section \.text:
 .*:	(04 10 00 01|01 00 10 04) 	pstxv   vs0,66028
 .*:	(d8 00 01 ec|ec 01 00 d8) 
 .*:	(60 00 00 00|00 00 00 60) 	nop
-.*:	(04 10 00 01|01 00 10 04) 	pld     r9,66008
-.*:	(e5 20 01 d8|d8 01 20 e5) 
-.*:	(e8 09 00 00|00 00 09 e8) 	ld      r0,0\(r9\)
+.*:	(06 10 00 01|01 00 10 06) 	plbz    r3,70676
+.*:	(88 60 14 14|14 14 60 88) 
+.*:	(60 00 00 00|00 00 00 60) 	nop
 .*:	(60 00 00 00|00 00 00 60) 	nop
-.*:	(06 10 00 01|01 00 10 06) 	pla     r7,66000
-.*:	(38 e0 01 d0|d0 01 e0 38) 
+.*:	(04 10 12 35|35 12 10 04) 	plq     r4,305485896
+.*:	(e0 80 58 48|48 58 80 e0) 
+.*:	(07 00 00 00|00 00 00 07) 	pnop
+.*:	(00 00 00 00|00 00 00 00) 
+.*:	(04 10 00 01|01 00 10 04) 	pld     r9,65976
+.*:	(e5 20 01 b8|b8 01 20 e5) 
+.*:	(e8 09 00 00|00 00 09 e8) 	ld      r0,0\(r9\)
+.*:	(06 10 00 01|01 00 10 06) 	pla     r7,65972
+.*:	(38 e0 01 b4|b4 01 e0 38) 
 .*:	(88 c7 00 00|00 00 c7 88) 	lbz     r6,0\(r7\)
diff --git a/ld/testsuite/ld-powerpc/pcrelopt.s b/ld/testsuite/ld-powerpc/pcrelopt.s
index 78b0f51f73..715a52b5f7 100644
--- a/ld/testsuite/ld-powerpc/pcrelopt.s
+++ b/ld/testsuite/ld-powerpc/pcrelopt.s
@@ -103,6 +103,18 @@ _start:
 		.reloc .-8,R_PPC64_PCREL_OPT,0f-(.-8)
 0:	stxv 0,0(9)
 
+#offsets are allowed too
+	pld 9,sym@got@pcrel
+0:
+	lbz 3,0x1234(9)
+	.reloc 0b-8,R_PPC64_PCREL_OPT,(.-4)-(0b-8)
+
+#and prefix insns as the second insn
+	pld 9,sym@got@pcrel
+0:
+	plq 4,0x12345678(9)
+	.reloc 0b-8,R_PPC64_PCREL_OPT,(.-8)-(0b-8)
+
 # This should not optimize
 	.extern i
 	.type i,@object


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64 GOT_PCREL relocs
@ 2019-09-05  7:02 gdb-buildbot
  2019-09-05  8:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-05  7:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 133a1f6041bc131afcb39bf1a124d8e0fc5547ea ***

commit 133a1f6041bc131afcb39bf1a124d8e0fc5547ea
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Sep 5 10:06:42 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Sep 5 15:25:51 2019 +0930

    PowerPC64 GOT_PCREL relocs
    
    PC-relative relocs typically use the addend in adjusting what they are
    relative to.  For example:
            bcl 20,31,1f
    1:      mflr 12
            addi 12,12,xxx-1b
    generates "R_PPC64_REL16 xxx+0x4" for the addi (when little-endian).
    The addend reflects the fact that you want the offset relative to the
    previous insn not the current one in this case.
    
    So the question is, will we ever want to do something like that for an
    instruction using R_PPC64_GOT_PCREL34?  I thought so at the time I
    first implemented support in ld but at the time I think the hardware
    was possibly going to support pcrel+offset+reg addressing.  In which
    case you might want something like:
            load_big_offset_into_r2
            pld 3,sym-big_offset@got@pcrel(2)
    which would be a way of supporting more than 8G offsets from code to
    the GOT.  We could do the same with
            load_big_offset_into_r2
            pla 9,sym-big_offset@got@pcrel
            ldx 3,9,2
    However, this is really a poor version of TOC-pointer relative code.
    
    So let's go with an addend on R_PPC64_GOT_PCREL34 meaning that
    sym+addend should be put in a GOT entry, and the relocation calculate
    the pc-relative offset to that GOT entry.
    
    Note that this is an extension to the ABI, which says (by the
    expression given for GOT relocs) that non-zero addends on GOT and PLT
    relocs are ignored.  This is true for all GOT/PLT relocs, not just the
    pcrel ones.
    
            * elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
            GOT_PCREL and PLT_PCREL relocs as affecting the value stored
            in the GOT/PLT entry rather than affecting the offset to that
            GOI/PLT entry.
            (ppc64_elf_edit_toc, ppc64_elf_relocate_section): Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7f587df81a..8ed849d74d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
+	GOT_PCREL and PLT_PCREL relocs as affecting the value stored
+	in the GOT/PLT entry rather than affecting the offset to that
+	GOI/PLT entry.
+	(ppc64_elf_edit_toc, ppc64_elf_relocate_section): Likewise.
+
 2019-09-05  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index e39b6faf17..88ace7e6fe 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -4524,7 +4524,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
       int tls_type;
       struct _ppc64_elf_section_data *ppc64_sec;
       struct plt_entry **ifunc, **plt_list;
-      bfd_vma sym_addend;
 
       r_symndx = ELF64_R_SYM (rel->r_info);
       if (r_symndx < symtab_hdr->sh_info)
@@ -4550,18 +4549,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	case R_PPC64_D28:
 	case R_PPC64_TPREL34:
 	case R_PPC64_DTPREL34:
-	  htab->powerxx_stubs = 1;
-	  /* Fall through.  */
-	default:
-	  /* Somewhat foolishly, because the ABIs don't specifically
-	     allow it, ppc64 gas and ld support GOT and PLT relocs
-	     with non-zero addends where the addend results in
-	     sym+addend being stored in the GOT or PLT entry.  This
-	     can't be supported for pcrel relocs because the addend is
-	     used to specify the pcrel offset.  */
-	  sym_addend = rel->r_addend;
-	  break;
-
 	case R_PPC64_PCREL34:
 	case R_PPC64_GOT_PCREL34:
 	case R_PPC64_GOT_TLSGD34:
@@ -4572,7 +4559,8 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	case R_PPC64_PLT_PCREL34_NOTOC:
 	case R_PPC64_PCREL28:
 	  htab->powerxx_stubs = 1;
-	  sym_addend = 0;
+	  break;
+	default:
 	  break;
 	}
 
@@ -4621,7 +4609,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
 	      ifunc = update_local_sym_info (abfd, symtab_hdr, r_symndx,
-					     sym_addend,
+					     rel->r_addend,
 					     NON_GOT | PLT_IFUNC);
 	      if (ifunc == NULL)
 		return FALSE;
@@ -4638,7 +4626,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    ((struct ppc_link_hash_entry *) h)->tls_mask |= TLS_TLS | TLS_MARK;
 	  else
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
-					sym_addend,
+					rel->r_addend,
 					NON_GOT | TLS_TLS | TLS_MARK))
 	      return FALSE;
 	  sec->has_tls_reloc = 1;
@@ -4712,7 +4700,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
 	      eh = (struct ppc_link_hash_entry *) h;
 	      for (ent = eh->elf.got.glist; ent != NULL; ent = ent->next)
-		if (ent->addend == sym_addend
+		if (ent->addend == rel->r_addend
 		    && ent->owner == abfd
 		    && ent->tls_type == tls_type)
 		  break;
@@ -4723,7 +4711,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 		  if (ent == NULL)
 		    return FALSE;
 		  ent->next = eh->elf.got.glist;
-		  ent->addend = sym_addend;
+		  ent->addend = rel->r_addend;
 		  ent->owner = abfd;
 		  ent->tls_type = tls_type;
 		  ent->is_indirect = FALSE;
@@ -4736,14 +4724,14 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	  else
 	    /* This is a global offset table entry for a local symbol.  */
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
-					sym_addend, tls_type))
+					rel->r_addend, tls_type))
 	      return FALSE;
 
 	  /* We may also need a plt entry if the symbol turns out to be
 	     an ifunc.  */
 	  if (h != NULL && !bfd_link_pic (info) && abiversion (abfd) != 1)
 	    {
-	      if (!update_plt_info (abfd, &h->plt.plist, sym_addend))
+	      if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
 		return FALSE;
 	    }
 	  break;
@@ -4769,9 +4757,9 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    }
 	  if (plt_list == NULL)
 	    plt_list = update_local_sym_info (abfd, symtab_hdr, r_symndx,
-					      sym_addend,
+					      rel->r_addend,
 					      NON_GOT | PLT_KEEP);
-	  if (!update_plt_info (abfd, plt_list, sym_addend))
+	  if (!update_plt_info (abfd, plt_list, rel->r_addend))
 	    return FALSE;
 	  break;
 
@@ -4929,7 +4917,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	  /* We may need a .plt entry if the function this reloc
 	     refers to is in a shared lib.  */
 	  if (plt_list
-	      && !update_plt_info (abfd, plt_list, sym_addend))
+	      && !update_plt_info (abfd, plt_list, rel->r_addend))
 	    return FALSE;
 	  break;
 
@@ -4973,7 +4961,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    }
 	  else
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
-					sym_addend, tls_type))
+					rel->r_addend, tls_type))
 	      return FALSE;
 
 	  ppc64_sec = ppc64_elf_section_data (sec);
@@ -4995,7 +4983,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    }
 	  BFD_ASSERT (rel->r_offset % 8 == 0);
 	  ppc64_sec->u.toc.symndx[rel->r_offset / 8] = r_symndx;
-	  ppc64_sec->u.toc.add[rel->r_offset / 8] = sym_addend;
+	  ppc64_sec->u.toc.add[rel->r_offset / 8] = rel->r_addend;
 
 	  /* Mark the second slot of a GD or LD entry.
 	     -1 to indicate GD and -2 to indicate LD.  */
@@ -9044,7 +9032,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 	      asection *sym_sec;
 	      struct elf_link_hash_entry *h;
 	      struct got_entry *ent;
-	      bfd_vma sym_addend, val, pc;
+	      bfd_vma val, pc;
 	      unsigned char buf[8];
 	      unsigned int insn;
 	      enum {no_check, check_lo, check_ha} insn_check;
@@ -9119,11 +9107,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 
 		case R_PPC64_GOT16_HA:
 		case R_PPC64_GOT16_LO_DS:
-		  sym_addend = rel->r_addend;
-		  break;
-
 		case R_PPC64_GOT_PCREL34:
-		  sym_addend = 0;
 		  break;
 		}
 
@@ -9144,7 +9128,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 		val = h->root.u.def.value;
 	      else
 		val = sym->st_value;
-	      val += sym_addend;
+	      val += rel->r_addend;
 	      val += sym_sec->output_section->vma + sym_sec->output_offset;
 
 /* Fudge factor to allow for the fact that the preliminary layout
@@ -9209,7 +9193,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 		  ent = local_got_ents[r_symndx];
 		}
 	      for (; ent != NULL; ent = ent->next)
-		if (ent->addend == sym_addend
+		if (ent->addend == rel->r_addend
 		    && ent->owner == ibfd
 		    && ent->tls_type == 0)
 		  break;
@@ -15535,14 +15519,6 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	    bfd_vma off;
 	    unsigned long indx = 0;
 	    struct got_entry *ent;
-	    bfd_vma sym_addend = orig_rel.r_addend;
-
-	    if (r_type == R_PPC64_GOT_PCREL34
-		|| r_type == R_PPC64_GOT_TLSGD34
-		|| r_type == R_PPC64_GOT_TLSLD34
-		|| r_type == R_PPC64_GOT_TPREL34
-		|| r_type == R_PPC64_GOT_DTPREL34)
-	      sym_addend = 0;
 
 	    if (tls_type == (TLS_TLS | TLS_LD)
 		&& (h == NULL
@@ -15576,7 +15552,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 		  }
 
 		for (; ent != NULL; ent = ent->next)
-		  if (ent->addend == sym_addend
+		  if (ent->addend == orig_rel.r_addend
 		      && ent->owner == input_bfd
 		      && ent->tls_type == tls_type)
 		    break;
@@ -15633,7 +15609,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 		    outrel.r_offset = (got->output_section->vma
 				       + got->output_offset
 				       + off);
-		    outrel.r_addend = sym_addend;
+		    outrel.r_addend = orig_rel.r_addend;
 		    if (tls_type & (TLS_LD | TLS_GD))
 		      {
 			outrel.r_addend = 0;
@@ -15646,7 +15622,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 			    bfd_elf64_swap_reloca_out (output_bfd,
 						       &outrel, loc);
 			    outrel.r_offset += 8;
-			    outrel.r_addend = sym_addend;
+			    outrel.r_addend = orig_rel.r_addend;
 			    outrel.r_info
 			      = ELF64_R_INFO (indx, R_PPC64_DTPREL64);
 			  }
@@ -15692,7 +15668,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 		   emitting a reloc.  */
 		else
 		  {
-		    relocation += sym_addend;
+		    relocation += orig_rel.r_addend;
 		    if (tls_type != 0)
 		      {
 			if (htab->elf.tls_sec == NULL)
@@ -15723,6 +15699,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	      abort ();
 
 	    relocation = got->output_section->vma + got->output_offset + off;
+	    addend = 0;
 	    if (!(r_type == R_PPC64_GOT_PCREL34
 		  || r_type == R_PPC64_GOT_TLSGD34
 		  || r_type == R_PPC64_GOT_TLSLD34
@@ -15760,15 +15737,10 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	    if (plt_list)
 	      {
 		struct plt_entry *ent;
-		bfd_vma sym_addend = orig_rel.r_addend;
-
-		if (r_type == R_PPC64_PLT_PCREL34
-		    || r_type == R_PPC64_PLT_PCREL34_NOTOC)
-		  sym_addend = 0;
 
 		for (ent = *plt_list; ent != NULL; ent = ent->next)
 		  if (ent->plt.offset != (bfd_vma) -1
-		      && ent->addend == sym_addend)
+		      && ent->addend == orig_rel.r_addend)
 		    {
 		      asection *plt;
 		      bfd_vma got;
@@ -15797,9 +15769,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 				 + htab->sec_info[input_section->id].toc_off);
 			  relocation -= got;
 			}
-		      if (r_type != R_PPC64_PLT_PCREL34
-			  && r_type != R_PPC64_PLT_PCREL34_NOTOC)
-			addend = 0;
+		      addend = 0;
 		      unresolved_reloc = FALSE;
 		      break;
 		    }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Restore breakpoint command in ui-redirect.exp
@ 2019-09-05 13:10 gdb-buildbot
  2019-09-05 13:40 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-05 13:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 30331a6ca014f6b51b17627aa968c6b79627ce21 ***

commit 30331a6ca014f6b51b17627aa968c6b79627ce21
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 5 14:33:10 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 5 14:33:10 2019 +0200

    [gdb/testsuite] Restore breakpoint command in ui-redirect.exp
    
    In gdb.base/ui-redirect.exp, the "save breakpoint" command is used to write
    the current breakpoints to a file, but the actual output is not verified.
    
    Consequently, the test has regressed in that the "print 1" command associated
    with a breakpoint on main is removed by a subsequent runto_main, which first
    deletes all breakpoints:
    ...
    (gdb) break main
    Breakpoint 1 at 0x4004d7: file start.c, line 34.
    (gdb) commands
    Type commands for breakpoint(s) 1, one per line.
    End with a line saying just "end".
    > PASS: gdb.base/ui-redirect.exp: commands
    print 1
    > PASS: gdb.base/ui-redirect.exp: print 1
    end
    (gdb) PASS: gdb.base/ui-redirect.exp: end
    delete breakpoints
    Delete all breakpoints? (y or n) y
    ...
    and consequently the "save breakpoint" output is missing the breakpoint
    command for main:
    ...
     break main
    -  commands
    -    print 1
    -  end
     break foo
     break bar
    ...
    
    Fix this by replacing "gdb_breakpoint main" with runto_main, and verifying the
    "save breakpoints" output.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-05  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdb.exp (cmp_file_string): New proc.
            * gdb.base/ui-redirect.exp: Replace "gdb_breakpoint main" with
            runto_main.  Verify save breakpoints output.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 46c7b5f927..0f6917a5a0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-05  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (cmp_file_string): New proc.
+	* gdb.base/ui-redirect.exp: Replace "gdb_breakpoint main" with
+	runto_main.  Verify save breakpoints output.
+
 2019-09-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* gdb.base/info-var.exp: Test info variables without running
diff --git a/gdb/testsuite/gdb.base/ui-redirect.exp b/gdb/testsuite/gdb.base/ui-redirect.exp
index 4507ac51a2..efcac14b7c 100644
--- a/gdb/testsuite/gdb.base/ui-redirect.exp
+++ b/gdb/testsuite/gdb.base/ui-redirect.exp
@@ -23,7 +23,10 @@ if { [prepare_for_testing "failed to prepare" ui-redirect start.c] } {
     return -1
 }
 
-gdb_breakpoint main
+if ![runto_main] {
+    fail "can't run to main"
+    return -1
+}
 
 set test "commands"
 gdb_test_multiple $test $test {
@@ -40,18 +43,27 @@ gdb_test_multiple $test $test {
 }
 gdb_test_no_output "end"
 
-if ![runto_main] {
-    fail "can't run to main"
-    return -1
-}
 gdb_breakpoint "foo"
 gdb_breakpoint "bar"
 
+set cmds [multi_line_input \
+	      "break main" \
+	      "  commands" \
+	      "    print 1" \
+	      "  end" \
+	      "break foo" \
+	      "break bar"]
+set cmds "$cmds\n"
+set outdir [standard_output_file {}]
+set cmds_file "$outdir/cmds.txt"
+
 with_test_prefix "logging" {
     gdb_test_no_output "set logging file /dev/null"
     gdb_test "set logging on" \
     "Copying output to /dev/null.*Copying debug output to /dev/null\\."
-    gdb_test "save breakpoints /dev/null" "Saved to file '/dev/null'\\."
+    gdb_test "save breakpoints $cmds_file" "Saved to file '$cmds_file'\\." \
+	"save breakpoints cmds.txt"
+    cmp_file_string "$cmds_file" "$cmds" "cmds.txt"
     gdb_test "set logging off" "Done logging to /dev/null\\."
     gdb_test "help" "List of classes of commands:.*"
 }
@@ -60,7 +72,8 @@ with_test_prefix "redirect" {
     gdb_test "set logging redirect on"
     gdb_test "set logging on" \
     "Redirecting output to /dev/null.*Copying debug output to /dev/null\\."
-    gdb_test_no_output "save breakpoints /dev/null"
+    gdb_test_no_output "save breakpoints $cmds_file" "save breakpoints cmds.txt"
+    cmp_file_string "$cmds_file" "$cmds" "cmds.txt"
     gdb_test "set logging off" "Done logging to /dev/null\\."
     gdb_test "help" "List of classes of commands:.*"
 }
@@ -71,7 +84,9 @@ with_test_prefix "redirect while already logging" {
     "Copying output to /dev/null.*Copying debug output to /dev/null\\."
     gdb_test "set logging redirect on" \
     ".*warning: Currently logging .*Turn the logging off and on to make the new setting effective.*"
-    gdb_test "save breakpoints /dev/null" "Saved to file '/dev/null'\\."
+    gdb_test "save breakpoints $cmds_file" "Saved to file '$cmds_file'\\." \
+	"save breakpoints cmds.txt"
+    cmp_file_string "$cmds_file" "$cmds" "cmds.txt"
     gdb_test "set logging off" "Done logging to /dev/null\\."
     gdb_test "help" "List of classes of commands:.*"
     gdb_test_no_output "set logging redirect off"
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 76805fb5ec..acbeb01376 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6668,5 +6668,32 @@ proc gdb_write_cmd_file { cmdline } {
     catch "close $cmd_file"
 }
 
+# Compare contents of FILE to string STR.  Pass with MSG if equal, otherwise
+# fail with MSG.
+
+proc cmp_file_string { file str msg } {
+    if { ![file exists $file]} {
+	fail "$msg"
+	return
+    }
+
+    set caught_error [catch {
+	set fp [open "$file" r]
+	set file_contents [read $fp]
+	close $fp
+    } error_message]
+    if { $caught_error } then {
+	error "$error_message"
+	fail "$msg"
+	return
+    }
+
+    if { $file_contents == $str } {
+	pass "$msg"
+    } else {
+	fail "$msg"
+    }
+}
+
 # Always load compatibility stuff.
 load_lib future.exp


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd_get_filename
@ 2019-09-06 14:26 gdb-buildbot
  2019-09-06 14:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-06 14:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b16c44debcf8a446e94e161e328169f5c8d5d811 ***

commit b16c44debcf8a446e94e161e328169f5c8d5d811
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Fri Sep 6 12:07:05 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Sep 6 12:22:59 2019 +0930

    bfd_get_filename
    
    This macro says:
    /* Cast from const char * to char * so that caller can assign to
       a char * without a warning.  */
    
    I reckon that isn't such a good idea since it can result in char*
    variables where const char* is appropriate.  Not very many places
    need the char* cast.
    
    bfd/
            * aout-target.h (object_p): Formatting.
            * bfd-in.h (bfd_get_filename): Don't cast to char*.
            * corefile.c (generic_core_file_matches_executable_p): Constify
            variables and remove cast.
            * bfd-in2.h: Regenerate.
    binutils/
            * nm.c (print_object_filename_bsd, print_object_filename_sysv),
            (print_object_filename_posix, print_archive_filename_bsd),
            (print_archive_filename_sysv, print_archive_filename_posix),
            (print_archive_member_bsd, print_archive_member_sysv),
            (print_archive_member_posix): Constify parameter.
            (struct output_fns <print_object_filename, print_archive_filename>),
            (<print_archive_member>): Likewise.
            * objcopy.c (copy_archive): Add cast for make_tempdir.
    ld/
            * emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Constify
            variable.
            * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Likewise.
            * emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise.
    gdb/
            * coffread.c (coff_symfile_read): Constify filename variable.
            * dbxread.c (dbx_symfile_init, coffstab_build_psymtabs),
            (elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise.
            * gdb_bfd.c (gdb_bfd_close_or_warn): Likewise.
            * solib.c (reload_shared_libraries_1): Likewise.
            * symfile.c (reread_symbols): Likewise.
            * solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename.
            * solib-darwin.c (darwin_bfd_open): Likewise.
            * symfile-mem.c (symbol_file_add_from_memory): Likewise.
    sim/cris/
            * sim-if.c (sim_open): Constify filename variable.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8ed849d74d..24f5e33833 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* aout-target.h (object_p): Formatting.
+	* bfd-in.h (bfd_get_filename): Don't cast to char*.
+	* corefile.c (generic_core_file_matches_executable_p): Constify
+	variables and remove cast.
+	* bfd-in2.h: Regenerate.
+
 2019-09-05  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
diff --git a/bfd/aout-target.h b/bfd/aout-target.h
index 2f3d5ea453..99a82bb57a 100644
--- a/bfd/aout-target.h
+++ b/bfd/aout-target.h
@@ -180,7 +180,7 @@ MY (object_p) (bfd *abfd)
 #ifndef S_IXUSR
 #define S_IXUSR 0100	/* Execute by owner.  */
 #endif
-      if (stat(abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR))
+      if (stat (abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR))
 	abfd->flags |= EXEC_P;
     }
 #endif /* ENTRY_CAN_BE_ZERO */
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index a5e95d14aa..6544838a57 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -518,9 +518,7 @@ extern int bfd_stat (bfd *, struct stat *);
 #endif
 extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
 
-/* Cast from const char * to char * so that caller can assign to
-   a char * without a warning.  */
-#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
+#define bfd_get_filename(abfd) ((abfd)->filename)
 #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
 #define bfd_get_format(abfd) ((abfd)->format)
 #define bfd_get_target(abfd) ((abfd)->xvec->name)
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 63b4792818..7b1cfbcf1a 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -525,9 +525,7 @@ extern int bfd_stat (bfd *, struct stat *);
 #endif
 extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
 
-/* Cast from const char * to char * so that caller can assign to
-   a char * without a warning.  */
-#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
+#define bfd_get_filename(abfd) ((abfd)->filename)
 #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
 #define bfd_get_format(abfd) ((abfd)->format)
 #define bfd_get_target(abfd) ((abfd)->xvec->name)
diff --git a/bfd/corefile.c b/bfd/corefile.c
index aa43da5cae..b2b3d2e26a 100644
--- a/bfd/corefile.c
+++ b/bfd/corefile.c
@@ -157,9 +157,9 @@ DESCRIPTION
 bfd_boolean
 generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
-  char *exec;
-  char *core;
-  char *last_slash;
+  const char *exec;
+  const char *core;
+  const char *last_slash;
 
   if (exec_bfd == NULL || core_bfd == NULL)
     return TRUE;
@@ -169,7 +169,7 @@ generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
      non-const char *.  In this case, the assignement does not lead to
      breaking the const, as we're only reading the string.  */
 
-  core = (char *) bfd_core_file_failing_command (core_bfd);
+  core = bfd_core_file_failing_command (core_bfd);
   if (core == NULL)
     return TRUE;
 
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 98e660d167..198380eaea 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* nm.c (print_object_filename_bsd, print_object_filename_sysv),
+	(print_object_filename_posix, print_archive_filename_bsd),
+	(print_archive_filename_sysv, print_archive_filename_posix),
+	(print_archive_member_bsd, print_archive_member_sysv),
+	(print_archive_member_posix): Constify parameter.
+	(struct output_fns <print_object_filename, print_archive_filename>),
+	(<print_archive_member>): Likewise.
+	* objcopy.c (copy_archive): Add cast for make_tempdir.
+
 2019-08-29  Alan Modra  <amodra@gmail.com>
 
 	* dwarf.c (check_uvalue): Remove unnecessary pointer checks.
diff --git a/binutils/nm.c b/binutils/nm.c
index 5d3d647843..67b7ac7b12 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -77,15 +77,15 @@ struct extended_symbol_info
   (sym->elfinfo ? sym->elfinfo->internal_elf_sym.st_size: sym->ssize)
 
 /* The output formatting functions.  */
-static void print_object_filename_bsd (char *);
-static void print_object_filename_sysv (char *);
-static void print_object_filename_posix (char *);
-static void print_archive_filename_bsd (char *);
-static void print_archive_filename_sysv (char *);
-static void print_archive_filename_posix (char *);
-static void print_archive_member_bsd (char *, const char *);
-static void print_archive_member_sysv (char *, const char *);
-static void print_archive_member_posix (char *, const char *);
+static void print_object_filename_bsd (const char *);
+static void print_object_filename_sysv (const char *);
+static void print_object_filename_posix (const char *);
+static void print_archive_filename_bsd (const char *);
+static void print_archive_filename_sysv (const char *);
+static void print_archive_filename_posix (const char *);
+static void print_archive_member_bsd (const char *, const char *);
+static void print_archive_member_sysv (const char *, const char *);
+static void print_archive_member_posix (const char *, const char *);
 static void print_symbol_filename_bsd (bfd *, bfd *);
 static void print_symbol_filename_sysv (bfd *, bfd *);
 static void print_symbol_filename_posix (bfd *, bfd *);
@@ -98,13 +98,13 @@ static void print_symbol_info_posix (struct extended_symbol_info *, bfd *);
 struct output_fns
   {
     /* Print the name of an object file given on the command line.  */
-    void (*print_object_filename) (char *);
+    void (*print_object_filename) (const char *);
 
     /* Print the name of an archive file given on the command line.  */
-    void (*print_archive_filename) (char *);
+    void (*print_archive_filename) (const char *);
 
     /* Print the name of an archive member file.  */
-    void (*print_archive_member) (char *, const char *);
+    void (*print_archive_member) (const char *, const char *);
 
     /* Print the name of the file (and archive, if there is one)
        containing a symbol.  */
@@ -1357,14 +1357,14 @@ display_file (char *filename)
 /* Print the name of an object file given on the command line.  */
 
 static void
-print_object_filename_bsd (char *filename)
+print_object_filename_bsd (const char *filename)
 {
   if (filename_per_file && !filename_per_symbol)
     printf ("\n%s:\n", filename);
 }
 
 static void
-print_object_filename_sysv (char *filename)
+print_object_filename_sysv (const char *filename)
 {
   if (undefined_only)
     printf (_("\n\nUndefined symbols from %s:\n\n"), filename);
@@ -1379,7 +1379,7 @@ Name                  Value           Class        Type         Size
 }
 
 static void
-print_object_filename_posix (char *filename)
+print_object_filename_posix (const char *filename)
 {
   if (filename_per_file && !filename_per_symbol)
     printf ("%s:\n", filename);
@@ -1388,26 +1388,26 @@ print_object_filename_posix (char *filename)
 /* Print the name of an archive file given on the command line.  */
 
 static void
-print_archive_filename_bsd (char *filename)
+print_archive_filename_bsd (const char *filename)
 {
   if (filename_per_file)
     printf ("\n%s:\n", filename);
 }
 
 static void
-print_archive_filename_sysv (char *filename ATTRIBUTE_UNUSED)
+print_archive_filename_sysv (const char *filename ATTRIBUTE_UNUSED)
 {
 }
 
 static void
-print_archive_filename_posix (char *filename ATTRIBUTE_UNUSED)
+print_archive_filename_posix (const char *filename ATTRIBUTE_UNUSED)
 {
 }
 \f
 /* Print the name of an archive member file.  */
 
 static void
-print_archive_member_bsd (char *archive ATTRIBUTE_UNUSED,
+print_archive_member_bsd (const char *archive ATTRIBUTE_UNUSED,
 			  const char *filename)
 {
   if (!filename_per_symbol)
@@ -1415,7 +1415,7 @@ print_archive_member_bsd (char *archive ATTRIBUTE_UNUSED,
 }
 
 static void
-print_archive_member_sysv (char *archive, const char *filename)
+print_archive_member_sysv (const char *archive, const char *filename)
 {
   if (undefined_only)
     printf (_("\n\nUndefined symbols from %s[%s]:\n\n"), archive, filename);
@@ -1430,7 +1430,7 @@ Name                  Value           Class        Type         Size
 }
 
 static void
-print_archive_member_posix (char *archive, const char *filename)
+print_archive_member_posix (const char *archive, const char *filename)
 {
   if (!filename_per_symbol)
     printf ("%s[%s]:\n", archive, filename);
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index ebb99339aa..b702e52d98 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -3311,7 +3311,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
     }
 
   /* Make a temp directory to hold the contents.  */
-  dir = make_tempdir (bfd_get_filename (obfd));
+  dir = make_tempdir ((char *) bfd_get_filename (obfd));
   if (dir == NULL)
     fatal (_("cannot create tempdir for archive copying (error: %s)"),
 	   strerror (errno));
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f55d1a8e31..40bd4d0d02 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* coffread.c (coff_symfile_read): Constify filename variable.
+	* dbxread.c (dbx_symfile_init, coffstab_build_psymtabs),
+	(elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise.
+	* gdb_bfd.c (gdb_bfd_close_or_warn): Likewise.
+	* solib.c (reload_shared_libraries_1): Likewise.
+	* symfile.c (reread_symbols): Likewise.
+	* solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename.
+	* solib-darwin.c (darwin_bfd_open): Likewise.
+	* symfile-mem.c (symbol_file_add_from_memory): Likewise.
+
 2019-09-03  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* psymtab.c (print_partial_symbols): Handle missing domain_enum
diff --git a/gdb/coffread.c b/gdb/coffread.c
index e24ab8d2f4..a70461271e 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -538,7 +538,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
   struct coff_symfile_info *info;
   bfd *abfd = objfile->obfd;
   coff_data_type *cdata = coff_data (abfd);
-  char *filename = bfd_get_filename (abfd);
+  const char *filename = bfd_get_filename (abfd);
   int val;
   unsigned int num_symbols;
   int symtab_offset;
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index e339d1f7ec..df3ae5828a 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -587,7 +587,7 @@ dbx_symfile_init (struct objfile *objfile)
 {
   int val;
   bfd *sym_bfd = objfile->obfd;
-  char *name = bfd_get_filename (sym_bfd);
+  const char *name = bfd_get_filename (sym_bfd);
   asection *text_sect;
   unsigned char size_temp[DBX_STRINGTAB_SIZE_SIZE];
 
@@ -2939,7 +2939,7 @@ coffstab_build_psymtabs (struct objfile *objfile,
 {
   int val;
   bfd *sym_bfd = objfile->obfd;
-  char *name = bfd_get_filename (sym_bfd);
+  const char *name = bfd_get_filename (sym_bfd);
   unsigned int stabsize;
 
   /* Allocate struct to keep track of stab reading.  */
@@ -3026,7 +3026,7 @@ elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
 {
   int val;
   bfd *sym_bfd = objfile->obfd;
-  char *name = bfd_get_filename (sym_bfd);
+  const char *name = bfd_get_filename (sym_bfd);
 
   stabsread_new_init ();
 
@@ -3107,7 +3107,7 @@ stabsect_build_psymtabs (struct objfile *objfile, char *stab_name,
 {
   int val;
   bfd *sym_bfd = objfile->obfd;
-  char *name = bfd_get_filename (sym_bfd);
+  const char *name = bfd_get_filename (sym_bfd);
   asection *stabsect;
   asection *stabstrsect;
   asection *text_sect;
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index 0334523ef1..d3b4c749f5 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -504,7 +504,7 @@ static int
 gdb_bfd_close_or_warn (struct bfd *abfd)
 {
   int ret;
-  char *name = bfd_get_filename (abfd);
+  const char *name = bfd_get_filename (abfd);
 
   bfd_map_over_sections (abfd, free_one_bfd_section, NULL);
 
diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
index d13b651944..2b5444293e 100644
--- a/gdb/solib-aix.c
+++ b/gdb/solib-aix.c
@@ -643,9 +643,9 @@ solib_aix_bfd_open (const char *pathname)
      along with appended parenthesized member name in order to allow commands
      listing all shared libraries to display.  Otherwise, we would only be
      displaying the name of the archive member object.  */
-  xfree (bfd_get_filename (object_bfd.get ()));
+  xfree ((char *) bfd_get_filename (object_bfd.get ()));
   object_bfd->filename = xstrprintf ("%s%s",
-                                     bfd_get_filename (archive_bfd.get ()),
+				     bfd_get_filename (archive_bfd.get ()),
 				     sep);
 
   return object_bfd;
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 443ebb64a4..3dd30d2aa3 100644
--- a/gdb/solib-darwin.c
+++ b/gdb/solib-darwin.c
@@ -670,7 +670,7 @@ darwin_bfd_open (const char *pathname)
   /* The current filename for fat-binary BFDs is a name generated
      by BFD, usually a string containing the name of the architecture.
      Reset its value to the actual filename.  */
-  xfree (bfd_get_filename (res.get ()));
+  xfree ((char *) bfd_get_filename (res.get ()));
   res->filename = xstrdup (pathname);
 
   return res;
diff --git a/gdb/solib.c b/gdb/solib.c
index 29a17ad5d4..86000f6d61 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -1296,7 +1296,7 @@ reload_shared_libraries_1 (int from_tty)
 
   for (so = so_list_head; so != NULL; so = so->next)
     {
-      char *found_pathname = NULL;
+      const char *found_pathname = NULL;
       int was_loaded = so->symbols_loaded;
       symfile_add_flags add_flags = SYMFILE_DEFER_BP_RESET;
 
diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c
index 51a75541e5..6d1deae1e0 100644
--- a/gdb/symfile-mem.c
+++ b/gdb/symfile-mem.c
@@ -101,7 +101,7 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
   /* Manage the new reference for the duration of this function.  */
   gdb_bfd_ref_ptr nbfd_holder = gdb_bfd_ref_ptr::new_reference (nbfd);
 
-  xfree (bfd_get_filename (nbfd));
+  xfree ((char *) bfd_get_filename (nbfd));
   if (name == NULL)
     nbfd->filename = xstrdup ("shared object read from target memory");
   else
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 8843781e13..3cd514409b 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2548,7 +2548,7 @@ reread_symbols (void)
 	  /* Clean up any state BFD has sitting around.  */
 	  {
 	    gdb_bfd_ref_ptr obfd (objfile->obfd);
-	    char *obfd_filename;
+	    const char *obfd_filename;
 
 	    obfd_filename = bfd_get_filename (objfile->obfd);
 	    /* Open the new BFD before freeing the old one, so that
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 37836aa70a..13abd72d83 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Constify
+	variable.
+	* emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Likewise.
+	* emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise.
+
 2019-09-05  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ld/24574
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index b3c012c46d..52db0fde1d 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -552,7 +552,7 @@ gld${EMULATION_NAME}_search_needed (const char *path,
 	     FIXME: The code could be a lot cleverer about allocating space
 	     for the processed string.  */
 	  char *    end = strchr (var, '/');
-	  char *    replacement = NULL;
+	  const char *replacement = NULL;
 	  char *    v = var + 1;
 	  char *    freeme = NULL;
 	  unsigned  flen = strlen (filename);
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index 834215ac85..49bb66b906 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -1513,7 +1513,7 @@ gld_${EMULATION_NAME}_after_open (void)
 		      {
 			struct bfd_symbol *s;
 			struct bfd_link_hash_entry * blhe;
-			char *other_bfd_filename;
+			const char *other_bfd_filename;
 			char *n;
 
 			s = (relocs[i]->sym_ptr_ptr)[0];
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 9eb7cd7a4b..4daa32b5c6 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -1480,7 +1480,7 @@ gld_${EMULATION_NAME}_after_open (void)
 		      {
 			struct bfd_symbol *s;
 			struct bfd_link_hash_entry * blhe;
-			char *other_bfd_filename;
+			const char *other_bfd_filename;
 			char *n;
 
 			s = (relocs[i]->sym_ptr_ptr)[0];
diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog
index 5e26f3ddf8..d37fc8f56d 100644
--- a/sim/cris/ChangeLog
+++ b/sim/cris/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* sim-if.c (sim_open): Constify filename variable.
+
 2018-12-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* Makefile.in: Replace uses of CGEN_CPU_DIR with CPU_DIR, and
diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
index 054cce557b..1a5d421caf 100644
--- a/sim/cris/sim-if.c
+++ b/sim/cris/sim-if.c
@@ -746,7 +746,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
      specified.  */
   if (abfd != NULL && !cris_bare_iron)
     {
-      char *name = bfd_get_filename (abfd);
+      const char *name = bfd_get_filename (abfd);
       char **my_environ = GET_ENVIRON ();
       /* We use these maps to give the same behavior as the old xsim
 	 simulator.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change int to bool for the relocate_* functions
@ 2019-09-06 20:12 gdb-buildbot
  2019-09-06 20:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-06 20:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ead0e69a4ab34d0c689f0c4c310b8d788867da32 ***

commit ead0e69a4ab34d0c689f0c4c310b8d788867da32
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Fri Sep 6 14:19:40 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Fri Sep 6 14:34:00 2019 -0500

    Change int to bool for the relocate_* functions
    
    These parameters are only used as bools. This also
    renames "flag" to "relocatable" to make it clearer
    what it does.
    
    gdb/ChangeLog:
    
    2019-09-06  Christian Biesinger  <cbiesinger@google.com>
    
            * defs.h (relocate_gdb_directory): Change int to bool in
            signature and rename flag to relocatable.
            * main.c (relocate_path): Likewise.
            (relocate_gdb_directory): Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 40bd4d0d02..acfc888aac 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* defs.h (relocate_gdb_directory): Change int to bool in
+	signature and rename flag to relocatable.
+	* main.c (relocate_path): Likewise.
+	(relocate_gdb_directory): Likewise.
+
 2019-09-06  Alan Modra  <amodra@gmail.com>
 
 	* coffread.c (coff_symfile_read): Constify filename variable.
diff --git a/gdb/defs.h b/gdb/defs.h
index ece3006de4..14e0a3e1d1 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -282,7 +282,7 @@ struct value;
 
 /* This really belong in utils.c (path-utils.c?), but it references some
    globals that are currently only available to main.c.  */
-extern char *relocate_gdb_directory (const char *initial, int flag);
+extern char *relocate_gdb_directory (const char *initial, bool relocatable);
 
 \f
 /* Annotation stuff.  */
diff --git a/gdb/main.c b/gdb/main.c
index 678c413021..129c57c1d1 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -139,14 +139,14 @@ set_gdb_data_directory (const char *new_datadir)
 
 /* Relocate a file or directory.  PROGNAME is the name by which gdb
    was invoked (i.e., argv[0]).  INITIAL is the default value for the
-   file or directory.  FLAG is true if the value is relocatable, false
-   otherwise.  Returns a newly allocated string; this may return NULL
-   under the same conditions as make_relative_prefix.  */
+   file or directory.  RELOCATABLE is true if the value is relocatable,
+   false otherwise.  Returns a newly allocated string; this may return
+   NULL under the same conditions as make_relative_prefix.  */
 
 static char *
-relocate_path (const char *progname, const char *initial, int flag)
+relocate_path (const char *progname, const char *initial, bool relocatable)
 {
-  if (flag)
+  if (relocatable)
     return make_relative_prefix (progname, BINDIR, initial);
   return xstrdup (initial);
 }
@@ -158,11 +158,11 @@ relocate_path (const char *progname, const char *initial, int flag)
    function always returns a newly-allocated string.  */
 
 char *
-relocate_gdb_directory (const char *initial, int flag)
+relocate_gdb_directory (const char *initial, bool relocatable)
 {
   char *dir;
 
-  dir = relocate_path (gdb_program_name, initial, flag);
+  dir = relocate_path (gdb_program_name, initial, relocatable);
   if (dir)
     {
       struct stat s;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] un-XFAIL under Clang tests using labels
@ 2019-09-06 21:56 gdb-buildbot
  2019-09-06 22:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-06 21:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 736b0f76188c7a4d497a5e2255b78af909393afe ***

commit 736b0f76188c7a4d497a5e2255b78af909393afe
Author:     David Blaikie <dblaikie@gmail.com>
AuthorDate: Thu Sep 5 15:01:25 2019 -0700
Commit:     David Blaikie <dblaikie@gmail.com>
CommitDate: Fri Sep 6 14:17:36 2019 -0700

    un-XFAIL under Clang tests using labels
    
    gdb/testsuite/
            * gdb.base/label.exp: un-XFAIL label related tests under Clang.
            * gdb.cp/cplabel.exp: Ditto.
            * gdb.linespec/ls-errs.exp: Ditto.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0f6917a5a0..a6a645b81b 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-06  David Blaikie  <dblaikie@gmail.com>
+
+	* gdb.base/label.exp: un-XFAIL label related tests under Clang.
+	* gdb.cp/cplabel.exp: Ditto.
+	* gdb.linespec/ls-errs.exp: Ditto.
+
 2019-09-05  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdb.exp (cmp_file_string): New proc.
diff --git a/gdb/testsuite/gdb.base/label.exp b/gdb/testsuite/gdb.base/label.exp
index bce90cb60e..ec4851970e 100644
--- a/gdb/testsuite/gdb.base/label.exp
+++ b/gdb/testsuite/gdb.base/label.exp
@@ -29,34 +29,24 @@ if {![runto_main]} {
   return -1
 }
 
-set has_pr_14500_fixed 1
-if {[test_compiler_info {clang-*-*}]} {
-  set has_pr_14500_fixed 0
-}
-
-if {!$has_pr_14500_fixed} {  setup_xfail clang/14500 *-*-* }
 gdb_test "break here" \
   "Breakpoint.*at.*" \
   "breakpoint here"
 
-if {!$has_pr_14500_fixed} {  setup_xfail clang/14500 *-*-* }
 gdb_test "break main:there" \
   "Breakpoint.*at.*" \
   "breakpoint there"
 
-if {!$has_pr_14500_fixed} {  setup_xfail clang/14500 *-*-* }
 gdb_test "cont" \
   "Breakpoint 3,.*" \
   "continue to 'there'"
 
-if {!$has_pr_14500_fixed} {  setup_xfail clang/14500 *-*-* }
 gdb_test "cont" \
   "Breakpoint 2,.*" \
   "continue to 'here'"
 
 rerun_to_main
 
-if {!$has_pr_14500_fixed} {  setup_xfail clang/14500 *-*-* }
 gdb_test "cont" \
   "Breakpoint 3,.*" \
   "continue to 'there' after re-run"
diff --git a/gdb/testsuite/gdb.cp/cplabel.exp b/gdb/testsuite/gdb.cp/cplabel.exp
index 26818cb1a2..93febd6925 100644
--- a/gdb/testsuite/gdb.cp/cplabel.exp
+++ b/gdb/testsuite/gdb.cp/cplabel.exp
@@ -34,7 +34,6 @@ set labels {"to_the_top" "get_out_of_here"}
 foreach m $methods {
     foreach l $labels {
 	set line [gdb_get_line_number "$m:$l"]
-	if {[test_compiler_info {clang-*-*}]} { setup_xfail clang/14500 *-*-* }
 	gdb_test "break foo::$m:$l" \
 	    "Breakpoint $decimal at $hex: file .*$srcfile, line $line\."
     }
diff --git a/gdb/testsuite/gdb.linespec/ls-errs.exp b/gdb/testsuite/gdb.linespec/ls-errs.exp
index 92a858ce26..f031c461cb 100644
--- a/gdb/testsuite/gdb.linespec/ls-errs.exp
+++ b/gdb/testsuite/gdb.linespec/ls-errs.exp
@@ -231,9 +231,6 @@ proc do_test {lang} {
 
     foreach x $spaces {
 	test_break "main${x}there" invalid_label "there" "main"
-	if {[test_compiler_info {clang-*-*}]} {
-	    setup_xfail clang/14500 *-*-*
-	}
 	test_break "main:here${x}" unexpected "end of input"
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change lookup_symbol's block_index parameter type to block_enum
@ 2019-09-07 16:44 gdb-buildbot
  2019-09-07 16:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-07 16:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c7f839cbf08c397f3ab208054f11cfc1236ee143 ***

commit c7f839cbf08c397f3ab208054f11cfc1236ee143
Author:     Simon Marchi <simon.marchi@efficios.com>
AuthorDate: Sat Sep 7 12:03:56 2019 -0400
Commit:     Simon Marchi <simon.marchi@polymtl.ca>
CommitDate: Sat Sep 7 12:06:01 2019 -0400

    Change lookup_symbol's block_index parameter type to block_enum
    
    The only two values valid to pass to the block_index parameter of
    quick_symbol_functions::lookup_symbol are GLOBAL_BLOCK and STATIC_BLOCK,
    part of enum block_enum.  Change the type of that parameter to
    block_enum.
    
    Change also the block_index field of dw2_symtab_iterator in the same
    way..  This makes it consistent with dw2_debug_names_iterator, which
    already uses block_enum for its block_index field.
    
    This is a follow-up to this thread:
    
    https://sourceware.org/ml/gdb-patches/2019-08/msg00097.html
    
    gdb/ChangeLog:
    
            * dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
            Change type to gdb::optional<block_enum>.
            (dw2_symtab_iter_init): Change block_index parameter type
            to gdb::optional<block_enum>.
            (dw2_lookup_symbol): Change block_index parameter
            type to block_enum.c
            (dw2_debug_names_lookup_symbol): Likewise.
            * psymtab.c (psym_lookup_symbol): Likewise.
            * symfile-debug.c (debug_qf_lookup_symbol): Likewise.
            * symfile.h (struct quick_symbol_functions) <lookup_symbol>:
            Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index acfc888aac..d5938be9a0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2019-09-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
+	Change type to gdb::optional<block_enum>.
+	(dw2_symtab_iter_init): Change block_index parameter type
+	to gdb::optional<block_enum>.
+	(dw2_lookup_symbol): Change block_index parameter
+	type to block_enum.c
+	(dw2_debug_names_lookup_symbol): Likewise.
+	* psymtab.c (psym_lookup_symbol): Likewise.
+	* symfile-debug.c (debug_qf_lookup_symbol): Likewise.
+	* symfile.h (struct quick_symbol_functions) <lookup_symbol>:
+	Likewise.
+
 2019-09-06  Christian Biesinger  <cbiesinger@google.com>
 
 	* defs.h (relocate_gdb_directory): Change int to bool in
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index fb888da7b8..69bb5bdbaa 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -3883,7 +3883,7 @@ struct dw2_symtab_iterator
   struct dwarf2_per_objfile *dwarf2_per_objfile;
   /* If set, only look for symbols that match that block.  Valid values are
      GLOBAL_BLOCK and STATIC_BLOCK.  */
-  gdb::optional<int> block_index;
+  gdb::optional<block_enum> block_index;
   /* The kind of symbol we're looking for.  */
   domain_enum domain;
   /* The list of CUs from the index entry of the symbol,
@@ -3905,7 +3905,7 @@ struct dw2_symtab_iterator
 static void
 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
 		      struct dwarf2_per_objfile *dwarf2_per_objfile,
-		      gdb::optional<int> block_index,
+		      gdb::optional<block_enum> block_index,
 		      domain_enum domain,
 		      const char *name)
 {
@@ -4018,7 +4018,7 @@ dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
 }
 
 static struct compunit_symtab *
-dw2_lookup_symbol (struct objfile *objfile, int block_index,
+dw2_lookup_symbol (struct objfile *objfile, block_enum block_index,
 		   const char *name, domain_enum domain)
 {
   struct compunit_symtab *stab_best = NULL;
@@ -6004,10 +6004,9 @@ dw2_debug_names_iterator::next ()
 }
 
 static struct compunit_symtab *
-dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
+dw2_debug_names_lookup_symbol (struct objfile *objfile, block_enum block_index,
 			       const char *name, domain_enum domain)
 {
-  const block_enum block_index = static_cast<block_enum> (block_index_int);
   struct dwarf2_per_objfile *dwarf2_per_objfile
     = get_dwarf2_per_objfile (objfile);
 
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 6f9bf7268f..70d04f8605 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -479,7 +479,7 @@ find_pc_sect_psymbol (struct objfile *objfile,
 
 static struct compunit_symtab *
 psym_lookup_symbol (struct objfile *objfile,
-		    int block_index, const char *name,
+		    block_enum block_index, const char *name,
 		    const domain_enum domain)
 {
   const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0);
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index 0f9da66e53..c5b565fc51 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -140,8 +140,8 @@ debug_qf_map_symtabs_matching_filename
 }
 
 static struct compunit_symtab *
-debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name,
-			domain_enum domain)
+debug_qf_lookup_symbol (struct objfile *objfile, block_enum kind,
+			const char *name, domain_enum domain)
 {
   const struct debug_sym_fns_data *debug_data
     = symfile_debug_objfile_data_key.get (objfile);
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 741b085e0c..5e4d2f5b53 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -179,7 +179,8 @@ struct quick_symbol_functions
      contains !TYPE_OPAQUE symbol prefer its compunit.  If it contains
      only TYPE_OPAQUE symbol(s), return at least that compunit.  */
   struct compunit_symtab *(*lookup_symbol) (struct objfile *objfile,
-					    int block_index, const char *name,
+					    block_enum block_index,
+					    const char *name,
 					    domain_enum domain);
 
   /* Print statistics about any indices loaded for OBJFILE.  The


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Truncate long TUI window titles
@ 2019-09-08 20:44 gdb-buildbot
  2019-09-08 21:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-08 20:44 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8634b4628ea00a95ce3dfe8f9915724e8d710dad ***

commit 8634b4628ea00a95ce3dfe8f9915724e8d710dad
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 15:07:01 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Sun Sep 8 14:06:54 2019 -0600

    Truncate long TUI window titles
    
    If a TUI window has a long title, it can overflow the title line.
    This changes the TUI to use just the tail part of the title in this
    case.
    
    gdb/ChangeLog
    2019-09-08  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-wingeneral.c (box_win): Truncate long window titles.
    
    gdb/testsuite/ChangeLog
    2019-09-08  Tom Tromey  <tom@tromey.com>
    
            * gdb.tui/resize.exp: Remove setup_xfail.
            * gdb.tui/regs.exp: Remove setup_xfail.
            * gdb.tui/basic.exp: Remove setup_xfail.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d5938be9a0..af1608db9a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-08  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Truncate long window titles.
+
 2019-09-07  Simon Marchi  <simon.marchi@efficios.com>
 
 	* dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a6a645b81b..6cee4787e0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-08  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/resize.exp: Remove setup_xfail.
+	* gdb.tui/regs.exp: Remove setup_xfail.
+	* gdb.tui/basic.exp: Remove setup_xfail.
+
 2019-09-06  David Blaikie  <dblaikie@gmail.com>
 
 	* gdb.base/label.exp: un-XFAIL label related tests under Clang.
diff --git a/gdb/testsuite/gdb.tui/basic.exp b/gdb/testsuite/gdb.tui/basic.exp
index f60011c386..716c52f68a 100644
--- a/gdb/testsuite/gdb.tui/basic.exp
+++ b/gdb/testsuite/gdb.tui/basic.exp
@@ -35,9 +35,6 @@ gdb_assert {![string match "No Source Available" $text]} \
 Term::command "list main"
 Term::check_contents "list main" "21 *return 0"
 
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box" 0 0 80 15
 
 Term::command "layout asm"
@@ -48,8 +45,5 @@ Term::check_box "asm box" 0 0 80 15
 Term::command "layout split"
 Term::check_contents "split layout contents" "21 *return 0.*$hex <main>"
 
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box in split layout" 0 0 80 8
 Term::check_box "asm box in split layout" 0 7 80 8
diff --git a/gdb/testsuite/gdb.tui/regs.exp b/gdb/testsuite/gdb.tui/regs.exp
index f17b1db8d4..1af943dd15 100644
--- a/gdb/testsuite/gdb.tui/regs.exp
+++ b/gdb/testsuite/gdb.tui/regs.exp
@@ -38,9 +38,6 @@ Term::check_contents "source at startup" ">|21 *return 0"
 
 Term::command "layout regs"
 Term::check_box "register box" 0 0 80 8
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box in regs layout" 0 7 80 8
 
 set text [Term::get_line 1]
diff --git a/gdb/testsuite/gdb.tui/resize.exp b/gdb/testsuite/gdb.tui/resize.exp
index 8484e03c71..3b885e1198 100644
--- a/gdb/testsuite/gdb.tui/resize.exp
+++ b/gdb/testsuite/gdb.tui/resize.exp
@@ -37,6 +37,4 @@ if {![Term::enter_tui]} {
 Term::check_contents "source at startup" ">|21 *return 0"
 
 Term::resize 40 90
-# Resizing seems to be somewhat broken.
-setup_xfail *-*-*
 Term::check_box "source box after resize" 0 0 90 23
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index f900eab013..235c17c5fa 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -74,7 +74,21 @@ box_win (struct tui_win_info *win_info,
   box (win, tui_border_vline, tui_border_hline);
 #endif
   if (!win_info->title.empty ())
-    mvwaddstr (win, 0, 3, win_info->title.c_str ());
+    {
+      /* Emit "+-TITLE-+" -- so 2 characters on the right and 2 on
+	 the left.  */
+      int max_len = win_info->width - 2 - 2;
+
+      if (win_info->title.size () <= max_len)
+	mvwaddstr (win, 0, 3, win_info->title.c_str ());
+      else
+	{
+	  std::string truncated
+	    = "..." + win_info->title.substr (win_info->title.size ()
+					      - max_len + 3);
+	  mvwaddstr (win, 0, 3, truncated.c_str ());
+	}
+    }
   wattroff (win, attrs);
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add markers for 2.33 branch to NEWS and ChangeLog files.
@ 2019-09-09 10:14 gdb-buildbot
  2019-09-09 10:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-09 10:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 60391a255b720e37ab1efbb7e83bf7dfa270a0fe ***

commit 60391a255b720e37ab1efbb7e83bf7dfa270a0fe
Author:     Phil Blundell <philb@brightsign.biz>
AuthorDate: Mon Sep 9 10:27:03 2019 +0100
Commit:     Phil Blundell <philb@brightsign.biz>
CommitDate: Mon Sep 9 10:27:40 2019 +0100

    Add markers for 2.33 branch to NEWS and ChangeLog files.

diff --git a/ChangeLog b/ChangeLog
index 76c121f680..5d1dfee8dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created
+
 2019-08-19  Tom Tromey  <tom@tromey.com>
 
 	* configure: Rebuild.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 24f5e33833..aca3c80a2b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-09-06  Alan Modra  <amodra@gmail.com>
 
 	* aout-target.h (object_p): Formatting.
diff --git a/binutils/.README-how-to-make-a-release.swp b/binutils/.README-how-to-make-a-release.swp
new file mode 100644
index 0000000000..063e52a5aa
Binary files /dev/null and b/binutils/.README-how-to-make-a-release.swp differ
diff --git a/binutils/BRANCHES b/binutils/BRANCHES
index 63f1e84d26..020b53c274 100644
--- a/binutils/BRANCHES
+++ b/binutils/BRANCHES
@@ -48,6 +48,7 @@ binutils-2_29-branch
 binutils-2_30-branch
 binutils-2_31-branch
 binutils-2_32-branch
+binutils-2_33-branch
 \f
 Copyright (C) 2012-2019 Free Software Foundation, Inc.
 
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 198380eaea..5e8e03d604 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-09-06  Alan Modra  <amodra@gmail.com>
 
 	* nm.c (print_object_filename_bsd, print_object_filename_sysv),
diff --git a/binutils/NEWS b/binutils/NEWS
index 349af31c36..e6afc4ba29 100644
--- a/binutils/NEWS
+++ b/binutils/NEWS
@@ -1,4 +1,7 @@
 -*- text -*-
+
+Changes in 2.33:
+
 * Add --source-comment[=<txt>] option to objdump which if present,
   provides a prefix to source code lines displayed in a disassembly.
 
diff --git a/config/ChangeLog b/config/ChangeLog
index a22d73c8b5..dabbac3b49 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2018-06-24  Nick Clifton  <nickc@redhat.com>
 
 	2.32 branch created.
diff --git a/cpu/ChangeLog b/cpu/ChangeLog
index 66cf2dab1a..375cb19966 100644
--- a/cpu/ChangeLog
+++ b/cpu/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-07-19  Jose E. Marchesi  <jose.marchesi@oracle.com>
 
 	* bpf.cpu (h-gpr): when disassembling, use %r0 and %r6 instead of
diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog
index 30b167a7ef..3f7e39e6e3 100644
--- a/elfcpp/ChangeLog
+++ b/elfcpp/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-08-02  Alan Modra  <amodra@gmail.com>
 
 	* powerpc.h (R_PPC64_TPREL34, R_PPC64_DTPREL34),
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 06b7cfdf5d..9c484d3bc6 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-09-05  Alan Modra  <amodra@gmail.com>
 
 	* config/tc-ppc.c (ppc_elf_suffix): Display the relocation
diff --git a/gas/NEWS b/gas/NEWS
index 2d8415f874..478860acaf 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+Changes in 2.33:
+
 * Add support for the Armv8.1-M Mainline and M-profile Vector Extension (MVE)
   instructions.
 
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 6fe991d80d..77a72e3742 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-08-16  Martin Liska  <mliska@suse.cz>
 
 	PR ld/24912
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index 1acb81aabc..d0aa7f8f1f 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-05-20  Nick Clifton  <nickc@redhat.com>
 
 	PR 24569
diff --git a/include/ChangeLog b/include/ChangeLog
index 3055551062..eb500e146e 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-08-30  Claudiu Zissulescu <claziss@gmail.com>
 
 	* opcode/arc.h (FASTMATH): Move it from insn_class_t to
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 84a15d6fa3..204310c939 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-09-06  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/beos.em (sort_by_file_name): Use appropriate
diff --git a/ld/NEWS b/ld/NEWS
index f66b35a95c..45c48f5c54 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+Changes in 2.33:
+
 * Add command-line option --no-print-map-discarded.
 
 * The Cortex-A53 Erratum 843419 workaround now supports a choice of which
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 4170762574..e56e2c0b86 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-07-18  Nick Alcock  <nick.alcock@oracle.com>
 
 	* ctf-types.c (ctf_type_aname_raw): New.
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 64b6a07ac4..67bc754be5 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
 2019-09-03  Nick Clifton  <nickc@redhat.com>
 
 	PR 24961


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix leak detected in python.c initialization code.
@ 2019-09-09 22:31 gdb-buildbot
  2019-09-09 22:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-09 22:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e4df087431f10f6d9079d8f0c78ad0414e814b92 ***

commit e4df087431f10f6d9079d8f0c78ad0414e814b92
Author:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
AuthorDate: Sat Sep 7 20:54:44 2019 +0200
Commit:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
CommitDate: Mon Sep 9 23:50:37 2019 +0200

    Fix leak detected in python.c initialization code.
    
    Valgrind reports the below leak.
    Make the variable progname_copy static, so that Valgrind continues
    to find a pointer to the memory given to Python.
    Note that the comment in do_start_initialization and the Python documentation
    indicates that the progname given to Py_SetProgramName cannot be freed.
    However, in Python 3.7.4, Py_SetProgramName does:
    void
    Py_SetProgramName(const wchar_t *program_name)
    {
        ...
        PyMem_RawFree(_Py_path_config.program_name);
        _Py_path_config.program_name = _PyMem_RawWcsdup(program_name);
    
    So, it looks like 3.7.4 Python duplicates its argument, which explains
    the leak found by Valgrind.
    It looks better to respect the doc and not have GDB freeing the string
    given to Py_SetProgramName, and avoid the leak error by declaring
    the progname_copy static.
    This will work with Python versions that really use this string without
    duplicating it, and avoids a leak report for Python version that duplicates
    it.
    
    ==4023== 200 bytes in 1 blocks are definitely lost in loss record 4,545 of 7,116^M
    ==4023==    at 0x4C29F33: malloc (vg_replace_malloc.c:307)^M
    ==4023==    by 0x446D27: xmalloc (alloc.c:60)^M
    ==4023==    by 0x657C77: do_start_initialization (python.c:1610)^M
    ==4023==    by 0x657C77: _initialize_python() (python.c:1823)^M
    ==4023==    by 0x75FE24: initialize_all_files() (init.c:231)^M
    ==4023==    by 0x708A94: gdb_init(char*) (top.c:2242)^M
    ==4023==    by 0x5E7460: captured_main_1 (main.c:857)^M
    ==4023==    by 0x5E7460: captured_main (main.c:1161)^M
    ==4023==    by 0x5E7460: gdb_main(captured_main_args*) (main.c:1186)^M
    ==4023==    by 0x4122D4: main (gdb.c:32)^M
    
    gdb/ChangeLog
    2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
            * python/python.c (do_start_initialization): Make progname_copy static,
            to avoid a leak report.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af1608db9a..eb6d062812 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* python/python.c (do_start_initialization): Make progname_copy static,
+	to avoid a leak report.
+
 2019-09-08  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-wingeneral.c (box_win): Truncate long window titles.
diff --git a/gdb/python/python.c b/gdb/python/python.c
index b309ae91ba..9c49151db3 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1590,7 +1590,14 @@ do_start_initialization ()
 {
 #ifdef IS_PY3K
   size_t progsize, count;
-  wchar_t *progname_copy;
+  /* Python documentation indicates that the memory given
+     to Py_SetProgramName cannot be freed.  However, it seems that
+     at least Python 3.7.4 Py_SetProgramName takes a copy of the
+     given program_name.  Making progname_copy static and not release
+     the memory avoids a leak report for Python versions that duplicate
+     program_name, and respect the requirement of Py_SetProgramName
+     for Python versions that do not duplicate program_name.  */
+  static wchar_t *progname_copy;
 #endif
 
 #ifdef WITH_PYTHON_PATH


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use ui_out for "info win"
@ 2019-09-09 23:50 gdb-buildbot
  2019-09-10  0:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-09 23:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 25a2915e8dba63abef6d7434114f36efeb5c09fe ***

commit 25a2915e8dba63abef6d7434114f36efeb5c09fe
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Thu Jul 18 14:53:42 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Mon Sep 9 17:06:22 2019 -0600

    Use ui_out for "info win"
    
    This changes the "info win" command to use ui-out.  This yields
    somewhat nicer table output.
    
    gdb/ChangeLog
    2019-09-09  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-win.c (tui_all_windows_info): Use ui_out.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eb6d062812..542f37fca0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_all_windows_info): Use ui_out.
+
 2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* python/python.c (do_start_initialization): Make progname_copy static,
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 8d41372cf9..bf84cdac44 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -828,18 +828,26 @@ static void
 tui_all_windows_info (const char *arg, int from_tty)
 {
   struct tui_win_info *win_with_focus = tui_win_with_focus ();
+  struct ui_out *uiout = current_uiout;
+
+  ui_out_emit_table table_emitter (uiout, 3, -1, "tui-windows");
+  uiout->table_header (10, ui_left, "name", "Name");
+  uiout->table_header (5, ui_right, "lines", "Lines");
+  uiout->table_header (10, ui_left, "focus", "Focus");
+  uiout->table_body ();
 
   for (tui_win_info *win_info : all_tui_windows ())
     if (win_info->is_visible ())
       {
+	ui_out_emit_tuple tuple_emitter (uiout, nullptr);
+
+	uiout->field_string ("name", win_info->name ());
+	uiout->field_signed ("lines", win_info->height);
 	if (win_with_focus == win_info)
-	  printf_filtered ("        %s\t(%d lines)  <has focus>\n",
-			   win_info->name (),
-			   win_info->height);
+	  uiout->field_string ("focus", _("(has focus)"));
 	else
-	  printf_filtered ("        %s\t(%d lines)\n",
-			   win_info->name (),
-			   win_info->height);
+	  uiout->field_skip ("focus");
+	uiout->text ("\n");
       }
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] DWARF 5 support: Handle dwo_id
@ 2019-09-10  2:15 gdb-buildbot
  2019-09-10  2:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10  2:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a084a2a6a181c2206be4ba29b21dc0ae441ab4e9 ***

commit a084a2a6a181c2206be4ba29b21dc0ae441ab4e9
Author:     Ali Tamur <tamur@google.com>
AuthorDate: Mon Aug 26 17:53:24 2019 -0700
Commit:     Ali Tamur <tamur@google.com>
CommitDate: Mon Sep 9 18:35:43 2019 -0700

    DWARF 5 support: Handle dwo_id
    
    * DW_UT_skeleton and DW_UT_split_compile compilation units have dwo ids
    to match the compilation unit in the skeleton and .dwo files. The dwo_id is
    in the header.
    
    Tested with CC=/usr/bin/gcc (version 8.3.0) against master branch (also with
    -gsplit-dwarf and -gdwarf-4 flags) and there was no increase in the set of
    tests that fails.
    
    This is part of an effort to support DWARF 5 in gdb.
    
    gdb/ChangeLog:
    
            * dwarf2read.c (comp_unit_head): Update comment.
            (dwarf2_dwo_name): New function declaration.
            (dwarf_unit_type_name): New function declaration.
            (read_comp_unit_head): Add support for new compilation units,
            DW_UT_partial, DW_UT_skeleton, DW_UT_split_compile, DW_UT_split_type.
            Particularly, DW_UT_skeleton and DW_UT_split_compile have dwo_id
            (currently named as "signature") in their header. Also clarify error
            messages.
            (lookup_dwo_id): New function. Returns the dwo id of the given
            compile unit.
            (lookup_dwo_unit): Use the new lookup_dwo_id function.
            (init_cutu_and_read_dies): Use the new dwarf2_dwo_name and lookup_dwo_id
            functions.
            (create_dwo_cu_reader): Use the added lookup_dwo_id function.
            (dwarf2_dwo_name): Get the dwo name if present.
            (dwarf_unit_type_name): Convert DW_UT_* types to string for diagnostic
            purposes.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 542f37fca0..9ad7227e0b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,24 @@
+
+2019-09-09  Ali Tamur  <tamur@google.com>
+
+	* dwarf2read.c (comp_unit_head): Update comment.                     
+	(dwarf2_dwo_name): New function declaration.                             
+	(dwarf_unit_type_name): New function declaration.                        
+	(read_comp_unit_head): Add support for new compilation units,            
+	DW_UT_partial, DW_UT_skeleton, DW_UT_split_compile, DW_UT_split_type.    
+	Particularly, DW_UT_skeleton and DW_UT_split_compile have dwo_id         
+	(currently named as "signature") in their header. Also clarify error     
+	messages.                                                                
+	(lookup_dwo_id): New function. Returns the dwo id of the given           
+	compile unit.                                                            
+	(lookup_dwo_unit): Use the new lookup_dwo_id function.                   
+	(init_cutu_and_read_dies): Use the new dwarf2_dwo_name and lookup_dwo_id 
+	functions.                                                               
+	(create_dwo_cu_reader): Use the added lookup_dwo_id function.            
+	(dwarf2_dwo_name): Get the dwo name if present.                          
+	(dwarf_unit_type_name): Convert DW_UT_* types to string for diagnostic   
+	purposes.
+
 2019-09-09  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-win.c (tui_all_windows_info): Use ui_out.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 69bb5bdbaa..a75941867a 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -373,8 +373,11 @@ struct comp_unit_head
      This will be the first byte following the compilation unit header.  */
   cu_offset first_die_cu_offset;
 
-  /* 64-bit signature of this type unit - it is valid only for
-     UNIT_TYPE DW_UT_type.  */
+
+  /* 64-bit signature of this unit. For type units, it denotes the signature of
+     the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
+     Also used in DWARF 5, to denote the dwo id when the unit type is
+     DW_UT_skeleton or DW_UT_split_compile.  */
   ULONGEST signature;
 
   /* For types, offset in the type's DIE of the type defined by this TU.  */
@@ -1579,6 +1582,8 @@ static struct attribute *dwarf2_attr_no_follow (struct die_info *,
 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
                                        struct dwarf2_cu *cu);
 
+static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
+
 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
                                struct dwarf2_cu *cu);
 
@@ -1761,6 +1766,8 @@ static const char *dwarf_tag_name (unsigned int);
 
 static const char *dwarf_attr_name (unsigned int);
 
+static const char *dwarf_unit_type_name (int unit_type);
+
 static const char *dwarf_form_name (unsigned int);
 
 static const char *dwarf_bool_name (unsigned int);
@@ -6389,18 +6396,28 @@ read_comp_unit_head (struct comp_unit_head *cu_header,
       switch (cu_header->unit_type)
 	{
 	case DW_UT_compile:
+	case DW_UT_partial:
+	case DW_UT_skeleton:
+	case DW_UT_split_compile:
 	  if (section_kind != rcuh_kind::COMPILE)
 	    error (_("Dwarf Error: wrong unit_type in compilation unit header "
-		   "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
-		   filename);
+		   "(is %s, should be %s) [in module %s]"),
+		   dwarf_unit_type_name (cu_header->unit_type),
+		   dwarf_unit_type_name (DW_UT_type), filename);
 	  break;
 	case DW_UT_type:
+	case DW_UT_split_type:
 	  section_kind = rcuh_kind::TYPE;
 	  break;
 	default:
 	  error (_("Dwarf Error: wrong unit_type in compilation unit header "
-		 "(is %d, should be %d or %d) [in module %s]"),
-		 cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
+		 "(is %#04x, should be one of: %s, %s, %s, %s or %s) "
+		 "[in module %s]"), cu_header->unit_type,
+		 dwarf_unit_type_name (DW_UT_compile),
+		 dwarf_unit_type_name (DW_UT_skeleton),
+		 dwarf_unit_type_name (DW_UT_split_compile),
+		 dwarf_unit_type_name (DW_UT_type),
+		 dwarf_unit_type_name (DW_UT_split_type), filename);
 	}
 
       cu_header->addr_size = read_1_byte (abfd, info_ptr);
@@ -6421,13 +6438,19 @@ read_comp_unit_head (struct comp_unit_head *cu_header,
 		    _("read_comp_unit_head: dwarf from non elf file"));
   cu_header->signed_addr_p = signed_addr;
 
-  if (section_kind == rcuh_kind::TYPE)
-    {
-      LONGEST type_offset;
+  bool header_has_signature = section_kind == rcuh_kind::TYPE
+    || cu_header->unit_type == DW_UT_skeleton
+    || cu_header->unit_type == DW_UT_split_compile;
 
+  if (header_has_signature)
+    {
       cu_header->signature = read_8_bytes (abfd, info_ptr);
       info_ptr += 8;
+    }
 
+  if (section_kind == rcuh_kind::TYPE)
+    {
+      LONGEST type_offset;
       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
       info_ptr += bytes_read;
       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
@@ -7296,6 +7319,21 @@ read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
   return 1;
 }
 
+/* Return the signature of the compile unit, if found. In DWARF 4 and before,
+   the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
+   signature is part of the header.  */
+static gdb::optional<ULONGEST>
+lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
+{
+  if (cu->header.version >= 5)
+    return cu->header.signature;
+  struct attribute *attr;
+  attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
+  if (attr == nullptr)
+    return gdb::optional<ULONGEST> ();
+  return DW_UNSND (attr);
+}
+
 /* Subroutine of init_cutu_and_read_dies to simplify it.
    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
    Returns NULL if the specified DWO unit cannot be found.  */
@@ -7305,14 +7343,13 @@ lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
 		 struct die_info *comp_unit_die)
 {
   struct dwarf2_cu *cu = this_cu->cu;
-  ULONGEST signature;
   struct dwo_unit *dwo_unit;
   const char *comp_dir, *dwo_name;
 
   gdb_assert (cu != NULL);
 
   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
-  dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
+  dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
 
   if (this_cu->is_debug_types)
@@ -7322,21 +7359,17 @@ lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
       /* Since this_cu is the first member of struct signatured_type,
 	 we can go from a pointer to one to a pointer to the other.  */
       sig_type = (struct signatured_type *) this_cu;
-      signature = sig_type->signature;
       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
     }
   else
     {
-      struct attribute *attr;
-
-      attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
-      if (! attr)
+      gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
+      if (!signature.has_value ())
 	error (_("Dwarf Error: missing dwo_id for dwo_name %s"
 		 " [in module %s]"),
 	       dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
-      signature = DW_UNSND (attr);
       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
-				       signature);
+				       *signature);
     }
 
   return dwo_unit;
@@ -7448,7 +7481,6 @@ init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
   struct die_reader_specs reader;
   struct die_info *comp_unit_die;
   int has_children;
-  struct attribute *attr;
   struct signatured_type *sig_type = NULL;
   struct dwarf2_section_info *abbrev_section;
   /* Non-zero if CU currently points to a DWO file and we need to
@@ -7585,9 +7617,9 @@ init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
 
      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
      DWO CU, that this test will fail (the attribute will not be present).  */
-  attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
+  const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
   abbrev_table_up dwo_abbrev_table;
-  if (attr)
+  if (dwo_name != nullptr)
     {
       struct dwo_unit *dwo_unit;
       struct die_info *dwo_comp_unit_die;
@@ -11838,10 +11870,9 @@ create_dwo_cu_reader (const struct die_reader_specs *reader,
   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
   struct dwo_file *dwo_file = data->dwo_file;
   struct dwo_unit *dwo_unit = &data->dwo_unit;
-  struct attribute *attr;
 
-  attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
-  if (attr == NULL)
+  gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
+  if (!signature.has_value ())
     {
       complaint (_("Dwarf Error: debug entry at offset %s is missing"
 		   " its dwo_id [in module %s]"),
@@ -11850,7 +11881,7 @@ create_dwo_cu_reader (const struct die_reader_specs *reader,
     }
 
   dwo_unit->dwo_file = dwo_file;
-  dwo_unit->signature = DW_UNSND (attr);
+  dwo_unit->signature = *signature;
   dwo_unit->section = section;
   dwo_unit->sect_off = sect_off;
   dwo_unit->length = cu->per_cu->length;
@@ -20112,6 +20143,17 @@ dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *c
   return str;
 }
 
+/* Return the dwo name or NULL if not present. If present, it is in either
+   DW_AT_GNU_dwo_name or DW_AT_dwo_name atrribute.  */
+static const char *
+dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
+{
+  const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
+  if (dwo_name == nullptr)
+    dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
+  return dwo_name;
+}
+
 /* Return non-zero iff the attribute NAME is defined for the given DIE,
    and holds a non-zero value.  This function should only be used for
    DW_FORM_flag or DW_FORM_flag_present attributes.  */
@@ -22811,6 +22853,33 @@ dwarf_attr_name (unsigned attr)
   return name;
 }
 
+/* Convert a unit type to corresponding DW_UT name.  */
+
+static const char *
+dwarf_unit_type_name (int unit_type) {
+  switch (unit_type)
+    {
+      case 0x01:
+	return "DW_UT_compile (0x01)";
+      case 0x02:
+	return "DW_UT_type (0x02)";
+      case 0x03:
+	return "DW_UT_partial (0x03)";
+      case 0x04:
+	return "DW_UT_skeleton (0x04)";
+      case 0x05:
+	return "DW_UT_split_compile (0x05)";
+      case 0x06:
+	return "DW_UT_split_type (0x06)";
+      case 0x80:
+	return "DW_UT_lo_user (0x80)";
+      case 0xff:
+	return "DW_UT_hi_user (0xff)";
+      default:
+	return nullptr;
+    }
+}
+
 /* Convert a DWARF value form code into its string name.  */
 
 static const char *


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Enhance the disassembler so that it will reliably determine whether a reloc applies to the middle of the next insn.
@ 2019-09-10 15:02 gdb-buildbot
  2019-09-10 15:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 15:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aebcfb76fc165795e67917cb67cf985c4dfdc577 ***

commit aebcfb76fc165795e67917cb67cf985c4dfdc577
Author:     Nick Clifton <nickc@redhat.com>
AuthorDate: Tue Sep 10 15:20:58 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Tue Sep 10 15:20:58 2019 +0100

    Enhance the disassembler so that it will reliably determine whether a reloc applies to the middle of the next insn.
    
            PR 24907
    binutils* objdump.c (null_print): New function.
            (disassemble_bytes): Delete previous_octets local and replace with
            a test of the max_reloc_offset_into_insn field of the
            bfd_arch_info structure.  If a reloc is a potential match for the
            next insn, then perform a dummy disassembly in order to calculate
            its real length.
    
    bfd     * archures.c (bfd_arch_info_type): Add max_reloc_offset_into_insn
            field.
            (bfd_default_arch_struct): Initialise the new field.
            * bfd-in2.h: Regenerate.
            * cpu-aarch64.c: Initialise the new field.
            * cpu-alpha.c: Likewise.
            * cpu-arc.c: Likewise.
            * cpu-arm.c: Likewise.
            * cpu-avr.c: Likewise.
            * cpu-bfin.c: Likewise.
            * cpu-bpf.c: Likewise.
            * cpu-cr16.c: Likewise.
            * cpu-cr16c.c: Likewise.
            * cpu-cris.c: Likewise.
            * cpu-crx.c: Likewise.
            * cpu-csky.c: Likewise.
            * cpu-d10v.c: Likewise.
            * cpu-d30v.c: Likewise.
            * cpu-dlx.c: Likewise.
            * cpu-epiphany.c: Likewise.
            * cpu-fr30.c: Likewise.
            * cpu-frv.c: Likewise.
            * cpu-ft32.c: Likewise.
            * cpu-h8300.c: Likewise.
            * cpu-hppa.c: Likewise.
            * cpu-i386.c: Likewise.
            * cpu-ia64.c: Likewise.
            * cpu-iamcu.c: Likewise.
            * cpu-ip2k.c: Likewise.
            * cpu-iq2000.c: Likewise.
            * cpu-k1om.c: Likewise.
            * cpu-l1om.c: Likewise.
            * cpu-lm32.c: Likewise.
            * cpu-m10200.c: Likewise.
            * cpu-m10300.c: Likewise.
            * cpu-m32c.c: Likewise.
            * cpu-m32r.c: Likewise.
            * cpu-m68hc11.c: Likewise.
            * cpu-m68hc12.c: Likewise.
            * cpu-m68k.c: Likewise.
            * cpu-m9s12x.c: Likewise.
            * cpu-m9s12xg.c: Likewise.
            * cpu-mcore.c: Likewise.
            * cpu-mep.c: Likewise.
            * cpu-metag.c: Likewise.
            * cpu-microblaze.c: Likewise.
            * cpu-mips.c: Likewise.
            * cpu-mmix.c: Likewise.
            * cpu-moxie.c: Likewise.
            * cpu-msp430.c: Likewise.
            * cpu-mt.c: Likewise.
            * cpu-nds32.c: Likewise.
            * cpu-nfp.c: Likewise.
            * cpu-nios2.c: Likewise.
            * cpu-ns32k.c: Likewise.
            * cpu-or1k.c: Likewise.
            * cpu-pdp11.c: Likewise.
            * cpu-pj.c: Likewise.
            * cpu-plugin.c: Likewise.
            * cpu-powerpc.c: Likewise.
            * cpu-pru.c: Likewise.
            * cpu-riscv.c: Likewise.
            * cpu-rl78.c: Likewise.
            * cpu-rs6000.c: Likewise.
            * cpu-rx.c: Likewise.
            * cpu-s12z.c: Likewise.
            * cpu-s390.c: Likewise.
            * cpu-score.c: Likewise.
            * cpu-sh.c: Likewise.
            * cpu-sparc.c: Likewise.
            * cpu-spu.c: Likewise.
            * cpu-tic30.c: Likewise.
            * cpu-tic4x.c: Likewise.
            * cpu-tic54x.c: Likewise.
            * cpu-tic6x.c: Likewise.
            * cpu-tic80.c: Likewise.
            * cpu-tilegx.c: Likewise.
            * cpu-tilepro.c: Likewise.
            * cpu-v850.c: Likewise.
            * cpu-v850_rh850.c: Likewise.
            * cpu-vax.c: Likewise.
            * cpu-visium.c: Likewise.
            * cpu-wasm32.c: Likewise.
            * cpu-xc16x.c: Likewise.
            * cpu-xgate.c: Likewise.
            * cpu-xstormy16.c: Likewise.
            * cpu-xtensa.c: Likewise.
            * cpu-z80.c: Likewise.
            * cpu-z8k.c: Likewise.
    
    gas     * testsuite/gas/arm/pr24907.s: New test.
            * testsuite/gas/arm/pr24907.d: Expected disassembly.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index aca3c80a2b..8b6b843a6f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,96 @@
+2019-09-10  Nick Clifton  <nickc@redhat.com>
+
+	PR 24907
+	* archures.c (bfd_arch_info_type): Add max_reloc_offset_into_insn
+	field.
+	(bfd_default_arch_struct): Initialise the new field.
+	* bfd-in2.h: Regenerate.
+	* cpu-aarch64.c: Initialise the new field.
+	* cpu-alpha.c: Likewise.
+	* cpu-arc.c: Likewise.
+	* cpu-arm.c: Likewise.
+	* cpu-avr.c: Likewise.
+	* cpu-bfin.c: Likewise.
+	* cpu-bpf.c: Likewise.
+	* cpu-cr16.c: Likewise.
+	* cpu-cr16c.c: Likewise.
+	* cpu-cris.c: Likewise.
+	* cpu-crx.c: Likewise.
+	* cpu-csky.c: Likewise.
+	* cpu-d10v.c: Likewise.
+	* cpu-d30v.c: Likewise.
+	* cpu-dlx.c: Likewise.
+	* cpu-epiphany.c: Likewise.
+	* cpu-fr30.c: Likewise.
+	* cpu-frv.c: Likewise.
+	* cpu-ft32.c: Likewise.
+	* cpu-h8300.c: Likewise.
+	* cpu-hppa.c: Likewise.
+	* cpu-i386.c: Likewise.
+	* cpu-ia64.c: Likewise.
+	* cpu-iamcu.c: Likewise.
+	* cpu-ip2k.c: Likewise.
+	* cpu-iq2000.c: Likewise.
+	* cpu-k1om.c: Likewise.
+	* cpu-l1om.c: Likewise.
+	* cpu-lm32.c: Likewise.
+	* cpu-m10200.c: Likewise.
+	* cpu-m10300.c: Likewise.
+	* cpu-m32c.c: Likewise.
+	* cpu-m32r.c: Likewise.
+	* cpu-m68hc11.c: Likewise.
+	* cpu-m68hc12.c: Likewise.
+	* cpu-m68k.c: Likewise.
+	* cpu-m9s12x.c: Likewise.
+	* cpu-m9s12xg.c: Likewise.
+	* cpu-mcore.c: Likewise.
+	* cpu-mep.c: Likewise.
+	* cpu-metag.c: Likewise.
+	* cpu-microblaze.c: Likewise.
+	* cpu-mips.c: Likewise.
+	* cpu-mmix.c: Likewise.
+	* cpu-moxie.c: Likewise.
+	* cpu-msp430.c: Likewise.
+	* cpu-mt.c: Likewise.
+	* cpu-nds32.c: Likewise.
+	* cpu-nfp.c: Likewise.
+	* cpu-nios2.c: Likewise.
+	* cpu-ns32k.c: Likewise.
+	* cpu-or1k.c: Likewise.
+	* cpu-pdp11.c: Likewise.
+	* cpu-pj.c: Likewise.
+	* cpu-plugin.c: Likewise.
+	* cpu-powerpc.c: Likewise.
+	* cpu-pru.c: Likewise.
+	* cpu-riscv.c: Likewise.
+	* cpu-rl78.c: Likewise.
+	* cpu-rs6000.c: Likewise.
+	* cpu-rx.c: Likewise.
+	* cpu-s12z.c: Likewise.
+	* cpu-s390.c: Likewise.
+	* cpu-score.c: Likewise.
+	* cpu-sh.c: Likewise.
+	* cpu-sparc.c: Likewise.
+	* cpu-spu.c: Likewise.
+	* cpu-tic30.c: Likewise.
+	* cpu-tic4x.c: Likewise.
+	* cpu-tic54x.c: Likewise.
+	* cpu-tic6x.c: Likewise.
+	* cpu-tic80.c: Likewise.
+	* cpu-tilegx.c: Likewise.
+	* cpu-tilepro.c: Likewise.
+	* cpu-v850.c: Likewise.
+	* cpu-v850_rh850.c: Likewise.
+	* cpu-vax.c: Likewise.
+	* cpu-visium.c: Likewise.
+	* cpu-wasm32.c: Likewise.
+	* cpu-xc16x.c: Likewise.
+	* cpu-xgate.c: Likewise.
+	* cpu-xstormy16.c: Likewise.
+	* cpu-xtensa.c: Likewise.
+	* cpu-z80.c: Likewise.
+	* cpu-z8k.c: Likewise.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/bfd/archures.c b/bfd/archures.c
index 3465406213..02c8e4ec93 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -584,6 +584,16 @@ DESCRIPTION
 .		  bfd_boolean code);
 .
 .  const struct bfd_arch_info *next;
+.
+.  {* On some architectures the offset for a relocation can point into
+.     the middle of an instruction.  This field specifies the maximum
+.     offset such a relocation can have (in octets).  This affects the
+.     behaviour of the disassembler, since a value greater than zero
+.     means that it may need to disassemble an instruction twice, once
+.     to get its length and then a second time to display it.  If the
+.     value is negative then this has to be done for every single
+.     instruction, regardless of the offset of the reloc.  *}
+.  signed int max_reloc_offset_into_insn;
 .}
 .bfd_arch_info_type;
 .
@@ -929,12 +939,13 @@ DESCRIPTION
 .extern const bfd_arch_info_type bfd_default_arch_struct;
 */
 
-const bfd_arch_info_type bfd_default_arch_struct = {
+const bfd_arch_info_type bfd_default_arch_struct =
+{
   32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, TRUE,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
-  0,
+  0, 0
 };
 
 /*
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 7b1cfbcf1a..690ba9a6fd 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -2514,6 +2514,16 @@ typedef struct bfd_arch_info
                  bfd_boolean code);
 
   const struct bfd_arch_info *next;
+
+  /* On some architectures the offset for a relocation can point into
+     the middle of an instruction.  This field specifies the maximum
+     offset such a relocation can have (in octets).  This affects the
+     behaviour of the disassembler, since a value greater than zero
+     means that it may need to disassemble an instruction twice, once
+     to get its length and then a second time to display it.  If the
+     value is negative then this has to be done for every single
+     instruction, regardless of the offset of the reloc.  */
+  signed int max_reloc_offset_into_insn;
 }
 bfd_arch_info_type;
 
diff --git a/bfd/cpu-aarch64.c b/bfd/cpu-aarch64.c
index eed1c3d9dc..fbffb79b63 100644
--- a/bfd/cpu-aarch64.c
+++ b/bfd/cpu-aarch64.c
@@ -104,7 +104,7 @@ scan (const struct bfd_arch_info *info, const char *string)
 #define N(NUMBER, PRINT, WORDSIZE, DEFAULT, NEXT)		\
   { WORDSIZE, WORDSIZE, 8, bfd_arch_aarch64, NUMBER,		\
     "aarch64", PRINT, 4, DEFAULT, compatible, scan,		\
-    bfd_arch_default_fill, NEXT }
+      bfd_arch_default_fill, NEXT, 0 }
 
 static const bfd_arch_info_type bfd_aarch64_arch_ilp32 =
   N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", 32, FALSE, NULL);
diff --git a/bfd/cpu-alpha.c b/bfd/cpu-alpha.c
index 06ce01dd41..c4221d86bc 100644
--- a/bfd/cpu-alpha.c
+++ b/bfd/cpu-alpha.c
@@ -24,19 +24,20 @@
 
 #define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT) \
   {							\
-    BITS_WORD, /* bits in a word */			\
-    BITS_ADDR, /* bits in an address */			\
-    8,	/* 8 bits in a byte */				\
+    BITS_WORD, /* Bits in a word.  */			\
+    BITS_ADDR, /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
     bfd_arch_alpha,					\
     NUMBER,						\
     "alpha",						\
     PRINT,						\
-    3,							\
+    3,		/* Section alignment power. */		\
     DEFAULT,						\
     bfd_default_compatible,				\
     bfd_default_scan,					\
     bfd_arch_default_fill,				\
     NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 #define NN(index) (&arch_info_struct[index])
diff --git a/bfd/cpu-arc.c b/bfd/cpu-arc.c
index e6f102b4e7..906ca1d874 100644
--- a/bfd/cpu-arc.c
+++ b/bfd/cpu-arc.c
@@ -27,20 +27,21 @@ static const bfd_arch_info_type *
 arc_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
 
 #define ARC(mach, print_name, default_p, next) \
-{					\
-    32,	/* 32 bits in a word  */	\
-    32,	/* 32 bits in an address  */	\
-    8,	/* 8 bits in a byte  */		\
+  {					       \
+    32,	/* Bits in a word.  */		\
+    32,	/* Bits in an address.  */	\
+    8,	/* Bits in a byte.  */		\
     bfd_arch_arc,			\
     mach,				\
     "arc",				\
     print_name,				\
-    4, /* section alignment power  */	\
+    4, /* Section alignment power.  */	\
     default_p,				\
     arc_compatible,			\
     bfd_default_scan,			\
     bfd_arch_default_fill,		\
     next,				\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 static const bfd_arch_info_type arch_info_struct[] =
diff --git a/bfd/cpu-arm.c b/bfd/cpu-arm.c
index 8d70b84b8b..71a78daf11 100644
--- a/bfd/cpu-arm.c
+++ b/bfd/cpu-arm.c
@@ -221,7 +221,7 @@ scan (const struct bfd_arch_info *info, const char *string)
 
 #define N(number, print, default, next)  \
 {  32, 32, 8, bfd_arch_arm, number, "arm", print, 4, default, compatible, \
-   scan, bfd_arch_default_fill, next }
+    scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
diff --git a/bfd/cpu-avr.c b/bfd/cpu-avr.c
index a8b341ead8..621c48bba9 100644
--- a/bfd/cpu-avr.c
+++ b/bfd/cpu-avr.c
@@ -82,9 +82,9 @@ compatible (const bfd_arch_info_type * a,
 
 #define N(addr_bits, machine, print, default, next)		\
 {								\
-  8,				/* 8 bits in a word.  */	\
-  addr_bits,			/* bits in an address.  */	\
-  8,				/* 8 bits in a byte.  */	\
+  8,				/* Bits in a word.  */		\
+  addr_bits,			/* Bits in an address.  */	\
+  8,				/* Bits in a byte.  */		\
   bfd_arch_avr,							\
   machine,			/* Machine number.  */		\
   "avr",			/* Architecture name.   */	\
@@ -94,7 +94,8 @@ compatible (const bfd_arch_info_type * a,
   compatible,							\
   bfd_default_scan,						\
   bfd_arch_default_fill,					\
-  next								\
+  next,								\
+  0 /* Maximum offset of a reloc from the start of an insn.  */	\
 }
 
 static const bfd_arch_info_type arch_info_struct[] =
diff --git a/bfd/cpu-bfin.c b/bfd/cpu-bfin.c
index 51b170ac78..03f388e9b0 100644
--- a/bfd/cpu-bfin.c
+++ b/bfd/cpu-bfin.c
@@ -37,5 +37,6 @@ const bfd_arch_info_type bfd_bfin_arch =
     bfd_default_compatible,
     bfd_default_scan,
     bfd_arch_default_fill,
-    0,
+    NULL,
+    0 /* Maximum offset of a reloc from the start of an insn.  */
   };
diff --git a/bfd/cpu-bpf.c b/bfd/cpu-bpf.c
index 57fe7d7502..4d92ca4e4f 100644
--- a/bfd/cpu-bpf.c
+++ b/bfd/cpu-bpf.c
@@ -25,7 +25,7 @@
 
 const bfd_arch_info_type bfd_bpf_arch =
 {
-  64,				/* Bits per word */
+  64,				/* Bits per word.  */
   64,				/* Bits per address.  */
   8,				/* Bits per byte.  */
   bfd_arch_bpf,			/* Architecture.  */
@@ -37,5 +37,6 @@ const bfd_arch_info_type bfd_bpf_arch =
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-cr16.c b/bfd/cpu-cr16.c
index 04db29efb6..bd3bfb32b6 100644
--- a/bfd/cpu-cr16.c
+++ b/bfd/cpu-cr16.c
@@ -24,18 +24,19 @@
 
 
 const bfd_arch_info_type bfd_cr16_arch =
-  {
-    16,		      /* 16 bits in a word.  */
-    32,		      /* 32 bits in an address.  */
-    8,		      /*  8 bits in a byte.  */
-    bfd_arch_cr16,    /* enum bfd_architecture arch.  */
-    bfd_mach_cr16,
-    "cr16",	      /* Arch name.  */
-    "cr16",	      /* Printable name.  */
-    1,		      /* Unsigned int section alignment power.  */
-    TRUE,	      /* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+ 16,		      /* Bits in a word.  */
+ 32,		      /* Bits in an address.  */
+ 8,		      /* Bits in a byte.  */
+ bfd_arch_cr16,       /* Architecture number.  */
+ bfd_mach_cr16,
+ "cr16",	      /* Arch name.  */
+ "cr16",	      /* Printable name.  */
+ 1,		      /* Section alignment power.  */
+ TRUE,	      	      /* The one and only.  */
+ bfd_default_compatible,
+ bfd_default_scan,
+ bfd_arch_default_fill,
+ NULL,
+ 0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-cr16c.c b/bfd/cpu-cr16c.c
index b963b26579..ed4a818971 100644
--- a/bfd/cpu-cr16c.c
+++ b/bfd/cpu-cr16c.c
@@ -23,18 +23,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_cr16c_arch =
-  {
-    16,		/* 16 bits in a word.  */
-    32,		/* 32 bits in an address.  */
-    8,		/*  8 bits in a byte.  */
-    bfd_arch_cr16c,
-    bfd_mach_cr16c,
-    "cr16c",
-    "cr16c",
-    1,
-    TRUE,	/* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  16,		/* Bits in a word.  */
+  32,		/* Bits in an address.  */
+  8,		/* Bits in a byte.  */
+  bfd_arch_cr16c,
+  bfd_mach_cr16c,
+  "cr16c",
+  "cr16c",
+  1,
+  TRUE,		/* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-cris.c b/bfd/cpu-cris.c
index c3e404181e..c6b819f240 100644
--- a/bfd/cpu-cris.c
+++ b/bfd/cpu-cris.c
@@ -67,7 +67,7 @@ get_compatible (const bfd_arch_info_type *a,
 
 #define N(NUMBER, PRINT, NEXT)  \
  { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
-   get_compatible, bfd_default_scan, bfd_arch_default_fill, NEXT }
+     get_compatible, bfd_default_scan, bfd_arch_default_fill, NEXT, 0 }
 
 static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
  N (bfd_mach_cris_v10_v32, "cris:common_v10_v32", NULL);
@@ -97,8 +97,9 @@ const bfd_arch_info_type bfd_cris_arch =
   bfd_default_scan,		/* Check if a bfd_arch_info_type is a
 				   match.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  &bfd_cris_arch_v32		/* Pointer to next bfd_arch_info_type in
+  &bfd_cris_arch_v32,		/* Pointer to next bfd_arch_info_type in
 				   the same family.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
 
 /*
diff --git a/bfd/cpu-crx.c b/bfd/cpu-crx.c
index cc8420fd4b..d181edb56b 100644
--- a/bfd/cpu-crx.c
+++ b/bfd/cpu-crx.c
@@ -24,18 +24,19 @@
 
 
 const bfd_arch_info_type bfd_crx_arch =
-  {
-    16,		/* 16 bits in a word.  */
-    32,		/* 32 bits in an address.  */
-    8,		/*  8 bits in a byte.  */
-    bfd_arch_crx, /* enum bfd_architecture arch.  */
-    bfd_mach_crx,
-    "crx",	/* Arch name.  */
-    "crx",	/* Printable name.  */
-    1,		/* Unsigned int section alignment power.  */
-    TRUE,	/* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  16,		/* Bits in a word.  */
+  32,		/* Bits in an address.  */
+  8,		/* Bits in a byte.  */
+  bfd_arch_crx, /* Architecture number.  */
+  bfd_mach_crx,
+  "crx",	/* Arch name.  */
+  "crx",	/* Printable name.  */
+  1,		/* Section alignment power.  */
+  TRUE,		/* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-csky.c b/bfd/cpu-csky.c
index 1bde70e035..463dce564f 100644
--- a/bfd/cpu-csky.c
+++ b/bfd/cpu-csky.c
@@ -23,21 +23,22 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-#define N(NUMBER, PRINT, ISDEFAULT, NEXT)  \
-{                                                                      \
-  32,                     /* 32 bits in a word */                      \
-  32,                     /* 32 bits in an address */                  \
-  8,                      /* 8 bits in a byte */                       \
-  bfd_arch_csky,          /* Architecture */                           \
-  NUMBER,                 /* Machine number */                         \
-  "csky",                 /* Architecture name */                      \
-  PRINT,                  /* Printable name */                         \
-  3,                      /* Section align power */                    \
-  ISDEFAULT,              /* Is this the default architecture ? */     \
-  bfd_default_compatible, /* Architecture comparison function */       \
-  bfd_default_scan,       /* String to architecture conversion */      \
-  bfd_arch_default_fill,                                               \
-  NEXT                    /* Next in list */                           \
+#define N(NUMBER, PRINT, ISDEFAULT, NEXT)			        \
+{                                                                       \
+  32,                     /* Bits in a word.  */                        \
+  32,                     /* Bits in an address.  */                    \
+  8,                      /* Bits in a byte.  */                        \
+  bfd_arch_csky,          /* Architecture.  */                          \
+  NUMBER,                 /* Machine number.  */                        \
+  "csky",                 /* Architecture name.  */                     \
+  PRINT,                  /* Printable name.  */                        \
+  3,                      /* Section align power.  */                   \
+  ISDEFAULT,              /* Is this the default architecture ?  */	\
+  bfd_default_compatible, /* Architecture comparison function.  */	\
+  bfd_default_scan,       /* String to architecture conversion.  */	\
+  bfd_arch_default_fill,						\
+  NEXT,                   /* Next in list.  */				\
+  0 /* Maximum offset of a reloc from the start of an insn.  */		\
 }
 
 static const bfd_arch_info_type arch_info_struct[] =
diff --git a/bfd/cpu-d10v.c b/bfd/cpu-d10v.c
index b6ebe495a6..f78fe88435 100644
--- a/bfd/cpu-d10v.c
+++ b/bfd/cpu-d10v.c
@@ -23,53 +23,29 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    16,         /* Bits in a word.  */			\
+    18,         /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
+    bfd_arch_d10v,					\
+    NUMBER,						\
+    "d10v",						\
+    PRINT,						\
+    4,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 static const bfd_arch_info_type d10v_ts3_info =
-{
-  16,	/* 16 bits in a word.  */
-  18,	/* really 16 bits in an address, but code has 18 bit range.  */
-  8,	/* 8 bits in a byte.  */
-  bfd_arch_d10v,
-  bfd_mach_d10v_ts3,
-  "d10v",
-  "d10v:ts3",
-  4,	/* Section alignment power.  */
-  FALSE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  0,
-};
+  N (bfd_mach_d10v_ts3, "d10v:ts3", FALSE, NULL);
 
 static const bfd_arch_info_type d10v_ts2_info =
-{
-  16,
-  18,
-  8,
-  bfd_arch_d10v,
-  bfd_mach_d10v_ts2,
-  "d10v",
-  "d10v:ts2",
-  4,
-  FALSE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  & d10v_ts3_info,
-};
+  N (bfd_mach_d10v_ts2, "d10v:ts2", FALSE, & d10v_ts3_info);
 
 const bfd_arch_info_type bfd_d10v_arch =
-{
-  16,
-  18,
-  8,
-  bfd_arch_d10v,
-  bfd_mach_d10v,
-  "d10v",
-  "d10v",
-  4,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  & d10v_ts2_info,
-};
+  N (bfd_mach_d10v, "d10v", TRUE, & d10v_ts2_info);
diff --git a/bfd/cpu-d30v.c b/bfd/cpu-d30v.c
index 1e5f553c88..f987f1c4bf 100644
--- a/bfd/cpu-d30v.c
+++ b/bfd/cpu-d30v.c
@@ -25,17 +25,18 @@
 
 const bfd_arch_info_type bfd_d30v_arch =
 {
-    32,	/* Bits in a word.  */
-    32,	/* Bits in an address.  */
-    8,	/* Bits in a byte.  */
-    bfd_arch_d30v,
-    0,
-    "d30v",
-    "d30v",
-    4, /* Section alignment power.  */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  32,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_d30v,
+  0,
+  "d30v",
+  "d30v",
+  4, /* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-dlx.c b/bfd/cpu-dlx.c
index 3d3dd17ba7..445515c437 100644
--- a/bfd/cpu-dlx.c
+++ b/bfd/cpu-dlx.c
@@ -24,18 +24,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_dlx_arch =
-  {
-    32,	/* 32 bits in a word.  */
-    32,	/* 32 bits in an address.  */
-    8,	/* 8 bits in a byte.  */
-    bfd_arch_dlx,
-    0,	/* Only 1 machine.  */
-    "dlx",
-    "dlx",
-    4,
-    TRUE, /* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+{
+  32,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_dlx,
+  0,	/* Machine number.  */
+  "dlx",
+  "dlx",
+  4,
+  TRUE, /* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-epiphany.c b/bfd/cpu-epiphany.c
index 453337e69d..dace97483d 100644
--- a/bfd/cpu-epiphany.c
+++ b/bfd/cpu-epiphany.c
@@ -23,36 +23,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, PRINT, ALIGN, DEFAULT, NEXT)		\
+  {							\
+    32,         /* Bits in a word.  */			\
+    32,         /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
+    bfd_arch_epiphany,					\
+    NUMBER,						\
+    "epiphany",						\
+    PRINT,						\
+    ALIGN,	/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_epiphany16_arch =
-{
-  32,				/* Bits per word */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_epiphany,		/* Architecture.  */
-  bfd_mach_epiphany16,		/* Machine.  */
-  "epiphany",			/* Architecture name.  */
-  "epiphany16",			/* Machine name.  */
-  1,				/* Section align power.  */
-  FALSE,			/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
-};
+  N (bfd_mach_epiphany16, "epiphany16", 1, FALSE, NULL);
 
 const bfd_arch_info_type bfd_epiphany_arch =
-{
-  32,				/* Bits per word - not really true.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_epiphany,		/* Architecture.  */
-  bfd_mach_epiphany32,		/* Machine.  */
-  "epiphany",			/* Architecture name.  */
-  "epiphany32",			/* Machine name.  */
-  2,				/* Section align power.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  & bfd_epiphany16_arch	/* Next in list.  */
-};
+  N (bfd_mach_epiphany32, "epiphany32", 2, TRUE, & bfd_epiphany16_arch);
+
diff --git a/bfd/cpu-fr30.c b/bfd/cpu-fr30.c
index 8d4b5a01f0..28b7460d5d 100644
--- a/bfd/cpu-fr30.c
+++ b/bfd/cpu-fr30.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_fr30_arch =
 {
-  32,				/* bits per word */
-  32,				/* bits per address */
-  8,				/* bits per byte */
-  bfd_arch_fr30,		/* architecture */
-  bfd_mach_fr30,		/* machine */
-  "fr30",			/* architecture name */
-  "fr30",			/* printable name */
-  4,				/* section align power */
-  TRUE,				/* the default ? */
-  bfd_default_compatible,	/* architecture comparison fn */
-  bfd_default_scan,		/* string to architecture convert fn */
+  32,				/* Bits per word.  */
+  32,				/* Bits per address.  */
+  8,				/* Bits per byte.  */
+  bfd_arch_fr30,		/* Architecture.  */
+  bfd_mach_fr30,		/* Machine.  */
+  "fr30",			/* Architecture name.  */
+  "fr30",			/* Printable name.  */
+  4,				/* Section align power.  */
+  TRUE,				/* The default ?  */
+  bfd_default_compatible,	/* Architecture comparison fn.  */
+  bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* next in list */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-frv.c b/bfd/cpu-frv.c
index e4a15345f1..622258f0b9 100644
--- a/bfd/cpu-frv.c
+++ b/bfd/cpu-frv.c
@@ -24,19 +24,20 @@
 
 #define FRV_ARCH(MACHINE, NAME, DEFAULT, NEXT)				\
 {									\
-  32,				/* 32 bits in a word */			\
-  32,				/* 32 bits in an address */		\
-  8,				/* 8 bits in a byte */			\
-  bfd_arch_frv,			/* architecture */			\
-  MACHINE,			/* which machine */			\
-  "frv",			/* architecture name */			\
-  NAME,				/* machine name */			\
-  4,				/* default alignment */			\
-  DEFAULT,			/* is this the default? */		\
-  bfd_default_compatible,	/* architecture comparison fn */	\
-  bfd_default_scan,		/* string to architecture convert fn */	\
+  32,				/* Bits in a word.  */			\
+  32,				/* Bits in an address.  */		\
+  8,				/* Bits in a byte.  */			\
+  bfd_arch_frv,			/* Architecture number.  */		\
+  MACHINE,			/* Machine number.  */			\
+  "frv",			/* Architecture name.  */		\
+  NAME,				/* Machine name.  */			\
+  4,				/* Section alignment.  */		\
+  DEFAULT,			/* Is this the default?  */		\
+  bfd_default_compatible,	/* Architecture comparison fn.  */	\
+  bfd_default_scan,		/* String to architecture convert fn. */\
   bfd_arch_default_fill,	/* Default fill.  */			\
-  NEXT				/* next in list */			\
+  NEXT,				/* Next in list.  */			\
+  0 /* Maximum offset of a reloc from the start of an insn.  */		\
 }
 
 static const bfd_arch_info_type arch_info_300
diff --git a/bfd/cpu-ft32.c b/bfd/cpu-ft32.c
index 5b51b7abf2..3c33e3fdf0 100644
--- a/bfd/cpu-ft32.c
+++ b/bfd/cpu-ft32.c
@@ -22,54 +22,31 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,        /* Bits in a word.  */			\
+    32,        /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_ft32,					\
+    NUMBER,						\
+    "ft32",						\
+    PRINT,						\
+    2,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 
 static const bfd_arch_info_type arch_info_struct[] =
-  {
-    {
-      32,		/* 32 bits in a word.  */
-      32,		/* 32 bits in an address.  */
-      8,		/*  8 bits in a byte.  */
-      bfd_arch_ft32,	/* enum bfd_architecture arch.  */
-      bfd_mach_ft32,
-      "ft32",		/* Arch name.  */
-      "ft32",		/* Printable name.  */
-      2,		/* Unsigned int section alignment power.  */
-      FALSE,		/* The one and only.  */
-      bfd_default_compatible,
-      bfd_default_scan,
-      bfd_arch_default_fill,
-      &arch_info_struct[1],
-    },
-    {
-      32,		/* 32 bits in a word.  */
-      32,		/* 32 bits in an address.  */
-      8,		/*  8 bits in a byte.  */
-      bfd_arch_ft32,	/* enum bfd_architecture arch.  */
-      bfd_mach_ft32b,
-      "ft32b",		/* Arch name.  */
-      "ft32b",		/* Printable name.  */
-      2,		/* Unsigned int section alignment power.  */
-      FALSE,		/* The one and only.  */
-      bfd_default_compatible,
-      bfd_default_scan,
-      bfd_arch_default_fill,
-      0,
-    },
-  };
+{
+  N (bfd_mach_ft32, "ft32", FALSE, &arch_info_struct[1]),
+  N (bfd_mach_ft32b, "ft32b", FALSE, NULL)
+};
 
 const bfd_arch_info_type bfd_ft32_arch =
-  {
-    32,			/* 32 bits in a word.  */
-    32,			/* 32 bits in an address.  */
-    8,			/*  8 bits in a byte.  */
-    bfd_arch_ft32,	/* enum bfd_architecture arch.  */
-    bfd_mach_ft32,
-    "ft32",		/* Arch name.  */
-    "ft32",		/* Printable name.  */
-    2,			/* Unsigned int section alignment power.  */
-    TRUE,		/* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    arch_info_struct,
-  };
+  N (bfd_mach_ft32, "ft32", TRUE, arch_info_struct);
+
diff --git a/bfd/cpu-h8300.c b/bfd/cpu-h8300.c
index 6c4019e472..53dd4ec52b 100644
--- a/bfd/cpu-h8300.c
+++ b/bfd/cpu-h8300.c
@@ -113,124 +113,30 @@ compatible (const bfd_arch_info_type *in, const bfd_arch_info_type *out)
     return in;
 }
 
+#define N(word, addr, number, name, print, default, next)	  \
+  { word, addr, 8, bfd_arch_h8300, number, name, print, 1, default, \
+    compatible, h8300_scan, bfd_arch_default_fill, next, 0 }
+
 static const bfd_arch_info_type h8300sxn_info_struct =
-{
-  32,				/* 32 bits in a word */
-  16,				/* 16 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_h8300,
-  bfd_mach_h8300sxn,
-  "h8300sxn",			/* arch_name  */
-  "h8300sxn",			/* printable name */
-  1,
-  FALSE,			/* the default machine */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  0
-};
+  N (32, 16, bfd_mach_h8300sxn, "h8300sxn", "h8300sxn", FALSE, NULL);
 
 static const bfd_arch_info_type h8300sx_info_struct =
-{
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_h8300,
-  bfd_mach_h8300sx,
-  "h8300sx",			/* arch_name  */
-  "h8300sx",			/* printable name */
-  1,
-  FALSE,			/* the default machine */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  &h8300sxn_info_struct
-};
+  N (32, 32, bfd_mach_h8300sx, "h8300sx", "h8300sx", FALSE, &h8300sxn_info_struct);
 
 static const bfd_arch_info_type h8300sn_info_struct =
-{
-  32,				/* 32 bits in a word.  */
-  16,				/* 16 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_h8300,
-  bfd_mach_h8300sn,
-  "h8300sn",			/* Architecture name.  */
-  "h8300sn",			/* Printable name.  */
-  1,
-  FALSE,			/* The default machine.  */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  &h8300sx_info_struct
-};
+  N (32, 16, bfd_mach_h8300sn, "h8300sn", "h8300sn", FALSE, &h8300sx_info_struct);
 
 static const bfd_arch_info_type h8300hn_info_struct =
-{
-  32,				/* 32 bits in a word.  */
-  16,				/* 16 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_h8300,
-  bfd_mach_h8300hn,
-  "h8300hn",			/* Architecture name.  */
-  "h8300hn",			/* Printable name.  */
-  1,
-  FALSE,			/* The default machine.  */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  &h8300sn_info_struct
-};
+  N (32, 16, bfd_mach_h8300hn, "h8300hn", "h8300hn", FALSE, &h8300sn_info_struct);
 
 static const bfd_arch_info_type h8300s_info_struct =
-{
-  32,				/* 32 bits in a word.  */
-  32,				/* 32 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_h8300,
-  bfd_mach_h8300s,
-  "h8300s",			/* Architecture name.  */
-  "h8300s",			/* Printable name.  */
-  1,
-  FALSE,			/* The default machine.  */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  & h8300hn_info_struct
-};
+  N (32, 32, bfd_mach_h8300s, "h8300s", "h8300s", FALSE, & h8300hn_info_struct);
 
 static const bfd_arch_info_type h8300h_info_struct =
-{
-  32,				/* 32 bits in a word.  */
-  32,				/* 32 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_h8300,
-  bfd_mach_h8300h,
-  "h8300h",			/* Architecture name.  */
-  "h8300h",			/* Printable name.  */
-  1,
-  FALSE,			/* The default machine.  */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  &h8300s_info_struct
-};
+  N (32, 32, bfd_mach_h8300h, "h8300h", "h8300h", FALSE, &h8300s_info_struct);
 
 const bfd_arch_info_type bfd_h8300_arch =
-{
-  16,				/* 16 bits in a word.  */
-  16,				/* 16 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_h8300,
-  bfd_mach_h8300,
-  "h8300",			/* Architecture name.  */
-  "h8300",			/* Printable name.  */
-  1,
-  TRUE,				/* The default machine.  */
-  compatible,
-  h8300_scan,
-  bfd_arch_default_fill,
-  &h8300h_info_struct
-};
+  N (16, 16, bfd_mach_h8300, "h8300", "h8300", TRUE, &h8300h_info_struct);
 
 /* Pad the given address to 32 bits, converting 16-bit and 24-bit
    addresses into the values they would have had on a h8s target.  */
diff --git a/bfd/cpu-hppa.c b/bfd/cpu-hppa.c
index e144c11152..2bcc0312da 100644
--- a/bfd/cpu-hppa.c
+++ b/bfd/cpu-hppa.c
@@ -22,72 +22,35 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(BITS, NUMBER, PRINT, DEFAULT, NEXT) \
+  {							\
+    BITS,      /* Bits in a word.  */			\
+    BITS,      /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_hppa,					\
+    NUMBER,						\
+    "hppa",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
+
 static const bfd_arch_info_type bfd_hppa10_arch =
-{
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_hppa,
-  bfd_mach_hppa10,		/* By convention PA1.0 = 10 */
-  "hppa",
-  "hppa1.0",
-  3,
-  TRUE,				/* Unless we use 1.1 specific features */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  0,
-};
+  N (32, bfd_mach_hppa10, "hppa1.0", TRUE, NULL);
 
-/* PA2.0 in narrow mode */
+/* PA2.0 in narrow mode.  */
 static const bfd_arch_info_type bfd_hppa20_arch =
-{
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_hppa,
-  bfd_mach_hppa20,		/* By convention PA2.0 = 20 */
-  "hppa",
-  "hppa2.0",
-  3,
-  FALSE,			/* Unless we use 1.1 specific features */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  &bfd_hppa10_arch,
-};
+  N (32, bfd_mach_hppa20, "hppa2.0", FALSE, &bfd_hppa10_arch);
 
-/* PA2.0 in wide mode */
+/* PA2.0 in wide mode.  */
 static const bfd_arch_info_type bfd_hppa20w_arch =
-{
-  64,				/* 64 bits in a word */
-  64,				/* 64 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_hppa,
-  bfd_mach_hppa20w,		/* ??? How best to describe wide mode here?  */
-  "hppa",
-  "hppa2.0w",
-  3,
-  FALSE,			/* Unless we use 1.1 specific features */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  &bfd_hppa20_arch,
-};
+  N (64, bfd_mach_hppa20w, "hppa2.0w", FALSE, &bfd_hppa20_arch);
 
 const bfd_arch_info_type bfd_hppa_arch =
-{
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_hppa,
-  bfd_mach_hppa11,		/* By convention PA1.1 = 11 */
-  "hppa",
-  "hppa1.1",
-  3,
-  FALSE,			/* 1.1 specific features used */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  &bfd_hppa20w_arch,
-};
+  N (32, bfd_mach_hppa11, "hppa1.1", FALSE, &bfd_hppa20w_arch);
diff --git a/bfd/cpu-i386.c b/bfd/cpu-i386.c
index a865a66e12..5df6435519 100644
--- a/bfd/cpu-i386.c
+++ b/bfd/cpu-i386.c
@@ -130,173 +130,62 @@ bfd_arch_i386_onebyte_nop_fill (bfd_size_type count,
   return fill;
 }
 
+#define N(BITS, MACH, NAME, PRINT, DEF, FILL, NEXT)	\
+  { BITS, /* Bits in a word.  */		\
+    BITS, /* Bits in an address.  */		\
+    8,    /* Bits in a byte. */			\
+    bfd_arch_i386,				\
+    MACH, /* Machine number.  */		\
+    NAME,					\
+    PRINT,					\
+    3,   /* Section alignment power.  */	\
+    DEF, /* Default architecture version ?  */	\
+    bfd_i386_compatible,			\
+    bfd_default_scan,				\
+    FILL,					\
+    NEXT,					\
+    0 /* Maximum instruction length.  */	\
+  }
+
 
 static const bfd_arch_info_type bfd_x64_32_nacl_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x64_32_nacl,
-  "i386",
-  "i386:x64-32:nacl",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_onebyte_nop_fill,
-  NULL
-};
+  N (64, bfd_mach_x64_32_nacl, "i386", "i386:x64-32:nacl",
+     FALSE, bfd_arch_i386_onebyte_nop_fill, NULL);
 
 static const bfd_arch_info_type bfd_x86_64_nacl_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x86_64_nacl,
-  "i386",
-  "i386:x86-64:nacl",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_onebyte_nop_fill,
-  &bfd_x64_32_nacl_arch
-};
+  N (64, bfd_mach_x86_64_nacl, "i386", "i386:x86-64:nacl",
+     FALSE, bfd_arch_i386_onebyte_nop_fill, &bfd_x64_32_nacl_arch);
 
 const bfd_arch_info_type bfd_i386_nacl_arch =
-{
-  32,	/* 32 bits in a word */
-  32,	/* 32 bits in an address */
-  8,	/* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_i386_i386_nacl,
-  "i386",
-  "i386:nacl",
-  3,
-  TRUE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_onebyte_nop_fill,
-  &bfd_x86_64_nacl_arch
-};
+  N (32, bfd_mach_i386_i386_nacl, "i386", "i386:nacl",
+     TRUE, bfd_arch_i386_onebyte_nop_fill, &bfd_x86_64_nacl_arch);
+
 
 static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x64_32_intel_syntax,
-  "i386:intel",
-  "i386:x64-32:intel",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_long_nop_fill,
-  &bfd_i386_nacl_arch
-};
+  N (64, bfd_mach_x64_32_intel_syntax, "i386:intel", "i386:x64-32:intel",
+     FALSE, bfd_arch_i386_long_nop_fill, &bfd_i386_nacl_arch);
 
 static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x86_64_intel_syntax,
-  "i386:intel",
-  "i386:x86-64:intel",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_long_nop_fill,
-  &bfd_x64_32_arch_intel_syntax,
-};
+  N (64, bfd_mach_x86_64_intel_syntax, "i386:intel", "i386:x86-64:intel",
+     FALSE, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch_intel_syntax);
 
 static const bfd_arch_info_type bfd_i386_arch_intel_syntax =
-{
-  32,	/* 32 bits in a word */
-  32,	/* 32 bits in an address */
-  8,	/* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_i386_i386_intel_syntax,
-  "i386:intel",
-  "i386:intel",
-  3,
-  TRUE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_x86_64_arch_intel_syntax
-};
+  N (32, bfd_mach_i386_i386_intel_syntax, "i386:intel", "i386:intel",
+     TRUE, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch_intel_syntax);
+
 
 static const bfd_arch_info_type i8086_arch =
-{
-  32,	/* 32 bits in a word */
-  32,	/* 32 bits in an address (well, not really) */
-  8,	/* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_i386_i8086,
-  "i8086",
-  "i8086",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_i386_arch_intel_syntax
-};
+  N (32, bfd_mach_i386_i8086, "i8086", "i8086",
+     FALSE, bfd_arch_i386_short_nop_fill, &bfd_i386_arch_intel_syntax);
 
 static const bfd_arch_info_type bfd_x64_32_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x64_32,
-  "i386",
-  "i386:x64-32",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_long_nop_fill,
-  &i8086_arch
-};
+  N (64, bfd_mach_x64_32, "i386", "i386:x64-32",
+     FALSE, bfd_arch_i386_long_nop_fill, &i8086_arch);
 
 static const bfd_arch_info_type bfd_x86_64_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_x86_64,
-  "i386",
-  "i386:x86-64",
-  3,
-  FALSE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_long_nop_fill,
-  &bfd_x64_32_arch
-};
+  N (64, bfd_mach_x86_64, "i386", "i386:x86-64",
+     FALSE, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch);
 
 const bfd_arch_info_type bfd_i386_arch =
-{
-  32,	/* 32 bits in a word */
-  32,	/* 32 bits in an address */
-  8,	/* 8 bits in a byte */
-  bfd_arch_i386,
-  bfd_mach_i386_i386,
-  "i386",
-  "i386",
-  3,
-  TRUE,
-  bfd_i386_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_x86_64_arch
-};
+  N (32, bfd_mach_i386_i386, "i386", "i386",
+     TRUE, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch);
diff --git a/bfd/cpu-ia64.c b/bfd/cpu-ia64.c
index 93e8cc001a..300007ade6 100644
--- a/bfd/cpu-ia64.c
+++ b/bfd/cpu-ia64.c
@@ -23,38 +23,28 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT) \
+  {							\
+    64,        /* Bits in a word.  */			\
+    BITS_ADDR, /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_ia64,					\
+    NUMBER,						\
+    "ia64",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_ia64_elf32_arch =
-  {
-    64,	/* 64 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_ia64,
-    bfd_mach_ia64_elf32,
-    "ia64",
-    "ia64-elf32",
-    3,	/* log2 of section alignment */
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+  N (32, bfd_mach_ia64_elf32, "ia64-elf32", FALSE, NULL);
 
 const bfd_arch_info_type bfd_ia64_arch =
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_ia64,
-    bfd_mach_ia64_elf64,
-    "ia64",
-    "ia64-elf64",
-    3,	/* log2 of section alignment */
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_ia64_elf32_arch,
-  };
+  N (64, bfd_mach_ia64_elf64, "ia64-elf64", TRUE, &bfd_ia64_elf32_arch);
 
 #include "cpu-ia64-opc.c"
diff --git a/bfd/cpu-iamcu.c b/bfd/cpu-iamcu.c
index 4b315d4475..6630a7a662 100644
--- a/bfd/cpu-iamcu.c
+++ b/bfd/cpu-iamcu.c
@@ -25,36 +25,14 @@
 extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
 					    bfd_boolean);
 
+#define N(number, name, print, next)			     \
+  { 32, 32, 8, bfd_arch_iamcu, number, name, print, 3, TRUE, \
+    bfd_default_compatible, bfd_default_scan,		     \
+    bfd_arch_i386_short_nop_fill, next, 0 }
+
 static const bfd_arch_info_type bfd_iamcu_arch_intel_syntax =
-{
-  32, /* 32 bits in a word */
-  32, /* 32 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_iamcu,
-  bfd_mach_i386_iamcu_intel_syntax,
-  "iamcu:intel",
-  "iamcu:intel",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  0
-};
+  N (bfd_mach_i386_iamcu_intel_syntax, "iamcu:intel", "iamcu:intel", NULL);
 
 const bfd_arch_info_type bfd_iamcu_arch =
-{
-  32, /* 32 bits in a word */
-  32, /* 32 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_iamcu,
-  bfd_mach_i386_iamcu,
-  "iamcu",
-  "iamcu",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_iamcu_arch_intel_syntax
-};
+  N (bfd_mach_i386_iamcu, "iamcu", "iamcu", &bfd_iamcu_arch_intel_syntax);
+
diff --git a/bfd/cpu-ip2k.c b/bfd/cpu-ip2k.c
index 68e3a34ba2..217229dfd1 100644
--- a/bfd/cpu-ip2k.c
+++ b/bfd/cpu-ip2k.c
@@ -22,36 +22,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,         /* Bits in a word.  */			\
+    16,         /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
+    bfd_arch_ip2k,					\
+    NUMBER,						\
+    "ip2k",						\
+    PRINT,						\
+    1,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_ip2k_nonext_arch =
-{
-  32,				/* Bits per word - not really true.  */
-  16,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_ip2k,		/* Architecture.  */
-  bfd_mach_ip2022,		/* Machine.  */
-  "ip2k",			/* Architecture name.  */
-  "ip2022",			/* Machine name.  */
-  1,				/* Section align power.  */
-  FALSE,			/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
-};
+  N (bfd_mach_ip2022, "ip2022", FALSE, NULL);
 
 const bfd_arch_info_type bfd_ip2k_arch =
-{
-  32,				/* Bits per word - not really true.  */
-  16,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_ip2k,		/* Architecture.  */
-  bfd_mach_ip2022ext,		/* Machine.  */
-  "ip2k",			/* Architecture name.  */
-  "ip2022ext",			/* Machine name.  */
-  1,				/* Section align power.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  & bfd_ip2k_nonext_arch	/* Next in list.  */
-};
+  N (bfd_mach_ip2022ext, "ip2022ext", TRUE, & bfd_ip2k_nonext_arch);
+
diff --git a/bfd/cpu-iq2000.c b/bfd/cpu-iq2000.c
index c5f5c1a17f..a8d09478bb 100644
--- a/bfd/cpu-iq2000.c
+++ b/bfd/cpu-iq2000.c
@@ -22,38 +22,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-static const bfd_arch_info_type arch_info_struct[] =
-{
-  {
-    32,				/* bits per word */
-    32,				/* bits per address */
-    8,				/* bits per byte */
-    bfd_arch_iq2000,		/* architecture */
-    bfd_mach_iq10,		/* machine */
-    "iq2000",			/* architecture name */
-    "iq10",			/* printable name */
-    3,				/* section align power */
-    FALSE,			/* the default ? */
-    bfd_default_compatible,	/* architecture comparison fn */
-    bfd_default_scan,		/* string to architecture convert fn */
-    bfd_arch_default_fill,	/* Default fill.  */
-    NULL			/* next in list */
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,         /* Bits in a word.  */			\
+    32,         /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
+    bfd_arch_iq2000,					\
+    NUMBER,						\
+    "iq2000",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
-};
+
+static const bfd_arch_info_type arch_info_struct =
+  N (bfd_mach_iq10, "iq10", FALSE, NULL);
 
 const bfd_arch_info_type bfd_iq2000_arch =
-{
-  32,				/* bits per word */
-  32,				/* bits per address */
-  8,				/* bits per byte */
-  bfd_arch_iq2000,		/* architecture */
-  bfd_mach_iq2000,		/* machine */
-  "iq2000",			/* architecture name */
-  "iq2000",			/* printable name */
-  3,				/* section align power */
-  TRUE,				/* the default ? */
-  bfd_default_compatible,	/* architecture comparison fn */
-  bfd_default_scan,		/* string to architecture convert fn */
-  bfd_arch_default_fill,	/* Default fill.  */
-  &arch_info_struct[0],		/* next in list */
-};
+  N (bfd_mach_iq2000, "iq2000", TRUE, &arch_info_struct);
+
diff --git a/bfd/cpu-k1om.c b/bfd/cpu-k1om.c
index 927bab6f2c..f5bcec168d 100644
--- a/bfd/cpu-k1om.c
+++ b/bfd/cpu-k1om.c
@@ -25,36 +25,14 @@
 extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
 					    bfd_boolean);
 
+#define N(number, name, print, next)			     \
+  { 64, 64, 8, bfd_arch_k1om, number, name, print, 3, TRUE, \
+    bfd_default_compatible, bfd_default_scan,		     \
+    bfd_arch_i386_short_nop_fill, next, 9 }
+
 static const bfd_arch_info_type bfd_k1om_arch_intel_syntax =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_k1om,
-  bfd_mach_k1om_intel_syntax,
-  "k1om:intel",
-  "k1om:intel",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  0
-};
+  N (bfd_mach_k1om_intel_syntax, "k1om:intel", "k1om:intel", NULL);
 
 const bfd_arch_info_type bfd_k1om_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_k1om,
-  bfd_mach_k1om,
-  "k1om",
-  "k1om",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_k1om_arch_intel_syntax
-};
+  N (bfd_mach_k1om, "k1om", "k1om", &bfd_k1om_arch_intel_syntax);
+
diff --git a/bfd/cpu-l1om.c b/bfd/cpu-l1om.c
index e32400eb97..063a5aa1e7 100644
--- a/bfd/cpu-l1om.c
+++ b/bfd/cpu-l1om.c
@@ -25,36 +25,13 @@
 extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
 					    bfd_boolean);
 
+#define N(number, name, print, next)			     \
+  { 64, 64, 8, bfd_arch_l1om, number, name, print, 3, TRUE, \
+    bfd_default_compatible, bfd_default_scan,		     \
+    bfd_arch_i386_short_nop_fill, next, 0 }
+
 static const bfd_arch_info_type bfd_l1om_arch_intel_syntax =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_l1om,
-  bfd_mach_l1om_intel_syntax,
-  "l1om:intel",
-  "l1om:intel",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  0
-};
+  N (bfd_mach_l1om_intel_syntax, "l1om:intel", "l1om:intel", NULL);
 
 const bfd_arch_info_type bfd_l1om_arch =
-{
-  64, /* 64 bits in a word */
-  64, /* 64 bits in an address */
-  8,  /* 8 bits in a byte */
-  bfd_arch_l1om,
-  bfd_mach_l1om,
-  "l1om",
-  "l1om",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_i386_short_nop_fill,
-  &bfd_l1om_arch_intel_syntax
-};
+  N (bfd_mach_l1om, "l1om", "l1om", &bfd_l1om_arch_intel_syntax);
diff --git a/bfd/cpu-lm32.c b/bfd/cpu-lm32.c
index 41e3dc9348..9711e0654e 100644
--- a/bfd/cpu-lm32.c
+++ b/bfd/cpu-lm32.c
@@ -25,17 +25,18 @@
 
 const bfd_arch_info_type bfd_lm32_arch =
 {
-    32,				  /* Bits in word.  */
-    32,				  /* Bits in address.  */
-    8,				  /* Bits in byte.  */
-    bfd_arch_lm32,		  /* Enum bfd_architecture.  */
-    bfd_mach_lm32,		  /* Machine number.  */
-    "lm32",			  /* Architecture name.  */
-    "lm32",			  /* Printable name.  */
-    4,				  /* Alignment.  */
-    TRUE,			  /* Is this the default machine for the target.  */
-    bfd_default_compatible,	  /* Function callback to test if two files have compatible machines.  */
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    NULL			  /* Next.  */
+  32,			  /* Bits in word.  */
+  32,			  /* Bits in address.  */
+  8,			  /* Bits in byte.  */
+  bfd_arch_lm32,	  /* Enum bfd_architecture.  */
+  bfd_mach_lm32,	  /* Machine number.  */
+  "lm32",		  /* Architecture name.  */
+  "lm32",		  /* Printable name.  */
+  4,			  /* Alignment.  */
+  TRUE,			  /* Is this the default machine for the target.  */
+  bfd_default_compatible, /* Function callback to test if two files have compatible machines.  */
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,			  /* Next.  */
+  0 			  /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-m10200.c b/bfd/cpu-m10200.c
index f546764a9e..96faeb9c96 100644
--- a/bfd/cpu-m10200.c
+++ b/bfd/cpu-m10200.c
@@ -23,18 +23,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_mn10200_arch =
-  {
-    16, /* 16 bits in a word */
-    24, /* 16 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_mn10200,
-    200,
-    "mn10200",
-    "mn10200",
-    2,
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  16, /* Bits in a word.  */
+  24, /* Bits in an address.  */
+  8,  /* Bits in a byte.  */
+  bfd_arch_mn10200,
+  200,
+  "mn10200",
+  "mn10200",
+  2,
+  TRUE,   /* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-m10300.c b/bfd/cpu-m10300.c
index b52c37eb6d..2681b71edd 100644
--- a/bfd/cpu-m10300.c
+++ b/bfd/cpu-m10300.c
@@ -22,53 +22,29 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, NAME, PRINT, DEFAULT, NEXT)		\
+  {							\
+    32,         /* Bits in a word.  */			\
+    32,         /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
+    bfd_arch_mn10300,					\
+    NUMBER,						\
+    NAME,						\
+    PRINT,						\
+    2,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_am33_2_arch =
-  {
-    32, /* 32 bits in a word */
-    32, /* 32 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_mn10300,
-    332,
-    "am33_2",
-    "am33-2",
-    2,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+  N (bfd_mach_am33_2, "am33_2", "am33-2", FALSE, NULL);
 
 const bfd_arch_info_type bfd_am33_arch =
-  {
-    32, /* 32 bits in a word */
-    32, /* 32 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_mn10300,
-    330,
-    "am33",
-    "am33",
-    2,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_am33_2_arch,
-  };
+  N (bfd_mach_am33, "am33", "am33", FALSE, &bfd_am33_2_arch);
 
 const bfd_arch_info_type bfd_mn10300_arch =
-  {
-    32, /* 32 bits in a word */
-    32, /* 32 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_mn10300,
-    300,
-    "mn10300",
-    "mn10300",
-    2,
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_am33_arch,
-  };
+  N (bfd_mach_mn10300, "mn10300", "mn10300", TRUE, &bfd_am33_arch);
diff --git a/bfd/cpu-m32c.c b/bfd/cpu-m32c.c
index 2e7de137f1..86e6b783d5 100644
--- a/bfd/cpu-m32c.c
+++ b/bfd/cpu-m32c.c
@@ -35,38 +35,13 @@ m32c_scan (const bfd_arch_info_type * info, const char * string)
   return bfd_default_scan (info, string);
 }
 
-static const bfd_arch_info_type arch_info_struct[] =
-{
-  {
-    32,				/* bits per word */
-    32,				/* bits per address */
-    8,				/* bits per byte */
-    bfd_arch_m32c,		/* architecture */
-    bfd_mach_m32c,		/* machine */
-    "m32c",			/* architecture name */
-    "m32c",			/* printable name */
-    3,				/* section align power */
-    FALSE,			/* the default ? */
-    bfd_default_compatible,	/* architecture comparison fn */
-    m32c_scan,			/* string to architecture convert fn */
-    bfd_arch_default_fill,	/* Default fill.  */
-    NULL			/* next in list */
-  },
-};
+#define N(number, print, align, default, next)			   \
+{ 32, 32, 8, bfd_arch_m32c, number, "m32c", print, align, default, \
+  bfd_default_compatible, m32c_scan, bfd_arch_default_fill, next, 0 }
+
+static const bfd_arch_info_type arch_info_struct =
+  N (bfd_mach_m32c, "m32c", 3, FALSE, NULL);
 
 const bfd_arch_info_type bfd_m32c_arch =
-{
-  32,				/* Bits per word.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_m32c,		/* Architecture.  */
-  bfd_mach_m16c,		/* Machine.  */
-  "m32c",			/* Architecture name.  */
-  "m16c",			/* Printable name.  */
-  4,				/* Section align power.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  m32c_scan,			/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  &arch_info_struct[0],		/* Next in list.  */
-};
+  N (bfd_mach_m16c, "m16c", 4, TRUE, &arch_info_struct);
+
diff --git a/bfd/cpu-m32r.c b/bfd/cpu-m32r.c
index 085fd4eb2c..c911d23865 100644
--- a/bfd/cpu-m32r.c
+++ b/bfd/cpu-m32r.c
@@ -23,8 +23,8 @@
 #include "libbfd.h"
 
 #define N(number, print, default, next)  \
-{  32, 32, 8, bfd_arch_m32r, number, "m32r", print, 4, default, \
-     bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next }
+{ 32, 32, 8, bfd_arch_m32r, number, "m32r", print, 4, default, \
+  bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 #define M32R2_NEXT   & arch_info_struct [1]
 #define NEXT	     & arch_info_struct [0]
diff --git a/bfd/cpu-m68hc11.c b/bfd/cpu-m68hc11.c
index 4bb7cd475c..23841f88d8 100644
--- a/bfd/cpu-m68hc11.c
+++ b/bfd/cpu-m68hc11.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_m68hc11_arch =
 {
-    16,	/* 16 bits in a word */
-    16,	/* 16 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_m68hc11,
-    0,
-    "m68hc11",
-    "m68hc11",
-    4, /* section alignment power */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  16,	/* Bits in a word.  */
+  16,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_m68hc11,
+  0,
+  "m68hc11",
+  "m68hc11",
+  4, /* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-m68hc12.c b/bfd/cpu-m68hc12.c
index 4d199f2541..15b41c75b7 100644
--- a/bfd/cpu-m68hc12.c
+++ b/bfd/cpu-m68hc12.c
@@ -22,36 +22,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    16,        /* Bits in a word.  */			\
+    32,        /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_m68hc12,					\
+    NUMBER,						\
+    "m68hc12",						\
+    PRINT,						\
+    4,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_m68hc12s_arch =
-{
-    16,	/* 16 bits in a word */
-    32,	/* 16 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_m68hc12,
-    bfd_mach_m6812s,
-    "m68hc12:HCS12",
-    "m68hc12",
-    4, /* section alignment power */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-};
+  N (bfd_mach_m6812s, "m68hc12:HCS12", FALSE, NULL);
 
 const bfd_arch_info_type bfd_m68hc12_arch =
-{
-    16,	/* 16 bits in a word */
-    32,	/* 16 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_m68hc12,
-    0,
-    "m68hc12",
-    "m68hc12",
-    4, /* section alignment power */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_m68hc12s_arch,
-};
+  N (bfd_mach_m6812_default, "m68hc12", TRUE, &bfd_m68hc12s_arch);
+
diff --git a/bfd/cpu-m68k.c b/bfd/cpu-m68k.c
index d42f3b8417..b3d3358ede 100644
--- a/bfd/cpu-m68k.c
+++ b/bfd/cpu-m68k.c
@@ -30,7 +30,7 @@ bfd_m68k_compatible (const bfd_arch_info_type *a,
 
 #define N(name, print,d,next)  \
 {  32, 32, 8, bfd_arch_m68k, name, "m68k",print,2,d,bfd_m68k_compatible, \
-   bfd_default_scan, bfd_arch_default_fill, next, }
+   bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type arch_info_struct[] =
   {
diff --git a/bfd/cpu-m9s12x.c b/bfd/cpu-m9s12x.c
index e6fbb29f5b..4cd4ba1044 100644
--- a/bfd/cpu-m9s12x.c
+++ b/bfd/cpu-m9s12x.c
@@ -24,18 +24,19 @@
 
 const bfd_arch_info_type bfd_m9s12x_arch =
 {
-    16,	/* 16 bits in a word.  */
-    32,	/* 16 bits in an address.  */
-    8,	/* 8 bits in a byte.  */
-    bfd_arch_m9s12x,
-    0,
-    "m9s12x",
-    "m9s12x",
-    4, /* Section alignment power.  */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  16,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_m9s12x,
+  0,
+  "m9s12x",
+  "m9s12x",
+  4,    /* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0     /* Maximum offset of a reloc from the start of an insn.  */
 };
 
diff --git a/bfd/cpu-m9s12xg.c b/bfd/cpu-m9s12xg.c
index 7e9298c933..91a4822d1d 100644
--- a/bfd/cpu-m9s12xg.c
+++ b/bfd/cpu-m9s12xg.c
@@ -24,18 +24,19 @@
 
 const bfd_arch_info_type bfd_m9s12xg_arch =
 {
-    16,	/* 16 bits in a word.  */
-    32,	/* 16 bits in an address.  */
-    8,	/* 8 bits in a byte.  */
-    bfd_arch_m9s12xg,
-    0,
-    "m9s12xg",
-    "m9s12xg",
-    4, /* Section alignment power.  */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  16,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_m9s12xg,
+  0,
+  "m9s12xg",
+  "m9s12xg",
+  4,    /* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0    /* Maximum offset of a reloc from the start of an insn.  */
 };
 
diff --git a/bfd/cpu-mcore.c b/bfd/cpu-mcore.c
index f4ab528dc8..36c0b63e77 100644
--- a/bfd/cpu-mcore.c
+++ b/bfd/cpu-mcore.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_mcore_arch =
 {
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
-  bfd_arch_mcore,		/* Architecture */
-  0,				/* Machine number - 0 for now */
-  "MCore",			/* Architecture name */
-  "MCore",			/* Printable name */
-  3,				/* Section align power */
-  TRUE,				/* Is this the default architecture ? */
-  bfd_default_compatible,	/* Architecture comparison function */
-  bfd_default_scan,		/* String to architecture conversion */
+  32,				/* Bits in a word.  */
+  32,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
+  bfd_arch_mcore,		/* Architecture number.  */
+  0,				/* Machine number - 0 for now.  */
+  "MCore",			/* Architecture name.  */
+  "MCore",			/* Machine name.  */
+  3,				/* Section align power.  */
+  TRUE,				/* Is this the default architecture ?  */
+  bfd_default_compatible,	/* Architecture comparison function.  */
+  bfd_default_scan,		/* String to architecture conversion.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list */
+  NULL,				/* Next in list */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-mep.c b/bfd/cpu-mep.c
index 0e59066296..cc10c662ea 100644
--- a/bfd/cpu-mep.c
+++ b/bfd/cpu-mep.c
@@ -22,8 +22,8 @@
 #include "libbfd.h"
 
 #define MA(x, n, def, y) { 32, 32, 8, bfd_arch_mep, x, "mep", n, \
-	2, def, bfd_default_compatible, bfd_default_scan, \
-	bfd_arch_default_fill, y }
+			   2, def, bfd_default_compatible, bfd_default_scan, \
+			   bfd_arch_default_fill, y, 0 }
 
 static const bfd_arch_info_type bfd_c5_arch = MA (bfd_mach_mep_c5, "c5", FALSE, NULL);
 static const bfd_arch_info_type bfd_h1_arch = MA (bfd_mach_mep_h1, "h1", FALSE, & bfd_c5_arch);
diff --git a/bfd/cpu-metag.c b/bfd/cpu-metag.c
index 3ce116f58a..60805b808c 100644
--- a/bfd/cpu-metag.c
+++ b/bfd/cpu-metag.c
@@ -37,5 +37,6 @@ const bfd_arch_info_type bfd_metag_arch =
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-microblaze.c b/bfd/cpu-microblaze.c
index 9bc2eb3de9..4e05d73f01 100644
--- a/bfd/cpu-microblaze.c
+++ b/bfd/cpu-microblaze.c
@@ -25,10 +25,10 @@
 
 const bfd_arch_info_type bfd_microblaze_arch =
 {
-  32,				/* 32 bits in a word.  */
-  32,				/* 32 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_microblaze,		/* Architecture.  */
+  32,				/* Bits in a word.  */
+  32,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
+  bfd_arch_microblaze,		/* Architecture number.  */
   0,				/* Machine number - 0 for now.  */
   "microblaze",			/* Architecture name.  */
   "MicroBlaze",			/* Printable name.  */
@@ -37,5 +37,6 @@ const bfd_arch_info_type bfd_microblaze_arch =
   bfd_default_compatible,	/* Architecture comparison function.  */
   bfd_default_scan,		/* String to architecture conversion.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-mips.c b/bfd/cpu-mips.c
index b359491305..15adcd4e2c 100644
--- a/bfd/cpu-mips.c
+++ b/bfd/cpu-mips.c
@@ -43,9 +43,9 @@ mips_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
 
 #define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)		\
   {							\
-    BITS_WORD, /*  bits in a word */			\
-    BITS_ADDR, /* bits in an address */			\
-    8,	/* 8 bits in a byte */				\
+    BITS_WORD,  /* Bits in a word.  */			\
+    BITS_ADDR,  /* Bits in an address.  */		\
+    8,	        /* Bits in a byte.  */			\
     bfd_arch_mips,					\
     NUMBER,						\
     "mips",						\
@@ -56,6 +56,7 @@ mips_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
     bfd_default_scan,					\
     bfd_arch_default_fill,				\
     NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 enum
@@ -150,19 +151,19 @@ static const bfd_arch_info_type arch_info_struct[] =
   N (64, 64, bfd_mach_mipsisa64r5,"mips:isa64r5", FALSE, NN(I_mipsisa64r5)),
   N (64, 64, bfd_mach_mipsisa64r6,"mips:isa64r6", FALSE, NN(I_mipsisa64r6)),
   N (64, 64, bfd_mach_mips_sb1, "mips:sb1",	  FALSE, NN(I_sb1)),
-  N (64, 64, bfd_mach_mips_loongson_2e, "mips:loongson_2e",	  FALSE, NN(I_loongson_2e)),
-  N (64, 64, bfd_mach_mips_loongson_2f, "mips:loongson_2f",	  FALSE, NN(I_loongson_2f)),
+  N (64, 64, bfd_mach_mips_loongson_2e, "mips:loongson_2e", FALSE, NN(I_loongson_2e)),
+  N (64, 64, bfd_mach_mips_loongson_2f, "mips:loongson_2f", FALSE, NN(I_loongson_2f)),
   N (64, 64, bfd_mach_mips_gs464, "mips:gs464",	  FALSE, NN(I_gs464)),
-  N (64, 64, bfd_mach_mips_gs464e, "mips:gs464e",	  FALSE, NN(I_gs464e)),
-  N (64, 64, bfd_mach_mips_gs264e, "mips:gs264e",	  FALSE, NN(I_gs264e)),
+  N (64, 64, bfd_mach_mips_gs464e, "mips:gs464e", FALSE, NN(I_gs464e)),
+  N (64, 64, bfd_mach_mips_gs264e, "mips:gs264e", FALSE, NN(I_gs264e)),
   N (64, 64, bfd_mach_mips_octeon,"mips:octeon",  FALSE, NN(I_mipsocteon)),
-  N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+",  FALSE, NN(I_mipsocteonp)),
-  N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2",  FALSE, NN(I_mipsocteon2)),
-  N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3",  FALSE, NN(I_mipsocteon3)),
-  N (64, 64, bfd_mach_mips_xlr, "mips:xlr",	  FALSE, NN(I_xlr)),
+  N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)),
+  N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)),
+  N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", FALSE, NN(I_mipsocteon3)),
+  N (64, 64, bfd_mach_mips_xlr, "mips:xlr",	   FALSE, NN(I_xlr)),
   N (32, 32, bfd_mach_mips_interaptiv_mr2, "mips:interaptiv-mr2", FALSE,
      NN(I_interaptiv_mr2)),
-  N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,0)
+  N (64, 64, bfd_mach_mips_micromips, "mips:micromips", FALSE, NULL)
 };
 
 /* The default architecture is mips:3000, but with a machine number of
diff --git a/bfd/cpu-mmix.c b/bfd/cpu-mmix.c
index eaacf31377..8bedeb2d2f 100644
--- a/bfd/cpu-mmix.c
+++ b/bfd/cpu-mmix.c
@@ -25,19 +25,20 @@
 
 const bfd_arch_info_type
 bfd_mmix_arch =
- {
-   64,				/* 64 bits in a word.  */
-   64,				/* 64 bits in an address.  */
-   8,				/* 8 bits in a byte.  */
-   bfd_arch_mmix,		/* Architecture.  */
-   0,				/* Machine number - 0 for now.  */
-   /* Sorry, these are by custom and creeping assumption lower-case.  */
-   "mmix",			/* Architecture name.  */
-   "mmix",			/* Printable name.  */
-   3,				/* Section align power.  */
-   TRUE,			/* This is the default architecture.  */
-   bfd_default_compatible,	/* Architecture comparison function.  */
-   bfd_default_scan,		/* String to architecture conversion.  */
-   bfd_arch_default_fill,	/* Default fill.  */
-   NULL				/* Next in list.  */
+{
+  64,				/* Bits in a word.  */
+  64,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
+  bfd_arch_mmix,		/* Architecture number.  */
+  0,				/* Machine number - 0 for now.  */
+  /* Sorry, these are by custom and creeping assumption lower-case.  */
+  "mmix",			/* Architecture name.  */
+  "mmix",			/* Printable name.  */
+  3,				/* Section align power.  */
+  TRUE,			/* This is the default architecture.  */
+  bfd_default_compatible,	/* Architecture comparison function.  */
+  bfd_default_scan,		/* String to architecture conversion.  */
+  bfd_arch_default_fill,	/* Default fill.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-moxie.c b/bfd/cpu-moxie.c
index a3978b6c94..e200e1a4a5 100644
--- a/bfd/cpu-moxie.c
+++ b/bfd/cpu-moxie.c
@@ -24,18 +24,19 @@
 
 
 const bfd_arch_info_type bfd_moxie_arch =
-  {
-    32,		      /* 32 bits in a word.  */
-    32,		      /* 32 bits in an address.  */
-    8,		      /*  8 bits in a byte.  */
-    bfd_arch_moxie,   /* enum bfd_architecture arch.  */
-    bfd_mach_moxie,
-    "moxie",	      /* Arch name.  */
-    "moxie",	      /* Printable name.  */
-    2,		      /* Unsigned int section alignment power.  */
-    TRUE,	      /* The one and only.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  32,		      /* Bits in a word.  */
+  32,		      /* Bits in an address.  */
+  8,		      /* Bits in a byte.  */
+  bfd_arch_moxie,     /* Architecture Number.  */
+  bfd_mach_moxie,     /* Machine number.  */
+  "moxie",	      /* Arch name.  */
+  "moxie",	      /* Printable name.  */
+  2,		      /* Section alignment power.  */
+  TRUE,	              /* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-msp430.c b/bfd/cpu-msp430.c
index 2c35e5f138..94d570d82c 100644
--- a/bfd/cpu-msp430.c
+++ b/bfd/cpu-msp430.c
@@ -43,9 +43,9 @@ compatible (const bfd_arch_info_type * a,
 
 #define N(addr_bits, machine, print, default, next)		\
 {								\
-  16,				/* 16 bits in a word.  */	\
+  16,				/* Bits in a word.  */		\
   addr_bits,			/* Bits in an address.  */	\
-  8,				/* 8 bits in a byte.  */	\
+  8,				/* Bits in a byte.  */		\
   bfd_arch_msp430,						\
   machine,			/* Machine number.  */		\
   "msp430",			/* Architecture name.   */	\
@@ -55,7 +55,8 @@ compatible (const bfd_arch_info_type * a,
   compatible,							\
   bfd_default_scan,						\
   bfd_arch_default_fill,					\
-  next								\
+  next,								\
+  0 /* Maximum offset of a reloc from the start of an insn.  */ \
 }
 
 static const bfd_arch_info_type arch_info_struct[] =
diff --git a/bfd/cpu-mt.c b/bfd/cpu-mt.c
index 614a80421c..c6a320f17c 100644
--- a/bfd/cpu-mt.c
+++ b/bfd/cpu-mt.c
@@ -22,54 +22,31 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-const bfd_arch_info_type arch_info_struct[] =
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,   /* Bits in a word.  */			\
+    32,   /* Bits in an address.  */			\
+    8,	  /* Bits in a byte.  */			\
+    bfd_arch_mt,					\
+    NUMBER,						\
+    "mt",						\
+    PRINT,						\
+    1,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
+const bfd_arch_info_type arch_info_struct[2] =
 {
-{
-  32,				/* Bits per word - not really true.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_mt,			/* Architecture.  */
-  bfd_mach_mrisc2,		/* Machine.  */
-  "mt",				/* Architecture name.  */
-  "ms1-003",			/* Printable name.  */
-  1,				/* Section align power.  */
-  FALSE,			/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  &arch_info_struct[1]		/* Next in list.  */
-},
-{
-  32,				/* Bits per word - not really true.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_mt,			/* Architecture.  */
-  bfd_mach_ms2,			/* Machine.  */
-  "mt",				/* Architecture name.  */
-  "ms2",			/* Printable name.  */
-  1,				/* Section align power.  */
-  FALSE,			/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
-},
+  N (bfd_mach_mrisc2, "ms1-003", FALSE, arch_info_struct + 1),
+  N (bfd_mach_ms2,    "ms2",     FALSE, NULL)
 };
 
 const bfd_arch_info_type bfd_mt_arch =
-{
-  32,				/* Bits per word - not really true.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_mt,			/* Architecture.  */
-  bfd_mach_ms1,			/* Machine.  */
-  "mt",				/* Architecture name.  */
-  "ms1",			/* Printable name.  */
-  1,				/* Section align power.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  &arch_info_struct[0]		/* Next in list.  */
-};
+  N (bfd_mach_ms1,    "ms1",     TRUE, arch_info_struct);
+
 
diff --git a/bfd/cpu-nds32.c b/bfd/cpu-nds32.c
index 71c27e4d13..cfa15a033c 100644
--- a/bfd/cpu-nds32.c
+++ b/bfd/cpu-nds32.c
@@ -26,7 +26,7 @@
 
 #define N(number, print, default, next)  \
     {32, 32, 8, bfd_arch_nds32, number, "nds32", print, 4, default, \
-     bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next }
+     bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 #define NEXT		&arch_info_struct[0]
 #define NDS32V2_NEXT	&arch_info_struct[1]
diff --git a/bfd/cpu-nfp.c b/bfd/cpu-nfp.c
index 767539350f..a242d7b74a 100644
--- a/bfd/cpu-nfp.c
+++ b/bfd/cpu-nfp.c
@@ -50,13 +50,12 @@ bfd_nfp_compatible (const bfd_arch_info_type * a,
   bfd_nfp_compatible,						\
   bfd_default_scan,						\
   bfd_arch_default_fill,					\
-  next								\
+  next,								\
+  0 /* Maximum offset of a reloc from the start of an insn.  */ \
 }
 
-static const bfd_arch_info_type arch_info_struct[] =
-{
-  N (bfd_mach_nfp3200, "NFP-32xx", FALSE, NULL)
-};
+static const bfd_arch_info_type arch_info_struct =
+  N (bfd_mach_nfp3200, "NFP-32xx", FALSE, NULL);
 
 const bfd_arch_info_type bfd_nfp_arch =
-  N (bfd_mach_nfp6000, "NFP-6xxx", TRUE, &arch_info_struct[0]);
+  N (bfd_mach_nfp6000, "NFP-6xxx", TRUE, &arch_info_struct);
diff --git a/bfd/cpu-nios2.c b/bfd/cpu-nios2.c
index 485394501f..907d318447 100644
--- a/bfd/cpu-nios2.c
+++ b/bfd/cpu-nios2.c
@@ -44,11 +44,11 @@ nios2_compatible (const bfd_arch_info_type *a,
   return a;
 }
 
-#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)		\
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
   {							\
-    BITS_WORD, /*  bits in a word */			\
-    BITS_ADDR, /* bits in an address */			\
-    8,	/* 8 bits in a byte */				\
+    32, /* Bits in a word.  */				\
+    32, /* Bits in an address.  */			\
+    8,	/* Bits in a byte.  */				\
     bfd_arch_nios2,					\
     NUMBER,						\
     "nios2",						\
@@ -58,17 +58,18 @@ nios2_compatible (const bfd_arch_info_type *a,
     nios2_compatible,					\
     bfd_default_scan,					\
     bfd_arch_default_fill,				\
-    NEXT						\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 #define NIOS2R1_NEXT &arch_info_struct[0]
 #define NIOS2R2_NEXT &arch_info_struct[1]
 
-static const bfd_arch_info_type arch_info_struct[] =
+static const bfd_arch_info_type arch_info_struct[2] =
 {
-  N (32, 32, bfd_mach_nios2r1, "nios2:r1", FALSE, NIOS2R2_NEXT),
-  N (32, 32, bfd_mach_nios2r2, "nios2:r2", FALSE, NULL),
+  N (bfd_mach_nios2r1, "nios2:r1", FALSE, NIOS2R2_NEXT),
+  N (bfd_mach_nios2r2, "nios2:r2", FALSE, NULL),
 };
 
 const bfd_arch_info_type bfd_nios2_arch =
-  N (32, 32, 0, "nios2", TRUE, NIOS2R1_NEXT);
+  N (bfd_mach_nios2, "nios2", TRUE, NIOS2R1_NEXT);
diff --git a/bfd/cpu-ns32k.c b/bfd/cpu-ns32k.c
index c69d93ba6a..bc6523b748 100644
--- a/bfd/cpu-ns32k.c
+++ b/bfd/cpu-ns32k.c
@@ -26,16 +26,16 @@
 #include "ns32k.h"
 
 #define N(machine, printable, d, next)  \
-{  32, 32, 8, bfd_arch_ns32k, machine, "ns32k",printable,3,d, \
-   bfd_default_compatible,bfd_default_scan,bfd_arch_default_fill,next, }
+ { 32, 32, 8, bfd_arch_ns32k, machine, "ns32k",printable,3,d, \
+   bfd_default_compatible,bfd_default_scan,bfd_arch_default_fill,next, 0 }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N(32532,"ns32k:32532",TRUE, 0), /* The word ns32k will match this too.  */
+  N (32532, "ns32k:32532", TRUE, 0), /* The word ns32k will match this too.  */
 };
 
 const bfd_arch_info_type bfd_ns32k_arch =
-  N(32032,"ns32k:32032",FALSE, &arch_info_struct[0]);
+  N (32032, "ns32k:32032", FALSE, &arch_info_struct[0]);
 
 bfd_vma
 _bfd_ns32k_get_displacement (bfd_byte *buffer, int size)
diff --git a/bfd/cpu-or1k.c b/bfd/cpu-or1k.c
index e6594865ae..cd9fda376e 100644
--- a/bfd/cpu-or1k.c
+++ b/bfd/cpu-or1k.c
@@ -21,39 +21,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-const bfd_arch_info_type bfd_or1k_arch;
-const bfd_arch_info_type bfd_or1knd_arch;
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,     /* Bits in a word.  */			\
+    32,     /* Bits in an address.  */			\
+    8,	    /* Bits in a byte.  */			\
+    bfd_arch_or1k,					\
+    NUMBER,						\
+    PRINT,						\
+    PRINT,						\
+    4,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
 
-const bfd_arch_info_type bfd_or1k_arch =
-  {
-    32,		  /* 32 bits in a word.  */
-    32,		  /* 32 bits in an address.  */
-    8,		  /* 8 bits in a byte.  */
-    bfd_arch_or1k,
-    bfd_mach_or1k,
-    "or1k",
-    "or1k",
-    4,
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_or1knd_arch,
-  };
 
 const bfd_arch_info_type bfd_or1knd_arch =
-  {
-    32,		  /* 32 bits in a word.  */
-    32,		  /* 32 bits in an address.  */
-    8,		  /* 8 bits in a byte.  */
-    bfd_arch_or1k,
-    bfd_mach_or1knd,
-    "or1knd",
-    "or1knd",
-    4,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    NULL,
-  };
+  N (bfd_mach_or1knd, "or1knd", FALSE, NULL);
+
+const bfd_arch_info_type bfd_or1k_arch =
+  N (bfd_mach_or1k, "or1k", TRUE, &bfd_or1knd_arch);
diff --git a/bfd/cpu-pdp11.c b/bfd/cpu-pdp11.c
index d42f7f8670..0d6a50c266 100644
--- a/bfd/cpu-pdp11.c
+++ b/bfd/cpu-pdp11.c
@@ -23,19 +23,20 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_pdp11_arch =
-  {
-    16,	/* 16 bits in a word */
-    16,	/* 16 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_pdp11,
-    0,	/* only 1 machine */
-    "pdp11",
-    "pdp11",
-    1,		/* alignment = 16 bit */
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  16,	/* Bits in a word.  */
+  16,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_pdp11,
+  0,	/* Only 1 machine.  */
+  "pdp11",
+  "pdp11",
+  1,	/* Alignment = 16 bit.  */
+  TRUE, /* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
 
diff --git a/bfd/cpu-pj.c b/bfd/cpu-pj.c
index b0a092304a..cf5f491e3e 100644
--- a/bfd/cpu-pj.c
+++ b/bfd/cpu-pj.c
@@ -25,17 +25,18 @@
 
 const bfd_arch_info_type bfd_pj_arch =
 {
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
+  32,				/* Bits in a word.  */
+  32,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
   bfd_arch_pj,
   0,
-  "pj",				/* arch_name  */
-  "pj",				/* printable name */
+  "pj",				/* Arch_name.  */
+  "pj",				/* Printable name.  */
   1,
-  TRUE,				/* the default machine */
+  TRUE,				/* The default machine.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
-  0
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-plugin.c b/bfd/cpu-plugin.c
index 044f74c014..53f0c23457 100644
--- a/bfd/cpu-plugin.c
+++ b/bfd/cpu-plugin.c
@@ -24,9 +24,9 @@
 
 const bfd_arch_info_type bfd_plugin_arch =
 {
-  32,	/* 32 bits in a word.  */
-  32,	/* 32 bits in an address.  */
-  8,	/* 8 bits in a byte.  */
+  32,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
   bfd_arch_plugin,
   0,	/* Only 1 machine.  */
   "plugin",
@@ -36,5 +36,6 @@ const bfd_arch_info_type bfd_plugin_arch =
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
-  0
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c
index bfe4868159..49594678d3 100644
--- a/bfd/cpu-powerpc.c
+++ b/bfd/cpu-powerpc.c
@@ -48,375 +48,74 @@ powerpc_compatible (const bfd_arch_info_type *a,
   /*NOTREACHED*/
 }
 
+#define N(BITS, NUMBER, PRINT, DEFAULT, NEXT)		\
+  {							\
+    BITS,      /* Bits in a word.  */			\
+    BITS,      /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_powerpc,					\
+    NUMBER,						\
+    "powerpc",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    powerpc_compatible,					\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_powerpc_archs[] =
 {
 #if BFD_DEFAULT_TARGET_SIZE == 64
-  /* Default arch must come first.  */
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc64,
-    "powerpc",
-    "powerpc:common64",
-    3,
-    TRUE, /* default for 64 bit target */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[1]
-  },
+  /* Default for 64 bit target.  */
+  N (64, bfd_mach_ppc64, "powerpc:common64", TRUE, bfd_powerpc_archs + 1),
   /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch
      being immediately after the 64 bit default.  */
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
-    "powerpc",
-    "powerpc:common",
-    3,
-    FALSE,
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[2],
-  },
+  N (32, bfd_mach_ppc, "powerpc:common", FALSE, bfd_powerpc_archs + 2),
 #else
   /* Default arch must come first.  */
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
-    "powerpc",
-    "powerpc:common",
-    3,
-    TRUE, /* default for 32 bit target */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[1],
-  },
+  N (32, bfd_mach_ppc, "powerpc:common", TRUE, bfd_powerpc_archs + 1),
   /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch
      being immediately after the 32 bit default.  */
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc64,
-    "powerpc",
-    "powerpc:common64",
-    3,
-    FALSE,
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[2]
-  },
+  N (64, bfd_mach_ppc64, "powerpc:common64", FALSE, bfd_powerpc_archs + 2),
 #endif
+  N (32, bfd_mach_ppc_603,      "powerpc:603",     FALSE, bfd_powerpc_archs + 3),
+  N (32, bfd_mach_ppc_ec603e,   "powerpc:EC603e",  FALSE, bfd_powerpc_archs + 4),
+  N (32, bfd_mach_ppc_604,      "powerpc:604",     FALSE, bfd_powerpc_archs + 5),
+  N (32, bfd_mach_ppc_403,      "powerpc:403",     FALSE, bfd_powerpc_archs + 6),
+  N (32, bfd_mach_ppc_601,      "powerpc:601",     FALSE, bfd_powerpc_archs + 7),
+  N (64, bfd_mach_ppc_620,      "powerpc:620",     FALSE, bfd_powerpc_archs + 8),
+  N (64, bfd_mach_ppc_630,      "powerpc:630",     FALSE, bfd_powerpc_archs + 9),
+  N (64, bfd_mach_ppc_a35,      "powerpc:a35",     FALSE, bfd_powerpc_archs + 10),
+  N (64, bfd_mach_ppc_rs64ii,   "powerpc:rs64ii",  FALSE, bfd_powerpc_archs + 11),
+  N (64, bfd_mach_ppc_rs64iii,  "powerpc:rs64iii", FALSE, bfd_powerpc_archs + 12),
+  N (32, bfd_mach_ppc_7400,     "powerpc:7400",    FALSE, bfd_powerpc_archs + 13),
+  N (32, bfd_mach_ppc_e500,     "powerpc:e500",    FALSE, bfd_powerpc_archs + 14),
+  N (32, bfd_mach_ppc_e500mc,   "powerpc:e500mc",  FALSE, bfd_powerpc_archs + 15),
+  N (64, bfd_mach_ppc_e500mc64, "powerpc:e500mc64",FALSE, bfd_powerpc_archs + 16),
+  N (32, bfd_mach_ppc_860,      "powerpc:MPC8XX",  FALSE, bfd_powerpc_archs + 17),
+  N (32, bfd_mach_ppc_750,      "powerpc:750",     FALSE, bfd_powerpc_archs + 18),
+  N (32, bfd_mach_ppc_titan,    "powerpc:titan",   FALSE, bfd_powerpc_archs + 19),
+
   {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_603,
-    "powerpc",
-    "powerpc:603",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[3]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_ec603e,
-    "powerpc",
-    "powerpc:EC603e",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[4]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_604,
-    "powerpc",
-    "powerpc:604",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[5]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_403,
-    "powerpc",
-    "powerpc:403",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[6]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_601,
-    "powerpc",
-    "powerpc:601",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[7]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_620,
-    "powerpc",
-    "powerpc:620",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[8]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_630,
-    "powerpc",
-    "powerpc:630",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[9]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_a35,
-    "powerpc",
-    "powerpc:a35",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[10]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_rs64ii,
-    "powerpc",
-    "powerpc:rs64ii",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[11]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_rs64iii,
-    "powerpc",
-    "powerpc:rs64iii",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[12]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_7400,
-    "powerpc",
-    "powerpc:7400",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[13]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_e500,
-    "powerpc",
-    "powerpc:e500",
-    3,
-    FALSE,
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[14]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_e500mc,
-    "powerpc",
-    "powerpc:e500mc",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[15]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_e500mc64,
-    "powerpc",
-    "powerpc:e500mc64",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[16]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_860,
-    "powerpc",
-    "powerpc:MPC8XX",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[17]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_750,
-    "powerpc",
-    "powerpc:750",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[18]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_titan,
-    "powerpc",
-    "powerpc:titan",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[19]
-  },
-  {
-    16,	/* 16 or 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
+    16,	/* Bits in a word.  */
+    32,	/* Bits in an address.  */
+    8,	/* Bits in a byte.  */
     bfd_arch_powerpc,
     bfd_mach_ppc_vle,
     "powerpc",
     "powerpc:vle",
     3,
-    FALSE, /* not the default */
+    FALSE, /* Not the default.  */
     powerpc_compatible,
     bfd_default_scan,
     bfd_arch_default_fill,
-    &bfd_powerpc_archs[20]
+    bfd_powerpc_archs + 20,
+    0 /* Maximum offset of a reloc from the start of an insn.  */
   },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_e5500,
-    "powerpc",
-    "powerpc:e5500",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_powerpc_archs[21]
-  },
-  {
-    64,	/* 64 bits in a word */
-    64,	/* 64 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc_e6500,
-    "powerpc",
-    "powerpc:e6500",
-    3,
-    FALSE, /* not the default */
-    powerpc_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0
-  }
+
+  N (64, bfd_mach_ppc_e5500, "powerpc:e5500", FALSE, bfd_powerpc_archs + 21),
+  N (64, bfd_mach_ppc_e6500, "powerpc:e6500", FALSE, NULL)
 };
diff --git a/bfd/cpu-pru.c b/bfd/cpu-pru.c
index b0feb9d6d9..99be27eca5 100644
--- a/bfd/cpu-pru.c
+++ b/bfd/cpu-pru.c
@@ -37,7 +37,8 @@
     bfd_default_compatible,				\
     bfd_default_scan,					\
     bfd_arch_default_fill,				\
-    NEXT						\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 const bfd_arch_info_type bfd_pru_arch = N (32, 32, 0, "pru", TRUE, NULL);
diff --git a/bfd/cpu-riscv.c b/bfd/cpu-riscv.c
index 153a84e883..aca7ade0af 100644
--- a/bfd/cpu-riscv.c
+++ b/bfd/cpu-riscv.c
@@ -39,11 +39,11 @@ riscv_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
   return a;
 }
 
-#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)	\
+#define N(BITS, NUMBER, PRINT, DEFAULT, NEXT)			\
   {								\
-    BITS_WORD, /*  bits in a word */				\
-    BITS_ADDR, /* bits in an address */				\
-    8,	/* 8 bits in a byte */					\
+    BITS,      /* Bits in a word.  */				\
+    BITS,      /* Bits in an address.  */			\
+    8,	       /* Bits in a byte.  */				\
     bfd_arch_riscv,						\
     NUMBER,							\
     "riscv",							\
@@ -54,6 +54,7 @@ riscv_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
     bfd_default_scan,						\
     bfd_arch_default_fill,					\
     NEXT,							\
+    0 /* Maximum offset of a reloc from the start of an insn.  */\
   }
 
 /* This enum must be kept in the same order as arch_info_struct.  */
@@ -69,11 +70,11 @@ enum
    and each entry except the last should end with NN (my enum value).  */
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (64, 64, bfd_mach_riscv64, "riscv:rv64", FALSE, NN (I_riscv64)),
-  N (32, 32, bfd_mach_riscv32, "riscv:rv32", FALSE, 0)
+  N (64, bfd_mach_riscv64, "riscv:rv64", FALSE, NN (I_riscv64)),
+  N (32, bfd_mach_riscv32, "riscv:rv32", FALSE, NULL)
 };
 
 /* The default architecture is riscv:rv64.  */
 
 const bfd_arch_info_type bfd_riscv_arch =
-  N (64, 64, 0, "riscv", TRUE, &arch_info_struct[0]);
+  N (64, 0, "riscv", TRUE, &arch_info_struct[0]);
diff --git a/bfd/cpu-rl78.c b/bfd/cpu-rl78.c
index 5d4c770c08..acc4ab91c6 100644
--- a/bfd/cpu-rl78.c
+++ b/bfd/cpu-rl78.c
@@ -36,5 +36,6 @@ const bfd_arch_info_type bfd_rl78_arch =
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-rs6000.c b/bfd/cpu-rs6000.c
index d798d0eaaa..46ecca9247 100644
--- a/bfd/cpu-rs6000.c
+++ b/bfd/cpu-rs6000.c
@@ -46,68 +46,30 @@ rs6000_compatible (const bfd_arch_info_type *a,
   /*NOTREACHED*/
 }
 
-static const bfd_arch_info_type arch_info_struct[] =
-{
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_rs6000,
-    bfd_mach_rs6k_rs1,
-    "rs6000",
-    "rs6000:rs1",
-    3,
-    FALSE, /* not the default */
-    rs6000_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[1]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_rs6000,
-    bfd_mach_rs6k_rsc,
-    "rs6000",
-    "rs6000:rsc",
-    3,
-    FALSE, /* not the default */
-    rs6000_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[2]
-  },
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_rs6000,
-    bfd_mach_rs6k_rs2,
-    "rs6000",
-    "rs6000:rs2",
-    3,
-    FALSE, /* not the default */
-    rs6000_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,        /* Bits in a word.  */			\
+    32,        /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_rs6000,					\
+    NUMBER,						\
+    "rs6000",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    rs6000_compatible,					\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
+
+static const bfd_arch_info_type arch_info_struct[3] =
+{
+  N (bfd_mach_rs6k_rs1, "rs6000:rs1", FALSE, arch_info_struct + 1),
+  N (bfd_mach_rs6k_rsc, "rs6000:rsc", FALSE, arch_info_struct + 2),
+  N (bfd_mach_rs6k_rs2, "rs6000:rs2", FALSE, NULL)
 };
 
 const bfd_arch_info_type bfd_rs6000_arch =
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_rs6000,
-    bfd_mach_rs6k,	/* POWER common architecture */
-    "rs6000",
-    "rs6000:6000",
-    3,
-    TRUE, /* the default */
-    rs6000_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[0]
-  };
+  N (bfd_mach_rs6k, "rs6000:6000", TRUE, arch_info_struct + 0);
diff --git a/bfd/cpu-rx.c b/bfd/cpu-rx.c
index 821edeb590..ecdb98ff59 100644
--- a/bfd/cpu-rx.c
+++ b/bfd/cpu-rx.c
@@ -22,68 +22,18 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-static const bfd_arch_info_type arch_info_struct[] =
+#define N(mach, name, align, def, next)				\
+  { 32, 32, 8, bfd_arch_rx, mach, "rx", name, align, def,	\
+    bfd_default_compatible, bfd_default_scan,			\
+    bfd_arch_default_fill, next, 0 }
+
+static const bfd_arch_info_type arch_info_struct[3] =
 {
-  {
-    32,				/* Bits per word.  */
-    32,				/* Bits per address.  */
-    8,				/* Bits per byte.  */
-    bfd_arch_rx,		/* Architecture.  */
-    bfd_mach_rx,		/* Machine.  */
-    "rx",			/* Architecture name.  */
-    "rx",			/* Printable name.  */
-    3,				/* Section align power.  */
-    FALSE,			/* The default ?  */
-    bfd_default_compatible,	/* Architecture comparison fn.  */
-    bfd_default_scan,		/* String to architecture convert fn.  */
-    bfd_arch_default_fill,	/* Default fill.  */
-    &arch_info_struct[1]	/* Next in list.  */
-  },
-  {
-    32,				/* Bits per word.  */
-    32,				/* Bits per address.  */
-    8,				/* Bits per byte.  */
-    bfd_arch_rx,		/* Architecture.  */
-    bfd_mach_rx_v2,		/* Machine.  */
-    "rx:v2",			/* Architecture name.  */
-    "rx:v2",			/* Printable name.  */
-    3,				/* Section align power.  */
-    FALSE,			/* The default ?  */
-    bfd_default_compatible,	/* Architecture comparison fn.  */
-    bfd_default_scan,		/* String to architecture convert fn.  */
-    bfd_arch_default_fill,	/* Default fill.  */
-    &arch_info_struct[2]	/* Next in list.  */
-  },
-  {
-    32,				/* Bits per word.  */
-    32,				/* Bits per address.  */
-    8,				/* Bits per byte.  */
-    bfd_arch_rx,		/* Architecture.  */
-    bfd_mach_rx_v3,		/* Machine.  */
-    "rx:v3",			/* Architecture name.  */
-    "rx:v3",			/* Printable name.  */
-    3,				/* Section align power.  */
-    FALSE,			/* The default ?  */
-    bfd_default_compatible,	/* Architecture comparison fn.  */
-    bfd_default_scan,		/* String to architecture convert fn.  */
-    bfd_arch_default_fill,	/* Default fill.  */
-    NULL			/* Next in list.  */
-  },
+  N (bfd_mach_rx,    "rx",    3, FALSE, arch_info_struct + 1),
+  N (bfd_mach_rx_v2, "rx:v2", 3, FALSE, arch_info_struct + 2),
+  N (bfd_mach_rx_v3, "rx:v3", 3, FALSE, NULL)
 };
 
 const bfd_arch_info_type bfd_rx_arch =
-{
-  32,				/* Bits per word.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_rx,			/* Architecture.  */
-  bfd_mach_rx,			/* Machine.  */
-  "rx",				/* Architecture name.  */
-  "rx",				/* Printable name.  */
-  4,				/* Section align power.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  & arch_info_struct[0],	/* Next in list.  */
-};
+  N (bfd_mach_rx,    "rx",    4, TRUE, arch_info_struct + 0);
+
diff --git a/bfd/cpu-s12z.c b/bfd/cpu-s12z.c
index 1326359858..4ad2eafbb1 100644
--- a/bfd/cpu-s12z.c
+++ b/bfd/cpu-s12z.c
@@ -24,18 +24,19 @@
 
 const bfd_arch_info_type bfd_s12z_arch =
 {
-    16,	/* 16 bits in a word.  */
-    24,	/* 24 bits in an address.  */
-    8,	/* 8 bits in a byte.  */
-    bfd_arch_s12z,
-    0,
-    "s12z",
-    "s12z",
-    4, /* Section alignment power.  */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  16,	/* Bits in a word.  */
+  24,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_s12z,
+  0,
+  "s12z",
+  "s12z",
+  4,    /* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0    /* Maximum offset of a reloc from the start of an insn.  */
 };
 
diff --git a/bfd/cpu-s390.c b/bfd/cpu-s390.c
index 8e379364c7..f906472435 100644
--- a/bfd/cpu-s390.c
+++ b/bfd/cpu-s390.c
@@ -25,19 +25,20 @@
 
 #define N(bits, number, print, is_default, next)	\
   {							\
-    bits,	       /* bits in a word */		\
-    bits,	       /* bits in an address */		\
-    8,		       /* bits in a byte */		\
+    bits,	       /* Bits in a word.  */		\
+    bits,	       /* Bits in an address.  */	\
+    8,		       /* Bits in a byte.  */		\
     bfd_arch_s390,					\
     number,						\
     "s390",						\
     print,						\
-    3,		       /* section alignment power */	\
+    3,		       /* Section alignment power */	\
     is_default,						\
     bfd_default_compatible,				\
     bfd_default_scan,					\
     bfd_arch_default_fill,				\
-    next						\
+    next,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
 #if BFD_DEFAULT_TARGET_SIZE == 64
diff --git a/bfd/cpu-score.c b/bfd/cpu-score.c
index 576e9adbda..5bf9c6bdf2 100644
--- a/bfd/cpu-score.c
+++ b/bfd/cpu-score.c
@@ -43,11 +43,11 @@ compatible (const bfd_arch_info_type * a, const bfd_arch_info_type * b)
   return a;
 }
 
-#define N(addr_bits, machine, print, default, next)		\
+#define N(machine, print, default, next)			\
 {								\
-  32,				/* 16 bits in a word.  */	\
+  32,				/* Bits in a word.  */		\
   32,				/* Bits in an address.  */	\
-  8,				/* 8 bits in a byte.  */	\
+  8,				/* Bits in a byte.  */		\
   bfd_arch_score,						\
   machine,			/* Machine number.  */		\
   "score",			/* Architecture name.   */	\
@@ -57,13 +57,14 @@ compatible (const bfd_arch_info_type * a, const bfd_arch_info_type * b)
   compatible,							\
   bfd_default_scan,						\
   bfd_arch_default_fill,					\
-  next								\
+  next,								\
+  0 /* Maximum offset of a reloc from the start of an insn.  */ \
 }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (16, bfd_mach_score3, "score3", FALSE, NULL),
+  N (bfd_mach_score3, "score3", FALSE, NULL),
 };
 
 const bfd_arch_info_type bfd_score_arch =
-  N (16, bfd_mach_score7, "score7", TRUE, & arch_info_struct[0]);
+  N (bfd_mach_score7, "score7", TRUE, & arch_info_struct[0]);
diff --git a/bfd/cpu-sh.c b/bfd/cpu-sh.c
index 2bfaad7e63..37edace29b 100644
--- a/bfd/cpu-sh.c
+++ b/bfd/cpu-sh.c
@@ -24,333 +24,50 @@
 #include "libbfd.h"
 #include "../opcodes/sh-opc.h"
 
-#define SH_NEXT				   arch_info_struct + 0
-#define SH2_NEXT			   arch_info_struct + 1
-#define SH2E_NEXT			   arch_info_struct + 2
-#define SH_DSP_NEXT			   arch_info_struct + 3
-#define SH3_NEXT			   arch_info_struct + 4
-#define SH3_NOMMU_NEXT			   arch_info_struct + 5
-#define SH3_DSP_NEXT			   arch_info_struct + 6
-#define SH3E_NEXT			   arch_info_struct + 7
-#define SH4_NEXT			   arch_info_struct + 8
-#define SH4A_NEXT			   arch_info_struct + 9
-#define SH4AL_DSP_NEXT			   arch_info_struct + 10
-#define SH4_NOFPU_NEXT			   arch_info_struct + 11
-#define SH4_NOMMU_NOFPU_NEXT		   arch_info_struct + 12
-#define SH4A_NOFPU_NEXT			   arch_info_struct + 13
-#define SH2A_NEXT			   arch_info_struct + 14
-#define SH2A_NOFPU_NEXT			   arch_info_struct + 15
-#define SH2A_NOFPU_OR_SH4_NOMMU_NOFPU_NEXT arch_info_struct + 16
-#define SH2A_NOFPU_OR_SH3_NOMMU_NEXT	   arch_info_struct + 17
-#define SH2A_OR_SH4_NEXT		   arch_info_struct + 18
-#define SH2A_OR_SH3E_NEXT		   NULL
+
+#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
+  {							\
+    32,     /* Bits in a word.  */			\
+    32,     /* Bits in an address.  */			\
+    8,	    /* Bits in a byte.  */			\
+    bfd_arch_sh,					\
+    NUMBER,						\
+    "sh",						\
+    PRINT,						\
+    1,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2,
-    "sh",			/* Architecture name.  */
-    "sh2",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2e,
-    "sh",			/* Architecture name.  */
-    "sh2e",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2E_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh_dsp,
-    "sh",			/* Architecture name.   */
-    "sh-dsp",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH_DSP_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh3,
-    "sh",			/* Architecture name.   */
-    "sh3",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH3_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh3_nommu,
-    "sh",			/* Architecture name.   */
-    "sh3-nommu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH3_NOMMU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh3_dsp,
-    "sh",			/* Architecture name.   */
-    "sh3-dsp",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH3_DSP_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh3e,
-    "sh",			/* Architecture name.   */
-    "sh3e",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH3E_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4,
-    "sh",			/* Architecture name.   */
-    "sh4",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4a,
-    "sh",			/* Architecture name.   */
-    "sh4a",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4A_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4al_dsp,
-    "sh",			/* Architecture name.   */
-    "sh4al-dsp",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4AL_DSP_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4_nofpu,
-    "sh",			/* Architecture name.   */
-    "sh4-nofpu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4_NOFPU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4_nommu_nofpu,
-    "sh",			/* Architecture name.   */
-    "sh4-nommu-nofpu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4_NOMMU_NOFPU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh4a_nofpu,
-    "sh",			/* Architecture name.   */
-    "sh4a-nofpu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH4A_NOFPU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a,
-    "sh",			/* Architecture name.  */
-    "sh2a",			/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a_nofpu,
-    "sh",			/* Architecture name.  */
-    "sh2a-nofpu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_NOFPU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu,
-    "sh",			/* Architecture name.  */
-    "sh2a-nofpu-or-sh4-nommu-nofpu",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_NOFPU_OR_SH4_NOMMU_NOFPU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a_nofpu_or_sh3_nommu,
-    "sh",			/* Architecture name. .  */
-    "sh2a-nofpu-or-sh3-nommu",	/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_NOFPU_OR_SH3_NOMMU_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a_or_sh4,
-    "sh",			/* Architecture name.  */
-    "sh2a-or-sh4",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_OR_SH4_NEXT
-  },
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    8,				/* 8 bits in a byte.  */
-    bfd_arch_sh,
-    bfd_mach_sh2a_or_sh3e,
-    "sh",			/* Architecture name.  */
-    "sh2a-or-sh3e",		/* Machine name.  */
-    1,
-    FALSE,			/* Not the default.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    SH2A_OR_SH3E_NEXT
-  },
+  N (bfd_mach_sh2,          "sh2",       FALSE, arch_info_struct + 1),
+  N (bfd_mach_sh2e,         "sh2e",      FALSE, arch_info_struct + 2),
+  N (bfd_mach_sh_dsp,       "sh-dsp",    FALSE, arch_info_struct + 3),
+  N (bfd_mach_sh3,          "sh3",       FALSE, arch_info_struct + 4),
+  N (bfd_mach_sh3_nommu,    "sh3-nommu", FALSE, arch_info_struct + 5),
+  N (bfd_mach_sh3_dsp,      "sh3-dsp",   FALSE, arch_info_struct + 6),
+  N (bfd_mach_sh3e,         "sh3e",      FALSE, arch_info_struct + 7),
+  N (bfd_mach_sh4,          "sh4",       FALSE, arch_info_struct + 8),
+  N (bfd_mach_sh4a,         "sh4a",      FALSE, arch_info_struct + 9),
+  N (bfd_mach_sh4al_dsp,    "sh4al-dsp", FALSE, arch_info_struct + 10),
+  N (bfd_mach_sh4_nofpu,    "sh4-nofpu", FALSE, arch_info_struct + 11),
+  N (bfd_mach_sh4_nommu_nofpu, "sh4-nommu-nofpu", FALSE, arch_info_struct + 12),
+  N (bfd_mach_sh4a_nofpu,   "sh4a-nofpu", FALSE, arch_info_struct + 13),
+  N (bfd_mach_sh2a,         "sh2a",       FALSE, arch_info_struct + 14),
+  N (bfd_mach_sh2a_nofpu,   "sh2a-nofpu", FALSE, arch_info_struct + 15),
+  N (bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu, "sh2a-nofpu-or-sh4-nommu-nofpu", FALSE, arch_info_struct + 16),
+  N (bfd_mach_sh2a_nofpu_or_sh3_nommu, "sh2a-nofpu-or-sh3-nommu", FALSE, arch_info_struct + 17),
+  N (bfd_mach_sh2a_or_sh4,  "sh2a-or-sh4",  FALSE, arch_info_struct + 18),
+  N (bfd_mach_sh2a_or_sh3e, "sh2a-or-sh3e", FALSE, NULL)
 };
 
 const bfd_arch_info_type bfd_sh_arch =
-{
-  32,				/* 32 bits in a word.  */
-  32,				/* 32 bits in an address.  */
-  8,				/* 8 bits in a byte.  */
-  bfd_arch_sh,
-  bfd_mach_sh,
-  "sh",				/* Architecture name.   */
-  "sh",				/* Machine name.  */
-  1,
-  TRUE,				/* The default machine.  */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  SH_NEXT
-};
-
+  N (bfd_mach_sh, "sh", TRUE, arch_info_struct + 0);
 
 /* This table defines the mappings from the BFD internal numbering
    system to the opcodes internal flags system.
diff --git a/bfd/cpu-sparc.c b/bfd/cpu-sparc.c
index a1eb4c227d..e7f30fb342 100644
--- a/bfd/cpu-sparc.c
+++ b/bfd/cpu-sparc.c
@@ -22,338 +22,48 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(BITS, NUMBER, PRINT, DEFAULT, NEXT) \
+  {							\
+    BITS,      /* Bits in a word.  */			\
+    BITS,      /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_sparc,					\
+    NUMBER,						\
+    "sparc",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_sparclet,
-    "sparc",
-    "sparc:sparclet",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[1],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_sparclite,
-    "sparc",
-    "sparc:sparclite",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[2],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plus,
-    "sparc",
-    "sparc:v8plus",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[3],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusa,
-    "sparc",
-    "sparc:v8plusa",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[4],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_sparclite_le,
-    "sparc",
-    "sparc:sparclite_le",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[5],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9,
-    "sparc",
-    "sparc:v9",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[6],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9a,
-    "sparc",
-    "sparc:v9a",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[7],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusb,
-    "sparc",
-    "sparc:v8plusb",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[8],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9b,
-    "sparc",
-    "sparc:v9b",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[9],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusc,
-    "sparc",
-    "sparc:v8plusc",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[10],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9c,
-    "sparc",
-    "sparc:v9c",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[11],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusd,
-    "sparc",
-    "sparc:v8plusd",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[12],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9d,
-    "sparc",
-    "sparc:v9d",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[13],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8pluse,
-    "sparc",
-    "sparc:v8pluse",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[14],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9e,
-    "sparc",
-    "sparc:v9e",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[15],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusv,
-    "sparc",
-    "sparc:v8plusv",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[16],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9v,
-    "sparc",
-    "sparc:v9v",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[17],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusm,
-    "sparc",
-    "sparc:v8plusm",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[18],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9m,
-    "sparc",
-    "sparc:v9m",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[19],
-  },
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v8plusm8,
-    "sparc",
-    "sparc:v8plusm8",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[20],
-  },
-  {
-    64,	/* bits in a word */
-    64,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc_v9m8,
-    "sparc",
-    "sparc:v9m8",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  }
+  N (32, bfd_mach_sparc_sparclet,     "sparc:sparclet",     FALSE, arch_info_struct + 1),
+  N (32, bfd_mach_sparc_sparclite,    "sparc:sparclite",    FALSE, arch_info_struct + 2),
+  N (32, bfd_mach_sparc_v8plus,       "sparc:v8plus",       FALSE, arch_info_struct + 3),
+  N (32, bfd_mach_sparc_v8plusa,      "sparc:v8plusa",      FALSE, arch_info_struct + 4),
+  N (32, bfd_mach_sparc_sparclite_le, "sparc:sparclite_le", FALSE, arch_info_struct + 5),
+  N (64, bfd_mach_sparc_v9,           "sparc:v9",           FALSE, arch_info_struct + 6),
+  N (64, bfd_mach_sparc_v9a,          "sparc:v9a",          FALSE, arch_info_struct + 7),
+  N (32, bfd_mach_sparc_v8plusb,      "sparc:v8plusb",      FALSE, arch_info_struct + 8),
+  N (64, bfd_mach_sparc_v9b,          "sparc:v9b",          FALSE, arch_info_struct + 9),
+  N (32, bfd_mach_sparc_v8plusc,      "sparc:v8plusc",      FALSE, arch_info_struct + 10),
+  N (64, bfd_mach_sparc_v9c,          "sparc:v9c",          FALSE, arch_info_struct + 11),
+  N (32, bfd_mach_sparc_v8plusd,      "sparc:v8plusd",      FALSE, arch_info_struct + 12),
+  N (64, bfd_mach_sparc_v9d,          "sparc:v9d",          FALSE, arch_info_struct + 13),
+  N (32, bfd_mach_sparc_v8pluse,      "sparc:v8pluse",      FALSE, arch_info_struct + 14),
+  N (64, bfd_mach_sparc_v9e,          "sparc:v9e",          FALSE, arch_info_struct + 15),
+  N (32, bfd_mach_sparc_v8plusv,      "sparc:v8plusv",      FALSE, arch_info_struct + 16),
+  N (64, bfd_mach_sparc_v9v,          "sparc:v9v",          FALSE, arch_info_struct + 17),
+  N (32, bfd_mach_sparc_v8plusm,      "sparc:v8plusm",      FALSE, arch_info_struct + 18),
+  N (64, bfd_mach_sparc_v9m,          "sparc:v9m",          FALSE, arch_info_struct + 19),
+  N (32, bfd_mach_sparc_v8plusm8,     "sparc:v8plusm8",     FALSE, arch_info_struct + 20),
+  N (64, bfd_mach_sparc_v9m8,         "sparc:v9m8",         FALSE, NULL)
 };
 
 const bfd_arch_info_type bfd_sparc_arch =
-  {
-    32,	/* bits in a word */
-    32,	/* bits in an address */
-    8,	/* bits in a byte */
-    bfd_arch_sparc,
-    bfd_mach_sparc,
-    "sparc",
-    "sparc",
-    3,
-    TRUE, /* the default */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &arch_info_struct[0],
-  };
+  N (32, bfd_mach_sparc, "sparc", TRUE, arch_info_struct);
diff --git a/bfd/cpu-spu.c b/bfd/cpu-spu.c
index 8f9e755be8..af66045319 100644
--- a/bfd/cpu-spu.c
+++ b/bfd/cpu-spu.c
@@ -20,7 +20,6 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-
 static const bfd_arch_info_type *
 spu_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
 {
@@ -35,21 +34,20 @@ spu_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
   /*NOTREACHED*/
 }
 
-const bfd_arch_info_type bfd_spu_arch[] =
+const bfd_arch_info_type bfd_spu_arch =
 {
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_spu,	/* architecture */
-    bfd_mach_spu,	/* machine */
-    "spu",		/* architecture name */
-    "spu:256K",		/* printable name */
-    3,			/* aligned power */
-    TRUE,		/* the default machine for the architecture */
-    spu_compatible,	/* the spu is only compatible with itself, see above */
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,			/* next -- there are none! */
-  }
+  32,			/* Bits in a word.  */
+  32,			/* Bits in an address.  */
+  8,			/* Bits in a byte.  */
+  bfd_arch_spu,		/* Architecture number.  */
+  bfd_mach_spu,		/* Machine number.  */
+  "spu",		/* Architecture name.  */
+  "spu:256K",		/* Printable name.  */
+  3,			/* Section alignment power.  */
+  TRUE,			/* Default machine.  */
+  spu_compatible,	/* The spu is only compatible with itself, see above.  */
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,			/* Next -- there are none!  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-tic30.c b/bfd/cpu-tic30.c
index 3296daf2ae..606d66353b 100644
--- a/bfd/cpu-tic30.c
+++ b/bfd/cpu-tic30.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_tic30_arch =
 {
-  32,				/* 32 bits in a word */
-  32,				/* 32 bits in an address */
-  8,				/* 8 bits in a byte */
+  32,				/* Bits in a word.  */
+  32,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
   bfd_arch_tic30,
-  0,				/* only 1 machine */
+  0,				/* Only 1 machine.  */
   "tic30",
   "tms320c30",
   2,
-  TRUE,				/* the one and only */
+  TRUE,				/* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
-  0,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-tic4x.c b/bfd/cpu-tic4x.c
index f8dbf98065..cf87bfedf5 100644
--- a/bfd/cpu-tic4x.c
+++ b/bfd/cpu-tic4x.c
@@ -45,39 +45,26 @@ tic4x_scan (const struct bfd_arch_info *info,
   return FALSE;
 }
 
+#define N(NUMBER, NAME, PRINT, DEFAULT, NEXT)		\
+  {							\
+    32,        /* Bits in a word.  */			\
+    32,        /* Bits in an address.  */		\
+    32,	       /* Bits in a byte.  */			\
+    bfd_arch_tic4x,					\
+    NUMBER,						\
+    NAME,						\
+    PRINT,						\
+    0,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    tic4x_scan,						\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
 
 const bfd_arch_info_type bfd_tic3x_arch =
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    32,				/* 32 bits in a byte.  */
-    bfd_arch_tic4x,
-    bfd_mach_tic3x,		/* Machine number.  */
-    "tic3x",			/* Architecture name.  */
-    "tms320c3x",		/* Printable name.  */
-    0,				/* Alignment power.  */
-    FALSE,			/* Not the default architecture.  */
-    bfd_default_compatible,
-    tic4x_scan,
-    bfd_arch_default_fill,
-    0
-  };
+  N (bfd_mach_tic3x, "tic3x", "tms320c3x", FALSE, NULL);
 
 const bfd_arch_info_type bfd_tic4x_arch =
-  {
-    32,				/* 32 bits in a word.  */
-    32,				/* 32 bits in an address.  */
-    32,				/* 32 bits in a byte.  */
-    bfd_arch_tic4x,
-    bfd_mach_tic4x,		/* Machine number.  */
-    "tic4x",			/* Architecture name.  */
-    "tms320c4x",		/* Printable name.  */
-    0,				/* Alignment power.  */
-    TRUE,			/* The default architecture.  */
-    bfd_default_compatible,
-    tic4x_scan,
-    bfd_arch_default_fill,
-    &bfd_tic3x_arch,
-  };
-
-
+  N (bfd_mach_tic4x, "tic4x", "tms320c4x", TRUE, &bfd_tic3x_arch);
diff --git a/bfd/cpu-tic54x.c b/bfd/cpu-tic54x.c
index 7c9505dc8b..67e6e6ca80 100644
--- a/bfd/cpu-tic54x.c
+++ b/bfd/cpu-tic54x.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_tic54x_arch =
 {
-  16,				/* 16 bits in a word */
-  16,				/* 16 bits in an address (except '548) */
-  16,				/* 16 bits in a byte */
+  16,				/* Bits in a word.  */
+  16,				/* Bits in an address (except '548).  */
+  16,				/* Bits in a byte.  */
   bfd_arch_tic54x,
-  0,				/* only 1 machine */
+  0,				/* Only 1 machine.  */
   "tic54x",
   "tms320c54x",
   1,
-  TRUE,				/* the one and only */
+  TRUE,				/* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
-  0,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-tic6x.c b/bfd/cpu-tic6x.c
index bb9439480e..286927ba63 100644
--- a/bfd/cpu-tic6x.c
+++ b/bfd/cpu-tic6x.c
@@ -23,18 +23,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_tic6x_arch =
-  {
-    32, /* 32 bits in a word.  */
-    32, /* 32 bits in an address.  */
-    8, /* 8 bits in a byte.  */
-    bfd_arch_tic6x, /* Architecture.  */
-    0, /* No BFD machine numbers needed.  */
-    "tic6x", /* Architecture name.  */
-    "tic6x", /* Printable name.  */
-    2, /* Section alignment power.  */
-    TRUE, /* Default machine for this architecture.  */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  32, /* Bits in a word.  */
+  32, /* Bits in an address.  */
+  8,  /* Bits in a byte.  */
+  bfd_arch_tic6x, /* Architecture.  */
+  0,  /* No BFD machine numbers needed.  */
+  "tic6x", /* Architecture name.  */
+  "tic6x", /* Printable name.  */
+  2, /* Section alignment power.  */
+  TRUE, /* Default machine for this architecture.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-tic80.c b/bfd/cpu-tic80.c
index 24261f438e..2fcbd9ddc4 100644
--- a/bfd/cpu-tic80.c
+++ b/bfd/cpu-tic80.c
@@ -24,18 +24,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_tic80_arch =
-  {
-    32,				/* 32 bits in a word */
-    32,				/* 32 bits in an address */
-    8,				/* 8 bits in a byte */
-    bfd_arch_tic80,		/* bfd_architecture enum */
-    0,				/* only 1 machine */
-    "tic80",			/* architecture name */
-    "tic80",			/* printable name */
-    2,				/* section alignment power */
-    TRUE,			/* default machine for architecture */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    NULL,				/* Pointer to next in chain */
-  };
+{
+  32,				/* Bits in a word.  */
+  32,				/* Bits in an address.  */
+  8,				/* Bits in a byte.  */
+  bfd_arch_tic80,		/* Architecture number.  */
+  0,				/* Only 1 machine.  */
+  "tic80",			/* Architecture name.  */
+  "tic80",			/* Printable name.  */
+  2,				/* Section alignment power.  */
+  TRUE,				/* Default machine.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,				/* Pointer to next in chain.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-tilegx.c b/bfd/cpu-tilegx.c
index cfe08b3f9a..633dde8d97 100644
--- a/bfd/cpu-tilegx.c
+++ b/bfd/cpu-tilegx.c
@@ -22,36 +22,27 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(BITS, NUMBER, PRINT, DEFAULT, NEXT)		\
+  {							\
+    BITS,      /* Bits in a word.  */			\
+    BITS,      /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_tilegx,					\
+    NUMBER,						\
+    "tilegx",						\
+    PRINT,						\
+    3,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type bfd_tilegx32_arch =
-  {
-    32, /* 32 bits in a word */
-    32, /* 32 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_tilegx,
-    bfd_mach_tilegx32,
-    "tilegx32",
-    "tilegx32",
-    3,
-    FALSE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+  N (32, bfd_mach_tilegx32, "tilegx32", FALSE, NULL);
 
 const bfd_arch_info_type bfd_tilegx_arch =
-  {
-    64, /* 64 bits in a word */
-    64, /* 64 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_tilegx,
-    bfd_mach_tilegx,
-    "tilegx",
-    "tilegx",
-    3,
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_tilegx32_arch,
-  };
+  N (64, bfd_mach_tilegx, "tilegx", TRUE, &bfd_tilegx32_arch);
+
diff --git a/bfd/cpu-tilepro.c b/bfd/cpu-tilepro.c
index bdd6aee9d2..82ad8d2d04 100644
--- a/bfd/cpu-tilepro.c
+++ b/bfd/cpu-tilepro.c
@@ -23,18 +23,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_tilepro_arch =
-  {
-    32, /* 32 bits in a word */
-    32, /* 32 bits in an address */
-    8,  /* 8 bits in a byte */
-    bfd_arch_tilepro,
-    bfd_mach_tilepro,
-    "tilepro",
-    "tilepro",
-    3,
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  32, /* Bits in a word.  */
+  32, /* Bits in an address.  */
+  8,  /* Bits in a byte.  */
+  bfd_arch_tilepro,
+  bfd_mach_tilepro,
+  "tilepro",
+  "tilepro",
+  3,
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-v850.c b/bfd/cpu-v850.c
index d4c86938fe..0daea285ef 100644
--- a/bfd/cpu-v850.c
+++ b/bfd/cpu-v850.c
@@ -24,23 +24,18 @@
 #include "safe-ctype.h"
 
 #define N(number, print, default, next)  \
-{  32, 32, 8, bfd_arch_v850, number, "v850", print ":old-gcc-abi", 2, default, \
-   bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next }
+ { 32, 32, 8, bfd_arch_v850, number, "v850", print ":old-gcc-abi", 2, default, \
+   bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
-#define NEXT NULL
-
-static const bfd_arch_info_type arch_info_struct[] =
+static const bfd_arch_info_type arch_info_struct[6] =
 {
-  N (bfd_mach_v850e3v5, "v850e3v5",	FALSE, & arch_info_struct[1]),
-  N (bfd_mach_v850e3v5, "v850e2v4",	FALSE, & arch_info_struct[2]),
-  N (bfd_mach_v850e2v3, "v850e2v3",	FALSE, & arch_info_struct[3]),
-  N (bfd_mach_v850e2,	"v850e2",	FALSE, & arch_info_struct[4]),
-  N (bfd_mach_v850e1,	"v850e1",	FALSE, & arch_info_struct[5]),
-  N (bfd_mach_v850e,	"v850e",	FALSE, NULL)
+  N (bfd_mach_v850e3v5, "v850e3v5", FALSE, arch_info_struct + 1),
+  N (bfd_mach_v850e3v5, "v850e2v4", FALSE, arch_info_struct + 2),
+  N (bfd_mach_v850e2v3, "v850e2v3", FALSE, arch_info_struct + 3),
+  N (bfd_mach_v850e2,	"v850e2",   FALSE, arch_info_struct + 4),
+  N (bfd_mach_v850e1,	"v850e1",   FALSE, arch_info_struct + 5),
+  N (bfd_mach_v850e,	"v850e",    FALSE, NULL)
 };
 
-#undef  NEXT
-#define NEXT & arch_info_struct[0]
-
 const bfd_arch_info_type bfd_v850_arch =
-  N (bfd_mach_v850, "v850", TRUE, NEXT);
+  N (bfd_mach_v850,     "v850",     TRUE,  arch_info_struct + 0);
diff --git a/bfd/cpu-v850_rh850.c b/bfd/cpu-v850_rh850.c
index f7cd9207bd..4c84226f23 100644
--- a/bfd/cpu-v850_rh850.c
+++ b/bfd/cpu-v850_rh850.c
@@ -24,8 +24,8 @@
 #include "safe-ctype.h"
 
 #define R(number, print, default, next)  \
-{  32, 32, 8, bfd_arch_v850_rh850, number, "v850", print, 2, default, \
-   bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next }
+ { 32, 32, 8, bfd_arch_v850_rh850, number, "v850", print, 2, default, \
+   bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
diff --git a/bfd/cpu-vax.c b/bfd/cpu-vax.c
index c4c9f08078..3e9a4024a7 100644
--- a/bfd/cpu-vax.c
+++ b/bfd/cpu-vax.c
@@ -24,18 +24,19 @@
 #include "libbfd.h"
 
 const bfd_arch_info_type bfd_vax_arch =
-  {
-    32,	/* 32 bits in a word */
-    32,	/* 32 bits in an address */
-    8,	/* 8 bits in a byte */
-    bfd_arch_vax,
-    0,	/* only 1 machine */
-    "vax",
-    "vax",
-    3,
-    TRUE, /* the one and only */
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
-  };
+{
+  32,	/* Bits in a word.  */
+  32,	/* Bits in an address.  */
+  8,	/* Bits in a byte.  */
+  bfd_arch_vax,
+  0,	/* Only 1 machine.  */
+  "vax",
+  "vax",
+  3,
+  TRUE, /* The one and only.  */
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
diff --git a/bfd/cpu-visium.c b/bfd/cpu-visium.c
index 0543839c66..a1204de991 100644
--- a/bfd/cpu-visium.c
+++ b/bfd/cpu-visium.c
@@ -25,17 +25,18 @@
 
 const bfd_arch_info_type bfd_visium_arch =
 {
-  32,				/* bits per word */
-  32,				/* bits per address */
-  8,				/* bits per byte */
-  bfd_arch_visium,		/* architecture */
-  bfd_mach_visium,		/* machine */
-  "visium",			/* architecture name */
-  "visium",			/* printable name */
-  2,				/* section align power */
-  TRUE,				/* the default ? */
-  bfd_default_compatible,	/* architecture comparison fn */
-  bfd_default_scan,		/* string to architecture convert fn */
-  bfd_arch_default_fill,	/* default fill */
-  NULL				/* next in list */
+  32,				/* Bits per word.  */
+  32,				/* Bits per address.  */
+  8,				/* Bits per byte.  */
+  bfd_arch_visium,		/* Architecture number.  */
+  bfd_mach_visium,		/* Machine number.  */
+  "visium",			/* Architecture name.  */
+  "visium",			/* Machine name.  */
+  2,				/* Section align power.  */
+  TRUE,				/* The default ?  */
+  bfd_default_compatible,	/* Architecture comparison fn.  */
+  bfd_default_scan,		/* String to architecture convert fn.  */
+  bfd_arch_default_fill,	/* Default fill.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-wasm32.c b/bfd/cpu-wasm32.c
index 7f2f5629c9..142e3c2853 100644
--- a/bfd/cpu-wasm32.c
+++ b/bfd/cpu-wasm32.c
@@ -24,8 +24,8 @@
 #include "libiberty.h"
 
 #define N(number, print, default, next)  \
-{  32, 32, 8, bfd_arch_wasm32, number, "wasm32", "wasm32", 4, default, bfd_default_compatible, \
-   bfd_default_scan, bfd_arch_default_fill, next }
+ { 32, 32, 8, bfd_arch_wasm32, number, "wasm32", "wasm32", 4, default, bfd_default_compatible, \
+   bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
diff --git a/bfd/cpu-xc16x.c b/bfd/cpu-xc16x.c
index 5a3f78b723..3605c3c34b 100644
--- a/bfd/cpu-xc16x.c
+++ b/bfd/cpu-xc16x.c
@@ -24,53 +24,30 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+#define N(BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)	\
+  {							\
+    16,        /* Bits in a word.  */			\
+    BITS_ADDR, /* Bits in an address.  */		\
+    8,	       /* Bits in a byte.  */			\
+    bfd_arch_xc16x,					\
+    NUMBER,						\
+    "xc16x",						\
+    PRINT,						\
+    1,		/* Section alignment power.  */		\
+    DEFAULT,						\
+    bfd_default_compatible,				\
+    bfd_default_scan,					\
+    bfd_arch_default_fill,				\
+    NEXT,						\
+    0 /* Maximum offset of a reloc from the start of an insn.  */ \
+  }
+
 const bfd_arch_info_type xc16xs_info_struct =
-{
-  16,				/* Bits per word.  */
-  16,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_xc16x,		/* Architecture.  */
-  bfd_mach_xc16xs,		/* Machine.  */
-  "xc16x",			/* Architecture name.  */
-  "xc16xs",			/* Printable name.  */
-  1,				/* Section alignment - 16 bit.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
-};
+  N (16, bfd_mach_xc16xs, "xc16xs", FALSE, NULL);
 
 const bfd_arch_info_type xc16xl_info_struct =
-{
-  16,				/* Bits per word.  */
-  32,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_xc16x,		/* Architecture.  */
-  bfd_mach_xc16xl,		/* Machine.  */
-  "xc16x",			/* Architecture name.  */
-  "xc16xl",			/* Printable name.  */
-  1,				/* Section alignment - 16 bit.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  & xc16xs_info_struct		/* Next in list.  */
-};
+  N (32, bfd_mach_xc16xl, "xc16xl", FALSE, & xc16xs_info_struct);
 
 const bfd_arch_info_type bfd_xc16x_arch =
-{
-  16,				/* Bits per word.  */
-  16,				/* Bits per address.  */
-  8,				/* Bits per byte.  */
-  bfd_arch_xc16x,		/* Architecture.  */
-  bfd_mach_xc16x,		/* Machine.  */
-  "xc16x",			/* Architecture name.  */
-  "xc16x",			/* Printable name.  */
-  1,				/* Section alignment - 16 bit.  */
-  TRUE,				/* The default ?  */
-  bfd_default_compatible,	/* Architecture comparison fn.  */
-  bfd_default_scan,		/* String to architecture convert fn.  */
-  bfd_arch_default_fill,	/* Default fill.  */
-  & xc16xl_info_struct		/* Next in list.  */
-};
+  N (16, bfd_mach_xc16x, "xc16x", TRUE, & xc16xl_info_struct);
+
diff --git a/bfd/cpu-xgate.c b/bfd/cpu-xgate.c
index 85f1861946..720a7382a5 100644
--- a/bfd/cpu-xgate.c
+++ b/bfd/cpu-xgate.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_xgate_arch =
 {
-    16, /* 16 bits in a word.  */
-    32, /* 32 bits used as 16 bit address and PPAGE value.  */
-    8,  /* 8 bits in a byte.  */
-    bfd_arch_xgate,
-    bfd_mach_xgate,
-    "xgate",
-    "xgate",
-    4,	/* Section alignment power.  */
-    TRUE,
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    0,
+  16, /* Bits in a word.  */
+  32, /* Bits used as 16 bit address and PPAGE value.  */
+  8,  /* Bits in a byte.  */
+  bfd_arch_xgate,
+  bfd_mach_xgate,
+  "xgate",
+  "xgate",
+  4,	/* Section alignment power.  */
+  TRUE,
+  bfd_default_compatible,
+  bfd_default_scan,
+  bfd_arch_default_fill,
+  NULL,
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-xstormy16.c b/bfd/cpu-xstormy16.c
index f6e461dbe7..84aa391a9c 100644
--- a/bfd/cpu-xstormy16.c
+++ b/bfd/cpu-xstormy16.c
@@ -24,17 +24,18 @@
 
 const bfd_arch_info_type bfd_xstormy16_arch =
 {
-  16,				/* bits per word */
-  32,				/* bits per address */
-  8,				/* bits per byte */
-  bfd_arch_xstormy16,		/* architecture */
-  bfd_mach_xstormy16,		/* machine */
-  "xstormy16",			/* architecture name */
-  "xstormy16",			/* printable name */
-  2,				/* section align power */
-  TRUE,				/* the default ? */
-  bfd_default_compatible,	/* architecture comparison fn */
-  bfd_default_scan,		/* string to architecture convert fn */
+  16,				/* Bits per word.  */
+  32,				/* Bits per address.  */
+  8,				/* Bits per byte.  */
+  bfd_arch_xstormy16,		/* Architecture.  */
+  bfd_mach_xstormy16,		/* Machine.  */
+  "xstormy16",			/* Architecture name.  */
+  "xstormy16",			/* Printable name.  */
+  2,				/* Section align power.  */
+  TRUE,				/* The default ?  */
+  bfd_default_compatible,	/* Architecture comparison fn.  */
+  bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* next in list */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-xtensa.c b/bfd/cpu-xtensa.c
index 24e25a31a1..47668d6e2a 100644
--- a/bfd/cpu-xtensa.c
+++ b/bfd/cpu-xtensa.c
@@ -36,5 +36,6 @@ const bfd_arch_info_type bfd_xtensa_arch =
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL				/* Next in list.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff --git a/bfd/cpu-z80.c b/bfd/cpu-z80.c
index 145aa4f7a9..7d3b8649e3 100644
--- a/bfd/cpu-z80.c
+++ b/bfd/cpu-z80.c
@@ -41,8 +41,8 @@ compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
 }
 
 #define N(name,print,default,next)  \
-{ 16, 16, 8, bfd_arch_z80, name, "z80", print, 0, default, \
-  compatible, bfd_default_scan, bfd_arch_default_fill, next }
+ { 16, 16, 8, bfd_arch_z80, name, "z80", print, 0, default, \
+   compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 #define M(n) &arch_info_struct[n]
 
diff --git a/bfd/cpu-z8k.c b/bfd/cpu-z8k.c
index 48c17debb2..56ee56aac0 100644
--- a/bfd/cpu-z8k.c
+++ b/bfd/cpu-z8k.c
@@ -37,12 +37,12 @@ compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
 static const bfd_arch_info_type arch_info_struct[] =
 {
   { 32, 16, 8, bfd_arch_z8k, bfd_mach_z8002, "z8k", "z8002", 1, FALSE,
-    compatible, bfd_default_scan, bfd_arch_default_fill, 0 }
+    compatible, bfd_default_scan, bfd_arch_default_fill, NULL, 0 }
 };
 
 const bfd_arch_info_type bfd_z8k_arch =
 {
   32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, TRUE,
   compatible, bfd_default_scan, bfd_arch_default_fill,
-  &arch_info_struct[0]
+  &arch_info_struct[0], 0
 };
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 5e8e03d604..7ccf842955 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-10  Nick Clifton  <nickc@redhat.com>
+
+	PR 24907
+	* objdump.c (null_print): New function.
+	(disassemble_bytes): Delete previous_octets local and replace with
+	a test of the max_reloc_offset_into_insn field of the
+	bfd_arch_info structure.  If a reloc is a potential match for the
+	next insn, then perform a dummy disassembly in order to calculate
+	its real length.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 33d5d72d3d..2303fe4abf 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1836,6 +1836,12 @@ objdump_sprintf (SFILE *f, const char *format, ...)
 
 #define DEFAULT_SKIP_ZEROES_AT_END 3
 
+static int
+null_print (const void * stream ATTRIBUTE_UNUSED, const char * format ATTRIBUTE_UNUSED, ...)
+{
+  return 1;
+}
+
 /* Disassemble some data in memory between given values.  */
 
 static void
@@ -1903,10 +1909,7 @@ disassemble_bytes (struct disassemble_info * inf,
     {
       bfd_vma z;
       bfd_boolean need_nl = FALSE;
-      int previous_octets;
 
-      /* Remember the length of the previous instruction.  */
-      previous_octets = octets;
       octets = 0;
 
       /* Make sure we don't use relocs from previous instructions.  */
@@ -1990,26 +1993,43 @@ disassemble_bytes (struct disassemble_info * inf,
 		  && *relppp < relppend)
 		{
 		  bfd_signed_vma distance_to_rel;
+		  int insn_size = 0;
 
 		  distance_to_rel = (**relppp)->address
 		    - (rel_offset + addr_offset);
 
+		  if (distance_to_rel > 0
+		      && aux->abfd->arch_info->max_reloc_offset_into_insn <= distance_to_rel)
+		    {
+		      /* This reloc *might* apply to the current insn,
+			 starting somewhere inside it.  Discover the length
+			 of the current insn so that the check below will
+			 work.  */
+		      if (insn_width)
+			insn_size = insn_width;
+		      else
+			{
+			  /* We find the length by calling the dissassembler
+			     function with a dummy print handler.  This should
+			     work unless the disassembler is not expecting to
+			     be called multiple times for the same address.
+
+			     This does mean disassembling the instruction
+			     twice, but we only do this when there is a high
+			     probability that there is a reloc that will
+			     affect the instruction.  */
+			  inf->fprintf_func = (fprintf_ftype) null_print;
+			  insn_size = disassemble_fn (section->vma
+						      + addr_offset, inf);
+			  inf->fprintf_func = (fprintf_ftype) objdump_sprintf;
+			}
+		    }
+
 		  /* Check to see if the current reloc is associated with
 		     the instruction that we are about to disassemble.  */
 		  if (distance_to_rel == 0
-		      /* FIXME: This is wrong.  We are trying to catch
-			 relocs that are addressed part way through the
-			 current instruction, as might happen with a packed
-			 VLIW instruction.  Unfortunately we do not know the
-			 length of the current instruction since we have not
-			 disassembled it yet.  Instead we take a guess based
-			 upon the length of the previous instruction.  The
-			 proper solution is to have a new target-specific
-			 disassembler function which just returns the length
-			 of an instruction at a given address without trying
-			 to display its disassembly. */
 		      || (distance_to_rel > 0
-			  && distance_to_rel < (bfd_signed_vma) (previous_octets/ opb)))
+			  && distance_to_rel < (bfd_signed_vma) (insn_size / opb)))
 		    {
 		      inf->flags |= INSN_HAS_RELOC;
 		      aux->reloc = **relppp;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9c484d3bc6..444bd16987 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-10  Nick Clifton  <nickc@redhat.com>
+
+	PR 24907
+	* testsuite/gas/arm/pr24907.s: New test.
+	* testsuite/gas/arm/pr24907.d: Expected disassembly.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/gas/testsuite/gas/arm/pr24907.d b/gas/testsuite/gas/arm/pr24907.d
new file mode 100644
index 0000000000..8268d4bdc1
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr24907.d
@@ -0,0 +1,19 @@
+# name: Disassembling variable width insns with relocs (PR 24907)
+# as:
+# objdump: -d
+# This test is only valid on ELF based ports.
+#notarget: *-*-pe *-*-wince *-*-vxworks
+
+.*: +file format .*arm.*
+
+Disassembly of section \.text:
+
+0+000 <foo>:
+   0:	46c0      	nop			; .*
+   2:	f7ff fffe 	bl	0 <log_func>
+   6:	e002      	b\.n	e <func\+0x2>
+   8:	f7ff fffe 	bl	c <func>
+
+0+000c <func>:
+   c:	46c0      	nop			; .*
+   e:	46c0      	nop			; .*
diff --git a/gas/testsuite/gas/arm/pr24907.s b/gas/testsuite/gas/arm/pr24907.s
new file mode 100644
index 0000000000..ee8114e574
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr24907.s
@@ -0,0 +1,16 @@
+	.syntax unified
+	.text
+	.thumb
+
+.global foo
+foo:
+	nop
+	bl  log_func
+	b.n .L1
+	bl  func
+
+.global func
+func:
+	nop
+.L1:
+	nop


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change map_matching_symbols to take a symbol_found_callback_ftype
@ 2019-09-10 15:28 gdb-buildbot
  2019-09-10 16:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 15:28 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 199b4314efbd419d6957e366e13a14cd87cea5e4 ***

commit 199b4314efbd419d6957e366e13a14cd87cea5e4
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Fri Jul 12 10:45:34 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Change map_matching_symbols to take a symbol_found_callback_ftype
    
    This changes map_matching_symbols to take a
    symbol_found_callback_ftype, rather than separate callback and data
    parameters.  This enables a future patch to clean up some existing
    code so that it can more readily be shared.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * ada-lang.c (aux_add_nonlocal_symbols): Change type.
            (add_nonlocal_symbols): Update.
            * dwarf2read.c (dw2_map_matching_symbols): Change type.
            * psymtab.c (map_block, psym_map_matching_symbols): Change type.
            * symfile-debug.c (debug_qf_map_matching_symbols): Change type.
            * symfile.h (struct quick_symbol_functions) <map_matching_symbols>:
            Change type of "callback".  Remove "data".

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9ad7227e0b..1865eeddbb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (aux_add_nonlocal_symbols): Change type.
+	(add_nonlocal_symbols): Update.
+	* dwarf2read.c (dw2_map_matching_symbols): Change type.
+	* psymtab.c (map_block, psym_map_matching_symbols): Change type.
+	* symfile-debug.c (debug_qf_map_matching_symbols): Change type.
+	* symfile.h (struct quick_symbol_functions) <map_matching_symbols>:
+	Change type of "callback".  Remove "data".
+
 
 2019-09-09  Ali Tamur  <tamur@google.com>
 
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 347c67f95c..d677acdb60 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -5331,8 +5331,8 @@ struct match_data
   int found_sym;
 };
 
-/* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
-   to a list of symbols.  DATA0 is a pointer to a struct match_data *
+/* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
+   to a list of symbols.  DATA is a pointer to a struct match_data *
    containing the obstack that collects the symbol list, the file that SYM
    must come from, a flag indicating whether a non-argument symbol has
    been found in the current block, and the last argument symbol
@@ -5340,12 +5340,13 @@ struct match_data
    marking the end of a block, the argument symbol is added if no
    other has been found.  */
 
-static int
-aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
-			  void *data0)
+static bool
+aux_add_nonlocal_symbols (struct block_symbol *bsym,
+			  struct match_data *data)
 {
-  struct match_data *data = (struct match_data *) data0;
-  
+  const struct block *block = bsym->block;
+  struct symbol *sym = bsym->symbol;
+
   if (sym == NULL)
     {
       if (!data->found_sym && data->arg_sym != NULL) 
@@ -5358,7 +5359,7 @@ aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
   else 
     {
       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
-	return 0;
+	return true;
       else if (SYMBOL_IS_ARGUMENT (sym))
 	data->arg_sym = sym;
       else
@@ -5369,7 +5370,7 @@ aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
 			   block);
 	}
     }
-  return 0;
+  return true;
 }
 
 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
@@ -5540,20 +5541,23 @@ add_nonlocal_symbols (struct obstack *obstackp,
 
   bool is_wild_match = lookup_name.ada ().wild_match_p ();
 
+  auto callback = [&] (struct block_symbol *bsym)
+    {
+      return aux_add_nonlocal_symbols (bsym, &data);
+    };
+
   for (objfile *objfile : current_program_space->objfiles ())
     {
       data.objfile = objfile;
 
       if (is_wild_match)
 	objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
-					       domain, global,
-					       aux_add_nonlocal_symbols, &data,
+					       domain, global, callback,
 					       symbol_name_match_type::WILD,
 					       NULL);
       else
 	objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
-					       domain, global,
-					       aux_add_nonlocal_symbols, &data,
+					       domain, global, callback,
 					       symbol_name_match_type::FULL,
 					       compare_names);
 
@@ -5577,9 +5581,7 @@ add_nonlocal_symbols (struct obstack *obstackp,
         {
 	  data.objfile = objfile;
 	  objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
-						 domain, global,
-						 aux_add_nonlocal_symbols,
-						 &data,
+						 domain, global, callback,
 						 symbol_name_match_type::FULL,
 						 compare_names);
 	}
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index a75941867a..cccc493b29 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -4184,13 +4184,13 @@ dw2_expand_symtabs_with_fullname (struct objfile *objfile,
 }
 
 static void
-dw2_map_matching_symbols (struct objfile *objfile,
-			  const char * name, domain_enum domain,
-			  int global,
-			  int (*callback) (const struct block *,
-					   struct symbol *, void *),
-			  void *data, symbol_name_match_type match,
-			  symbol_compare_ftype *ordered_compare)
+dw2_map_matching_symbols
+  (struct objfile *objfile,
+   const char * name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_name_match_type match,
+   symbol_compare_ftype *ordered_compare)
 {
   /* Currently unimplemented; used for Ada.  The function can be called if the
      current language is Ada for a non-Ada objfile using GNU index.  As Ada
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 70d04f8605..cd577bc4c5 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1170,14 +1170,14 @@ psymtab_to_fullname (struct partial_symtab *ps)
 
 /* For all symbols, s, in BLOCK that are in DOMAIN and match NAME
    according to the function MATCH, call CALLBACK(BLOCK, s, DATA).
-   BLOCK is assumed to come from OBJFILE.  Returns 1 iff CALLBACK
-   ever returns non-zero, and otherwise returns 0.  */
+   BLOCK is assumed to come from OBJFILE.  Returns false iff CALLBACK
+   ever returns false, and otherwise returns true.  */
 
-static int
+static bool
 map_block (const char *name, domain_enum domain, struct objfile *objfile,
 	   const struct block *block,
-	   int (*callback) (const struct block *, struct symbol *, void *),
-	   void *data, symbol_name_match_type match)
+	   gdb::function_view<symbol_found_callback_ftype> callback,
+	   symbol_name_match_type match)
 {
   struct block_iterator iter;
   struct symbol *sym;
@@ -1191,26 +1191,26 @@ map_block (const char *name, domain_enum domain, struct objfile *objfile,
       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
 				 SYMBOL_DOMAIN (sym), domain))
 	{
-	  if (callback (block, sym, data))
-	    return 1;
+	  struct block_symbol block_sym = {sym, block};
+	  if (!callback (&block_sym))
+	    return false;
 	}
     }
 
-  return 0;
+  return true;
 }
 
 /* Psymtab version of map_matching_symbols.  See its definition in
    the definition of quick_symbol_functions in symfile.h.  */
 
 static void
-psym_map_matching_symbols (struct objfile *objfile,
-			   const char *name, domain_enum domain,
-			   int global,
-			   int (*callback) (const struct block *,
-					    struct symbol *, void *),
-			   void *data,
-			   symbol_name_match_type match,
-			   symbol_compare_ftype *ordered_compare)
+psym_map_matching_symbols
+  (struct objfile *objfile,
+   const char *name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_name_match_type match,
+   symbol_compare_ftype *ordered_compare)
 {
   const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
 
@@ -1227,10 +1227,10 @@ psym_map_matching_symbols (struct objfile *objfile,
 	  if (cust == NULL)
 	    continue;
 	  block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
-	  if (map_block (name, domain, objfile, block,
-			 callback, data, match))
+	  if (!map_block (name, domain, objfile, block, callback, match))
 	    return;
-	  if (callback (block, NULL, data))
+	  struct block_symbol block_sym = {nullptr, block};
+	  if (!callback (&block_sym))
 	    return;
 	}
     }
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index c5b565fc51..d36c192ccc 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -228,30 +228,27 @@ debug_qf_expand_symtabs_with_fullname (struct objfile *objfile,
 }
 
 static void
-debug_qf_map_matching_symbols (struct objfile *objfile,
-			       const char *name, domain_enum domain,
-			       int global,
-			       int (*callback) (const struct block *,
-						struct symbol *, void *),
-			       void *data,
-			       symbol_name_match_type match,
-			       symbol_compare_ftype *ordered_compare)
+debug_qf_map_matching_symbols
+  (struct objfile *objfile,
+   const char *name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_name_match_type match,
+   symbol_compare_ftype *ordered_compare)
 {
   const struct debug_sym_fns_data *debug_data
     = symfile_debug_objfile_data_key.get (objfile);
 
   fprintf_filtered (gdb_stdlog,
-		    "qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s, %s, %s)\n",
+		    "qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s)\n",
 		    objfile_debug_name (objfile), name,
 		    domain_name (domain), global,
-		    host_address_to_string (callback),
-		    host_address_to_string (data),
 		    plongest ((LONGEST) match),
 		    host_address_to_string (ordered_compare));
 
   debug_data->real_sf->qf->map_matching_symbols (objfile, name,
 						 domain, global,
-						 callback, data,
+						 callback,
 						 match,
 						 ordered_compare);
 }
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 5e4d2f5b53..cf9488881a 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -212,7 +212,7 @@ struct quick_symbol_functions
      and for which MATCH (symbol name, NAME) == 0, passing each to 
      CALLBACK, reading in partial symbol tables as needed.  Look
      through global symbols if GLOBAL and otherwise static symbols.
-     Passes NAME, NAMESPACE, and DATA to CALLBACK with each symbol
+     Passes NAME and NAMESPACE to CALLBACK with each symbol
      found.  After each block is processed, passes NULL to CALLBACK.
      MATCH must be weaker than strcmp_iw_ordered in the sense that
      strcmp_iw_ordered(x,y) == 0 --> MATCH(x,y) == 0.  ORDERED_COMPARE,
@@ -222,17 +222,16 @@ struct quick_symbol_functions
      and 
             strcmp_iw_ordered(x,y) <= 0 --> ORDERED_COMPARE(x,y) <= 0
      (allowing strcmp_iw_ordered(x,y) < 0 while ORDERED_COMPARE(x, y) == 0).
-     CALLBACK returns 0 to indicate that the scan should continue, or
-     non-zero to indicate that the scan should be terminated.  */
-
-  void (*map_matching_symbols) (struct objfile *,
-				const char *name, domain_enum domain,
-				int global,
-				int (*callback) (const struct block *,
-						 struct symbol *, void *),
-				void *data,
-				symbol_name_match_type match,
-				symbol_compare_ftype *ordered_compare);
+     CALLBACK returns true to indicate that the scan should continue, or
+     false to indicate that the scan should be terminated.  */
+
+  void (*map_matching_symbols)
+    (struct objfile *,
+     const char *name, domain_enum domain,
+     int global,
+     gdb::function_view<symbol_found_callback_ftype> callback,
+     symbol_name_match_type match,
+     symbol_compare_ftype *ordered_compare);
 
   /* Expand all symbol tables in OBJFILE matching some criteria.
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change iterate_over_symbols to return bool
@ 2019-09-10 15:39 gdb-buildbot
  2019-09-10 17:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 15:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6969f124b987494df069b032e2e0f36485d3d8bb ***

commit 6969f124b987494df069b032e2e0f36485d3d8bb
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Fri Jul 12 10:47:21 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Change iterate_over_symbols to return bool
    
    This changes iterate_over_symbols to return a bool.  This allows it to
    be reused in another context in a subsequent patch.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * ada-lang.c (ada_iterate_over_symbols): Return bool.
            * language.h (struct language_defn) <la_iterate_over_symbols>:
            Return bool.
            * symtab.c (iterate_over_symbols): Return bool.
            * symtab.h (iterate_over_symbols): Return bool.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1865eeddbb..e2ebafe714 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_iterate_over_symbols): Return bool.
+	* language.h (struct language_defn) <la_iterate_over_symbols>:
+	Return bool.
+	* symtab.c (iterate_over_symbols): Return bool.
+	* symtab.h (iterate_over_symbols): Return bool.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* ada-lang.c (aux_add_nonlocal_symbols): Change type.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index d677acdb60..21d40c7aad 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -5740,7 +5740,7 @@ ada_lookup_symbol_list (const char *name, const struct block *block,
 
 /* Implementation of the la_iterate_over_symbols method.  */
 
-static void
+static bool
 ada_iterate_over_symbols
   (const struct block *block, const lookup_name_info &name,
    domain_enum domain,
@@ -5754,8 +5754,10 @@ ada_iterate_over_symbols
   for (i = 0; i < ndefs; ++i)
     {
       if (!callback (&results[i]))
-	break;
+	return false;
     }
+
+  return true;
 }
 
 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
diff --git a/gdb/language.h b/gdb/language.h
index 2a100b0491..0088e5de2d 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -407,7 +407,7 @@ struct language_defn
        This field may not be NULL.  If the language does not need any
        special processing here, 'iterate_over_symbols' should be
        used as the definition.  */
-    void (*la_iterate_over_symbols)
+    bool (*la_iterate_over_symbols)
       (const struct block *block, const lookup_name_info &name,
        domain_enum domain,
        gdb::function_view<symbol_found_callback_ftype> callback);
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 88e34de05b..5f184454bd 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2822,15 +2822,9 @@ basic_lookup_transparent_type (const char *name)
   return (struct type *) 0;
 }
 
-/* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
-
-   For each symbol that matches, CALLBACK is called.  The symbol is
-   passed to the callback.
-
-   If CALLBACK returns false, the iteration ends.  Otherwise, the
-   search continues.  */
+/* See symtab.h.  */
 
-void
+bool
 iterate_over_symbols (const struct block *block,
 		      const lookup_name_info &name,
 		      const domain_enum domain,
@@ -2847,9 +2841,10 @@ iterate_over_symbols (const struct block *block,
 	  struct block_symbol block_sym = {sym, block};
 
 	  if (!callback (&block_sym))
-	    return;
+	    return false;
 	}
     }
+  return true;
 }
 
 /* Find the compunit symtab associated with PC and SECTION.
diff --git a/gdb/symtab.h b/gdb/symtab.h
index f38e544cdb..49feea62e2 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -2092,7 +2092,16 @@ std::vector<CORE_ADDR> find_pcs_for_symtab_line
 
 typedef bool (symbol_found_callback_ftype) (struct block_symbol *bsym);
 
-void iterate_over_symbols (const struct block *block,
+/* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
+
+   For each symbol that matches, CALLBACK is called.  The symbol is
+   passed to the callback.
+
+   If CALLBACK returns false, the iteration ends and this function
+   returns false.  Otherwise, the search continues, and the function
+   eventually returns true.  */
+
+bool iterate_over_symbols (const struct block *block,
 			   const lookup_name_info &name,
 			   const domain_enum domain,
 			   gdb::function_view<symbol_found_callback_ftype> callback);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify psym_map_matching_symbols
@ 2019-09-10 15:52 gdb-buildbot
  2019-09-10 18:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 15:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6a3dbf1bc620ae068c84074b2f72e11c24dc1e6d ***

commit 6a3dbf1bc620ae068c84074b2f72e11c24dc1e6d
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Fri Jul 12 11:00:39 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Simplify psym_map_matching_symbols
    
    This introduces a new helper function,
    iterate_over_symbols_terminated, and changes psym_map_matching_symbols
    to use it.  A subsequent patch will introduce a new user of this
    function in the DWARF reader.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * psymtab.c (map_block): Remove.
            (psym_map_matching_symbols): Use iterate_over_symbols_terminated.
            * symtab.c (iterate_over_symbols_terminated): New function.
            * symtab.c (iterate_over_symbols_terminated): Declare.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e2ebafe714..129aaad7d2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* psymtab.c (map_block): Remove.
+	(psym_map_matching_symbols): Use iterate_over_symbols_terminated.
+	* symtab.c (iterate_over_symbols_terminated): New function.
+	* symtab.c (iterate_over_symbols_terminated): Declare.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* ada-lang.c (ada_iterate_over_symbols): Return bool.
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index cd577bc4c5..81138bbe90 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1168,38 +1168,6 @@ psymtab_to_fullname (struct partial_symtab *ps)
   return ps->fullname;
 }
 
-/* For all symbols, s, in BLOCK that are in DOMAIN and match NAME
-   according to the function MATCH, call CALLBACK(BLOCK, s, DATA).
-   BLOCK is assumed to come from OBJFILE.  Returns false iff CALLBACK
-   ever returns false, and otherwise returns true.  */
-
-static bool
-map_block (const char *name, domain_enum domain, struct objfile *objfile,
-	   const struct block *block,
-	   gdb::function_view<symbol_found_callback_ftype> callback,
-	   symbol_name_match_type match)
-{
-  struct block_iterator iter;
-  struct symbol *sym;
-
-  lookup_name_info lookup_name (name, match);
-
-  for (sym = block_iter_match_first (block, lookup_name, &iter);
-       sym != NULL;
-       sym = block_iter_match_next (lookup_name, &iter))
-    {
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain))
-	{
-	  struct block_symbol block_sym = {sym, block};
-	  if (!callback (&block_sym))
-	    return false;
-	}
-    }
-
-  return true;
-}
-
 /* Psymtab version of map_matching_symbols.  See its definition in
    the definition of quick_symbol_functions in symfile.h.  */
 
@@ -1214,6 +1182,8 @@ psym_map_matching_symbols
 {
   const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
 
+  lookup_name_info lookup_name (name, match);
+
   for (partial_symtab *ps : require_partial_symbols (objfile, 1))
     {
       QUIT;
@@ -1227,10 +1197,8 @@ psym_map_matching_symbols
 	  if (cust == NULL)
 	    continue;
 	  block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
-	  if (!map_block (name, domain, objfile, block, callback, match))
-	    return;
-	  struct block_symbol block_sym = {nullptr, block};
-	  if (!callback (&block_sym))
+	  if (!iterate_over_symbols_terminated (block, lookup_name,
+						domain, callback))
 	    return;
 	}
     }
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 5f184454bd..e1bf3692a5 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2847,6 +2847,21 @@ iterate_over_symbols (const struct block *block,
   return true;
 }
 
+/* See symtab.h.  */
+
+bool
+iterate_over_symbols_terminated
+  (const struct block *block,
+   const lookup_name_info &name,
+   const domain_enum domain,
+   gdb::function_view<symbol_found_callback_ftype> callback)
+{
+  if (!iterate_over_symbols (block, name, domain, callback))
+    return false;
+  struct block_symbol block_sym = {nullptr, block};
+  return callback (&block_sym);
+}
+
 /* Find the compunit symtab associated with PC and SECTION.
    This will read in debug info as necessary.  */
 
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 49feea62e2..4fb00cba9f 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -2106,6 +2106,16 @@ bool iterate_over_symbols (const struct block *block,
 			   const domain_enum domain,
 			   gdb::function_view<symbol_found_callback_ftype> callback);
 
+/* Like iterate_over_symbols, but if all calls to CALLBACK return
+   true, then calls CALLBACK one additional time with a block_symbol
+   that has a valid block but a NULL symbol.  */
+
+bool iterate_over_symbols_terminated
+  (const struct block *block,
+   const lookup_name_info &name,
+   const domain_enum domain,
+   gdb::function_view<symbol_found_callback_ftype> callback);
+
 /* Storage type used by demangle_for_lookup.  demangle_for_lookup
    either returns a const char * pointer that points to either of the
    fields of this type, or a pointer to the input NAME.  This is done


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change map_matching_symbols to take a lookup_name_info
@ 2019-09-10 16:09 gdb-buildbot
  2019-09-10 19:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 16:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b054970d54e141e5d2c824223772685742af2c2a ***

commit b054970d54e141e5d2c824223772685742af2c2a
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Fri Jul 12 13:34:52 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Change map_matching_symbols to take a lookup_name_info
    
    This patch further simplifies the map_matching_symbols callback, by
    having it take a lookup_name_info rather than a plain string.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * ada-lang.c (add_nonlocal_symbols): Combine calls to
            map_matching_symbols.  Update.
            * dwarf2read.c (dw2_map_matching_symbols): Update.
            * psymtab.c (match_partial_symbol): Change type; update.
            (psym_map_matching_symbols): Likewise.
            * symfile-debug.c (debug_qf_map_matching_symbols): Change
            type; update.
            * symfile.h (struct quick_symbol_functions)
            <map_matching_symbols>: Change "name" to be a lookup_name_info.
            Remove "match".

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 129aaad7d2..e54629c994 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (add_nonlocal_symbols): Combine calls to
+	map_matching_symbols.  Update.
+	* dwarf2read.c (dw2_map_matching_symbols): Update.
+	* psymtab.c (match_partial_symbol): Change type; update.
+	(psym_map_matching_symbols): Likewise.
+	* symfile-debug.c (debug_qf_map_matching_symbols): Change
+	type; update.
+	* symfile.h (struct quick_symbol_functions)
+	<map_matching_symbols>: Change "name" to be a lookup_name_info.
+	Remove "match".
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* psymtab.c (map_block): Remove.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 21d40c7aad..8cdb62bde0 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -5550,16 +5550,10 @@ add_nonlocal_symbols (struct obstack *obstackp,
     {
       data.objfile = objfile;
 
-      if (is_wild_match)
-	objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
-					       domain, global, callback,
-					       symbol_name_match_type::WILD,
-					       NULL);
-      else
-	objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
-					       domain, global, callback,
-					       symbol_name_match_type::FULL,
-					       compare_names);
+      objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
+					     domain, global, callback,
+					     (is_wild_match
+					      ? NULL : compare_names));
 
       for (compunit_symtab *cu : objfile->compunits ())
 	{
@@ -5575,14 +5569,14 @@ add_nonlocal_symbols (struct obstack *obstackp,
   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
     {
       const char *name = ada_lookup_name (lookup_name);
-      std::string name1 = std::string ("<_ada_") + name + '>';
+      lookup_name_info name1 (std::string ("<_ada_") + name + '>',
+			      symbol_name_match_type::FULL);
 
       for (objfile *objfile : current_program_space->objfiles ())
         {
 	  data.objfile = objfile;
-	  objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
+	  objfile->sf->qf->map_matching_symbols (objfile, name1,
 						 domain, global, callback,
-						 symbol_name_match_type::FULL,
 						 compare_names);
 	}
     }      	
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index cccc493b29..d57684be90 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -4186,10 +4186,9 @@ dw2_expand_symtabs_with_fullname (struct objfile *objfile,
 static void
 dw2_map_matching_symbols
   (struct objfile *objfile,
-   const char * name, domain_enum domain,
+   const lookup_name_info &name, domain_enum domain,
    int global,
    gdb::function_view<symbol_found_callback_ftype> callback,
-   symbol_name_match_type match,
    symbol_compare_ftype *ordered_compare)
 {
   /* Currently unimplemented; used for Ada.  The function can be called if the
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 81138bbe90..1f5f492d39 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -37,13 +37,6 @@
 #include <algorithm>
 #include <set>
 
-static struct partial_symbol *match_partial_symbol (struct objfile *,
-						    struct partial_symtab *,
-						    int,
-						    const char *, domain_enum,
-						    symbol_name_match_type,
-						    symbol_compare_ftype *);
-
 static struct partial_symbol *lookup_partial_symbol (struct objfile *,
 						     struct partial_symtab *,
 						     const char *, int,
@@ -545,8 +538,7 @@ psymbol_name_matches (partial_symbol *psym,
 static struct partial_symbol *
 match_partial_symbol (struct objfile *objfile,
 		      struct partial_symtab *pst, int global,
-		      const char *name, domain_enum domain,
-		      symbol_name_match_type match_type,
+		      const lookup_name_info &name, domain_enum domain,
 		      symbol_compare_ftype *ordered_compare)
 {
   struct partial_symbol **start, **psym;
@@ -557,8 +549,6 @@ match_partial_symbol (struct objfile *objfile,
   if (length == 0)
     return NULL;
 
-  lookup_name_info lookup_name (name, match_type);
-
   start = (global ?
 	   &objfile->partial_symtabs->global_psymbols[pst->globals_offset] :
 	   &objfile->partial_symtabs->static_psymbols[pst->statics_offset]);
@@ -583,7 +573,7 @@ match_partial_symbol (struct objfile *objfile,
 
 	  enum language lang = (*center)->ginfo.language;
 	  const char *lang_ln
-	    = lookup_name.language_lookup_name (lang).c_str ();
+	    = name.language_lookup_name (lang).c_str ();
 
 	  if (ordered_compare (symbol_search_name (&(*center)->ginfo),
 			       lang_ln) >= 0)
@@ -594,7 +584,7 @@ match_partial_symbol (struct objfile *objfile,
       gdb_assert (top == bottom);
 
       while (top <= real_top
-	     && psymbol_name_matches (*top, lookup_name))
+	     && psymbol_name_matches (*top, name))
 	{
 	  if (symbol_matches_domain ((*top)->ginfo.language,
 				     (*top)->domain, domain))
@@ -612,7 +602,7 @@ match_partial_symbol (struct objfile *objfile,
 	{
 	  if (symbol_matches_domain ((*psym)->ginfo.language,
 				     (*psym)->domain, domain)
-	      && psymbol_name_matches (*psym, lookup_name))
+	      && psymbol_name_matches (*psym, name))
 	    return *psym;
 	}
     }
@@ -1174,21 +1164,18 @@ psymtab_to_fullname (struct partial_symtab *ps)
 static void
 psym_map_matching_symbols
   (struct objfile *objfile,
-   const char *name, domain_enum domain,
+   const lookup_name_info &name, domain_enum domain,
    int global,
    gdb::function_view<symbol_found_callback_ftype> callback,
-   symbol_name_match_type match,
    symbol_compare_ftype *ordered_compare)
 {
   const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
 
-  lookup_name_info lookup_name (name, match);
-
   for (partial_symtab *ps : require_partial_symbols (objfile, 1))
     {
       QUIT;
       if (ps->readin
-	  || match_partial_symbol (objfile, ps, global, name, domain, match,
+	  || match_partial_symbol (objfile, ps, global, name, domain,
 				   ordered_compare))
 	{
 	  struct compunit_symtab *cust = psymtab_to_symtab (objfile, ps);
@@ -1197,7 +1184,7 @@ psym_map_matching_symbols
 	  if (cust == NULL)
 	    continue;
 	  block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
-	  if (!iterate_over_symbols_terminated (block, lookup_name,
+	  if (!iterate_over_symbols_terminated (block, name,
 						domain, callback))
 	    return;
 	}
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index d36c192ccc..9a5d0fa0a6 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -230,26 +230,23 @@ debug_qf_expand_symtabs_with_fullname (struct objfile *objfile,
 static void
 debug_qf_map_matching_symbols
   (struct objfile *objfile,
-   const char *name, domain_enum domain,
+   const lookup_name_info &name, domain_enum domain,
    int global,
    gdb::function_view<symbol_found_callback_ftype> callback,
-   symbol_name_match_type match,
    symbol_compare_ftype *ordered_compare)
 {
   const struct debug_sym_fns_data *debug_data
     = symfile_debug_objfile_data_key.get (objfile);
 
   fprintf_filtered (gdb_stdlog,
-		    "qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s)\n",
-		    objfile_debug_name (objfile), name,
+		    "qf->map_matching_symbols (%s, %s, %d, %s)\n",
+		    objfile_debug_name (objfile),
 		    domain_name (domain), global,
-		    plongest ((LONGEST) match),
 		    host_address_to_string (ordered_compare));
 
   debug_data->real_sf->qf->map_matching_symbols (objfile, name,
 						 domain, global,
 						 callback,
-						 match,
 						 ordered_compare);
 }
 
diff --git a/gdb/symfile.h b/gdb/symfile.h
index cf9488881a..6fa6db4750 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -227,10 +227,10 @@ struct quick_symbol_functions
 
   void (*map_matching_symbols)
     (struct objfile *,
-     const char *name, domain_enum domain,
+     const lookup_name_info &lookup_name,
+     domain_enum domain,
      int global,
      gdb::function_view<symbol_found_callback_ftype> callback,
-     symbol_name_match_type match,
      symbol_compare_ftype *ordered_compare);
 
   /* Expand all symbol tables in OBJFILE matching some criteria.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix latent bug in .debug_names file-name handling
@ 2019-09-10 16:18 gdb-buildbot
  2019-09-10 20:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 16:18 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aa3916548076c159ae00a922690694094a37fcd0 ***

commit aa3916548076c159ae00a922690694094a37fcd0
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Thu Jul 18 12:27:16 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Fix latent bug in .debug_names file-name handling
    
    An internal Ada test case showed that the .debug_names code does not
    compute the same list of file names as the partial symbol reader.  In
    particular, the partial symbol reader uses the DW_AT_name of the CU:
    
      /* Allocate a new partial symbol table structure.  */
      filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
      if (filename == NULL)
        filename = "";
    
      pst = create_partial_symtab (per_cu, filename);
    
    This patch changes the .debug_names reader to follow.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * dwarf2read.c (dw2_get_file_names_reader): Add the
            CU's file name to the results.
    
    gdb/testsuite/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * gdb.ada/dgopt.exp: New file.
            * gdb.ada/dgopt/x.adb: New file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e54629c994..4db1572bc3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (dw2_get_file_names_reader): Add the
+	CU's file name to the results.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* ada-lang.c (add_nonlocal_symbols): Combine calls to
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index d57684be90..2379c9c273 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -3692,11 +3692,17 @@ dw2_get_file_names_reader (const struct die_reader_specs *reader,
 
   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
 
-  qfn->num_file_names = lh->file_names.size ();
+  int offset = 0;
+  if (strcmp (fnd.name, "<unknown>") != 0)
+    ++offset;
+
+  qfn->num_file_names = offset + lh->file_names.size ();
   qfn->file_names =
-    XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
+    XOBNEWVEC (&objfile->objfile_obstack, const char *, qfn->num_file_names);
+  if (offset != 0)
+    qfn->file_names[0] = xstrdup (fnd.name);
   for (i = 0; i < lh->file_names.size (); ++i)
-    qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
+    qfn->file_names[i + offset] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
   qfn->real_names = NULL;
 
   lh_cu->v.quick->file_names = qfn;
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 6cee4787e0..9df3563c47 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/dgopt.exp: New file.
+	* gdb.ada/dgopt/x.adb: New file.
+
 2019-09-08  Tom Tromey  <tom@tromey.com>
 
 	* gdb.tui/resize.exp: Remove setup_xfail.
diff --git a/gdb/testsuite/gdb.ada/dgopt.exp b/gdb/testsuite/gdb.ada/dgopt.exp
new file mode 100644
index 0000000000..db69121b40
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/dgopt.exp
@@ -0,0 +1,34 @@
+# Copyright 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test case using the -gnatDG option.
+
+load_lib "ada.exp"
+
+standard_ada_testfile x
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
+	 {debug additional_flags=-gnatDG}] != "" } {
+  return -1
+}
+
+clean_restart ${testfile}
+
+# The bug occurs with .debug_names, but here we don't check whether
+# the appropriate target board is in use.  The problem was that the
+# .adb file did not end up in the file table, but did show up in the
+# DWARF, which the psymtab reader handled, but which the .debug_names
+# reader did not.
+gdb_test "list x.adb:16, 16" "16.*procedure X is"
diff --git a/gdb/testsuite/gdb.ada/dgopt/x.adb b/gdb/testsuite/gdb.ada/dgopt/x.adb
new file mode 100644
index 0000000000..039e99d393
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/dgopt/x.adb
@@ -0,0 +1,19 @@
+--  Copyright 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+procedure X is
+begin
+   null;
+end X;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add Ada support for .debug_names
@ 2019-09-10 16:33 gdb-buildbot
  2019-09-10 21:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 16:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3b00ef10a2a4750a86a04bb66eda3bf33d298be1 ***

commit 3b00ef10a2a4750a86a04bb66eda3bf33d298be1
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Mon Jul 8 06:23:16 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Add Ada support for .debug_names
    
    This patch adds support for Ada to .debug_names.  I opted to leave
    .gdb_index alone, because in my view it is a defunct format.
    
    gdb/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * dwarf-index-write.c (write_psymbols): Extend error message.
            (debug_names::insert): Add Ada code.
            (debug_names::write_psymbols): Remove Ada check.
            (debug_names) <m_string_obstack>: New member.
            * dwarf2read.c (gdb_index_symbol_name_matcher): Remove.
            (gdb_index_symbol_name_matcher::matches): Remove.
            (mapped_index_base::find_name_components_bounds): Add "lang"
            parameter.
            (mapped_index_base::build_name_components): Also split names
            according to Ada syntax.
            (dw2_expand_symtabs_matching_symbol): Loop over languages.  Change
            type of "match_callback".
            (check_match, check_find_bounds_finds)
            (dw2_expand_symtabs_matching): Update.
            (dw2_debug_names_iterator): Add new constructor.
            (dw2_debug_names_map_matching_symbols): New function.
            (dw2_debug_names_expand_symtabs_matching): Update.
            (dwarf2_debug_names_functions): Use
            dw2_debug_names_map_matching_symbols.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4db1572bc3..dace64e6be 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,25 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf-index-write.c (write_psymbols): Extend error message.
+	(debug_names::insert): Add Ada code.
+	(debug_names::write_psymbols): Remove Ada check.
+	(debug_names) <m_string_obstack>: New member.
+	* dwarf2read.c (gdb_index_symbol_name_matcher): Remove.
+	(gdb_index_symbol_name_matcher::matches): Remove.
+	(mapped_index_base::find_name_components_bounds): Add "lang"
+	parameter.
+	(mapped_index_base::build_name_components): Also split names
+	according to Ada syntax.
+	(dw2_expand_symtabs_matching_symbol): Loop over languages.  Change
+	type of "match_callback".
+	(check_match, check_find_bounds_finds)
+	(dw2_expand_symtabs_matching): Update.
+	(dw2_debug_names_iterator): Add new constructor.
+	(dw2_debug_names_map_matching_symbols): New function.
+	(dw2_debug_names_expand_symtabs_matching): Update.
+	(dwarf2_debug_names_functions): Use
+	dw2_debug_names_map_matching_symbols.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* dwarf2read.c (dw2_get_file_names_reader): Add the
diff --git a/gdb/dwarf-index-write.c b/gdb/dwarf-index-write.c
index 7d59a1ba16..153c6792f0 100644
--- a/gdb/dwarf-index-write.c
+++ b/gdb/dwarf-index-write.c
@@ -34,6 +34,7 @@
 #include "gdbcmd.h"
 #include "objfiles.h"
 #include "psympriv.h"
+#include "ada-lang.h"
 
 #include <algorithm>
 #include <cmath>
@@ -541,7 +542,8 @@ write_psymbols (struct mapped_symtab *symtab,
       struct partial_symbol *psym = *psymp;
 
       if (psym->ginfo.language == language_ada)
-	error (_("Ada is not currently supported by the index"));
+	error (_("Ada is not currently supported by the index; "
+		 "use the DWARF 5 index instead"));
 
       /* Only add a given psymbol once.  */
       if (psyms_seen.insert (psym).second)
@@ -684,7 +686,43 @@ public:
     const int dwarf_tag = psymbol_tag (psym);
     if (dwarf_tag == 0)
       return;
-    const char *const name = symbol_search_name (&psym->ginfo);
+    const char *name = symbol_search_name (&psym->ginfo);
+
+    if (psym->ginfo.language == language_ada)
+      {
+	/* We want to ensure that the Ada main function's name appears
+	   verbatim in the index.  However, this name will be of the
+	   form "_ada_mumble", and will be rewritten by ada_decode.
+	   So, recognize it specially here and add it to the index by
+	   hand.  */
+	if (strcmp (main_name (), name) == 0)
+	  {
+	    const auto insertpair
+	      = m_name_to_value_set.emplace (c_str_view (name),
+					     std::set<symbol_value> ());
+	    std::set<symbol_value> &value_set = insertpair.first->second;
+	    value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static,
+					     kind));
+	  }
+
+	/* In order for the index to work when read back into gdb, it
+	   has to supply a funny form of the name: it should be the
+	   encoded name, with any suffixes stripped.  Using the
+	   ordinary encoded name will not work properly with the
+	   searching logic in find_name_components_bounds; nor will
+	   using the decoded name.  Furthermore, an Ada "verbatim"
+	   name (of the form "<MumBle>") must be entered without the
+	   angle brackets.  Note that the current index is unusual,
+	   see PR symtab/24820 for details.  */
+	const char *decoded = ada_decode (name);
+	if (decoded[0] == '<')
+	  name = (char *) obstack_copy0 (&m_string_obstack,
+					 decoded + 1,
+					 strlen (decoded + 1) - 1);
+	else
+	  name = obstack_strdup (&m_string_obstack, ada_encode (decoded));
+      }
+
     const auto insertpair
       = m_name_to_value_set.emplace (c_str_view (name),
 				     std::set<symbol_value> ());
@@ -1181,9 +1219,6 @@ private:
       {
 	struct partial_symbol *psym = *psymp;
 
-	if (psym->ginfo.language == language_ada)
-	  error (_("Ada is not currently supported by the index"));
-
 	/* Only add a given psymbol once.  */
 	if (psyms_seen.insert (psym).second)
 	  insert (psym, cu_index, is_static, kind);
@@ -1244,6 +1279,9 @@ private:
 
   /* .debug_names entry pool.  */
   data_buf m_entry_pool;
+
+  /* Temporary storage for Ada names.  */
+  auto_obstack m_string_obstack;
 };
 
 /* Return iff any of the needed offsets does not fit into 32-bit
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 2379c9c273..c94fc245fd 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -179,7 +179,8 @@ struct mapped_index_base
      vector.  */
   std::pair<std::vector<name_component>::const_iterator,
 	    std::vector<name_component>::const_iterator>
-    find_name_components_bounds (const lookup_name_info &ln_no_params) const;
+    find_name_components_bounds (const lookup_name_info &ln_no_params,
+				 enum language lang) const;
 
   /* Prevent deleting/destroying via a base class pointer.  */
 protected:
@@ -4202,93 +4203,6 @@ dw2_map_matching_symbols
      does not look for non-Ada symbols this function should just return.  */
 }
 
-/* Symbol name matcher for .gdb_index names.
-
-   Symbol names in .gdb_index have a few particularities:
-
-   - There's no indication of which is the language of each symbol.
-
-     Since each language has its own symbol name matching algorithm,
-     and we don't know which language is the right one, we must match
-     each symbol against all languages.  This would be a potential
-     performance problem if it were not mitigated by the
-     mapped_index::name_components lookup table, which significantly
-     reduces the number of times we need to call into this matcher,
-     making it a non-issue.
-
-   - Symbol names in the index have no overload (parameter)
-     information.  I.e., in C++, "foo(int)" and "foo(long)" both
-     appear as "foo" in the index, for example.
-
-     This means that the lookup names passed to the symbol name
-     matcher functions must have no parameter information either
-     because (e.g.) symbol search name "foo" does not match
-     lookup-name "foo(int)" [while swapping search name for lookup
-     name would match].
-*/
-class gdb_index_symbol_name_matcher
-{
-public:
-  /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
-  gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
-
-  /* Walk all the matcher routines and match SYMBOL_NAME against them.
-     Returns true if any matcher matches.  */
-  bool matches (const char *symbol_name);
-
-private:
-  /* A reference to the lookup name we're matching against.  */
-  const lookup_name_info &m_lookup_name;
-
-  /* A vector holding all the different symbol name matchers, for all
-     languages.  */
-  std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
-};
-
-gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
-  (const lookup_name_info &lookup_name)
-    : m_lookup_name (lookup_name)
-{
-  /* Prepare the vector of comparison functions upfront, to avoid
-     doing the same work for each symbol.  Care is taken to avoid
-     matching with the same matcher more than once if/when multiple
-     languages use the same matcher function.  */
-  auto &matchers = m_symbol_name_matcher_funcs;
-  matchers.reserve (nr_languages);
-
-  matchers.push_back (default_symbol_name_matcher);
-
-  for (int i = 0; i < nr_languages; i++)
-    {
-      const language_defn *lang = language_def ((enum language) i);
-      symbol_name_matcher_ftype *name_matcher
-	= get_symbol_name_matcher (lang, m_lookup_name);
-
-      /* Don't insert the same comparison routine more than once.
-	 Note that we do this linear walk instead of a seemingly
-	 cheaper sorted insert, or use a std::set or something like
-	 that, because relative order of function addresses is not
-	 stable.  This is not a problem in practice because the number
-	 of supported languages is low, and the cost here is tiny
-	 compared to the number of searches we'll do afterwards using
-	 this object.  */
-      if (name_matcher != default_symbol_name_matcher
-	  && (std::find (matchers.begin (), matchers.end (), name_matcher)
-	      == matchers.end ()))
-	matchers.push_back (name_matcher);
-    }
-}
-
-bool
-gdb_index_symbol_name_matcher::matches (const char *symbol_name)
-{
-  for (auto matches_name : m_symbol_name_matcher_funcs)
-    if (matches_name (symbol_name, m_lookup_name, NULL))
-      return true;
-
-  return false;
-}
-
 /* Starting from a search name, return the string that finds the upper
    bound of all strings that start with SEARCH_NAME in a sorted name
    list.  Returns the empty string to indicate that the upper bound is
@@ -4367,13 +4281,13 @@ make_sort_after_prefix_name (const char *search_name)
 std::pair<std::vector<name_component>::const_iterator,
 	  std::vector<name_component>::const_iterator>
 mapped_index_base::find_name_components_bounds
-  (const lookup_name_info &lookup_name_without_params) const
+  (const lookup_name_info &lookup_name_without_params, language lang) const
 {
   auto *name_cmp
     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
 
-  const char *cplus
-    = lookup_name_without_params.cplus ().lookup_name ().c_str ();
+  const char *lang_name
+    = lookup_name_without_params.language_lookup_name (lang).c_str ();
 
   /* Comparison function object for lower_bound that matches against a
      given symbol name.  */
@@ -4401,10 +4315,10 @@ mapped_index_base::find_name_components_bounds
   /* Find the lower bound.  */
   auto lower = [&] ()
     {
-      if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
+      if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
 	return begin;
       else
-	return std::lower_bound (begin, end, cplus, lookup_compare_lower);
+	return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
     } ();
 
   /* Find the upper bound.  */
@@ -4423,14 +4337,14 @@ mapped_index_base::find_name_components_bounds
 	     We find the upper bound by looking for the insertion
 	     point of "func"-with-last-character-incremented,
 	     i.e. "fund".  */
-	  std::string after = make_sort_after_prefix_name (cplus);
+	  std::string after = make_sort_after_prefix_name (lang_name);
 	  if (after.empty ())
 	    return end;
 	  return std::lower_bound (lower, end, after.c_str (),
 				   lookup_compare_lower);
 	}
       else
-	return std::upper_bound (lower, end, cplus, lookup_compare_upper);
+	return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
     } ();
 
   return {lower, upper};
@@ -4450,11 +4364,7 @@ mapped_index_base::build_name_components ()
 
   /* The code below only knows how to break apart components of C++
      symbol names (and other languages that use '::' as
-     namespace/module separator).  If we add support for wild matching
-     to some language that uses some other operator (E.g., Ada, Go and
-     D use '.'), then we'll need to try splitting the symbol name
-     according to that language too.  Note that Ada does support wild
-     matching, but doesn't currently support .gdb_index.  */
+     namespace/module separator) and Ada symbol names.  */
   auto count = this->symbol_name_count ();
   for (offset_type idx = 0; idx < count; idx++)
     {
@@ -4465,16 +4375,33 @@ mapped_index_base::build_name_components ()
 
       /* Add each name component to the name component table.  */
       unsigned int previous_len = 0;
-      for (unsigned int current_len = cp_find_first_component (name);
-	   name[current_len] != '\0';
-	   current_len += cp_find_first_component (name + current_len))
+
+      if (strstr (name, "::") != nullptr)
+	{
+	  for (unsigned int current_len = cp_find_first_component (name);
+	       name[current_len] != '\0';
+	       current_len += cp_find_first_component (name + current_len))
+	    {
+	      gdb_assert (name[current_len] == ':');
+	      this->name_components.push_back ({previous_len, idx});
+	      /* Skip the '::'.  */
+	      current_len += 2;
+	      previous_len = current_len;
+	    }
+	}
+      else
 	{
-	  gdb_assert (name[current_len] == ':');
-	  this->name_components.push_back ({previous_len, idx});
-	  /* Skip the '::'.  */
-	  current_len += 2;
-	  previous_len = current_len;
+	  /* Handle the Ada encoded (aka mangled) form here.  */
+	  for (const char *iter = strstr (name, "__");
+	       iter != nullptr;
+	       iter = strstr (iter, "__"))
+	    {
+	      this->name_components.push_back ({previous_len, idx});
+	      iter += 2;
+	      previous_len = iter - name;
+	    }
 	}
+
       this->name_components.push_back ({previous_len, idx});
     }
 
@@ -4509,22 +4436,15 @@ dw2_expand_symtabs_matching_symbol
    const lookup_name_info &lookup_name_in,
    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
    enum search_domain kind,
-   gdb::function_view<void (offset_type)> match_callback)
+   gdb::function_view<bool (offset_type)> match_callback)
 {
   lookup_name_info lookup_name_without_params
     = lookup_name_in.make_ignore_params ();
-  gdb_index_symbol_name_matcher lookup_name_matcher
-    (lookup_name_without_params);
 
   /* Build the symbol name component sorted vector, if we haven't
      yet.  */
   index.build_name_components ();
 
-  auto bounds = index.find_name_components_bounds (lookup_name_without_params);
-
-  /* Now for each symbol name in range, check to see if we have a name
-     match, and if so, call the MATCH_CALLBACK callback.  */
-
   /* The same symbol may appear more than once in the range though.
      E.g., if we're looking for symbols that complete "w", and we have
      a symbol named "w1::w2", we'll find the two name components for
@@ -4533,17 +4453,61 @@ dw2_expand_symtabs_matching_symbol
      indexes that matched in a temporary vector and ignore
      duplicates.  */
   std::vector<offset_type> matches;
-  matches.reserve (std::distance (bounds.first, bounds.second));
 
-  for (; bounds.first != bounds.second; ++bounds.first)
+  struct name_and_matcher
+  {
+    symbol_name_matcher_ftype *matcher;
+    const std::string &name;
+
+    bool operator== (const name_and_matcher &other) const
     {
-      const char *qualified = index.symbol_name_at (bounds.first->idx);
+      return matcher == other.matcher && name == other.name;
+    }
+  };
+
+  /* A vector holding all the different symbol name matchers, for all
+     languages.  */
+  std::vector<name_and_matcher> matchers;
+
+  for (int i = 0; i < nr_languages; i++)
+    {
+      enum language lang_e = (enum language) i;
+
+      const language_defn *lang = language_def (lang_e);
+      symbol_name_matcher_ftype *name_matcher
+	= get_symbol_name_matcher (lang, lookup_name_without_params);
+
+      name_and_matcher key {
+         name_matcher,
+	 lookup_name_without_params.language_lookup_name (lang_e)
+      };
 
-      if (!lookup_name_matcher.matches (qualified)
-	  || (symbol_matcher != NULL && !symbol_matcher (qualified)))
+      /* Don't insert the same comparison routine more than once.
+	 Note that we do this linear walk.  This is not a problem in
+	 practice because the number of supported languages is
+	 low.  */
+      if (std::find (matchers.begin (), matchers.end (), key)
+	  != matchers.end ())
 	continue;
+      matchers.push_back (std::move (key));
+
+      auto bounds
+	= index.find_name_components_bounds (lookup_name_without_params,
+					     lang_e);
+
+      /* Now for each symbol name in range, check to see if we have a name
+	 match, and if so, call the MATCH_CALLBACK callback.  */
+
+      for (; bounds.first != bounds.second; ++bounds.first)
+	{
+	  const char *qualified = index.symbol_name_at (bounds.first->idx);
 
-      matches.push_back (bounds.first->idx);
+	  if (!name_matcher (qualified, lookup_name_without_params, NULL)
+	      || (symbol_matcher != NULL && !symbol_matcher (qualified)))
+	    continue;
+
+	  matches.push_back (bounds.first->idx);
+	}
     }
 
   std::sort (matches.begin (), matches.end ());
@@ -4554,7 +4518,8 @@ dw2_expand_symtabs_matching_symbol
     {
       if (prev != idx)
 	{
-	  match_callback (idx);
+	  if (!match_callback (idx))
+	    break;
 	  prev = idx;
 	}
     }
@@ -4649,6 +4614,7 @@ check_match (const char *file, int line,
 
     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
       mismatch (expected_str, matched_name);
+    return true;
   });
 
   const char *expected_str
@@ -4715,7 +4681,8 @@ check_find_bounds_finds (mapped_index_base &index,
   lookup_name_info lookup_name (search_name,
 				symbol_name_match_type::FULL, true);
 
-  auto bounds = index.find_name_components_bounds (lookup_name);
+  auto bounds = index.find_name_components_bounds (lookup_name,
+						   language_cplus);
 
   size_t distance = std::distance (bounds.first, bounds.second);
   if (distance != expected_syms.size ())
@@ -5200,6 +5167,7 @@ dw2_expand_symtabs_matching
     {
       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
 			     expansion_notify, kind);
+      return true;
     });
 }
 
@@ -5684,6 +5652,13 @@ public:
       m_addr (find_vec_in_debug_names (map, namei))
   {}
 
+  dw2_debug_names_iterator (const mapped_debug_names &map,
+			    block_enum block_index, domain_enum domain,
+			    uint32_t namei)
+    : m_map (map), m_block_index (block_index), m_domain (domain),
+      m_addr (find_vec_in_debug_names (map, namei))
+  {}
+
   /* Return the next matching CU or NULL if there are no more.  */
   dwarf2_per_cu_data *next ();
 
@@ -6101,6 +6076,63 @@ dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
     }
 }
 
+static void
+dw2_debug_names_map_matching_symbols
+  (struct objfile *objfile,
+   const lookup_name_info &name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_compare_ftype *ordered_compare)
+{
+  struct dwarf2_per_objfile *dwarf2_per_objfile
+    = get_dwarf2_per_objfile (objfile);
+
+  /* debug_names_table is NULL if OBJF_READNOW.  */
+  if (!dwarf2_per_objfile->debug_names_table)
+    return;
+
+  mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
+  const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
+
+  const char *match_name = name.ada ().lookup_name ().c_str ();
+  auto matcher = [&] (const char *symname)
+    {
+      if (ordered_compare == nullptr)
+	return true;
+      return ordered_compare (symname, match_name) == 0;
+    };
+
+  dw2_expand_symtabs_matching_symbol (map, name, matcher, ALL_DOMAIN,
+				      [&] (offset_type namei)
+    {
+      /* The name was matched, now expand corresponding CUs that were
+	 marked.  */
+      dw2_debug_names_iterator iter (map, block_kind, domain, namei);
+
+      struct dwarf2_per_cu_data *per_cu;
+      while ((per_cu = iter.next ()) != NULL)
+	dw2_expand_symtabs_matching_one (per_cu, nullptr, nullptr);
+      return true;
+    });
+
+  /* It's a shame we couldn't do this inside the
+     dw2_expand_symtabs_matching_symbol callback, but that skips CUs
+     that have already been expanded.  Instead, this loop matches what
+     the psymtab code does.  */
+  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
+    {
+      struct compunit_symtab *cust = per_cu->v.quick->compunit_symtab;
+      if (cust != nullptr)
+	{
+	  const struct block *block
+	    = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
+	  if (!iterate_over_symbols_terminated (block, name,
+						domain, callback))
+	    break;
+	}
+    }
+}
+
 static void
 dw2_debug_names_expand_symtabs_matching
   (struct objfile *objfile,
@@ -6133,6 +6165,7 @@ dw2_debug_names_expand_symtabs_matching
       while ((per_cu = iter.next ()) != NULL)
 	dw2_expand_symtabs_matching_one (per_cu, file_matcher,
 					 expansion_notify);
+      return true;
     });
 }
 
@@ -6148,7 +6181,7 @@ const struct quick_symbol_functions dwarf2_debug_names_functions =
   dw2_debug_names_expand_symtabs_for_function,
   dw2_expand_all_symtabs,
   dw2_expand_symtabs_with_fullname,
-  dw2_map_matching_symbols,
+  dw2_debug_names_map_matching_symbols,
   dw2_debug_names_expand_symtabs_matching,
   dw2_find_pc_sect_compunit_symtab,
   NULL,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add Ada support to cc-with-tweaks.exp
@ 2019-09-10 16:50 gdb-buildbot
  2019-09-10 21:59 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 16:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8a51616424828e6204a20436a719f98436f5d5ea ***

commit 8a51616424828e6204a20436a719f98436f5d5ea
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Tue Jul 9 13:51:26 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Tue Sep 10 08:30:45 2019 -0600

    Add Ada support to cc-with-tweaks.exp
    
    This adds Ada support to the cc-with-tweaks.exp board file, so that we
    can test Ada this way.  The cc-with-tweaks.sh script already works
    reasonably well as a wrapper for gnatmake.
    
    gdb/testsuite/ChangeLog
    2019-09-10  Tom Tromey  <tromey@adacore.com>
    
            * boards/cc-with-tweaks.exp: Set GNATMAKE_FOR_TARGET.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9df3563c47..a51d22ce22 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* boards/cc-with-tweaks.exp: Set GNATMAKE_FOR_TARGET.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* gdb.ada/dgopt.exp: New file.
diff --git a/gdb/testsuite/boards/cc-with-tweaks.exp b/gdb/testsuite/boards/cc-with-tweaks.exp
index c50a0065c2..371481477a 100644
--- a/gdb/testsuite/boards/cc-with-tweaks.exp
+++ b/gdb/testsuite/boards/cc-with-tweaks.exp
@@ -42,6 +42,7 @@ load_generic_config "unix"
 process_multilib_options ""
 set found_gcc [find_gcc]
 set found_gxx [find_g++]
+set found_gnatmake [find_gnatmake]
 set_board_info compiler "$found_gcc"
 
 set contrib_dir [file normalize $srcdir/../contrib]
@@ -53,6 +54,10 @@ if ![info exists CXX_FOR_TARGET] {
     set CXX_FOR_TARGET "$found_gxx"
 }
 set CXX_FOR_TARGET "$contrib_dir/cc-with-tweaks.sh $CC_WITH_TWEAKS_FLAGS $CXX_FOR_TARGET"
+if ![info exists GNATMAKE_FOR_TARGET] {
+    set GNATMAKE_FOR_TARGET "$found_gnatmake"
+}
+set GNATMAKE_FOR_TARGET "$contrib_dir/cc-with-tweaks.sh $CC_WITH_TWEAKS_FLAGS $GNATMAKE_FOR_TARGET"
 
 set pwd [exec pwd -P]
 exec echo $GDB $INTERNAL_GDBFLAGS $GDBFLAGS \"\$@\" > $pwd/gdb.sh


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use the correct alias for the M68K tdiv instruction.
@ 2019-09-10 17:05 gdb-buildbot
  2019-09-10 23:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-10 17:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8063ab7e37c1a2abfa272d10e8d2c7ae192b1787 ***

commit 8063ab7e37c1a2abfa272d10e8d2c7ae192b1787
Author:     Miod Vallat <miod@online.fr>
AuthorDate: Tue Sep 10 17:17:01 2019 +0100
Commit:     Nick Clifton <nickc@redhat.com>
CommitDate: Tue Sep 10 17:17:01 2019 +0100

    Use the correct alias for the M68K tdiv instruction.
    
            PR 24982
            * m68k-opc.c: Correct aliases for tdivsl and tdivul.

diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 67bc754be5..392fcacfb6 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-10  Miod Vallat  <miod@online.fr>
+
+	PR 24982
+	* m68k-opc.c: Correct aliases for tdivsl and tdivul.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/opcodes/m68k-opc.c b/opcodes/m68k-opc.c
index d99bf90fca..c93c675981 100644
--- a/opcodes/m68k-opc.c
+++ b/opcodes/m68k-opc.c
@@ -2325,7 +2325,7 @@ const struct m68k_opcode_alias m68k_opcode_aliases[] =
   { "dbhsw",	"dbcc", },
   { "dbra",	"dbf", },
   { "dbraw",	"dbf", },
-  { "tdivsl",	"divsl", },
+  { "tdivsl",	"divsll", },
   { "divs",	"divsw", },
   { "divu",	"divuw", },
   { "ext",	"extw", },
@@ -2435,7 +2435,7 @@ const struct m68k_opcode_alias m68k_opcode_aliases[] =
   { "movsw",	"movesw", },
   { "mov3q",	"mov3ql", },
 
-  { "tdivul",	"divul", },	/* For m68k-svr4.  */
+  { "tdivul",	"divull", },	/* For m68k-svr4.  */
   { "fmovb",	"fmoveb", },
   { "fsmovb",	"fsmoveb", },
   { "fdmovb",	"fdmoveb", },


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Tidy ld/ldmisc.c
@ 2019-09-11  7:07 gdb-buildbot
  2019-09-11  9:12 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11  7:07 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT cb7f4b298e5e0a3ab4fb6b13aa89e970478597bc ***

commit cb7f4b298e5e0a3ab4fb6b13aa89e970478597bc
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 9 15:23:27 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 11 13:43:29 2019 +0930

    Tidy ld/ldmisc.c
    
    The idea here is to not use elf-bfd.h and coff-bfd.h in generic linker
    code.
    
    bfd/
            * targets.c (struct bfd_target): Add _bfd_group_name.
            (BFD_JUMP_TABLE): Likewise.
            * coffgen.c (bfd_coff_group_name): New function.
            * elf.c (bfd_elf_group_name): New function.
            * linker.c (_bfd_nolink_bfd_group_name): New function.
            * section.c (bfd_generic_group_name): New function.
            * elf-bfd.h (bfd_elf_group_name): Declare.
            * libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
            * libcoff-in.h (bfd_coff_group_name): Declare.
            * aout-target.h (MY_bfd_group_name): Define.
            * aout-tic30.c (MY_bfd_group_name): Define.
            * bfd.c (bfd_group_name): Define.
            * binary.c (binary_bfd_group_name): Define.
            * coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
            * coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
            * coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
            * coffcode.h (coff_bfd_group_name): Define.
            * elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
            * i386msdos.c (msdos_bfd_group_name): Define.
            * ihex.c (ihex_bfd_group_name): Define.
            * mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
            * mmo.c (mmo_bfd_group_name): Define.
            * pef.c (bfd_pef_bfd_group_name): Define.
            * plugin.c (bfd_plugin_bfd_group_name): Define.
            * ppcboot.c (ppcboot_bfd_group_name): Define.
            * som.c (som_bfd_group_name): Define.
            * srec.c (srec_bfd_group_name): Define.
            * tekhex.c (tekhex_bfd_group_name): Define.
            * verilog.c (verilog_bfd_group_name): Define.
            * vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
            * xsym.c (bfd_sym_bfd_group_name): Define.
            * coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
            (rs6000_xcoff64_aix_vec): Likewise.
            * bfd-in2.h: Regenerate.
            * libbfd.h: Regenerate.
            * libcoff.h: Regenerate.
    ld/
            * ldmisc.c: Don't #include elf-bfd.h or coff-bfd.h.
            (vfinfo): Use bfd_group_name.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8b6b843a6f..f498a91b88 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,42 @@
+2019-09-11  Alan Modra  <amodra@gmail.com>
+
+	* targets.c (struct bfd_target): Add _bfd_group_name.
+	(BFD_JUMP_TABLE): Likewise.
+	* coffgen.c (bfd_coff_group_name): New function.
+	* elf.c (bfd_elf_group_name): New function.
+	* linker.c (_bfd_nolink_bfd_group_name): New function.
+	* section.c (bfd_generic_group_name): New function.
+	* elf-bfd.h (bfd_elf_group_name): Declare.
+	* libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
+	* libcoff-in.h (bfd_coff_group_name): Declare.
+	* aout-target.h (MY_bfd_group_name): Define.
+	* aout-tic30.c (MY_bfd_group_name): Define.
+	* bfd.c (bfd_group_name): Define.
+	* binary.c (binary_bfd_group_name): Define.
+	* coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
+	* coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
+	* coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
+	* coffcode.h (coff_bfd_group_name): Define.
+	* elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
+	* i386msdos.c (msdos_bfd_group_name): Define.
+	* ihex.c (ihex_bfd_group_name): Define.
+	* mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
+	* mmo.c (mmo_bfd_group_name): Define.
+	* pef.c (bfd_pef_bfd_group_name): Define.
+	* plugin.c (bfd_plugin_bfd_group_name): Define.
+	* ppcboot.c (ppcboot_bfd_group_name): Define.
+	* som.c (som_bfd_group_name): Define.
+	* srec.c (srec_bfd_group_name): Define.
+	* tekhex.c (tekhex_bfd_group_name): Define.
+	* verilog.c (verilog_bfd_group_name): Define.
+	* vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
+	* xsym.c (bfd_sym_bfd_group_name): Define.
+	* coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
+	(rs6000_xcoff64_aix_vec): Likewise.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+	* libcoff.h: Regenerate.
+
 2019-09-10  Nick Clifton  <nickc@redhat.com>
 
 	PR 24907
diff --git a/bfd/aout-target.h b/bfd/aout-target.h
index 99a82bb57a..58de28faba 100644
--- a/bfd/aout-target.h
+++ b/bfd/aout-target.h
@@ -502,6 +502,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 #ifndef MY_bfd_is_group_section
 #define MY_bfd_is_group_section bfd_generic_is_group_section
 #endif
+#ifndef MY_bfd_group_name
+#define MY_bfd_group_name bfd_generic_group_name
+#endif
 #ifndef MY_bfd_discard_group
 #define MY_bfd_discard_group bfd_generic_discard_group
 #endif
diff --git a/bfd/aout-tic30.c b/bfd/aout-tic30.c
index 49463181f0..7cc6ba5f6c 100644
--- a/bfd/aout-tic30.c
+++ b/bfd/aout-tic30.c
@@ -991,6 +991,9 @@ tic30_aout_set_arch_mach (bfd *abfd,
 #ifndef MY_bfd_is_group_section
 #define MY_bfd_is_group_section bfd_generic_is_group_section
 #endif
+#ifndef MY_bfd_group_name
+#define MY_bfd_group_name bfd_generic_group_name
+#endif
 #ifndef MY_bfd_discard_group
 #define MY_bfd_discard_group bfd_generic_discard_group
 #endif
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 690ba9a6fd..dc9b5daf94 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -2002,6 +2002,8 @@ bfd_boolean bfd_copy_private_section_data
                  (ibfd, isection, obfd, osection))
 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
 
+const char *bfd_generic_group_name (bfd *, const asection *sec);
+
 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
 
 /* Extracted from archures.c.  */
@@ -7477,6 +7479,9 @@ bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
 #define bfd_is_group_section(abfd, sec) \
        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 
+#define bfd_group_name(abfd, sec) \
+       BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
+
 #define bfd_discard_group(abfd, sec) \
        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
 
@@ -7908,6 +7913,7 @@ typedef struct bfd_target
   NAME##_bfd_lookup_section_flags, \
   NAME##_bfd_merge_sections, \
   NAME##_bfd_is_group_section, \
+  NAME##_bfd_group_name, \
   NAME##_bfd_discard_group, \
   NAME##_section_already_linked, \
   NAME##_bfd_define_common_symbol, \
@@ -7966,6 +7972,9 @@ typedef struct bfd_target
   /* Is this section a member of a group?  */
   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
+  /* The group name, if section is a member of a group.  */
+  const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
+
   /* Discard members of a group.  */
   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
 
diff --git a/bfd/bfd.c b/bfd/bfd.c
index f56a8d342f..f14ec253fb 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -1862,6 +1862,9 @@ DESCRIPTION
 .#define bfd_is_group_section(abfd, sec) \
 .	BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 .
+.#define bfd_group_name(abfd, sec) \
+.	BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
+.
 .#define bfd_discard_group(abfd, sec) \
 .	BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
 .
diff --git a/bfd/binary.c b/bfd/binary.c
index 37f5f9f736..eb87d11b6e 100644
--- a/bfd/binary.c
+++ b/bfd/binary.c
@@ -307,6 +307,7 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define binary_bfd_lookup_section_flags		   bfd_generic_lookup_section_flags
 #define binary_bfd_merge_sections		   bfd_generic_merge_sections
 #define binary_bfd_is_group_section		   bfd_generic_is_group_section
+#define binary_bfd_group_name			   bfd_generic_group_name
 #define binary_bfd_discard_group		   bfd_generic_discard_group
 #define binary_section_already_linked		  _bfd_generic_section_already_linked
 #define binary_bfd_define_common_symbol		   bfd_generic_define_common_symbol
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index 726d20bfbb..ee4a3eeded 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -2390,6 +2390,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
 #define _bfd_ecoff_bfd_gc_sections bfd_generic_gc_sections
 #define _bfd_ecoff_bfd_merge_sections bfd_generic_merge_sections
 #define _bfd_ecoff_bfd_is_group_section bfd_generic_is_group_section
+#define _bfd_ecoff_bfd_group_name bfd_generic_group_name
 #define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
index 3ada9ceb0f..a2dd9e1c4f 100644
--- a/bfd/coff-mips.c
+++ b/bfd/coff-mips.c
@@ -1416,6 +1416,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
 #define _bfd_ecoff_bfd_merge_sections bfd_generic_merge_sections
 
 #define _bfd_ecoff_bfd_is_group_section bfd_generic_is_group_section
+#define _bfd_ecoff_bfd_group_name bfd_generic_group_name
 #define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 85e90a0254..4620254aae 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -4057,6 +4057,7 @@ const struct xcoff_dwsect_name xcoff_dwsect_names[] = {
 #define _bfd_xcoff_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 #define _bfd_xcoff_bfd_merge_sections bfd_generic_merge_sections
 #define _bfd_xcoff_bfd_is_group_section bfd_generic_is_group_section
+#define _bfd_xcoff_bfd_group_name bfd_generic_group_name
 #define _bfd_xcoff_bfd_discard_group bfd_generic_discard_group
 #define _bfd_xcoff_section_already_linked _bfd_generic_section_already_linked
 #define _bfd_xcoff_bfd_define_common_symbol _bfd_xcoff_define_common_symbol
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index 6f0e358f4a..b6b189fd2d 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -2778,6 +2778,7 @@ const bfd_target rs6000_xcoff64_vec =
     bfd_generic_lookup_section_flags,
     bfd_generic_merge_sections,
     bfd_generic_is_group_section,
+    bfd_generic_group_name,
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
@@ -3040,6 +3041,7 @@ const bfd_target rs6000_xcoff64_aix_vec =
     bfd_generic_lookup_section_flags,
     bfd_generic_merge_sections,
     bfd_generic_is_group_section,
+    bfd_generic_group_name,
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index c3f13300a4..054e45c960 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -5751,6 +5751,10 @@ static bfd_coff_backend_data bigobj_swap_table =
 #define coff_bfd_is_group_section	    bfd_generic_is_group_section
 #endif
 
+#ifndef coff_bfd_group_name
+#define coff_bfd_group_name		    bfd_coff_group_name
+#endif
+
 #ifndef coff_bfd_discard_group
 #define coff_bfd_discard_group		    bfd_generic_discard_group
 #endif
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 5d61f39c8c..209b01d5d0 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -3155,3 +3155,14 @@ bfd_coff_gc_sections (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
   /* ... and mark SEC_EXCLUDE for those that go.  */
   return coff_gc_sweep (abfd, info);
 }
+
+/* Return name used to identify a comdat group.  */
+
+const char *
+bfd_coff_group_name (bfd *abfd, const asection *sec)
+{
+  struct coff_comdat_info *ci = bfd_coff_get_comdat_section (abfd, sec);
+  if (ci != NULL)
+    return ci->name;
+  return NULL;
+}
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 521d35debb..4458ff7b2a 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2111,6 +2111,8 @@ extern bfd_boolean _bfd_elf_match_sections_by_type
   (bfd *, const asection *, bfd *, const asection *);
 extern bfd_boolean bfd_elf_is_group_section
   (bfd *, const struct bfd_section *);
+extern const char *bfd_elf_group_name
+  (bfd *, const struct bfd_section *);
 extern bfd_boolean _bfd_elf_section_already_linked
   (bfd *, asection *, struct bfd_link_info *);
 extern void bfd_elf_set_group_contents
diff --git a/bfd/elf.c b/bfd/elf.c
index 5a061c9110..ec4c643d59 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -974,6 +974,14 @@ bfd_elf_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
   return elf_next_in_group (sec) != NULL;
 }
 
+const char *
+bfd_elf_group_name (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
+{
+  if (elf_sec_group (sec) != NULL)
+    return elf_group_name (sec);
+  return NULL;
+}
+
 static char *
 convert_debug_to_zdebug (bfd *abfd, const char *name)
 {
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 0b737a4ffa..78a1f6314d 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -192,6 +192,10 @@
 #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section
 #endif
 
+#ifndef bfd_elfNN_bfd_group_name
+#define bfd_elfNN_bfd_group_name bfd_elf_group_name
+#endif
+
 #ifndef bfd_elfNN_bfd_discard_group
 #define bfd_elfNN_bfd_discard_group bfd_generic_discard_group
 #endif
diff --git a/bfd/i386msdos.c b/bfd/i386msdos.c
index f70a6f364d..9c4ab4cece 100644
--- a/bfd/i386msdos.c
+++ b/bfd/i386msdos.c
@@ -226,6 +226,7 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 #define msdos_bfd_merge_sections bfd_generic_merge_sections
 #define msdos_bfd_is_group_section bfd_generic_is_group_section
+#define msdos_bfd_group_name bfd_generic_group_name
 #define msdos_bfd_discard_group bfd_generic_discard_group
 #define msdos_section_already_linked \
   _bfd_generic_section_already_linked
diff --git a/bfd/ihex.c b/bfd/ihex.c
index 101e0a7615..09149089be 100644
--- a/bfd/ihex.c
+++ b/bfd/ihex.c
@@ -962,6 +962,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define ihex_bfd_lookup_section_flags		  bfd_generic_lookup_section_flags
 #define ihex_bfd_merge_sections			  bfd_generic_merge_sections
 #define ihex_bfd_is_group_section		  bfd_generic_is_group_section
+#define ihex_bfd_group_name			  bfd_generic_group_name
 #define ihex_bfd_discard_group			  bfd_generic_discard_group
 #define ihex_section_already_linked		  _bfd_generic_section_already_linked
 #define ihex_bfd_define_common_symbol		  bfd_generic_define_common_symbol
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index cac4d3b022..f498ffd5e7 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -523,6 +523,8 @@ extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bfd_boolean _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
+extern const char *_bfd_nolink_bfd_group_name
+  (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index aabe247068..2ea167ecb6 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -528,6 +528,8 @@ extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bfd_boolean _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
+extern const char *_bfd_nolink_bfd_group_name
+  (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
diff --git a/bfd/libcoff-in.h b/bfd/libcoff-in.h
index c75c9ac595..783d54a88a 100644
--- a/bfd/libcoff-in.h
+++ b/bfd/libcoff-in.h
@@ -577,7 +577,8 @@ extern bfd_boolean _bfd_coff_reloc_link_order
    struct bfd_link_order *);
 extern bfd_boolean bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
-
+extern const char *bfd_coff_group_name
+  (bfd *, const asection *);
 
 #define coff_get_section_contents_in_window \
   _bfd_generic_get_section_contents_in_window
diff --git a/bfd/libcoff.h b/bfd/libcoff.h
index d0e3d0dd90..f2613c2e77 100644
--- a/bfd/libcoff.h
+++ b/bfd/libcoff.h
@@ -581,7 +581,8 @@ extern bfd_boolean _bfd_coff_reloc_link_order
    struct bfd_link_order *);
 extern bfd_boolean bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
-
+extern const char *bfd_coff_group_name
+  (bfd *, const asection *);
 
 #define coff_get_section_contents_in_window \
   _bfd_generic_get_section_contents_in_window
diff --git a/bfd/linker.c b/bfd/linker.c
index 1b71fcf8f0..f6eef93259 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -3461,6 +3461,13 @@ _bfd_nolink_bfd_is_group_section (bfd *abfd,
   return _bfd_bool_bfd_false_error (abfd);
 }
 
+const char *
+_bfd_nolink_bfd_group_name (bfd *abfd,
+			    const asection *sec ATTRIBUTE_UNUSED)
+{
+  return _bfd_ptr_bfd_null_error (abfd);
+}
+
 bfd_boolean
 _bfd_nolink_bfd_discard_group (bfd *abfd, asection *sec ATTRIBUTE_UNUSED)
 {
diff --git a/bfd/mach-o-target.c b/bfd/mach-o-target.c
index e02dd79018..e15e88f353 100644
--- a/bfd/mach-o-target.c
+++ b/bfd/mach-o-target.c
@@ -52,6 +52,7 @@
 #define bfd_mach_o_bfd_lookup_section_flags	      bfd_generic_lookup_section_flags
 #define bfd_mach_o_bfd_merge_sections		      bfd_generic_merge_sections
 #define bfd_mach_o_bfd_is_group_section		      bfd_generic_is_group_section
+#define bfd_mach_o_bfd_group_name		      bfd_generic_group_name
 #define bfd_mach_o_bfd_discard_group		      bfd_generic_discard_group
 #define bfd_mach_o_section_already_linked	      _bfd_generic_section_already_linked
 #define bfd_mach_o_bfd_define_common_symbol	      bfd_generic_define_common_symbol
diff --git a/bfd/mmo.c b/bfd/mmo.c
index bd4303c531..f48f9868fe 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -3311,6 +3311,7 @@ mmo_write_object_contents (bfd *abfd)
 #define mmo_bfd_relax_section bfd_generic_relax_section
 #define mmo_bfd_merge_sections bfd_generic_merge_sections
 #define mmo_bfd_is_group_section bfd_generic_is_group_section
+#define mmo_bfd_group_name bfd_generic_group_name
 #define mmo_bfd_discard_group bfd_generic_discard_group
 #define mmo_section_already_linked \
   _bfd_generic_section_already_linked
diff --git a/bfd/pef.c b/bfd/pef.c
index 8c66ca477d..effa076405 100644
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -56,6 +56,7 @@
 #define bfd_pef_bfd_lookup_section_flags	    bfd_generic_lookup_section_flags
 #define bfd_pef_bfd_merge_sections		    bfd_generic_merge_sections
 #define bfd_pef_bfd_is_group_section		    bfd_generic_is_group_section
+#define bfd_pef_bfd_group_name			    bfd_generic_group_name
 #define bfd_pef_bfd_discard_group		    bfd_generic_discard_group
 #define bfd_pef_section_already_linked		    _bfd_generic_section_already_linked
 #define bfd_pef_bfd_define_common_symbol	    bfd_generic_define_common_symbol
diff --git a/bfd/plugin.c b/bfd/plugin.c
index 5f760e9c42..ca26005055 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -102,6 +102,7 @@ dlerror (void)
 #define bfd_plugin_bfd_lookup_section_flags	      bfd_generic_lookup_section_flags
 #define bfd_plugin_bfd_merge_sections		      bfd_generic_merge_sections
 #define bfd_plugin_bfd_is_group_section		      bfd_generic_is_group_section
+#define bfd_plugin_bfd_group_name		      bfd_generic_group_name
 #define bfd_plugin_bfd_discard_group		      bfd_generic_discard_group
 #define bfd_plugin_section_already_linked	      _bfd_generic_section_already_linked
 #define bfd_plugin_bfd_define_common_symbol	      bfd_generic_define_common_symbol
diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c
index 99db8234d1..02132e7801 100644
--- a/bfd/ppcboot.c
+++ b/bfd/ppcboot.c
@@ -456,6 +456,7 @@ ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg)
 #define ppcboot_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 #define ppcboot_bfd_merge_sections bfd_generic_merge_sections
 #define ppcboot_bfd_is_group_section bfd_generic_is_group_section
+#define ppcboot_bfd_group_name bfd_generic_group_name
 #define ppcboot_bfd_discard_group bfd_generic_discard_group
 #define ppcboot_section_already_linked \
   _bfd_generic_section_already_linked
diff --git a/bfd/section.c b/bfd/section.c
index 64636334ac..74feb73be9 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -1662,6 +1662,24 @@ bfd_generic_is_group_section (bfd *abfd ATTRIBUTE_UNUSED,
   return FALSE;
 }
 
+/*
+FUNCTION
+	bfd_generic_group_name
+
+SYNOPSIS
+	const char *bfd_generic_group_name (bfd *, const asection *sec);
+
+DESCRIPTION
+	Returns group name if @var{sec} is a member of a group.
+*/
+
+const char *
+bfd_generic_group_name (bfd *abfd ATTRIBUTE_UNUSED,
+			const asection *sec ATTRIBUTE_UNUSED)
+{
+  return NULL;
+}
+
 /*
 FUNCTION
 	bfd_generic_discard_group
diff --git a/bfd/som.c b/bfd/som.c
index 0d17b3278a..02a99a3360 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6756,6 +6756,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 #define som_bfd_lookup_section_flags		bfd_generic_lookup_section_flags
 #define som_bfd_merge_sections			bfd_generic_merge_sections
 #define som_bfd_is_group_section		bfd_generic_is_group_section
+#define som_bfd_group_name			bfd_generic_group_name
 #define som_bfd_discard_group			bfd_generic_discard_group
 #define som_section_already_linked		_bfd_generic_section_already_linked
 #define som_bfd_define_common_symbol		bfd_generic_define_common_symbol
diff --git a/bfd/srec.c b/bfd/srec.c
index 77eaecd111..218276837c 100644
--- a/bfd/srec.c
+++ b/bfd/srec.c
@@ -1275,6 +1275,7 @@ srec_print_symbol (bfd *abfd,
 #define srec_bfd_lookup_section_flags		  bfd_generic_lookup_section_flags
 #define srec_bfd_merge_sections			  bfd_generic_merge_sections
 #define srec_bfd_is_group_section		  bfd_generic_is_group_section
+#define srec_bfd_group_name			  bfd_generic_group_name
 #define srec_bfd_discard_group			  bfd_generic_discard_group
 #define srec_section_already_linked		  _bfd_generic_section_already_linked
 #define srec_bfd_define_common_symbol		  bfd_generic_define_common_symbol
diff --git a/bfd/targets.c b/bfd/targets.c
index 6b85c62798..09956994ec 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -462,6 +462,7 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_lookup_section_flags, \
 .  NAME##_bfd_merge_sections, \
 .  NAME##_bfd_is_group_section, \
+.  NAME##_bfd_group_name, \
 .  NAME##_bfd_discard_group, \
 .  NAME##_section_already_linked, \
 .  NAME##_bfd_define_common_symbol, \
@@ -520,6 +521,9 @@ BFD_JUMP_TABLE macros.
 .  {* Is this section a member of a group?  *}
 .  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 .
+.  {* The group name, if section is a member of a group.  *}
+.  const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
+.
 .  {* Discard members of a group.  *}
 .  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
 .
diff --git a/bfd/tekhex.c b/bfd/tekhex.c
index 386e33b24e..fb03629182 100644
--- a/bfd/tekhex.c
+++ b/bfd/tekhex.c
@@ -978,6 +978,7 @@ tekhex_print_symbol (bfd *abfd,
 #define tekhex_bfd_lookup_section_flags		    bfd_generic_lookup_section_flags
 #define tekhex_bfd_merge_sections		    bfd_generic_merge_sections
 #define tekhex_bfd_is_group_section		    bfd_generic_is_group_section
+#define tekhex_bfd_group_name			    bfd_generic_group_name
 #define tekhex_bfd_discard_group		    bfd_generic_discard_group
 #define tekhex_section_already_linked		    _bfd_generic_section_already_linked
 #define tekhex_bfd_define_common_symbol		    bfd_generic_define_common_symbol
diff --git a/bfd/verilog.c b/bfd/verilog.c
index 252e240277..a785e50a00 100644
--- a/bfd/verilog.c
+++ b/bfd/verilog.c
@@ -368,6 +368,7 @@ verilog_mkobject (bfd *abfd)
 #define verilog_bfd_gc_sections			     bfd_generic_gc_sections
 #define verilog_bfd_merge_sections		     bfd_generic_merge_sections
 #define verilog_bfd_is_group_section		     bfd_generic_is_group_section
+#define verilog_bfd_group_name			     bfd_generic_group_name
 #define verilog_bfd_discard_group		     bfd_generic_discard_group
 #define verilog_section_already_linked		     _bfd_generic_section_already_linked
 #define verilog_bfd_link_hash_table_create	     _bfd_generic_link_hash_table_create
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 4e6f9c1c42..69822a2ce6 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -9504,6 +9504,7 @@ bfd_vms_get_data (bfd *abfd)
 #define vms_bfd_copy_link_hash_symbol_type \
   _bfd_generic_copy_link_hash_symbol_type
 #define vms_bfd_is_group_section	  bfd_generic_is_group_section
+#define vms_bfd_group_name		  bfd_generic_group_name
 #define vms_bfd_discard_group		  bfd_generic_discard_group
 #define vms_section_already_linked	  _bfd_generic_section_already_linked
 #define vms_bfd_define_common_symbol	  bfd_generic_define_common_symbol
@@ -9550,6 +9551,7 @@ bfd_vms_get_data (bfd *abfd)
 #define alpha_vms_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 #define alpha_vms_bfd_merge_sections bfd_generic_merge_sections
 #define alpha_vms_bfd_is_group_section bfd_generic_is_group_section
+#define alpha_vms_bfd_group_name bfd_generic_group_name
 #define alpha_vms_bfd_discard_group bfd_generic_discard_group
 #define alpha_vms_section_already_linked \
   _bfd_generic_section_already_linked
diff --git a/bfd/xsym.c b/bfd/xsym.c
index 67d91cb077..cf4a67167a 100644
--- a/bfd/xsym.c
+++ b/bfd/xsym.c
@@ -48,6 +48,7 @@
 #define bfd_sym_bfd_lookup_section_flags	    bfd_generic_lookup_section_flags
 #define bfd_sym_bfd_merge_sections		    bfd_generic_merge_sections
 #define bfd_sym_bfd_is_group_section		    bfd_generic_is_group_section
+#define bfd_sym_bfd_group_name			    bfd_generic_group_name
 #define bfd_sym_bfd_discard_group		    bfd_generic_discard_group
 #define bfd_sym_section_already_linked		    _bfd_generic_section_already_linked
 #define bfd_sym_bfd_define_common_symbol	    bfd_generic_define_common_symbol
diff --git a/ld/ChangeLog b/ld/ChangeLog
index d24973e0fa..955d460d40 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-11  Alan Modra  <amodra@gmail.com>
+
+	* ldmisc.c: Don't #include elf-bfd.h or coff-bfd.h.
+	(vfinfo): Use bfd_group_name.
+
 2019-09-11  Alan Modra  <amodra@gmail.com>
 
 	* plugin.c (asymbol_from_plugin_symbol): Move code handling
diff --git a/ld/ldmisc.c b/ld/ldmisc.c
index f7ab7b5d99..319f247e3b 100644
--- a/ld/ldmisc.c
+++ b/ld/ldmisc.c
@@ -35,8 +35,6 @@
 #include "ldlex.h"
 #include "ldmain.h"
 #include "ldfile.h"
-#include "elf-bfd.h"
-#include "coff-bfd.h"
 
 /*
  %% literal %
@@ -431,26 +429,18 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
 		  /* section name from a section */
 		  asection *sec;
 		  bfd *abfd;
-		  const char *group = NULL;
-		  struct coff_comdat_info *ci;
 
 		  fmt++;
 		  sec = (asection *) args[arg_no].p;
 		  ++arg_count;
-		  abfd = sec->owner;
 		  fprintf (fp, "%s", sec->name);
-		  if (abfd != NULL
-		      && bfd_get_flavour (abfd) == bfd_target_elf_flavour
-		      && elf_next_in_group (sec) != NULL
-		      && (sec->flags & SEC_GROUP) == 0)
-		    group = elf_group_name (sec);
-		  else if (abfd != NULL
-			   && bfd_get_flavour (abfd) == bfd_target_coff_flavour
-			   && (ci = bfd_coff_get_comdat_section (sec->owner,
-								 sec)) != NULL)
-		    group = ci->name;
-		  if (group != NULL)
-		    fprintf (fp, "[%s]", group);
+		  abfd = sec->owner;
+		  if (abfd != NULL)
+		    {
+		      const char *group = bfd_group_name (abfd, sec);
+		      if (group != NULL)
+			fprintf (fp, "[%s]", group);
+		    }
 		}
 	      else if (*fmt == 'B')
 		{


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Introduce bfd_set_filename
@ 2019-09-11 18:15 gdb-buildbot
  2019-09-11 18:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11 18:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 64b2d4a0a4e4f80d2aa2e52c6eec3186e76fc397 ***

commit 64b2d4a0a4e4f80d2aa2e52c6eec3186e76fc397
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Sep 8 11:38:24 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Wed Sep 11 07:02:46 2019 -0600

    Introduce bfd_set_filename
    
    This introduces a new bfd_set_filename function, which is then used in
    various spots in gdb.  This allows for the removal of some casts.
    
    bfd/ChangeLog
    2019-09-11  Tom Tromey  <tom@tromey.com>
    
            * opncls.c (bfd_set_filename): New function.
            * bfd-in2.h: Regenerate.
    
    gdb/ChangeLog
    2019-09-11  Tom Tromey  <tom@tromey.com>
    
            * symfile-mem.c (symbol_file_add_from_memory): Use
            bfd_set_filename.
            * solib-darwin.c (darwin_bfd_open): Use bfd_set_filename.
            * solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f498a91b88..ea0f06041b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-11  Tom Tromey  <tom@tromey.com>
+
+	* opncls.c (bfd_set_filename): New function.
+	* bfd-in2.h: Regenerate.
+
 2019-09-11  Alan Modra  <amodra@gmail.com>
 
 	* targets.c (struct bfd_target): Add _bfd_group_name.
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index dc9b5daf94..13445a1de7 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1193,6 +1193,8 @@ bfd_boolean bfd_fill_in_gnu_debuglink_section
 
 char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
 
+void bfd_set_filename (bfd *abfd, char *filename);
+
 /* Extracted from libbfd.c.  */
 
 /* Byte swapping macros for user section data.  */
diff --git a/bfd/opncls.c b/bfd/opncls.c
index 07f89b9a4c..d14dfe9320 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -2089,3 +2089,23 @@ bfd_follow_build_id_debuglink (bfd *abfd, const char *dir)
 				   get_build_id_name,
 				   check_build_id_file, &build_id);
 }
+
+/*
+FUNCTION
+	bfd_set_filename
+
+SYNOPSIS
+	void bfd_set_filename (bfd *abfd, char *filename);
+
+DESCRIPTION
+	Set the filename of @var{abfd}.  The old filename, if any, is freed.
+	@var{filename} must be allocated using @code{xmalloc}.  After
+	this call, it is owned @var{abfd}.
+*/
+
+void
+bfd_set_filename (bfd *abfd, char *filename)
+{
+  free ((char *) abfd->filename);
+  abfd->filename = filename;
+}
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index dace64e6be..e4b18fa1de 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-11  Tom Tromey  <tom@tromey.com>
+
+	* symfile-mem.c (symbol_file_add_from_memory): Use
+	bfd_set_filename.
+	* solib-darwin.c (darwin_bfd_open): Use bfd_set_filename.
+	* solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* dwarf-index-write.c (write_psymbols): Extend error message.
diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
index 2b5444293e..0c8a18267c 100644
--- a/gdb/solib-aix.c
+++ b/gdb/solib-aix.c
@@ -643,10 +643,10 @@ solib_aix_bfd_open (const char *pathname)
      along with appended parenthesized member name in order to allow commands
      listing all shared libraries to display.  Otherwise, we would only be
      displaying the name of the archive member object.  */
-  xfree ((char *) bfd_get_filename (object_bfd.get ()));
-  object_bfd->filename = xstrprintf ("%s%s",
-				     bfd_get_filename (archive_bfd.get ()),
-				     sep);
+  bfd_set_filename (object_bfd.get (),
+		    xstrprintf ("%s%s",
+				bfd_get_filename (archive_bfd.get ()),
+				sep));
 
   return object_bfd;
 }
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 3dd30d2aa3..778c6d9f61 100644
--- a/gdb/solib-darwin.c
+++ b/gdb/solib-darwin.c
@@ -670,8 +670,7 @@ darwin_bfd_open (const char *pathname)
   /* The current filename for fat-binary BFDs is a name generated
      by BFD, usually a string containing the name of the architecture.
      Reset its value to the actual filename.  */
-  xfree ((char *) bfd_get_filename (res.get ()));
-  res->filename = xstrdup (pathname);
+  bfd_set_filename (res.get (), xstrdup (pathname));
 
   return res;
 }
diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c
index 6d1deae1e0..05542c1391 100644
--- a/gdb/symfile-mem.c
+++ b/gdb/symfile-mem.c
@@ -101,11 +101,9 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
   /* Manage the new reference for the duration of this function.  */
   gdb_bfd_ref_ptr nbfd_holder = gdb_bfd_ref_ptr::new_reference (nbfd);
 
-  xfree ((char *) bfd_get_filename (nbfd));
   if (name == NULL)
-    nbfd->filename = xstrdup ("shared object read from target memory");
-  else
-    nbfd->filename = name;
+    name = xstrdup ("shared object read from target memory");
+  bfd_set_filename (nbfd, name);
 
   if (!bfd_check_format (nbfd, bfd_object))
     error (_("Got object file from memory but can't read symbols: %s."),


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change the type of copy_names from int to bool
@ 2019-09-11 18:32 gdb-buildbot
  2019-09-11 19:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11 18:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 67547d896b0593b0fa62e23ac68c483a7e8566e2 ***

commit 67547d896b0593b0fa62e23ac68c483a7e8566e2
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Sep 10 15:37:50 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 11 12:43:45 2019 -0500

    Change the type of copy_names from int to bool
    
    This parameter is really a boolean, so change the type accordingly
    and update the callers.
    
    This is for symbol_set_names, add_psymbol_to_bcache, and
    add_psymbol_to_list.
    
    minimal_symbol_reader::record_full was already passing a bool
    to symbol_set_names.
    
    gdb/ChangeLog:
    
    2019-09-11  Christian Biesinger  <cbiesinger@google.com>
    
            * dbxread.c (read_dbx_symtab): Update.
            * dwarf2read.c (load_partial_dies): Update.
            * mdebugread.c (parse_partial_symbols): Update.
            (handle_psymbol_enumerators): Update.
            * psympriv.h (add_psymbol_to_list): Change type of copy_names to bool.
            * psymtab.c (add_psymbol_to_bcache): Likewise.
            (add_psymbol_to_list): Likewise.
            * symtab.c (symbol_set_names): Likewise.
            * symtab.h (symbol_set_names): Likewise.
            * xcoffread.c (scan_xcoff_symtab): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e4b18fa1de..3b28884267 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* dbxread.c (read_dbx_symtab): Update.
+	* dwarf2read.c (load_partial_dies): Update.
+	* mdebugread.c (parse_partial_symbols): Update.
+	(handle_psymbol_enumerators): Update.
+	* psympriv.h (add_psymbol_to_list): Change type of copy_names to bool.
+	* psymtab.c (add_psymbol_to_bcache): Likewise.
+	(add_psymbol_to_list): Likewise.
+	* symtab.c (symbol_set_names): Likewise.
+	* symtab.h (symbol_set_names): Likewise.
+	* xcoffread.c (scan_xcoff_symtab): Update.
+
 2019-09-11  Tom Tromey  <tom@tromey.com>
 
 	* symfile-mem.c (symbol_file_add_from_memory): Use
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index df3ae5828a..dc0b2c727b 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -1464,7 +1464,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 	      if (gdbarch_static_transform_name_p (gdbarch))
 		gdbarch_static_transform_name (gdbarch, namestring);
 
-	      add_psymbol_to_list (sym_name, sym_len, 1,
+	      add_psymbol_to_list (sym_name, sym_len, true,
 				   VAR_DOMAIN, LOC_STATIC,
 				   data_sect_index,
 				   psymbol_placement::STATIC,
@@ -1474,7 +1474,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 	    case 'G':
 	      /* The addresses in these entries are reported to be
 		 wrong.  See the code that reads 'G's for symtabs.  */
-	      add_psymbol_to_list (sym_name, sym_len, 1,
+	      add_psymbol_to_list (sym_name, sym_len, true,
 				   VAR_DOMAIN, LOC_STATIC,
 				   data_sect_index,
 				   psymbol_placement::GLOBAL,
@@ -1492,14 +1492,14 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 		  || (p == namestring + 1
 		      && namestring[0] != ' '))
 		{
-		  add_psymbol_to_list (sym_name, sym_len, 1,
+		  add_psymbol_to_list (sym_name, sym_len, true,
 				       STRUCT_DOMAIN, LOC_TYPEDEF, -1,
 				       psymbol_placement::STATIC,
 				       0, psymtab_language, objfile);
 		  if (p[2] == 't')
 		    {
 		      /* Also a typedef with the same name.  */
-		      add_psymbol_to_list (sym_name, sym_len, 1,
+		      add_psymbol_to_list (sym_name, sym_len, true,
 					   VAR_DOMAIN, LOC_TYPEDEF, -1,
 					   psymbol_placement::STATIC,
 					   0, psymtab_language, objfile);
@@ -1511,7 +1511,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 	    case 't':
 	      if (p != namestring)	/* a name is there, not just :T...  */
 		{
-		  add_psymbol_to_list (sym_name, sym_len, 1,
+		  add_psymbol_to_list (sym_name, sym_len, true,
 				       VAR_DOMAIN, LOC_TYPEDEF, -1,
 				       psymbol_placement::STATIC,
 				       0, psymtab_language, objfile);
@@ -1572,7 +1572,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 			;
 		      /* Note that the value doesn't matter for
 			 enum constants in psymtabs, just in symtabs.  */
-		      add_psymbol_to_list (p, q - p, 1,
+		      add_psymbol_to_list (p, q - p, true,
 					   VAR_DOMAIN, LOC_CONST, -1,
 					   psymbol_placement::STATIC, 0,
 					   psymtab_language, objfile);
@@ -1590,7 +1590,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 
 	    case 'c':
 	      /* Constant, e.g. from "const" in Pascal.  */
-	      add_psymbol_to_list (sym_name, sym_len, 1,
+	      add_psymbol_to_list (sym_name, sym_len, true,
 				   VAR_DOMAIN, LOC_CONST, -1,
 				   psymbol_placement::STATIC, 0,
 				   psymtab_language, objfile);
@@ -1645,7 +1645,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 		  pst->set_text_low (nlist.n_value);
 		  textlow_not_set = 0;
 		}
-	      add_psymbol_to_list (sym_name, sym_len, 1,
+	      add_psymbol_to_list (sym_name, sym_len, true,
 				   VAR_DOMAIN, LOC_BLOCK,
 				   SECT_OFF_TEXT (objfile),
 				   psymbol_placement::STATIC,
@@ -1704,7 +1704,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 		  pst->set_text_low (nlist.n_value);
 		  textlow_not_set = 0;
 		}
-	      add_psymbol_to_list (sym_name, sym_len, 1,
+	      add_psymbol_to_list (sym_name, sym_len, true,
 				   VAR_DOMAIN, LOC_BLOCK,
 				   SECT_OFF_TEXT (objfile),
 				   psymbol_placement::GLOBAL,
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index c94fc245fd..a2b80ebbc1 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -18533,7 +18533,7 @@ load_partial_dies (const struct die_reader_specs *reader,
 	      || pdi.tag == DW_TAG_subrange_type))
 	{
 	  if (building_psymtab && pdi.name != NULL)
-	    add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
+	    add_psymbol_to_list (pdi.name, strlen (pdi.name), false,
 				 VAR_DOMAIN, LOC_TYPEDEF, -1,
 				 psymbol_placement::STATIC,
 				 0, cu->language, objfile);
@@ -18567,7 +18567,7 @@ load_partial_dies (const struct die_reader_specs *reader,
 	  if (pdi.name == NULL)
 	    complaint (_("malformed enumerator DIE ignored"));
 	  else if (building_psymtab)
-	    add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
+	    add_psymbol_to_list (pdi.name, strlen (pdi.name), false,
 				 VAR_DOMAIN, LOC_CONST, -1,
 				 cu->language == language_cplus
 				 ? psymbol_placement::GLOBAL
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 18c1d1f7c9..dffef8fd1a 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -3048,7 +3048,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			  namestring = gdbarch_static_transform_name
 					 (gdbarch, namestring);
 
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_STATIC,
 					     SECT_OFF_DATA (objfile),
 					     psymbol_placement::STATIC,
@@ -3059,7 +3059,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			/* The addresses in these entries are reported
 			   to be wrong.  See the code that reads 'G's
 			   for symtabs.  */
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_STATIC,
 					     SECT_OFF_DATA (objfile),
 					     psymbol_placement::GLOBAL,
@@ -3078,7 +3078,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			    || (p == namestring + 1
 				&& namestring[0] != ' '))
 			  {
-			    add_psymbol_to_list (namestring, p - namestring, 1,
+			    add_psymbol_to_list (namestring, p - namestring, true,
 						 STRUCT_DOMAIN, LOC_TYPEDEF,
 						 -1,
 						 psymbol_placement::STATIC,
@@ -3087,7 +3087,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			      {
 				/* Also a typedef with the same name.  */
 				add_psymbol_to_list (namestring,
-						     p - namestring, 1,
+						     p - namestring, true,
 						     VAR_DOMAIN, LOC_TYPEDEF,
 						     -1,
 						     psymbol_placement::STATIC,
@@ -3101,8 +3101,8 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			if (p != namestring)	/* a name is there, not
 						   just :T...  */
 			  {
-			    add_psymbol_to_list (namestring, p - namestring, 1,
-						 VAR_DOMAIN, LOC_TYPEDEF,
+			    add_psymbol_to_list (namestring, p - namestring,
+						 true, VAR_DOMAIN, LOC_TYPEDEF,
 						 -1,
 						 psymbol_placement::STATIC,
 						 0, psymtab_language, objfile);
@@ -3166,7 +3166,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 				/* Note that the value doesn't matter for
 				   enum constants in psymtabs, just in
 				   symtabs.  */
-				add_psymbol_to_list (p, q - p, 1,
+				add_psymbol_to_list (p, q - p, true,
 						     VAR_DOMAIN, LOC_CONST,
 						     -1,
 						     psymbol_placement::STATIC,
@@ -3185,7 +3185,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			continue;
 		      case 'c':
 			/* Constant, e.g. from "const" in Pascal.  */
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_CONST, -1,
 					     psymbol_placement::STATIC,
 					     0, psymtab_language, objfile);
@@ -3198,7 +3198,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			    function_outside_compilation_unit_complaint
 			      (copy.c_str ());
 			  }
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_BLOCK,
 					     SECT_OFF_TEXT (objfile),
 					     psymbol_placement::STATIC,
@@ -3217,7 +3217,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 			    function_outside_compilation_unit_complaint
 			      (copy.c_str ());
 			  }
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_BLOCK,
 					     SECT_OFF_TEXT (objfile),
 					     psymbol_placement::GLOBAL,
@@ -3452,13 +3452,13 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 		     symbol table, and the MAIN__ symbol via the minimal
 		     symbol table.  */
 		  if (sh.st == stProc)
-		    add_psymbol_to_list (sym_name, strlen (sym_name), 1,
+		    add_psymbol_to_list (sym_name, strlen (sym_name), true,
 					 VAR_DOMAIN, LOC_BLOCK,
 					 section,
 					 psymbol_placement::GLOBAL,
 					 sh.value, psymtab_language, objfile);
 		  else
-		    add_psymbol_to_list (sym_name, strlen (sym_name), 1,
+		    add_psymbol_to_list (sym_name, strlen (sym_name), true,
 					 VAR_DOMAIN, LOC_BLOCK,
 					 section,
 					 psymbol_placement::STATIC,
@@ -3525,7 +3525,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 		      && sh.iss != 0
 		      && sh.index != cur_sdx + 2)
 		    {
-		      add_psymbol_to_list (sym_name, strlen (sym_name), 1,
+		      add_psymbol_to_list (sym_name, strlen (sym_name), true,
 					   STRUCT_DOMAIN, LOC_TYPEDEF, -1,
 					   psymbol_placement::STATIC,
 					   0, psymtab_language, objfile);
@@ -3565,7 +3565,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 		  continue;
 		}
 	      /* Use this gdb symbol.  */
-	      add_psymbol_to_list (sym_name, strlen (sym_name), 1,
+	      add_psymbol_to_list (sym_name, strlen (sym_name), true,
 				   VAR_DOMAIN, theclass, section,
 				   psymbol_placement::STATIC,
 				   sh.value, psymtab_language, objfile);
@@ -3644,7 +3644,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
 		  break;
 		}
 	      char *sym_name = debug_info->ssext + psh->iss;
-	      add_psymbol_to_list (sym_name, strlen (sym_name), 1,
+	      add_psymbol_to_list (sym_name, strlen (sym_name), true,
 				   VAR_DOMAIN, theclass,
 				   section,
 				   psymbol_placement::GLOBAL,
@@ -3807,7 +3807,7 @@ handle_psymbol_enumerators (struct objfile *objfile, FDR *fh, int stype,
 
       /* Note that the value doesn't matter for enum constants
          in psymtabs, just in symtabs.  */
-      add_psymbol_to_list (name, strlen (name), 1,
+      add_psymbol_to_list (name, strlen (name), true,
 			   VAR_DOMAIN, LOC_CONST, -1,
 			   psymbol_placement::STATIC, 0,
 			   psymtab_language, objfile);
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index 61d73a316b..9d22f5c9ac 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -289,7 +289,7 @@ enum class psymbol_placement
 /* Add any kind of symbol to a partial_symbol vector.  */
 
 extern void add_psymbol_to_list (const char *, int,
-				 int, domain_enum,
+				 bool, domain_enum,
 				 enum address_class,
 				 short /* section */,
 				 enum psymbol_placement,
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 1f5f492d39..e9cc8c3bc6 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1558,7 +1558,7 @@ psymbol_compare (const void *addr1, const void *addr2, int length)
    different domain (or address) is possible and correct.  */
 
 static struct partial_symbol *
-add_psymbol_to_bcache (const char *name, int namelength, int copy_name,
+add_psymbol_to_bcache (const char *name, int namelength, bool copy_name,
 		       domain_enum domain,
 		       enum address_class theclass,
 		       short section,
@@ -1602,7 +1602,7 @@ append_psymbol_to_list (std::vector<partial_symbol *> *list,
    Return the partial symbol that has been added.  */
 
 void
-add_psymbol_to_list (const char *name, int namelength, int copy_name,
+add_psymbol_to_list (const char *name, int namelength, bool copy_name,
 		     domain_enum domain,
 		     enum address_class theclass,
 		     short section,
diff --git a/gdb/symtab.c b/gdb/symtab.c
index e1bf3692a5..4b528b4270 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -811,7 +811,7 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol,
 
 void
 symbol_set_names (struct general_symbol_info *gsymbol,
-		  const char *linkage_name, int len, int copy_name,
+		  const char *linkage_name, int len, bool copy_name,
 		  struct objfile_per_bfd_storage *per_bfd)
 {
   struct demangled_name_entry **slot;
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 4fb00cba9f..c54b8ee4b7 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -497,7 +497,7 @@ extern void symbol_set_language (struct general_symbol_info *symbol,
   symbol_set_names (&(symbol)->ginfo, linkage_name, len, copy_name, \
 		    (objfile)->per_bfd)
 extern void symbol_set_names (struct general_symbol_info *symbol,
-			      const char *linkage_name, int len, int copy_name,
+			      const char *linkage_name, int len, bool copy_name,
 			      struct objfile_per_bfd_storage *per_bfd);
 
 /* Now come lots of name accessor macros.  Short version as to when to
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 0dacea44d1..a17031a110 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -2644,7 +2644,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 		  namestring = gdbarch_static_transform_name
 				 (gdbarch, namestring);
 
-		add_psymbol_to_list (namestring, p - namestring, 1,
+		add_psymbol_to_list (namestring, p - namestring, true,
 				     VAR_DOMAIN, LOC_STATIC,
 				     SECT_OFF_DATA (objfile),
 				     psymbol_placement::STATIC,
@@ -2655,7 +2655,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 	      case 'G':
 		/* The addresses in these entries are reported to be
 		   wrong.  See the code that reads 'G's for symtabs.  */
-		add_psymbol_to_list (namestring, p - namestring, 1,
+		add_psymbol_to_list (namestring, p - namestring, true,
 				     VAR_DOMAIN, LOC_STATIC,
 				     SECT_OFF_DATA (objfile),
 				     psymbol_placement::GLOBAL,
@@ -2674,14 +2674,14 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 		    || (p == namestring + 1
 			&& namestring[0] != ' '))
 		  {
-		    add_psymbol_to_list (namestring, p - namestring, 1,
+		    add_psymbol_to_list (namestring, p - namestring, true,
 					 STRUCT_DOMAIN, LOC_TYPEDEF, -1,
 					 psymbol_placement::STATIC,
 					 0, psymtab_language, objfile);
 		    if (p[2] == 't')
 		      {
 			/* Also a typedef with the same name.  */
-			add_psymbol_to_list (namestring, p - namestring, 1,
+			add_psymbol_to_list (namestring, p - namestring, true,
 					     VAR_DOMAIN, LOC_TYPEDEF, -1,
 					     psymbol_placement::STATIC,
 					     0, psymtab_language, objfile);
@@ -2693,7 +2693,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 	      case 't':
 		if (p != namestring)	/* a name is there, not just :T...  */
 		  {
-		    add_psymbol_to_list (namestring, p - namestring, 1,
+		    add_psymbol_to_list (namestring, p - namestring, true,
 					 VAR_DOMAIN, LOC_TYPEDEF, -1,
 					 psymbol_placement::STATIC,
 					 0, psymtab_language, objfile);
@@ -2755,7 +2755,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 			  ;
 			/* Note that the value doesn't matter for
 			   enum constants in psymtabs, just in symtabs.  */
-			add_psymbol_to_list (p, q - p, 1,
+			add_psymbol_to_list (p, q - p, true,
 					     VAR_DOMAIN, LOC_CONST, -1,
 					     psymbol_placement::STATIC,
 					     0, psymtab_language, objfile);
@@ -2773,7 +2773,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 
 	      case 'c':
 		/* Constant, e.g. from "const" in Pascal.  */
-		add_psymbol_to_list (namestring, p - namestring, 1,
+		add_psymbol_to_list (namestring, p - namestring, true,
 				     VAR_DOMAIN, LOC_CONST, -1,
 				     psymbol_placement::STATIC,
 				     0, psymtab_language, objfile);
@@ -2790,7 +2790,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 		    function_outside_compilation_unit_complaint (name);
 		    xfree (name);
 		  }
-		add_psymbol_to_list (namestring, p - namestring, 1,
+		add_psymbol_to_list (namestring, p - namestring, true,
 				     VAR_DOMAIN, LOC_BLOCK,
 				     SECT_OFF_TEXT (objfile),
 				     psymbol_placement::STATIC,
@@ -2820,7 +2820,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 		if (startswith (namestring, "@FIX"))
 		  continue;
 
-		add_psymbol_to_list (namestring, p - namestring, 1,
+		add_psymbol_to_list (namestring, p - namestring, true,
 				     VAR_DOMAIN, LOC_BLOCK,
 				     SECT_OFF_TEXT (objfile),
 				     psymbol_placement::GLOBAL,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix float to LONGEST conversion.
@ 2019-09-11 19:49 gdb-buildbot
  2019-09-11 20:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11 19:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9cab7ecda21c6499b0559f6e676fe222e26141be ***

commit 9cab7ecda21c6499b0559f6e676fe222e26141be
Author:     Ali Tamur <tamur@google.com>
AuthorDate: Tue Aug 27 18:58:57 2019 -0700
Commit:     Ali Tamur <tamur@google.com>
CommitDate: Wed Sep 11 12:21:50 2019 -0700

    Fix float to LONGEST conversion.
    
    The code used to have undefined behaviour when template parameter is float and
    host_float is NaN, because it attempted to convert NaN value to LONGEST at the
    last statement. This frequently caused crashes on tests that checked "info
    all-registers" (at least when the code is compiled with clang; I didn't test
    with gdb).
    
    gdb/ChangeLog:
    
            *target-float.c (host_float_ops<T>::to_longest): Update
            implementation.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3b28884267..eccd4ef2bd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-11  Ali Tamur  <tamur@google.com>
+
+	*gdb/target-float.c (host_float_ops<T>::to_longest): Update
+	implementation.
+
 2019-09-11  Christian Biesinger  <cbiesinger@google.com>
 
 	* dbxread.c (read_dbx_symtab): Update.
diff --git a/gdb/target-float.c b/gdb/target-float.c
index 39abb12696..0fd71c0dc3 100644
--- a/gdb/target-float.c
+++ b/gdb/target-float.c
@@ -1007,13 +1007,18 @@ host_float_ops<T>::to_longest (const gdb_byte *addr,
 {
   T host_float;
   from_target (type, addr, &host_float);
-  /* Converting an out-of-range value is undefined behavior in C, but we
-     prefer to return a defined value here.  */
-  if (host_float > std::numeric_limits<LONGEST>::max())
-    return std::numeric_limits<LONGEST>::max();
-  if (host_float < std::numeric_limits<LONGEST>::min())
+  T min_possible_range = static_cast<T>(std::numeric_limits<LONGEST>::min());
+  T max_possible_range = -min_possible_range;
+  /* host_float can be converted to an integer as long as it's in
+     the range [min_possible_range, max_possible_range). If not, it is either
+     too large, or too small, or is NaN; in this case return the maximum or
+     minimum possible value.  */
+  if (host_float < max_possible_range && host_float >= min_possible_range)
+    return static_cast<LONGEST> (host_float);
+  if (host_float < min_possible_range)
     return std::numeric_limits<LONGEST>::min();
-  return (LONGEST) host_float;
+  /* This line will be executed if host_float is NaN.  */
+  return std::numeric_limits<LONGEST>::max();
 }
 
 /* Convert signed integer VAL to a target floating-number of type TYPE


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Refactor get_init_files to use std::string
@ 2019-09-11 22:11 gdb-buildbot
  2019-09-12  1:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11 22:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f48cd8368bf45b40547237939af3ab6b47dc7b01 ***

commit f48cd8368bf45b40547237939af3ab6b47dc7b01
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Aug 20 14:45:51 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 11 16:29:10 2019 -0500

    Refactor get_init_files to use std::string
    
    To avoid manual memory management.
    
    Tested on buildbot.
    
    gdb/ChangeLog:
    
    2019-09-11  Christian Biesinger  <cbiesinger@google.com>
    
            * main.c (get_init_files): Change to use std::string.
            (captured_main_1): Update.
            (print_gdb_help): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eccd4ef2bd..27eae1d400 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* main.c (get_init_files): Change to use std::string.
+	(captured_main_1): Update.
+	(print_gdb_help): Update.
+
 2019-09-11  Ali Tamur  <tamur@google.com>
 
 	*gdb/target-float.c (host_float_ops<T>::to_longest): Update
diff --git a/gdb/main.c b/gdb/main.c
index 129c57c1d1..e32ed62270 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -195,27 +195,26 @@ relocate_gdb_directory (const char *initial, bool relocatable)
    return them in SYSTEM_GDBINIT, HOME_GDBINIT, LOCAL_GDBINIT.  If
    there is no system gdbinit (resp. home gdbinit and local gdbinit)
    to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and
-   LOCAL_GDBINIT) is set to NULL.  */
+   LOCAL_GDBINIT) is set to the empty string.  */
 static void
-get_init_files (const char **system_gdbinit,
-		const char **home_gdbinit,
-		const char **local_gdbinit)
+get_init_files (std::string *system_gdbinit,
+		std::string *home_gdbinit,
+		std::string *local_gdbinit)
 {
-  static const char *sysgdbinit = NULL;
-  static char *homeinit = NULL;
-  static const char *localinit = NULL;
+  static std::string sysgdbinit;
+  static std::string homeinit;
+  static std::string localinit;
   static int initialized = 0;
 
   if (!initialized)
     {
       struct stat homebuf, cwdbuf, s;
-      const char *homedir;
 
       if (SYSTEM_GDBINIT[0])
 	{
-	  int datadir_len = strlen (GDB_DATADIR);
-	  int sys_gdbinit_len = strlen (SYSTEM_GDBINIT);
-	  char *relocated_sysgdbinit;
+	  size_t datadir_len = strlen (GDB_DATADIR);
+	  size_t sys_gdbinit_len = strlen (SYSTEM_GDBINIT);
+	  std::string relocated_sysgdbinit;
 
 	  /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
 	     has been provided, search for SYSTEM_GDBINIT there.  */
@@ -226,28 +225,30 @@ get_init_files (const char **system_gdbinit,
 	    {
 	      /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
 		 to gdb_datadir.  */
-	      char *tmp_sys_gdbinit = xstrdup (&SYSTEM_GDBINIT[datadir_len]);
-	      char *p;
 
-	      for (p = tmp_sys_gdbinit; IS_DIR_SEPARATOR (*p); ++p)
-		continue;
-	      relocated_sysgdbinit = concat (gdb_datadir, SLASH_STRING, p,
-					     (char *) NULL);
-	      xfree (tmp_sys_gdbinit);
+	      size_t start = datadir_len;
+	      for (; IS_DIR_SEPARATOR (SYSTEM_GDBINIT[start]); ++start)
+		;
+	      relocated_sysgdbinit = (std::string (gdb_datadir) + SLASH_STRING
+				      + &SYSTEM_GDBINIT[start]);
 	    }
 	  else
 	    {
-	      relocated_sysgdbinit = relocate_path (gdb_program_name,
-						    SYSTEM_GDBINIT,
-						    SYSTEM_GDBINIT_RELOCATABLE);
+	      char *relocated = relocate_path (gdb_program_name,
+					       SYSTEM_GDBINIT,
+					       SYSTEM_GDBINIT_RELOCATABLE);
+	      if (relocated != nullptr)
+	        {
+		  relocated_sysgdbinit = relocated;
+		  xfree (relocated);
+		}
 	    }
-	  if (relocated_sysgdbinit && stat (relocated_sysgdbinit, &s) == 0)
+	  if (!relocated_sysgdbinit.empty ()
+	      && stat (relocated_sysgdbinit.c_str (), &s) == 0)
 	    sysgdbinit = relocated_sysgdbinit;
-	  else
-	    xfree (relocated_sysgdbinit);
 	}
 
-      homedir = getenv ("HOME");
+      const char *homedir = getenv ("HOME");
 
       /* If the .gdbinit file in the current directory is the same as
 	 the $HOME/.gdbinit file, it should not be sourced.  homebuf
@@ -260,17 +261,16 @@ get_init_files (const char **system_gdbinit,
 
       if (homedir)
 	{
-	  homeinit = xstrprintf ("%s/%s", homedir, GDBINIT);
-	  if (stat (homeinit, &homebuf) != 0)
+	  homeinit = std::string (homedir) + SLASH_STRING + GDBINIT;
+	  if (stat (homeinit.c_str (), &homebuf) != 0)
 	    {
-	      xfree (homeinit);
-	      homeinit = NULL;
+	      homeinit = "";
 	    }
 	}
 
       if (stat (GDBINIT, &cwdbuf) == 0)
 	{
-	  if (!homeinit
+	  if (homeinit.empty ()
 	      || memcmp ((char *) &homebuf, (char *) &cwdbuf,
 			 sizeof (struct stat)))
 	    localinit = GDBINIT;
@@ -470,11 +470,6 @@ captured_main_1 (struct captured_main_args *context)
   /* All arguments of --directory option.  */
   std::vector<char *> dirarg;
 
-  /* gdb init files.  */
-  const char *system_gdbinit;
-  const char *home_gdbinit;
-  const char *local_gdbinit;
-
   int i;
   int save_auto_load;
   int ret = 1;
@@ -908,6 +903,9 @@ captured_main_1 (struct captured_main_args *context)
   /* Lookup gdbinit files.  Note that the gdbinit file name may be
      overriden during file initialization, so get_init_files should be
      called after gdb_init.  */
+  std::string system_gdbinit;
+  std::string home_gdbinit;
+  std::string local_gdbinit;
   get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
 
   /* Do these (and anything which might call wrap_here or *_filtered)
@@ -984,16 +982,16 @@ captured_main_1 (struct captured_main_args *context)
      This is done *before* all the command line arguments are
      processed; it sets global parameters, which are independent of
      what file you are debugging or what directory you are in.  */
-  if (system_gdbinit && !inhibit_gdbinit)
-    ret = catch_command_errors (source_script, system_gdbinit, 0);
+  if (!system_gdbinit.empty () && !inhibit_gdbinit)
+    ret = catch_command_errors (source_script, system_gdbinit.c_str (), 0);
 
   /* Read and execute $HOME/.gdbinit file, if it exists.  This is done
      *before* all the command line arguments are processed; it sets
      global parameters, which are independent of what file you are
      debugging or what directory you are in.  */
 
-  if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit)
-    ret = catch_command_errors (source_script, home_gdbinit, 0);
+  if (!home_gdbinit.empty () && !inhibit_gdbinit && !inhibit_home_gdbinit)
+    ret = catch_command_errors (source_script, home_gdbinit.c_str (), 0);
 
   /* Process '-ix' and '-iex' options early.  */
   for (i = 0; i < cmdarg_vec.size (); i++)
@@ -1096,20 +1094,20 @@ captured_main_1 (struct captured_main_args *context)
 
   /* Read the .gdbinit file in the current directory, *if* it isn't
      the same as the $HOME/.gdbinit file (it should exist, also).  */
-  if (local_gdbinit)
+  if (!local_gdbinit.empty ())
     {
       auto_load_local_gdbinit_pathname
-	= gdb_realpath (local_gdbinit).release ();
+	= gdb_realpath (local_gdbinit.c_str ()).release ();
 
       if (!inhibit_gdbinit && auto_load_local_gdbinit
-	  && file_is_auto_load_safe (local_gdbinit,
+	  && file_is_auto_load_safe (local_gdbinit.c_str (),
 				     _("auto-load: Loading .gdbinit "
 				       "file \"%s\".\n"),
-				     local_gdbinit))
+				     local_gdbinit.c_str ()))
 	{
 	  auto_load_local_gdbinit_loaded = 1;
 
-	  ret = catch_command_errors (source_script, local_gdbinit, 0);
+	  ret = catch_command_errors (source_script, local_gdbinit.c_str (), 0);
 	}
     }
 
@@ -1203,9 +1201,9 @@ gdb_main (struct captured_main_args *args)
 static void
 print_gdb_help (struct ui_file *stream)
 {
-  const char *system_gdbinit;
-  const char *home_gdbinit;
-  const char *local_gdbinit;
+  std::string system_gdbinit;
+  std::string home_gdbinit;
+  std::string local_gdbinit;
 
   get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
 
@@ -1283,18 +1281,18 @@ Other options:\n\n\
   fputs_unfiltered (_("\n\
 At startup, GDB reads the following init files and executes their commands:\n\
 "), stream);
-  if (system_gdbinit)
+  if (!system_gdbinit.empty ())
     fprintf_unfiltered (stream, _("\
    * system-wide init file: %s\n\
-"), system_gdbinit);
-  if (home_gdbinit)
+"), system_gdbinit.c_str ());
+  if (!home_gdbinit.empty ())
     fprintf_unfiltered (stream, _("\
    * user-specific init file: %s\n\
-"), home_gdbinit);
-  if (local_gdbinit)
+"), home_gdbinit.c_str ());
+  if (!local_gdbinit.empty ())
     fprintf_unfiltered (stream, _("\
    * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
-"), local_gdbinit);
+"), local_gdbinit.c_str ());
   fputs_unfiltered (_("\n\
 For more information, type \"help\" from within GDB, or consult the\n\
 GDB manual (available as on-line info or a printed manual).\n\


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Factor out the code to do the datadir-relocation for gdbinit
@ 2019-09-11 23:24 gdb-buildbot
  2019-09-12  2:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-11 23:24 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9224a01377868604ce4a7eb9c0d97736f7349dcd ***

commit 9224a01377868604ce4a7eb9c0d97736f7349dcd
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Aug 20 16:38:29 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 11 16:30:00 2019 -0500

    Factor out the code to do the datadir-relocation for gdbinit
    
    This simplifies get_init_files and makes it possible to reuse
    this code in an upcoming patch for SYSTEM_GDBINIT_DIR.
    
    gdb/ChangeLog:
    
    2019-09-11  Christian Biesinger  <cbiesinger@google.com>
    
            * main.c (relocate_gdbinit_path_maybe_in_datadir): Factor this code
            out of get_init_files.
            (get_init_files): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 27eae1d400..91b860c78a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* main.c (relocate_gdbinit_path_maybe_in_datadir): Factor this code
+	out of get_init_files.
+	(get_init_files): Update.
+
 2019-09-11  Christian Biesinger  <cbiesinger@google.com>
 
 	* main.c (get_init_files): Change to use std::string.
diff --git a/gdb/main.c b/gdb/main.c
index e32ed62270..9e22889590 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -191,6 +191,47 @@ relocate_gdb_directory (const char *initial, bool relocatable)
   return dir;
 }
 
+/* Given a gdbinit path in FILE, adjusts it according to the gdb_datadir
+   parameter if it is in the data dir, or passes it through relocate_path
+   otherwise.  */
+
+static std::string
+relocate_gdbinit_path_maybe_in_datadir (const std::string& file)
+{
+  size_t datadir_len = strlen (GDB_DATADIR);
+
+  std::string relocated_path;
+
+  /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
+     has been provided, search for SYSTEM_GDBINIT there.  */
+  if (gdb_datadir_provided
+      && datadir_len < file.length ()
+      && filename_ncmp (file.c_str (), GDB_DATADIR, datadir_len) == 0
+      && IS_DIR_SEPARATOR (file[datadir_len]))
+    {
+      /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
+	 to gdb_datadir.  */
+
+      size_t start = datadir_len;
+      for (; IS_DIR_SEPARATOR (file[start]); ++start)
+	;
+      relocated_path = (std::string (gdb_datadir) + SLASH_STRING
+			+ file.substr (start));
+    }
+  else
+    {
+      char *relocated = relocate_path (gdb_program_name,
+				       file.c_str (),
+				       SYSTEM_GDBINIT_RELOCATABLE);
+      if (relocated != nullptr)
+	{
+	  relocated_path = relocated;
+	  xfree (relocated);
+	}
+    }
+    return relocated_path;
+}
+
 /* Compute the locations of init files that GDB should source and
    return them in SYSTEM_GDBINIT, HOME_GDBINIT, LOCAL_GDBINIT.  If
    there is no system gdbinit (resp. home gdbinit and local gdbinit)
@@ -212,37 +253,8 @@ get_init_files (std::string *system_gdbinit,
 
       if (SYSTEM_GDBINIT[0])
 	{
-	  size_t datadir_len = strlen (GDB_DATADIR);
-	  size_t sys_gdbinit_len = strlen (SYSTEM_GDBINIT);
-	  std::string relocated_sysgdbinit;
-
-	  /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
-	     has been provided, search for SYSTEM_GDBINIT there.  */
-	  if (gdb_datadir_provided
-	      && datadir_len < sys_gdbinit_len
-	      && filename_ncmp (SYSTEM_GDBINIT, GDB_DATADIR, datadir_len) == 0
-	      && IS_DIR_SEPARATOR (SYSTEM_GDBINIT[datadir_len]))
-	    {
-	      /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
-		 to gdb_datadir.  */
-
-	      size_t start = datadir_len;
-	      for (; IS_DIR_SEPARATOR (SYSTEM_GDBINIT[start]); ++start)
-		;
-	      relocated_sysgdbinit = (std::string (gdb_datadir) + SLASH_STRING
-				      + &SYSTEM_GDBINIT[start]);
-	    }
-	  else
-	    {
-	      char *relocated = relocate_path (gdb_program_name,
-					       SYSTEM_GDBINIT,
-					       SYSTEM_GDBINIT_RELOCATABLE);
-	      if (relocated != nullptr)
-	        {
-		  relocated_sysgdbinit = relocated;
-		  xfree (relocated);
-		}
-	    }
+	  std::string relocated_sysgdbinit
+	    = relocate_gdbinit_path_maybe_in_datadir (SYSTEM_GDBINIT);
 	  if (!relocated_sysgdbinit.empty ()
 	      && stat (relocated_sysgdbinit.c_str (), &s) == 0)
 	    sysgdbinit = relocated_sysgdbinit;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make relocate_{path,gdb_directory} return std::string
@ 2019-09-12  0:41 gdb-buildbot
  2019-09-12  6:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-12  0:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f2aec7f6d149c8a534e8246b0d3a50038864fa2d ***

commit f2aec7f6d149c8a534e8246b0d3a50038864fa2d
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Mon Sep 9 12:55:39 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 11 16:31:36 2019 -0500

    Make relocate_{path,gdb_directory} return std::string
    
    This simplifies memory management. I've also changed some global variables
    to std::string accordingly (which store the result of these functions),
    but not all because some are used with add_setshow_optional_filename_cmd
    which requires a char*.
    
    gdb/ChangeLog:
    
    2019-09-11  Christian Biesinger  <cbiesinger@google.com>
    
            * auto-load.c (auto_load_expand_dir_vars): Update.
            * defs.h (gdb_datadir): Change to std::string.
            (python_libdir): Likewise.
            (relocate_gdb_directory): Change return type to std::string.
            * guile/guile.c (gdbscm_data_directory): Update.
            (initialize_scheme_side): Update.
            * jit.c (jit_reader_dir): Change to std::string.
            (jit_reader_load_command): Update.
            * main.c (gdb_datadir): Change to std::string.
            (python_libdir): Likewise.
            (set_gdb_data_directory): Update.
            (relocate_path): Change to return std::string.
            (relocate_gdb_directory): Change to return std::string.
            (relocate_gdbinit_path_maybe_in_datadir): Update.
            (captured_main_1): Update.
            * python/python.c (do_start_initialization): Update.
            * top.c (show_gdb_datadir): Update.
            * xml-syscall.c (xml_init_syscalls_info): Update.
            (init_syscalls_info): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 91b860c78a..4c354700c4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,25 @@
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* auto-load.c (auto_load_expand_dir_vars): Update.
+	* defs.h (gdb_datadir): Change to std::string.
+	(python_libdir): Likewise.
+	(relocate_gdb_directory): Change return type to std::string.
+	* guile/guile.c (gdbscm_data_directory): Update.
+	(initialize_scheme_side): Update.
+	* jit.c (jit_reader_dir): Change to std::string.
+	(jit_reader_load_command): Update.
+	* main.c (gdb_datadir): Change to std::string.
+	(python_libdir): Likewise.
+	(set_gdb_data_directory): Update.
+	(relocate_path): Change to return std::string.
+	(relocate_gdb_directory): Change to return std::string.
+	(relocate_gdbinit_path_maybe_in_datadir): Update.
+	(captured_main_1): Update.
+	* python/python.c (do_start_initialization): Update.
+	* top.c (show_gdb_datadir): Update.
+	* xml-syscall.c (xml_init_syscalls_info): Update.
+	(init_syscalls_info): Update.
+
 2019-09-11  Christian Biesinger  <cbiesinger@google.com>
 
 	* main.c (relocate_gdbinit_path_maybe_in_datadir): Factor this code
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 616aeb6fc9..115d5c10e8 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -178,7 +178,7 @@ static std::vector<gdb::unique_xmalloc_ptr<char>>
 auto_load_expand_dir_vars (const char *string)
 {
   char *s = xstrdup (string);
-  substitute_path_component (&s, "$datadir", gdb_datadir);
+  substitute_path_component (&s, "$datadir", gdb_datadir.c_str ());
   substitute_path_component (&s, "$debugdir", debug_file_directory);
 
   if (debug_auto_load && strcmp (s, string) != 0)
diff --git a/gdb/defs.h b/gdb/defs.h
index 14e0a3e1d1..c9a38b60a6 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -115,11 +115,11 @@ extern int dbx_commands;
 extern char *gdb_sysroot;
 
 /* * GDB datadir, used to store data files.  */
-extern char *gdb_datadir;
+extern std::string gdb_datadir;
 
-/* * If non-NULL, the possibly relocated path to python's "lib" directory
+/* * If not empty, the possibly relocated path to python's "lib" directory
    specified with --with-python.  */
-extern char *python_libdir;
+extern std::string python_libdir;
 
 /* * Search path for separate debug files.  */
 extern char *debug_file_directory;
@@ -282,7 +282,7 @@ struct value;
 
 /* This really belong in utils.c (path-utils.c?), but it references some
    globals that are currently only available to main.c.  */
-extern char *relocate_gdb_directory (const char *initial, bool relocatable);
+extern std::string relocate_gdb_directory (const char *initial, bool relocatable);
 
 \f
 /* Annotation stuff.  */
diff --git a/gdb/guile/guile.c b/gdb/guile/guile.c
index 39bec8724f..defe554f76 100644
--- a/gdb/guile/guile.c
+++ b/gdb/guile/guile.c
@@ -325,7 +325,7 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
 static SCM
 gdbscm_data_directory (void)
 {
-  return gdbscm_scm_from_c_string (gdb_datadir);
+  return gdbscm_scm_from_c_string (gdb_datadir.c_str ());
 }
 
 /* (guile-data-directory) -> string */
@@ -582,7 +582,8 @@ initialize_scheme_side (void)
 {
   char *boot_scm_path;
 
-  guile_datadir = concat (gdb_datadir, SLASH_STRING, "guile", (char *) NULL);
+  guile_datadir = concat (gdb_datadir.c_str (), SLASH_STRING, "guile",
+			  (char *) NULL);
   boot_scm_path = concat (guile_datadir, SLASH_STRING, "gdb",
 			  SLASH_STRING, boot_scm_filename, (char *) NULL);
 
diff --git a/gdb/jit.c b/gdb/jit.c
index 5fef03700c..4722d6c6ce 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -42,7 +42,7 @@
 #include "readline/tilde.h"
 #include "completer.h"
 
-static const char *jit_reader_dir = NULL;
+static std::string jit_reader_dir;
 
 static const struct objfile_data *jit_objfile_data;
 
@@ -216,7 +216,7 @@ jit_reader_load_command (const char *args, int from_tty)
     error (_("JIT reader already loaded.  Run jit-reader-unload first."));
 
   if (!IS_ABSOLUTE_PATH (file.get ()))
-    file.reset (xstrprintf ("%s%s%s", jit_reader_dir, SLASH_STRING,
+    file.reset (xstrprintf ("%s%s%s", jit_reader_dir.c_str (), SLASH_STRING,
 			    file.get ()));
 
   loaded_jit_reader = jit_reader_load (file.get ());
diff --git a/gdb/main.c b/gdb/main.c
index 9e22889590..6b75fced23 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -61,7 +61,7 @@ int dbx_commands = 0;
 char *gdb_sysroot = 0;
 
 /* GDB datadir, used to store data files.  */
-char *gdb_datadir = 0;
+std::string gdb_datadir;
 
 /* Non-zero if GDB_DATADIR was provided on the command line.
    This doesn't track whether data-directory is set later from the
@@ -70,7 +70,7 @@ static int gdb_datadir_provided = 0;
 
 /* If gdb was configured with --with-python=/path,
    the possibly relocated path to python's lib directory.  */
-char *python_libdir = 0;
+std::string python_libdir;
 
 /* Target IO streams.  */
 struct ui_file *gdb_stdtargin;
@@ -121,71 +121,70 @@ set_gdb_data_directory (const char *new_datadir)
   else if (!S_ISDIR (st.st_mode))
     warning (_("%s is not a directory."), new_datadir);
 
-  xfree (gdb_datadir);
-  gdb_datadir = gdb_realpath (new_datadir).release ();
+  gdb_datadir = gdb_realpath (new_datadir).get ();
 
   /* gdb_realpath won't return an absolute path if the path doesn't exist,
      but we still want to record an absolute path here.  If the user entered
      "../foo" and "../foo" doesn't exist then we'll record $(pwd)/../foo which
      isn't canonical, but that's ok.  */
-  if (!IS_ABSOLUTE_PATH (gdb_datadir))
+  if (!IS_ABSOLUTE_PATH (gdb_datadir.c_str ()))
     {
-      gdb::unique_xmalloc_ptr<char> abs_datadir = gdb_abspath (gdb_datadir);
+      gdb::unique_xmalloc_ptr<char> abs_datadir
+        = gdb_abspath (gdb_datadir.c_str ());
 
-      xfree (gdb_datadir);
-      gdb_datadir = abs_datadir.release ();
+      gdb_datadir = abs_datadir.get ();
     }
 }
 
 /* Relocate a file or directory.  PROGNAME is the name by which gdb
    was invoked (i.e., argv[0]).  INITIAL is the default value for the
    file or directory.  RELOCATABLE is true if the value is relocatable,
-   false otherwise.  Returns a newly allocated string; this may return
-   NULL under the same conditions as make_relative_prefix.  */
+   false otherwise.  This may return an empty string under the same
+   conditions as make_relative_prefix returning NULL.  */
 
-static char *
+static std::string
 relocate_path (const char *progname, const char *initial, bool relocatable)
 {
   if (relocatable)
-    return make_relative_prefix (progname, BINDIR, initial);
-  return xstrdup (initial);
+    {
+      gdb::unique_xmalloc_ptr<char> str (make_relative_prefix (progname,
+							       BINDIR,
+							       initial));
+      if (str != nullptr)
+	return str.get ();
+      return std::string ();
+    }
+  return initial;
 }
 
 /* Like relocate_path, but specifically checks for a directory.
    INITIAL is relocated according to the rules of relocate_path.  If
    the result is a directory, it is used; otherwise, INITIAL is used.
-   The chosen directory is then canonicalized using lrealpath.  This
-   function always returns a newly-allocated string.  */
+   The chosen directory is then canonicalized using lrealpath.  */
 
-char *
+std::string
 relocate_gdb_directory (const char *initial, bool relocatable)
 {
-  char *dir;
-
-  dir = relocate_path (gdb_program_name, initial, relocatable);
-  if (dir)
+  std::string dir = relocate_path (gdb_program_name, initial, relocatable);
+  if (!dir.empty ())
     {
       struct stat s;
 
-      if (*dir == '\0' || stat (dir, &s) != 0 || !S_ISDIR (s.st_mode))
+      if (stat (dir.c_str (), &s) != 0 || !S_ISDIR (s.st_mode))
 	{
-	  xfree (dir);
-	  dir = NULL;
+	  dir.clear ();
 	}
     }
-  if (!dir)
-    dir = xstrdup (initial);
+  if (dir.empty ())
+    dir = initial;
 
   /* Canonicalize the directory.  */
-  if (*dir)
+  if (!dir.empty ())
     {
-      char *canon_sysroot = lrealpath (dir);
+      gdb::unique_xmalloc_ptr<char> canon_sysroot (lrealpath (dir.c_str ()));
 
       if (canon_sysroot)
-	{
-	  xfree (dir);
-	  dir = canon_sysroot;
-	}
+	dir = canon_sysroot.get ();
     }
 
   return dir;
@@ -220,14 +219,9 @@ relocate_gdbinit_path_maybe_in_datadir (const std::string& file)
     }
   else
     {
-      char *relocated = relocate_path (gdb_program_name,
-				       file.c_str (),
-				       SYSTEM_GDBINIT_RELOCATABLE);
-      if (relocated != nullptr)
-	{
-	  relocated_path = relocated;
-	  xfree (relocated);
-	}
+      relocated_path = relocate_path (gdb_program_name,
+				      file.c_str (),
+				      SYSTEM_GDBINIT_RELOCATABLE);
     }
     return relocated_path;
 }
@@ -541,20 +535,23 @@ captured_main_1 (struct captured_main_args *context)
     perror_warning_with_name (_("error finding working directory"));
 
   /* Set the sysroot path.  */
-  gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT,
-					TARGET_SYSTEM_ROOT_RELOCATABLE);
+  gdb_sysroot
+    = xstrdup (relocate_gdb_directory (TARGET_SYSTEM_ROOT,
+				     TARGET_SYSTEM_ROOT_RELOCATABLE).c_str ());
 
-  if (gdb_sysroot == NULL || *gdb_sysroot == '\0')
+  if (*gdb_sysroot == '\0')
     {
       xfree (gdb_sysroot);
       gdb_sysroot = xstrdup (TARGET_SYSROOT_PREFIX);
     }
 
-  debug_file_directory = relocate_gdb_directory (DEBUGDIR,
-						 DEBUGDIR_RELOCATABLE);
+  debug_file_directory
+    = xstrdup (relocate_gdb_directory (DEBUGDIR,
+				     DEBUGDIR_RELOCATABLE).c_str ());
 
-  gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
-					GDB_DATADIR_RELOCATABLE);
+  gdb_datadir
+    = xstrdup (relocate_gdb_directory (GDB_DATADIR,
+				     GDB_DATADIR_RELOCATABLE).c_str ());
 
 #ifdef WITH_PYTHON_PATH
   {
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 9c49151db3..9c8c635f72 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1608,7 +1608,7 @@ do_start_initialization ()
      /foo/lib/pythonX.Y/...
      This must be done before calling Py_Initialize.  */
   gdb::unique_xmalloc_ptr<char> progname
-    (concat (ldirname (python_libdir).c_str (), SLASH_STRING, "bin",
+    (concat (ldirname (python_libdir.c_str ()).c_str (), SLASH_STRING, "bin",
 	      SLASH_STRING, "python", (char *) NULL));
 #ifdef IS_PY3K
   std::string oldloc = setlocale (LC_ALL, NULL);
diff --git a/gdb/top.c b/gdb/top.c
index 9d4ce1fa3b..2b53640af0 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -2038,7 +2038,7 @@ show_gdb_datadir (struct ui_file *file, int from_tty,
 		  struct cmd_list_element *c, const char *value)
 {
   fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
-		    gdb_datadir);
+		    gdb_datadir.c_str ());
 }
 
 static void
diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c
index d144f82fbf..dc988dfae8 100644
--- a/gdb/xml-syscall.c
+++ b/gdb/xml-syscall.c
@@ -316,7 +316,8 @@ static struct syscalls_info *
 xml_init_syscalls_info (const char *filename)
 {
   gdb::optional<gdb::char_vector> full_file
-    = xml_fetch_content_from_file (filename, gdb_datadir);
+    = xml_fetch_content_from_file (filename,
+				   const_cast<char *>(gdb_datadir.c_str ()));
   if (!full_file)
     return NULL;
 
@@ -336,7 +337,7 @@ init_syscalls_info (struct gdbarch *gdbarch)
   /* Should we re-read the XML info for this target?  */
   if (syscalls_info != NULL && !syscalls_info->my_gdb_datadir.empty ()
       && filename_cmp (syscalls_info->my_gdb_datadir.c_str (),
-		       gdb_datadir) != 0)
+		       gdb_datadir.c_str ()) != 0)
     {
       /* The data-directory changed from the last time we used it.
 	 It means that we have to re-read the XML info.  */
@@ -361,7 +362,7 @@ init_syscalls_info (struct gdbarch *gdbarch)
     {
       if (xml_syscall_file != NULL)
 	warning (_("Could not load the syscall XML file `%s/%s'."),
-		 gdb_datadir, xml_syscall_file);
+		 gdb_datadir.c_str (), xml_syscall_file);
       else
 	warning (_("There is no XML file to open."));
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix signals reported for faults on Solaris
@ 2019-09-12  9:22 gdb-buildbot
  2019-09-12 10:16 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-12  9:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7a28970742a8a1509917d409af14c84e1f666baa ***

commit 7a28970742a8a1509917d409af14c84e1f666baa
Author:     Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
AuthorDate: Thu Sep 12 10:40:59 2019 +0200
Commit:     Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
CommitDate: Thu Sep 12 10:40:59 2019 +0200

    Fix signals reported for faults on Solaris
    
    It's been a long-standing nuisance that gdb reported unaligned accesses
    on Solaris/SPARC as SIGSEGV, contrary to the shells and truss which
    correctly report SIGBUS instead.
    
    I could trace this down to the fault handling code in procfs.c
    (procfs_target::wait): when pr_why is set to PR_FAULTED, the current
    code sets the signal based on the fault number.  For one, the code gets
    this wrong for FLTACCESS (the unaligned access case) where it uses
    SIGSEGV.  What's worse, it's completely unnecessary to make up the
    signal number inside gdb.  Instead, it should just take what procfs
    reports to avoid mismatches, which is what this patch does.  I've
    completely removed the explicit handling of the various fault codes: for
    one, the list has already been incomplete, lacking FLTCPCOVF which
    existed since at least Solaris 8.  Besides, there's no reason to error
    out on unknown fault codes: either the fault causes a signal which can
    then be reported from procfs, or it doesn't (as for FLTPAGE) and no
    reporting is necessary.
    
    Tested on sparcv9-sun-solaris2.11 and x86_64-pc-solaris2.11.  Also
    spot-checked manually for a couple of cases (unaligned access, division
    by 0, NULL pointer dereference).
    
            * procfs.c (procfs_target::wait) <PR_FAULTED>: Get signal from
            prstatus.pr_lwp.pr_info instead of making it up.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4c354700c4..6d5f19d04b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* procfs.c (procfs_target::wait) <PR_FAULTED>: Get signal from
+	prstatus.pr_lwp.pr_info instead of making it up.
+
 2019-09-11  Christian Biesinger  <cbiesinger@google.com>
 
 	* auto-load.c (auto_load_expand_dir_vars): Update.
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 5bc1c3b28a..848ac7d6e7 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -2476,40 +2476,12 @@ wait_again:
 		wstat = (what << 8) | 0177;
 		break;
 	      case PR_FAULTED:
-		switch (what) {
-		case FLTWATCH:
-		  wstat = (SIGTRAP << 8) | 0177;
-		  break;
-		  /* FIXME: use si_signo where possible.  */
-		case FLTPRIV:
-		case FLTILL:
-		  wstat = (SIGILL << 8) | 0177;
-		  break;
-		case FLTBPT:
-		case FLTTRACE:
-		  wstat = (SIGTRAP << 8) | 0177;
-		  break;
-		case FLTSTACK:
-		case FLTACCESS:
-		case FLTBOUNDS:
-		  wstat = (SIGSEGV << 8) | 0177;
-		  break;
-		case FLTIOVF:
-		case FLTIZDIV:
-		case FLTFPE:
-		  wstat = (SIGFPE << 8) | 0177;
-		  break;
-		case FLTPAGE:	/* Recoverable page fault */
-		default:	/* FIXME: use si_signo if possible for
-				   fault.  */
-		  retval = ptid_t (-1);
-		  printf_filtered ("procfs:%d -- ", __LINE__);
-		  printf_filtered (_("child stopped for unknown reason:\n"));
-		  proc_prettyprint_why (why, what, 1);
-		  error (_("... giving up..."));
-		  break;
+		{
+		  int signo = pi->prstatus.pr_lwp.pr_info.si_signo;
+		  if (signo != 0)
+		    wstat = (signo << 8) | 0177;
 		}
-		break;	/* case PR_FAULTED: */
+		break;
 	      default:	/* switch (why) unmatched */
 		printf_filtered ("procfs:%d -- ", __LINE__);
 		printf_filtered (_("child stopped for unknown reason:\n"));


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Output the Ada task name in more messages.
@ 2019-09-12 20:58 gdb-buildbot
  2019-09-12 21:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-12 20:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4993045d18d69ecee41ca341cde6bbed220dc8a4 ***

commit 4993045d18d69ecee41ca341cde6bbed220dc8a4
Author:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
AuthorDate: Sat Jun 8 19:47:51 2019 +0200
Commit:     Philippe Waroquiers <philippe.waroquiers@skynet.be>
CommitDate: Thu Sep 12 21:57:10 2019 +0200

    Output the Ada task name in more messages.
    
    With this patch, we e.g. get:
          [Switching to task 2 "task_list(1)"]
          [Current task is 2 "task_list(1)"]
        instead of
          [Switching to task 2]
          [Current task is 2]
    
    The logic to produce the taskno optionally followed
    by the task name has been factorized in the task_to_str function.
    
    Task names are output between double quotes in the new messages,
    similarly to what GDB does for thread names.
    However, no quotes are put around task names in 'info tasks' Name column.
    This was discussed with Tom, that preferred no quotes there, while I
    was more in favour of visual consistency.
    I discussed with a few more users, which led to (exactly) 50% preferring
    quotes and 50% preferring no quotes :).
    To arrive to the decision to remove the quotes, the following "killing args"
    were used:
     * To have quotes or to not have quotes, that is the question; yes
       but not *THE* question :).
     * If there is not a clear majority that prefers quotes, better to
       not disturb the existing user basis for a (somewhat) irrelevant
       aspect.
     * The opinion of the reviewer has more weight.
    
    So, compared to the previous version, this version remotes the quotes
    in 'info tasks'.
    
    It improves the alignement of 'info tasks' output.
    With this patch, we get:
          (gdb) info task
             ID           TID P-ID Pri State                  Name
          *   1  555555759030       48 Runnable               main_task
              2  555555759e30    1  48 Selective Wait         mit
          (gdb)
       instead of
          (gdb) info task
             ID       TID P-ID Pri State                  Name
          *   1 555555759030       48 Runnable               main_task
              2 555555759e30    1  48 Selective Wait         mit
          (gdb)
    (e.g. the first one properly shows parent and priority under the
    correct header).
    
    This is version 4 of the 'task name' patch.
    Compared to version 3, the changes are:
       output task names between quotes but not in 'info tasks'
    
    gdb/ChangeLog
    2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
            * NEWS: Announce that Ada task names are now shown at more places,
            and between quotes (except in info task output).
            * gdb/ada-tasks.c (task_to_str): New function.
            (display_current_task_id): Call task_to_str.
            (task_command_1): Likewise.
            (print_ada_task_info): In non-mi mode, Properly align headers and data
            when task-id length is > 9 (9 is the default for a 32 bits CORE_ADDR).
    
    gdb/doc/ChangeLog
    2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
            * gdb.texinfo (Ada Tasks): Tell the task name is printed, update
            examples.
    
    gdb/testsuite/ChangeLog
    2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
            * gdb.ada/rdv_wait.exp: Update to new task names.
            * gdb.base/task_switch_in_core.exp: Likewise.
            * gdb.base/info_sources_base.c: Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6d5f19d04b..986a701c2f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Announce that Ada task names are now shown at more places,
+	and between quotes (except in info task output).
+	* gdb/ada-tasks.c (task_to_str): New function.
+	(display_current_task_id): Call task_to_str.
+	(task_command_1): Likewise.
+	(print_ada_task_info): In non-mi mode, Properly align headers and data
+	when task-id length is > 9 (9 is the default for a 32 bits CORE_ADDR).
+
 2019-09-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* procfs.c (procfs_target::wait) <PR_FAULTED>: Get signal from
diff --git a/gdb/NEWS b/gdb/NEWS
index f382e887c0..d502f08984 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -29,6 +29,9 @@
 
 * The RX port now supports XML target descriptions.
 
+* GDB now shows the Ada task names at more places, e.g. in task switching
+  messages.
+
 * Python API
 
   ** The gdb.Value type has a new method 'format_string' which returns a
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index 99458aadb2..34da786eb7 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -240,6 +240,18 @@ struct ada_tasks_inferior_data
 static const struct inferior_key<ada_tasks_inferior_data>
   ada_tasks_inferior_data_handle;
 
+/* Return a string with TASKNO followed by the task name if TASK_INFO
+   contains a name.  */
+
+static std::string
+task_to_str (int taskno, const ada_task_info *task_info)
+{
+  if (task_info->name[0] == '\0')
+    return string_printf ("%d", taskno);
+  else
+    return string_printf ("%d \"%s\"", taskno, task_info->name);
+}
+
 /* Return the ada-tasks module's data for the given program space (PSPACE).
    If none is found, add a zero'ed one now.
 
@@ -1047,7 +1059,26 @@ print_ada_task_info (struct ui_out *uiout,
   ui_out_emit_table table_emitter (uiout, nb_columns, nb_tasks, "tasks");
   uiout->table_header (1, ui_left, "current", "");
   uiout->table_header (3, ui_right, "id", "ID");
-  uiout->table_header (9, ui_right, "task-id", "TID");
+  {
+    size_t tid_width = 9;
+    /* Grown below in case the largest entry is bigger.  */
+
+    if (!uiout->is_mi_like_p ())
+      {
+	for (taskno = 1; taskno <= data->task_list.size (); taskno++)
+	  {
+	    const struct ada_task_info *const task_info
+	      = &data->task_list[taskno - 1];
+
+	    gdb_assert (task_info != NULL);
+
+	    tid_width = std::max (tid_width,
+				  1 + strlen (phex_nz (task_info->task_id,
+						       sizeof (CORE_ADDR))));
+	  }
+      }
+    uiout->table_header (tid_width, ui_right, "task-id", "TID");
+  }
   /* The following column is provided in GDB/MI mode only because
      it is only really useful in that mode, and also because it
      allows us to keep the CLI output shorter and more compact.  */
@@ -1129,10 +1160,12 @@ print_ada_task_info (struct ui_out *uiout,
       else
 	uiout->field_string ("state", task_states[task_info->state]);
 
-      /* Finally, print the task name.  */
+      /* Finally, print the task name, without quotes around it, as mi like
+	 is not expecting quotes, and in non mi-like no need for quotes
+         as there is a specific column for the name.  */
       uiout->field_string ("name",
-			   task_info->name[0] != '\0' ? task_info->name
-			   : _("<no name>"));
+                          task_info->name[0] != '\0' ? task_info->name
+                          : _("<no name>"));
 
       uiout->text ("\n");
     }
@@ -1166,7 +1199,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 
   /* Print the name of the task.  */
   if (task_info->name[0] != '\0')
-    printf_filtered (_("Name: %s\n"), task_info->name);
+    printf_filtered (_("Name: \"%s\"\n"), task_info->name);
   else
     printf_filtered (_("<no name>\n"));
 
@@ -1187,7 +1220,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 
       printf_filtered (_("Parent: %d"), parent_taskno);
       if (parent->name[0] != '\0')
-        printf_filtered (" (%s)", parent->name);
+        printf_filtered (" (\"%s\")", parent->name);
       printf_filtered ("\n");
     }
   else
@@ -1220,7 +1253,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
         ada_task_info *target_task_info = &data->task_list[target_taskno - 1];
 
         if (target_task_info->name[0] != '\0')
-          printf_filtered (" (%s)", target_task_info->name);
+          printf_filtered (" (\"%s\")", target_task_info->name);
       }
 
     printf_filtered ("\n");
@@ -1255,7 +1288,14 @@ display_current_task_id (void)
   if (current_task == 0)
     printf_filtered (_("[Current task is unknown]\n"));
   else
-    printf_filtered (_("[Current task is %d]\n"), current_task);
+    {
+      struct ada_tasks_inferior_data *data
+	= get_ada_tasks_inferior_data (current_inferior ());
+      struct ada_task_info *task_info = &data->task_list[current_task - 1];
+
+      printf_filtered (_("[Current task is %s]\n"),
+		       task_to_str (current_task, task_info).c_str ());
+    }
 }
 
 /* Parse and evaluate TIDSTR into a task id, and try to switch to
@@ -1274,7 +1314,8 @@ task_command_1 (const char *taskno_str, int from_tty, struct inferior *inf)
   task_info = &data->task_list[taskno - 1];
 
   if (!ada_task_is_alive (task_info))
-    error (_("Cannot switch to task %d: Task is no longer running"), taskno);
+    error (_("Cannot switch to task %s: Task is no longer running"),
+	   task_to_str (taskno, task_info).c_str ());
    
   /* On some platforms, the thread list is not updated until the user
      performs a thread-related operation (by using the "info threads"
@@ -1295,13 +1336,14 @@ task_command_1 (const char *taskno_str, int from_tty, struct inferior *inf)
      it's nicer for the user to just refuse to perform the task switch.  */
   thread_info *tp = find_thread_ptid (task_info->ptid);
   if (tp == NULL)
-    error (_("Unable to compute thread ID for task %d.\n"
+    error (_("Unable to compute thread ID for task %s.\n"
              "Cannot switch to this task."),
-           taskno);
+           task_to_str (taskno, task_info).c_str ());
 
   switch_to_thread (tp);
   ada_find_printable_frame (get_selected_frame (NULL));
-  printf_filtered (_("[Switching to task %d]\n"), taskno);
+  printf_filtered (_("[Switching to task %s]\n"),
+		   task_to_str (taskno, task_info).c_str ());
   print_stack_frame (get_selected_frame (NULL),
                      frame_relative_level (get_selected_frame (NULL)),
 		     SRC_AND_LOC, 1);
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 96c0409197..4705fbc541 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Ada Tasks): Tell the task name is printed, update
+	examples.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* gdb.texinfo (Index Files): Update Ada text.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 79824a0226..eee0c9d4dd 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -17751,10 +17751,10 @@ the following example:
 *  2   807c468    1  15 Runnable               task_1
 (@value{GDBP}) info task 2
 Ada Task: 0x807c468
-Name: task_1
+Name: "task_1"
 Thread: 0
 LWP: 0x1fac
-Parent: 1 (main_task)
+Parent: 1 ("main_task")
 Base Priority: 15
 State: Runnable
 @end smallexample
@@ -17762,7 +17762,7 @@ State: Runnable
 @item task
 @kindex task@r{ (Ada)}
 @cindex current Ada task ID
-This command prints the ID of the current task.
+This command prints the ID and name of the current task.
 
 @smallexample
 @iftex
@@ -17771,9 +17771,9 @@ This command prints the ID of the current task.
 (@value{GDBP}) info tasks
   ID       TID P-ID Pri State                  Name
    1   8077870    0  15 Child Activation Wait  main_task
-*  2   807c458    1  15 Runnable               t
+*  2   807c458    1  15 Runnable               some_task
 (@value{GDBP}) task
-[Current task is 2]
+[Current task is 2 "some_task"]
 @end smallexample
 
 @item task @var{taskno}
@@ -17789,9 +17789,9 @@ from the current task to the given task.
 (@value{GDBP}) info tasks
   ID       TID P-ID Pri State                  Name
    1   8077870    0  15 Child Activation Wait  main_task
-*  2   807c458    1  15 Runnable               t
+*  2   807c458    1  15 Runnable               some_task
 (@value{GDBP}) task 1
-[Switching to task 1]
+[Switching to task 1 "main_task"]
 #0  0x8067726 in pthread_cond_wait ()
 (@value{GDBP}) bt
 #0  0x8067726 in pthread_cond_wait ()
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a51d22ce22..bf3fcc7d84 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.ada/rdv_wait.exp: Update to new task names.
+	* gdb.base/task_switch_in_core.exp: Likewise.
+	* gdb.base/info_sources_base.c: Likewise.
+
 2019-09-10  Tom Tromey  <tromey@adacore.com>
 
 	* boards/cc-with-tweaks.exp: Set GNATMAKE_FOR_TARGET.
diff --git a/gdb/testsuite/gdb.ada/rdv_wait.exp b/gdb/testsuite/gdb.ada/rdv_wait.exp
index c0c4e29f5f..fe6aec3bcd 100644
--- a/gdb/testsuite/gdb.ada/rdv_wait.exp
+++ b/gdb/testsuite/gdb.ada/rdv_wait.exp
@@ -31,5 +31,5 @@ runto "break_me"
 # Switch to task 2, and verify that GDB is able to unwind all the way
 # to foo.T.
 gdb_test "task 2" \
-         [join {"\\\[Switching to task 2\\\].*" \
+         [join {"\\\[Switching to task 2 \"mit\"\\\].*" \
                 ".*foo\\.t \\(.*\\).*foo\\.adb:.*"} ""]
diff --git a/gdb/testsuite/gdb.ada/task_switch_in_core.exp b/gdb/testsuite/gdb.ada/task_switch_in_core.exp
index 4c482834bc..fb9aef2840 100644
--- a/gdb/testsuite/gdb.ada/task_switch_in_core.exp
+++ b/gdb/testsuite/gdb.ada/task_switch_in_core.exp
@@ -71,7 +71,7 @@ gdb_test "info tasks" \
 # we will verify right after with an additional test that the current
 # task is now task 2.
 gdb_test "task 2" \
-         "\\\[Switching to task 2\\\].*"
+         "\\\[Switching to task 2 \"my_t\"\\\].*"
 
 gdb_test "info tasks" \
          [multi_line "\\s+ID\\s+TID\\s+P-ID\\s+Pri\\s+State\\s+Name" \


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Allow some tests in gdb.base/store.exp to be unsupported
@ 2019-09-12 21:01 gdb-buildbot
  2019-09-12 22:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-12 21:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 25e5c20918a0ec69e37c1987db52062b0eab7194 ***

commit 25e5c20918a0ec69e37c1987db52062b0eab7194
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 12 22:36:37 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 12 22:36:37 2019 +0200

    [gdb/testsuite] Allow some tests in gdb.base/store.exp to be unsupported
    
    The test-case gdb.base/store.exp fails with gcc 7.4.0:
    ...
    nr of unexpected failures        27
    ...
    
    The first FAIL:
    ...
    110       l = add_float (l, r);
    (gdb) PASS: gdb.base/store.exp: continue to wack_float
    print l
    $21 = <optimized out>
    FAIL: gdb.base/store.exp: var float l; print old l, expecting -1
    ...
    relates to this bit in the test-case (compiled at -O0):
    ...
       106  float
       107  wack_float (register float u, register float v)
       108  {
       109    register float l = u, r = v;
       110    l = add_float (l, r);
       111    return l + r;
       112  }
    ...
    and it expects to be able to read and modify variable l before executing line
    110, but it already fails to read the value, because l has no DW_AT_location
    attribute in the debug info.
    
    Variable l is declared with the register keyword, and GCC implements the
    register keyword at -O0 like so:
    ...
    the compiler allocates distinct stack memory for all variables that do not
    have the register storage-class specifier; if register is specified, the
    variable may have a shorter lifespan than the code would indicate and may
    never be placed in memory.
    ...
    
    The fact that l has no DW_AT_location attribute, matches with the documented
    "variable may have a shorter lifespan that code would indicate", (though it
    is the most extreme case of it) so the gcc behaviour is valid.  We can of
    course improve gcc to generate better debuginfo (filed gcc PR91611), but
    this not a wrong-debug problem.
    
    [ The test-case passes with gcc 4.2.1, but for the failing test discussed
    above, it passes simply because it doesn't store l in a register. ]
    
    With the debug info missing for l, reading and setting l is unsupported, so
    fix the FAIL by marking the test UNSUPPORTED instead.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-12  Tom de Vries  <tdevries@suse.de>
    
            * gdb.base/store.exp: Allow register variables to be optimized out at
            -O0.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index bf3fcc7d84..7352e9f034 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/store.exp: Allow register variables to be optimized out at
+	-O0.
+
 2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* gdb.ada/rdv_wait.exp: Update to new task names.
diff --git a/gdb/testsuite/gdb.base/store.exp b/gdb/testsuite/gdb.base/store.exp
index c5a7584101..9c19ce15a7 100644
--- a/gdb/testsuite/gdb.base/store.exp
+++ b/gdb/testsuite/gdb.base/store.exp
@@ -55,18 +55,29 @@ proc check_set { t l r new add } {
 	}
     }
 
-    gdb_test "print l" " = ${l}" \
-	"${prefix}; print old l, expecting ${l}"
-    gdb_test "print r" " = ${r}" \
-	"${prefix}; print old r, expecting ${r}"
-    gdb_test_no_output "set variable l = 4" \
-	"${prefix}; setting l to 4"
-    gdb_test "print l" " = ${new}" \
-	"${prefix}; print new l, expecting ${new}"
-    gdb_test "next" "return l \\+ r;" \
-	"${prefix}; next over add call"
-    gdb_test "print l" " = ${add}" \
-	"${prefix}; print incremented l, expecting ${add}"
+    set supported 1
+    set test "${prefix}; print old l, expecting ${l}"
+    gdb_test_multiple "print l" "$test"  {
+	-re " = <optimized out>\r\n$gdb_prompt $" {
+	    unsupported $test
+	    set supported 0
+	}
+	-re " = ${l}\r\n$gdb_prompt $" {
+	    pass $test
+	}
+    }
+    if { $supported } {
+	gdb_test "print r" " = ${r}" \
+	    "${prefix}; print old r, expecting ${r}"
+	gdb_test_no_output "set variable l = 4" \
+	    "${prefix}; setting l to 4"
+	gdb_test "print l" " = ${new}" \
+	    "${prefix}; print new l, expecting ${new}"
+	gdb_test "next" "return l \\+ r;" \
+	    "${prefix}; next over add call"
+	gdb_test "print l" " = ${add}" \
+	    "${prefix}; print incremented l, expecting ${add}"
+    }
 }
 
 check_set "charest" "-1 .*" "-2 .*" "4 ..004." "2 ..002."
@@ -81,20 +92,34 @@ check_set "doublest" "-1" "-2" "4" "2"
 #
 
 proc up_set { t l r new } {
+    global gdb_prompt
+
     set prefix "upvar ${t} l"
     gdb_test "tbreak add_${t}"
     gdb_test "continue" "return u . v;" \
 	"continue to add_${t}"
     gdb_test "up" "l = add_${t} .l, r.;" \
 	"${prefix}; up"
-    gdb_test "print l" " = ${l}" \
-	"${prefix}; print old l, expecting ${l}"
-    gdb_test "print r" " = ${r}" \
-	"${prefix}; print old r, expecting ${r}"
-    gdb_test_no_output "set variable l = 4" \
-	"${prefix}; set l to 4"
-    gdb_test "print l" " = ${new}" \
-	"${prefix}; print new l, expecting ${new}"
+
+    set supported 1
+    set test "${prefix}; print old l, expecting ${l}"
+    gdb_test_multiple "print l" "$test"  {
+	-re " = <optimized out>\r\n$gdb_prompt $" {
+	    unsupported $test
+	    set supported 0
+	}
+	-re " = ${l}\r\n$gdb_prompt $" {
+	    pass $test
+	}
+    }
+    if { $supported } {
+	gdb_test "print r" " = ${r}" \
+	    "${prefix}; print old r, expecting ${r}"
+	gdb_test_no_output "set variable l = 4" \
+	    "${prefix}; set l to 4"
+	gdb_test "print l" " = ${new}" \
+	    "${prefix}; print new l, expecting ${new}"
+    }
 }
 
 up_set "charest" "-1 .*" "-2 .*" "4 ..004."


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Don't fault for 'maint print psymbols' when using an index
@ 2019-09-13  1:11 gdb-buildbot
  2019-09-13  1:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-13  1:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3dd9bb462012df685d6d41300dacedae1c81e28a ***

commit 3dd9bb462012df685d6d41300dacedae1c81e28a
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Sat Aug 31 21:46:27 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Sep 12 20:31:29 2019 -0400

    gdb: Don't fault for 'maint print psymbols' when using an index
    
    I found that these tests:
    
      make check-gdb RUNTESTFLAGS="--target_board=cc-with-gdb-index gdb.base/maint.exp"
      make check-gdb RUNTESTFLAGS="--target_board=cc-with-debug-names gdb.base/maint.exp"
    
    were causing GDB to segfault.  It turns out that this test runs this
    command:
    
      maint print psymbols -pc main /path/to/some/file
    
    which tries to lookup the partial_symtab for 'main'.  The problem is
    that there is no partial_symtab for 'main' as we are using the
    .gdb_index or .debug_names instead of partial_symtabs.
    
    What happens is that maintenance_print_symbols calls
    find_pc_sect_psymtab, which looks for the partial_symtab in the
    objfile's objfile->partial_symtabs->psymtabs_addrmap.
    
    This is a problem because when we are using the indexes
    psymtabs_addrmap is reused to hold things other than partial_symtabs,
    this can be seen in dwarf2read.c in create_addrmap_from_index and
    create_addrmap_from_aranges.  If we then lookup in psymtabs_addrmap we
    end up returning a pointer to something that isn't really a
    partial_symtab, after which everything goes wrong.
    
    Initially I simply added a check at the start of find_pc_sect_psymtab
    that the objfile had some partial_symtabs, like:
    
      if (objfile->partial_symtabs->psymtabs == NULL)
        return NULL;
    
    Figuring that if there were no partial_symtabs at all then this
    function should always return NULL, however, this caused a failure in
    the test gdb.python/py-event.exp which I didn't dig into too deeply,
    but seems to be that in this tests there are initially no psymtabs,
    but the second part of find_pc_sect_psymtab does manage to read some
    in from somewhere, with the check I added the test fails as we
    returned NULL here and this caused GDB to load in the full symtabs
    earlier than was expected.
    
    Instead I chose to guard only the access to psymtabs_addrmap with a
    check that the function has some psymtabs.  This allows my original
    tests to pass, and the py-event.exp test to pass too.
    
    Now, a good argument can be made that we simply should never call
    find_pc_sect_psymtab on an objfile that is using indexes instead of
    partial_symtabs.  I did consider this approach, we could easily add an
    assert into find_pc_sect_psymtab that if we find a partial_symtab in
    psymtabs_addrmap then the psymtabs pointer must be non-null.  The
    responsibility would then be on the user of find_pc_sect_psymtab to
    ensure that the objfile being checked is suitable.  In the end I
    didn't take this approach as the check in find_pc_sect_psymtab is
    cheap and this ensures that any future miss-uses of the function will
    not cause problems.
    
    I also extended the comment on psymtabs_addrmap to indicate that it
    holds more than just partial_symtabs as this was not at all clear from
    the original comment, and caused me some confusion when I was
    initially debugging this problem.
    
    gdb/ChangeLog:
    
            * psymtab.c (find_pc_sect_psymtab): Move baseaddr local into more
            inner scope, add check that the objfile has psymtabs before
            checking psymtabs_addrmap.
            * psymtab.h (psymtab_storage) <psymtabs_addrmap>: Extend comment.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 986a701c2f..9540c4f120 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* psymtab.c (find_pc_sect_psymtab): Move baseaddr local into more
+	inner scope, add check that the objfile has psymtabs before
+	checking psymtabs_addrmap.
+	* psymtab.h (psymtab_storage) <psymtabs_addrmap>: Extend comment.
+
 2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* NEWS: Announce that Ada task names are now shown at more places,
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index e9cc8c3bc6..031dbd9c1e 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -301,14 +301,24 @@ find_pc_sect_psymtab (struct objfile *objfile, CORE_ADDR pc,
 		      struct obj_section *section,
 		      struct bound_minimal_symbol msymbol)
 {
-  CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
-				 SECT_OFF_TEXT (objfile));
-
-  /* Try just the PSYMTABS_ADDRMAP mapping first as it has better granularity
-     than the later used TEXTLOW/TEXTHIGH one.  */
-
-  if (objfile->partial_symtabs->psymtabs_addrmap != NULL)
+  /* Try just the PSYMTABS_ADDRMAP mapping first as it has better
+     granularity than the later used TEXTLOW/TEXTHIGH one.  However, we need
+     to take care as the PSYMTABS_ADDRMAP can hold things other than partial
+     symtabs in some cases.
+
+     This function should only be called for objfiles that are using partial
+     symtabs, not for objfiles that are using indexes (.gdb_index or
+     .debug_names), however 'maintenance print psymbols' calls this function
+     directly for all objfiles.  If we assume that PSYMTABS_ADDRMAP contains
+     partial symtabs then we will end up returning a pointer to an object
+     that is not a partial_symtab, which doesn't end well.  */
+
+  if (objfile->partial_symtabs->psymtabs != NULL
+      && objfile->partial_symtabs->psymtabs_addrmap != NULL)
     {
+      CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
+				     SECT_OFF_TEXT (objfile));
+
       struct partial_symtab *pst
 	= ((struct partial_symtab *)
 	   addrmap_find (objfile->partial_symtabs->psymtabs_addrmap,
diff --git a/gdb/psymtab.h b/gdb/psymtab.h
index aed686258d..0ad2b49d9a 100644
--- a/gdb/psymtab.h
+++ b/gdb/psymtab.h
@@ -109,7 +109,11 @@ public:
   /* Map addresses to the entries of PSYMTABS.  It would be more efficient to
      have a map per the whole process but ADDRMAP cannot selectively remove
      its items during FREE_OBJFILE.  This mapping is already present even for
-     PARTIAL_SYMTABs which still have no corresponding full SYMTABs read.  */
+     PARTIAL_SYMTABs which still have no corresponding full SYMTABs read.
+
+     The DWARF parser reuses this addrmap to store things other than
+     psymtabs in the cases where debug information is being read from, for
+     example, the .debug-names section.  */
 
   struct addrmap *psymtabs_addrmap = nullptr;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Have 'maint info sections' print all sections again
@ 2019-09-13  1:12 gdb-buildbot
  2019-09-13  2:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-13  1:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aa17805fb9a3a1983a510ba425b682fba03410c2 ***

commit aa17805fb9a3a1983a510ba425b682fba03410c2
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Sat Aug 31 23:44:40 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Sep 12 20:31:29 2019 -0400

    gdb: Have 'maint info sections' print all sections again
    
    In this commit:
    
      commit 6eac171f0624303d944ff1a1ae4d0e3b0a63c800
      Date:   Fri Aug 16 00:25:14 2019 +0200
    
          [gdb] Make maint info sections print relocated addresses
    
    A couple of things broke with the 'maintenance info sections' command,
    here is some before output:
    
      (gdb) maintenance info sections
      Exec file:
          `/path/to/gdb/build/gdb/testsuite/outputs/gdb.base/maint/maint',
              file type elf64-x86-64.
       [0]     0x00400238->0x00400254 at 0x00000238: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
       [1]     0x00400254->0x00400274 at 0x00000254: .note.ABI-tag ALLOC LOAD READONLY DATA HAS_CONTENTS
       [2]     0x00400274->0x00400298 at 0x00000274: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
       [3]     0x00400298->0x004002bc at 0x00000298: .gnu.hash ALLOC LOAD READONLY DATA HAS_CONTENTS
       [4]     0x004002c0->0x00400380 at 0x000002c0: .dynsym ALLOC LOAD READONLY DATA HAS_CONTENTS
       [5]     0x00400380->0x004003e3 at 0x00000380: .dynstr ALLOC LOAD READONLY DATA HAS_CONTENTS
       [6]     0x004003e4->0x004003f4 at 0x000003e4: .gnu.version ALLOC LOAD READONLY DATA HAS_CONTENTS
       [7]     0x004003f8->0x00400418 at 0x000003f8: .gnu.version_r ALLOC LOAD READONLY DATA HAS_CONTENTS
       [8]     0x00400418->0x00400460 at 0x00000418: .rela.dyn ALLOC LOAD READONLY DATA HAS_CONTENTS
       [9]     0x00400460->0x004004c0 at 0x00000460: .rela.plt ALLOC LOAD READONLY DATA HAS_CONTENTS
       [10]     0x004004c0->0x004004d7 at 0x000004c0: .init ALLOC LOAD READONLY CODE HAS_CONTENTS
       [11]     0x004004e0->0x00400530 at 0x000004e0: .plt ALLOC LOAD READONLY CODE HAS_CONTENTS
       [12]     0x00400530->0x00400802 at 0x00000530: .text ALLOC LOAD READONLY CODE HAS_CONTENTS
       [13]     0x00400804->0x0040080d at 0x00000804: .fini ALLOC LOAD READONLY CODE HAS_CONTENTS
       [14]     0x00400810->0x0040084e at 0x00000810: .rodata ALLOC LOAD READONLY DATA HAS_CONTENTS
       [15]     0x00400850->0x004008c4 at 0x00000850: .eh_frame_hdr ALLOC LOAD READONLY DATA HAS_CONTENTS
       [16]     0x004008c8->0x00400ab8 at 0x000008c8: .eh_frame ALLOC LOAD READONLY DATA HAS_CONTENTS
       [17]     0x00600e00->0x00600e08 at 0x00000e00: .init_array ALLOC LOAD DATA HAS_CONTENTS
       [18]     0x00600e08->0x00600e10 at 0x00000e08: .fini_array ALLOC LOAD DATA HAS_CONTENTS
       [19]     0x00600e10->0x00600ff0 at 0x00000e10: .dynamic ALLOC LOAD DATA HAS_CONTENTS
       [20]     0x00600ff0->0x00601000 at 0x00000ff0: .got ALLOC LOAD DATA HAS_CONTENTS
       [21]     0x00601000->0x00601038 at 0x00001000: .got.plt ALLOC LOAD DATA HAS_CONTENTS
       [22]     0x00601038->0x0060103c at 0x00001038: .data ALLOC LOAD DATA HAS_CONTENTS
       [23]     0x00601040->0x006012c8 at 0x0000103c: .bss ALLOC
       [24]     0x00000000->0x0000002c at 0x0000103c: .comment READONLY HAS_CONTENTS
       [25]     0x00000000->0x00000060 at 0x00001068: .debug_aranges READONLY HAS_CONTENTS
       [26]     0x00000000->0x0000061b at 0x000010c8: .debug_info READONLY HAS_CONTENTS
       [27]     0x00000000->0x00000264 at 0x000016e3: .debug_abbrev READONLY HAS_CONTENTS
       [28]     0x00000000->0x000001e6 at 0x00001947: .debug_line READONLY HAS_CONTENTS
       [29]     0x00000000->0x00000487 at 0x00001b2d: .debug_str READONLY HAS_CONTENTS
      (gdb)
    
    And here is the output after the above commit:
    
      (gdb) maintenance info sections
      +maintenance info sections
      Exec file:
          `/path/to/gdb/build/gdb/testsuite/outputs/gdb.base/maint/maint',
              file type elf64-x86-64.
          0x00400238->0x00400254 at 0x00000238: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400254->0x00400274 at 0x00000254: .note.ABI-tag ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400274->0x00400298 at 0x00000274: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400298->0x004002bc at 0x00000298: .gnu.hash ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x004002c0->0x00400380 at 0x000002c0: .dynsym ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400380->0x004003e3 at 0x00000380: .dynstr ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x004003e4->0x004003f4 at 0x000003e4: .gnu.version ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x004003f8->0x00400418 at 0x000003f8: .gnu.version_r ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400418->0x00400460 at 0x00000418: .rela.dyn ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400460->0x004004c0 at 0x00000460: .rela.plt ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x004004c0->0x004004d7 at 0x000004c0: .init ALLOC LOAD READONLY CODE HAS_CONTENTS
          0x004004e0->0x00400530 at 0x000004e0: .plt ALLOC LOAD READONLY CODE HAS_CONTENTS
          0x00400530->0x00400802 at 0x00000530: .text ALLOC LOAD READONLY CODE HAS_CONTENTS
          0x00400804->0x0040080d at 0x00000804: .fini ALLOC LOAD READONLY CODE HAS_CONTENTS
          0x00400810->0x0040084e at 0x00000810: .rodata ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00400850->0x004008c4 at 0x00000850: .eh_frame_hdr ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x004008c8->0x00400ab8 at 0x000008c8: .eh_frame ALLOC LOAD READONLY DATA HAS_CONTENTS
          0x00600e00->0x00600e08 at 0x00000e00: .init_array ALLOC LOAD DATA HAS_CONTENTS
          0x00600e08->0x00600e10 at 0x00000e08: .fini_array ALLOC LOAD DATA HAS_CONTENTS
          0x00600e10->0x00600ff0 at 0x00000e10: .dynamic ALLOC LOAD DATA HAS_CONTENTS
          0x00600ff0->0x00601000 at 0x00000ff0: .got ALLOC LOAD DATA HAS_CONTENTS
          0x00601000->0x00601038 at 0x00001000: .got.plt ALLOC LOAD DATA HAS_CONTENTS
          0x00601038->0x0060103c at 0x00001038: .data ALLOC LOAD DATA HAS_CONTENTS
          0x00601040->0x006012c8 at 0x0000103c: .bss ALLOC
          0x00000000->0x00000000 at 0x00000000: *COM* IS_COMMON
          0x00000000->0x00000000 at 0x00000000: *UND*
          0x00000000->0x00000000 at 0x00000000: *ABS*
          0x00000000->0x00000000 at 0x00000000: *IND*
      (gdb)
    
    We lost the section index numbers, but more importantly, we lost the
    information about the .debug* sections.  We also gained entries for
    the "fake" sections *COM*, *UND*, *ABS*, and *IND*.
    
    I noticed this when running:
    
      make check-gdb RUNTESTFLAGS="--target_board=cc-with-gdb-index gdb.base/maint.exp"
    
    As this test relies on looking in the 'maint info sections' output to
    see if we have a .debug_names or .gdb_index section, and these are
    debug sections so they no longer show up in the 'main info sections'
    output, the gdb.base/maint.exp test fails.
    
    This commit restores the old behaviour while keeping the important
    change that the above commit introduced, the addresses printed for
    sections are the relocated addresses where appropriate.  The above
    commit mentions using this test:
    
       make check-gdb RUNTESTFLAGS="CFLAGS_FOR_TARGET='-pie' gdb.base/compare-sections.exp"
    
    And this still passes after this commit.
    
    The output for 'maint info sections' now looks like this:
    
      (gdb) maintenance info sections
      Exec file:
          `/home/andrew/projects/binutils-gdb/build/gdb/testsuite/outputs/gdb.base/maint/maint',
              file type elf64-x86-64.
       [0]      0x00400238->0x00400254 at 0x00000238: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
       [1]      0x00400254->0x00400274 at 0x00000254: .note.ABI-tag ALLOC LOAD READONLY DATA HAS_CONTENTS
       [2]      0x00400274->0x00400298 at 0x00000274: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
       [3]      0x00400298->0x004002bc at 0x00000298: .gnu.hash ALLOC LOAD READONLY DATA HAS_CONTENTS
       [4]      0x004002c0->0x00400380 at 0x000002c0: .dynsym ALLOC LOAD READONLY DATA HAS_CONTENTS
       [5]      0x00400380->0x004003e3 at 0x00000380: .dynstr ALLOC LOAD READONLY DATA HAS_CONTENTS
       [6]      0x004003e4->0x004003f4 at 0x000003e4: .gnu.version ALLOC LOAD READONLY DATA HAS_CONTENTS
       [7]      0x004003f8->0x00400418 at 0x000003f8: .gnu.version_r ALLOC LOAD READONLY DATA HAS_CONTENTS
       [8]      0x00400418->0x00400460 at 0x00000418: .rela.dyn ALLOC LOAD READONLY DATA HAS_CONTENTS
       [9]      0x00400460->0x004004c0 at 0x00000460: .rela.plt ALLOC LOAD READONLY DATA HAS_CONTENTS
       [10]     0x004004c0->0x004004d7 at 0x000004c0: .init ALLOC LOAD READONLY CODE HAS_CONTENTS
       [11]     0x004004e0->0x00400530 at 0x000004e0: .plt ALLOC LOAD READONLY CODE HAS_CONTENTS
       [12]     0x00400530->0x00400802 at 0x00000530: .text ALLOC LOAD READONLY CODE HAS_CONTENTS
       [13]     0x00400804->0x0040080d at 0x00000804: .fini ALLOC LOAD READONLY CODE HAS_CONTENTS
       [14]     0x00400810->0x0040084e at 0x00000810: .rodata ALLOC LOAD READONLY DATA HAS_CONTENTS
       [15]     0x00400850->0x004008c4 at 0x00000850: .eh_frame_hdr ALLOC LOAD READONLY DATA HAS_CONTENTS
       [16]     0x004008c8->0x00400ab8 at 0x000008c8: .eh_frame ALLOC LOAD READONLY DATA HAS_CONTENTS
       [17]     0x00600e00->0x00600e08 at 0x00000e00: .init_array ALLOC LOAD DATA HAS_CONTENTS
       [18]     0x00600e08->0x00600e10 at 0x00000e08: .fini_array ALLOC LOAD DATA HAS_CONTENTS
       [19]     0x00600e10->0x00600ff0 at 0x00000e10: .dynamic ALLOC LOAD DATA HAS_CONTENTS
       [20]     0x00600ff0->0x00601000 at 0x00000ff0: .got ALLOC LOAD DATA HAS_CONTENTS
       [21]     0x00601000->0x00601038 at 0x00001000: .got.plt ALLOC LOAD DATA HAS_CONTENTS
       [22]     0x00601038->0x0060103c at 0x00001038: .data ALLOC LOAD DATA HAS_CONTENTS
       [23]     0x00601040->0x006012c8 at 0x0000103c: .bss ALLOC
       [24]     0x00000000->0x0000002c at 0x0000103c: .comment READONLY HAS_CONTENTS
       [25]     0x00000000->0x00000060 at 0x00001068: .debug_aranges READONLY HAS_CONTENTS
       [26]     0x00000000->0x0000061b at 0x000010c8: .debug_info READONLY HAS_CONTENTS
       [27]     0x00000000->0x00000264 at 0x000016e3: .debug_abbrev READONLY HAS_CONTENTS
       [28]     0x00000000->0x000001e6 at 0x00001947: .debug_line READONLY HAS_CONTENTS
       [29]     0x00000000->0x00000487 at 0x00001b2d: .debug_str READONLY HAS_CONTENTS
      (gdb)
    
    This is basically as it was before, except that the index numbers are
    now padded so the section information all lines up.
    
    When GDB has relocated a section then the relocated addresses will be
    printed, otherwise the non-relocated addresses from the bfd will be
    printed.
    
    I've added a test to gdb.base/maint.exp to do some basic validation of
    the output format.
    
    gdb/ChangeLog:
    
            * maint.c: Add 'cmath' include.
            (struct maint_print_section_data): New structure.
            (print_section_index): New function.
            (print_bfd_section_info): Add header comment, small whitespace
            cleanup, and update to call new print_section_index function.
            (print_objfile_section_info): Likewise.
            (maint_obj_section_from_bfd_section): New function.
            (print_bfd_section_info_maybe_relocated): New function.
            (maintenance_info_sections): Add header comment, always use
            bfd_map_over_sections instead of ALL_OBJFILE_OSECTIONS.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/maint.exp: Add test for 'maint info sections'.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9540c4f120..4158161393 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* maint.c: Add 'cmath' include.
+	(struct maint_print_section_data): New structure.
+	(print_section_index): New function.
+	(print_bfd_section_info): Add header comment, small whitespace
+	cleanup, and update to call new print_section_index function.
+	(print_objfile_section_info): Likewise.
+	(maint_obj_section_from_bfd_section): New function.
+	(print_bfd_section_info_maybe_relocated): New function.
+	(maintenance_info_sections): Add header comment, always use
+	bfd_map_over_sections instead of ALL_OBJFILE_OSECTIONS.
+
 2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* psymtab.c (find_pc_sect_psymtab): Move baseaddr local into more
diff --git a/gdb/maint.c b/gdb/maint.c
index 837ed23cfb..286ec31013 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -23,6 +23,7 @@
 #include "defs.h"
 #include "arch-utils.h"
 #include <ctype.h>
+#include <cmath>
 #include <signal.h>
 #include "command.h"
 #include "gdbcmd.h"
@@ -276,14 +277,68 @@ maint_print_section_info (const char *name, flagword flags,
   printf_filtered ("\n");
 }
 
+/* Information passed between the "maintenance info sections" command, and
+   the worker function that prints each section.  */
+struct maint_print_section_data
+{
+  /* The GDB objfile we're printing this section for.  */
+  struct objfile *objfile;
+
+  /* The argument string passed by the user to the top level maintenance
+     info sections command.  Used for filtering which sections are
+     printed.  */
+  const char *arg;
+
+  /* The number of digits in the highest section index for all sections
+     from the bfd object associated with OBJFILE.  Used when pretty
+     printing the index number to ensure all of the indexes line up.  */
+  int index_digits;
+
+  /* Constructor.  */
+  maint_print_section_data (struct objfile *objfile, const char *arg,
+			    bfd *abfd)
+    : objfile (objfile),
+      arg(arg)
+  {
+    int section_count = gdb_bfd_count_sections (abfd);
+    index_digits = ((int) log10 (section_count)) + 1;
+  }
+
+private:
+  maint_print_section_data () = delete;
+  maint_print_section_data (const maint_print_section_data &) = delete;
+};
+
+/* Helper function to pretty-print the section index of ASECT from ABFD.
+   The INDEX_DIGITS is the number of digits in the largest index that will
+   be printed, and is used to pretty-print the resulting string.  */
+
+static void
+print_section_index (bfd *abfd,
+		     asection *asect,
+		     int index_digits)
+{
+  std::string result
+    = string_printf (" [%d] ", gdb_bfd_section_index (abfd, asect));
+  /* The '+ 4' for the leading and trailing characters.  */
+  printf_filtered ("%-*s", (index_digits + 4), result.c_str ());
+}
+
+/* Print information about ASECT from ABFD.  DATUM holds a pointer to a
+   maint_print_section_data object.  The section will be printed using the
+   VMA's from the bfd, which will not be the relocated addresses for bfds
+   that should be relocated.  The information must be printed with the
+   same layout as PRINT_OBJFILE_SECTION_INFO below.  */
+
 static void
-print_bfd_section_info (bfd *abfd, 
-			asection *asect, 
+print_bfd_section_info (bfd *abfd,
+			asection *asect,
 			void *datum)
 {
   flagword flags = bfd_get_section_flags (abfd, asect);
   const char *name = bfd_section_name (abfd, asect);
-  const char *arg = (const char *) datum;
+  maint_print_section_data *print_data = (maint_print_section_data *) datum;
+  const char *arg = print_data->arg;
 
   if (arg == NULL || *arg == '\0'
       || match_substring (arg, name)
@@ -295,19 +350,25 @@ print_bfd_section_info (bfd *abfd,
 
       addr = bfd_section_vma (abfd, asect);
       endaddr = addr + bfd_section_size (abfd, asect);
-      printf_filtered (" [%d] ", gdb_bfd_section_index (abfd, asect));
+      print_section_index (abfd, asect, print_data->index_digits);
       maint_print_section_info (name, flags, addr, endaddr,
 				asect->filepos, addr_size);
     }
 }
 
+/* Print information about ASECT which is GDB's wrapper around a section
+   from ABFD.  The information must be printed with the same layout as
+   PRINT_BFD_SECTION_INFO above.  PRINT_DATA holds information used to
+   filter which sections are printed, and for formatting the output.  */
+
 static void
-print_objfile_section_info (bfd *abfd, 
-			    struct obj_section *asect, 
-			    const char *string)
+print_objfile_section_info (bfd *abfd,
+			    struct obj_section *asect,
+			    maint_print_section_data *print_data)
 {
   flagword flags = bfd_get_section_flags (abfd, asect->the_bfd_section);
   const char *name = bfd_section_name (abfd, asect->the_bfd_section);
+  const char *string = print_data->arg;
 
   if (string == NULL || *string == '\0'
       || match_substring (string, name)
@@ -316,6 +377,8 @@ print_objfile_section_info (bfd *abfd,
       struct gdbarch *gdbarch = gdbarch_from_bfd (abfd);
       int addr_size = gdbarch_addr_bit (gdbarch) / 8;
 
+      print_section_index (abfd, asect->the_bfd_section,
+			   print_data->index_digits);
       maint_print_section_info (name, flags,
 				obj_section_addr (asect),
 				obj_section_endaddr (asect),
@@ -324,12 +387,56 @@ print_objfile_section_info (bfd *abfd,
     }
 }
 
+/* Find an obj_section, GDB's wrapper around a bfd section for ASECTION
+   from ABFD.  It might be that no such wrapper exists (for example debug
+   sections don't have such wrappers) in which case nullptr is returned.  */
+
+static obj_section *
+maint_obj_section_from_bfd_section (bfd *abfd,
+				    asection *asection,
+				    objfile *ofile)
+{
+  if (ofile->sections == nullptr)
+    return nullptr;
+
+  obj_section *osect
+    = &ofile->sections[gdb_bfd_section_index (abfd, asection)];
+
+  if (osect >= ofile->sections_end)
+    return nullptr;
+
+  return osect;
+}
+
+/* Print information about ASECT from ABFD.  DATUM holds a pointer to a
+   maint_print_section_data object.  Where possible the information for
+   ASECT will print the relocated addresses of the section.  */
+
+static void
+print_bfd_section_info_maybe_relocated (bfd *abfd,
+					asection *asect,
+					void *datum)
+{
+  maint_print_section_data *print_data = (maint_print_section_data *) datum;
+  objfile *objfile = print_data->objfile;
+
+  gdb_assert (objfile->sections != NULL);
+  obj_section *osect
+    = maint_obj_section_from_bfd_section (abfd, asect, objfile);
+
+  if (osect->the_bfd_section == NULL)
+    print_bfd_section_info (abfd, asect, datum);
+  else
+    print_objfile_section_info (abfd, osect, print_data);
+}
+
+/* Implement the "maintenance info sections" command.  */
+
 static void
 maintenance_info_sections (const char *arg, int from_tty)
 {
   if (exec_bfd)
     {
-      struct obj_section *osect;
       bool allobj = false;
 
       printf_filtered (_("Exec file:\n"));
@@ -352,22 +459,27 @@ maintenance_info_sections (const char *arg, int from_tty)
 	  if (allobj)
 	    printf_filtered (_("  Object file: %s\n"),
 			     bfd_get_filename (ofile->obfd));
-	  ALL_OBJFILE_OSECTIONS (ofile, osect)
-	    {
-	      if (!allobj && ofile->obfd != exec_bfd)
-		continue;
-	      print_objfile_section_info (ofile->obfd, osect, arg);
-	    }
+	  else if (ofile->obfd != exec_bfd)
+	    continue;
+
+	  maint_print_section_data print_data (ofile, arg, ofile->obfd);
+
+	  bfd_map_over_sections (ofile->obfd,
+				 print_bfd_section_info_maybe_relocated,
+				 (void *) &print_data);
 	}
     }
 
   if (core_bfd)
     {
+      maint_print_section_data print_data (nullptr, arg, core_bfd);
+
       printf_filtered (_("Core file:\n"));
       printf_filtered ("    `%s', ", bfd_get_filename (core_bfd));
       wrap_here ("        ");
       printf_filtered (_("file type %s.\n"), bfd_get_target (core_bfd));
-      bfd_map_over_sections (core_bfd, print_bfd_section_info, (void *) arg);
+      bfd_map_over_sections (core_bfd, print_bfd_section_info,
+			     (void *) &print_data);
     }
 }
 
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7352e9f034..27980548cb 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/maint.exp: Add test for 'maint info sections'.
+
 2019-09-12  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/store.exp: Allow register variables to be optimized out at
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index 36738f6eaa..a5d5dacaba 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -109,6 +109,23 @@ if ![runto_main] then {
         perror "tests suppressed"
 }
 
+# Check that 'maint info sections' output looks correct.  When
+# checking the lines for each section we reject section names starting
+# with a '*' character, the internal *COM*, *UND*, *ABS*, and *IND*
+# sections should not be displayed in this output.
+set test "check maint info sections output"
+gdb_test_multiple "maint info sections" $test {
+    -re "Exec file:\r\n\[\t ]+`\[^'\]+', file type \[^.\]+\.\r\n" {
+	exp_continue
+    }
+    -re "^ \\\[\[0-9\]+\\\]\[\t \]+$hex->$hex at $hex: \[^*\r\]+\r\n" {
+	exp_continue
+    }
+    -re "^$gdb_prompt $" {
+	pass $test
+    }
+}
+
 # If we're using .gdb_index or .debug_names there will be no psymtabs.
 set have_gdb_index 0
 gdb_test_multiple "maint info sections .gdb_index .debug_names" "check for .gdb_index" {


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Make use of exec_has_index_section function
@ 2019-09-13  1:14 gdb-buildbot
  2019-09-13  3:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-13  1:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5fabdcd6801a4567db9c88ceb112ca222544b13f ***

commit 5fabdcd6801a4567db9c88ceb112ca222544b13f
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Sun Sep 1 00:21:40 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Sep 12 20:31:29 2019 -0400

    gdb/testsuite: Make use of exec_has_index_section function
    
    Make use of exec_has_index_section library function rather than
    manually checking in the 'maintenance info sections' output.  Should
    make no difference to the test results, just makes the code easier to
    read.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/maint.exp: Use exec_has_index_section.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 27980548cb..395a257102 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/maint.exp: Use exec_has_index_section.
+
 2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/maint.exp: Add test for 'maint info sections'.
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index a5d5dacaba..15988c7938 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -127,18 +127,7 @@ gdb_test_multiple "maint info sections" $test {
 }
 
 # If we're using .gdb_index or .debug_names there will be no psymtabs.
-set have_gdb_index 0
-gdb_test_multiple "maint info sections .gdb_index .debug_names" "check for .gdb_index" {
-    -re ": \\.gdb_index .*\r\n$gdb_prompt $" {
-	set have_gdb_index 1
-    }
-    -re ": \\.debug_names .*\r\n$gdb_prompt $" {
-	set have_gdb_index 1
-    }
-    -re ".*$gdb_prompt $" {
-	;# Nothing to do, present to avoid a FAIL.
-    }
-}
+set have_gdb_index [ exec_has_index_section ${binfile} ]
 
 # There also won't be any psymtabs if we read the index from the index cache.
 # We can detect this by looking if the index-cache is enabled and if the number


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Force use of float version of log10
@ 2019-09-13  2:09 gdb-buildbot
  2019-09-13  4:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-13  2:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ec6c8338a89b0ec022b66ed3efdd1577e6449d6d ***

commit ec6c8338a89b0ec022b66ed3efdd1577e6449d6d
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Thu Sep 12 21:23:37 2019 -0400
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Sep 12 21:23:37 2019 -0400

    gdb: Force use of float version of log10
    
    This commit:
    
      commit aa17805fb9a3a1983a510ba425b682fba03410c2
      Date:   Sat Aug 31 23:44:40 2019 +0100
    
          gdb: Have 'maint info sections' print all sections again
    
    introduced a use of log10 that took an int as a parameter.
    Unfortunately this was causing a compilation error on Solaris, see:
    
      https://sourceware.org/ml/gdb-patches/2019-09/msg00230.html
      https://sourceware.org/ml/gdb-patches/2019-09/msg00231.html
    
    because there was only a float, double, or long double version of
    log10, and the compiler doesn't know which to choose.
    
    This commit should resolve this issue by casting the argument to
    float.
    
    gdb/ChangeLog:
    
            * maint.c (maint_print_section_data::maint_print_section_data):
            Force use of 'float log10 (float)' by casting the argument to
            float.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4158161393..147882447e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* maint.c (maint_print_section_data::maint_print_section_data):
+	Force use of 'float log10 (float)' by casting the argument to
+	float.
+
 2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* maint.c: Add 'cmath' include.
diff --git a/gdb/maint.c b/gdb/maint.c
index 286ec31013..1a621a1719 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -301,7 +301,7 @@ struct maint_print_section_data
       arg(arg)
   {
     int section_count = gdb_bfd_count_sections (abfd);
-    index_digits = ((int) log10 (section_count)) + 1;
+    index_digits = ((int) log10 ((float) section_count)) + 1;
   }
 
 private:


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Require gnatmake 8 for gdb.ada/rename_subscript_param.exp
@ 2019-09-14  9:12 gdb-buildbot
  2019-09-15  2:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-14  9:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d1b70248bde3ffe784cd7380de05b86d0b4b901e ***

commit d1b70248bde3ffe784cd7380de05b86d0b4b901e
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Sat Sep 14 10:35:48 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Sat Sep 14 10:35:48 2019 +0200

    [gdb/testsuite] Require gnatmake 8 for gdb.ada/rename_subscript_param.exp
    
    When running gdb.ada/rename_subscript_param.exp with gnatmake 7.4.1, we get:
    ...
    FAIL: gdb.ada/rename_subscript_param.exp: print rename_subscript_param_b \
      before changing its value
    FAIL: gdb.ada/rename_subscript_param.exp: print rename_subscript_param_b \
      after changing its value
    ...
    
    The commit last touching the test-case (afcfda091e) states:
    ...
        The test still fails with old compilers that do not properly
        generate debug info for this renaming:
    ...
    
    Fix this by requiring at least gnatmake 8 for the test-case.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-14  Tom de Vries  <tdevries@suse.de>
    
            PR teststuite/24599
            * gdb.ada/rename_subscript_param.exp: Require gnatmake 8.
            * lib/ada.exp (gnatmake_version_at_least): New proc.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 395a257102..d04cff15b8 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-14  Tom de Vries  <tdevries@suse.de>
+
+	PR teststuite/24599
+	* gdb.ada/rename_subscript_param.exp: Require gnatmake 8.
+	* lib/ada.exp (gnatmake_version_at_least): New proc.
+
 2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/maint.exp: Use exec_has_index_section.
diff --git a/gdb/testsuite/gdb.ada/rename_subscript_param.exp b/gdb/testsuite/gdb.ada/rename_subscript_param.exp
index ffcfa50df3..fd8208825a 100644
--- a/gdb/testsuite/gdb.ada/rename_subscript_param.exp
+++ b/gdb/testsuite/gdb.ada/rename_subscript_param.exp
@@ -15,6 +15,10 @@
 
 load_lib "ada.exp"
 
+if { ![gnatmake_version_at_least 8] } {
+    return -1
+}
+
 standard_ada_testfile pb30_012
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff --git a/gdb/testsuite/lib/ada.exp b/gdb/testsuite/lib/ada.exp
index 1345c747c5..95f0f525b1 100644
--- a/gdb/testsuite/lib/ada.exp
+++ b/gdb/testsuite/lib/ada.exp
@@ -105,3 +105,22 @@ proc find_ada_tool {tool} {
 
     return $result
 }
+
+# Return 1 if gnatmake is at least version $MAJOR.x.x
+
+proc gnatmake_version_at_least { major } {
+    set gnatmake [gdb_find_gnatmake]
+    set gnatmake [lindex [split $gnatmake] 0]
+    set output [exec $gnatmake --version]
+    if { [regexp {GNATMAKE ([^ .]+).([^ .]+).([^ .]+)} $output \
+	      match gnatmake_major gnatmake_minor gnatmake_micro] } {
+	if { $gnatmake_major >= $major } {
+	    return 1
+	} else {
+	    return 0
+	}
+    }
+
+    # Unknown, return 1
+    return 1
+}


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add a NEWS entry that gdb can be compiled with py3 on Windows.
@ 2019-09-15  3:16 gdb-buildbot
  2019-09-15  3:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-15  3:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6a062a93d70e08ddc23c0a940a8c20eea48e6904 ***

commit 6a062a93d70e08ddc23c0a940a8c20eea48e6904
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Sat Sep 14 16:28:51 2019 -0400
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Sat Sep 14 22:36:47 2019 -0400

    Add a NEWS entry that gdb can be compiled with py3 on Windows.
    
    This was fixed in commit 272044897e178835f596c96740c5a1800ec6f9fb.
    
    2019-09-14  Christian Biesinger  <cbiesinger@google.com>
    
            * NEWS: Mention that gdb can now be compiled with Python 3
            on Windows.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 147882447e..fc2260d53d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-14  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention that gdb can now be compiled with Python 3
+	on Windows.
+
 2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* maint.c (maint_print_section_data::maint_print_section_data):
diff --git a/gdb/NEWS b/gdb/NEWS
index d502f08984..947b743533 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -32,6 +32,8 @@
 * GDB now shows the Ada task names at more places, e.g. in task switching
   messages.
 
+* GDB can now be compiled with Python 3 on Windows.
+
 * Python API
 
   ** The gdb.Value type has a new method 'format_string' which returns a


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Update version to 2.33.50 and regenerate configure scripts.
@ 2019-09-16 10:47 gdb-buildbot
  2019-09-16 11:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-16 10:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT bb6959602bd7ff19081b4a1cb2e54b0e562faa0f ***

commit bb6959602bd7ff19081b4a1cb2e54b0e562faa0f
Author:     Phil Blundell <philb@brightsign.biz>
AuthorDate: Mon Sep 16 11:01:00 2019 +0100
Commit:     Phil Blundell <philb@brightsign.biz>
CommitDate: Mon Sep 16 11:03:53 2019 +0100

    Update version to 2.33.50 and regenerate configure scripts.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ea0f06041b..76939880c7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* version.m4: Set version to 2.33.50.
+	* Makefile.in, configure, doc/Makefile.in: Regenerated.
+
 2019-09-11  Tom Tromey  <tom@tromey.com>
 
 	* opncls.c (bfd_set_filename): New function.
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 9c14721fd8..5578997e5d 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -438,6 +438,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/bfd/configure b/bfd/configure
index b1a727a54a..10f187a692 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bfd 2.32.51.
+# Generated by GNU Autoconf 2.69 for bfd 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='bfd'
 PACKAGE_TARNAME='bfd'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='bfd 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='bfd 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -793,6 +793,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -889,6 +890,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1141,6 +1143,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1278,7 +1289,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1391,7 +1402,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures bfd 2.32.51 to adapt to many kinds of systems.
+\`configure' configures bfd 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1431,6 +1442,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1462,7 +1474,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bfd 2.32.51:";;
+     short | recursive ) echo "Configuration of bfd 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1589,7 +1601,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bfd configure 2.32.51
+bfd configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2237,7 +2249,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bfd $as_me 2.32.51, which was
+It was created by bfd $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4187,7 +4199,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='bfd'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11728,7 +11740,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11731 "configure"
+#line 11743 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11834,7 +11846,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11837 "configure"
+#line 11849 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12223,7 +12235,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12269,7 +12281,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12293,7 +12305,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12338,7 +12350,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12362,7 +12374,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16356,6 +16368,8 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
+  free (data);
+  free (data3);
   return 0;
 }
 _ACEOF
@@ -16954,7 +16968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by bfd $as_me 2.32.51, which was
+This file was extended by bfd $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17020,7 +17034,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-bfd config.status 2.32.51
+bfd config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/bfd/doc/Makefile.in b/bfd/doc/Makefile.in
index 0115dfc406..d75411d2af 100644
--- a/bfd/doc/Makefile.in
+++ b/bfd/doc/Makefile.in
@@ -375,6 +375,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/bfd/version.m4 b/bfd/version.m4
index da8d0adff0..b2a5dfb74d 100644
--- a/bfd/version.m4
+++ b/bfd/version.m4
@@ -1 +1 @@
-m4_define([BFD_VERSION], [2.32.51])
+m4_define([BFD_VERSION], [2.33.50])
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 8b78873a99..a29de52599 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* Makefile.in, configure. doc/Makefile.in: Regenerated.
+
 2019-09-11  Tom Tromey  <tom@tromey.com>
 
 	* objcopy.c (copy_archive): Update.
diff --git a/binutils/Makefile.in b/binutils/Makefile.in
index 16c078fdd3..d1828e5fc2 100644
--- a/binutils/Makefile.in
+++ b/binutils/Makefile.in
@@ -541,6 +541,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/binutils/configure b/binutils/configure
index 17cca12070..f8fe55c2a8 100755
--- a/binutils/configure
+++ b/binutils/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for binutils 2.32.51.
+# Generated by GNU Autoconf 2.69 for binutils 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='binutils'
 PACKAGE_TARNAME='binutils'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='binutils 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='binutils 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -778,6 +778,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -870,6 +871,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1122,6 +1124,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1259,7 +1270,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1372,7 +1383,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures binutils 2.32.51 to adapt to many kinds of systems.
+\`configure' configures binutils 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1412,6 +1423,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1443,7 +1455,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of binutils 2.32.51:";;
+     short | recursive ) echo "Configuration of binutils 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1570,7 +1582,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-binutils configure 2.32.51
+binutils configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2218,7 +2230,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by binutils $as_me 2.32.51, which was
+It was created by binutils $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4168,7 +4180,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='binutils'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11523,7 +11535,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11526 "configure"
+#line 11538 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11629,7 +11641,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11632 "configure"
+#line 11644 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12016,7 +12028,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12062,7 +12074,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12086,7 +12098,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12131,7 +12143,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12155,7 +12167,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -13722,6 +13734,8 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
+  free (data);
+  free (data3);
   return 0;
 }
 _ACEOF
@@ -15713,7 +15727,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by binutils $as_me 2.32.51, which was
+This file was extended by binutils $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15779,7 +15793,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-binutils config.status 2.32.51
+binutils config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/binutils/doc/Makefile.in b/binutils/doc/Makefile.in
index a0777d8fcc..c66caa832e 100644
--- a/binutils/doc/Makefile.in
+++ b/binutils/doc/Makefile.in
@@ -374,6 +374,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 444bd16987..85c80f5772 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* Makefile.in, configure, doc/Makefile.in: Regenerated.
+
 2019-09-10  Nick Clifton  <nickc@redhat.com>
 
 	PR 24907
diff --git a/gas/Makefile.in b/gas/Makefile.in
index 21545d25b7..595295e555 100644
--- a/gas/Makefile.in
+++ b/gas/Makefile.in
@@ -402,6 +402,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gas/configure b/gas/configure
index 0a52e4a9f6..5cfd52f712 100755
--- a/gas/configure
+++ b/gas/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gas 2.32.51.
+# Generated by GNU Autoconf 2.69 for gas 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='gas'
 PACKAGE_TARNAME='gas'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='gas 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='gas 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -770,6 +770,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -867,6 +868,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1119,6 +1121,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1256,7 +1267,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1369,7 +1380,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gas 2.32.51 to adapt to many kinds of systems.
+\`configure' configures gas 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1409,6 +1420,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1440,7 +1452,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gas 2.32.51:";;
+     short | recursive ) echo "Configuration of gas 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1576,7 +1588,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gas configure 2.32.51
+gas configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2041,7 +2053,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gas $as_me 2.32.51, which was
+It was created by gas $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3988,7 +4000,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gas'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11343,7 +11355,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11346 "configure"
+#line 11358 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11449,7 +11461,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11452 "configure"
+#line 11464 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11836,7 +11848,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11882,7 +11894,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11906,7 +11918,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11951,7 +11963,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11975,7 +11987,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15705,7 +15717,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gas $as_me 2.32.51, which was
+This file was extended by gas $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15771,7 +15783,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gas config.status 2.32.51
+gas config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in
index 7c4189a8c6..854ee9daef 100644
--- a/gas/doc/Makefile.in
+++ b/gas/doc/Makefile.in
@@ -364,6 +364,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index d0aa7f8f1f..737b2cd3b5 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* Makefile.in, configure: Regenerated.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/gprof/Makefile.in b/gprof/Makefile.in
index 451fe9585d..d5e883d4de 100644
--- a/gprof/Makefile.in
+++ b/gprof/Makefile.in
@@ -424,6 +424,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gprof/configure b/gprof/configure
index 2a92a28222..3c414ce75b 100755
--- a/gprof/configure
+++ b/gprof/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gprof 2.32.51.
+# Generated by GNU Autoconf 2.69 for gprof 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='gprof'
 PACKAGE_TARNAME='gprof'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='gprof 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='gprof 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -751,6 +751,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -835,6 +836,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1087,6 +1089,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1224,7 +1235,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1337,7 +1348,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gprof 2.32.51 to adapt to many kinds of systems.
+\`configure' configures gprof 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1377,6 +1388,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1408,7 +1420,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gprof 2.32.51:";;
+     short | recursive ) echo "Configuration of gprof 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1519,7 +1531,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gprof configure 2.32.51
+gprof configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1884,7 +1896,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gprof $as_me 2.32.51, which was
+It was created by gprof $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3831,7 +3843,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gprof'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11190,7 +11202,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11193 "configure"
+#line 11205 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11296,7 +11308,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11299 "configure"
+#line 11311 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11683,7 +11695,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11729,7 +11741,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11753,7 +11765,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11798,7 +11810,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11822,7 +11834,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -13086,7 +13098,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gprof $as_me 2.32.51, which was
+This file was extended by gprof $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13152,7 +13164,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gprof config.status 2.32.51
+gprof config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/ld/ChangeLog b/ld/ChangeLog
index b2d4151716..c311679bef 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* Makefile.in, configure: Regenerated.
+
 2019-09-13  Alan Modra  <amodra@gmail.com>
 
 	* ldlang.c (new_afile): Remove add_to_list parameter.
diff --git a/ld/Makefile.in b/ld/Makefile.in
index d509f62bd2..057956139d 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -521,6 +521,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/ld/configure b/ld/configure
index 8edef4548e..62bb4e45e9 100755
--- a/ld/configure
+++ b/ld/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ld 2.32.51.
+# Generated by GNU Autoconf 2.69 for ld 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='ld'
 PACKAGE_TARNAME='ld'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='ld 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='ld 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -786,6 +786,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -888,6 +889,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1140,6 +1142,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1277,7 +1288,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1390,7 +1401,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ld 2.32.51 to adapt to many kinds of systems.
+\`configure' configures ld 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1430,6 +1441,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1461,7 +1473,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ld 2.32.51:";;
+     short | recursive ) echo "Configuration of ld 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1596,7 +1608,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ld configure 2.32.51
+ld configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2311,7 +2323,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ld $as_me 2.32.51, which was
+It was created by ld $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4262,7 +4274,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ld'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12027,7 +12039,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12030 "configure"
+#line 12042 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12133,7 +12145,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12136 "configure"
+#line 12148 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15536,7 +15548,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15582,7 +15594,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15606,7 +15618,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15651,7 +15663,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15675,7 +15687,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -17188,6 +17200,8 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
+  free (data);
+  free (data3);
   return 0;
 }
 _ACEOF
@@ -18226,7 +18240,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ld $as_me 2.32.51, which was
+This file was extended by ld $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18292,7 +18306,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ld config.status 2.32.51
+ld config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 392fcacfb6..50f1be8533 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* configure: Regenerated.
+
 2019-09-10  Miod Vallat  <miod@online.fr>
 
 	PR 24982
diff --git a/opcodes/configure b/opcodes/configure
index 3b99d9786b..8062312c28 100755
--- a/opcodes/configure
+++ b/opcodes/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for opcodes 2.32.51.
+# Generated by GNU Autoconf 2.69 for opcodes 2.33.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='opcodes'
 PACKAGE_TARNAME='opcodes'
-PACKAGE_VERSION='2.32.51'
-PACKAGE_STRING='opcodes 2.32.51'
+PACKAGE_VERSION='2.33.50'
+PACKAGE_STRING='opcodes 2.33.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures opcodes 2.32.51 to adapt to many kinds of systems.
+\`configure' configures opcodes 2.33.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1439,7 +1439,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of opcodes 2.32.51:";;
+     short | recursive ) echo "Configuration of opcodes 2.33.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1551,7 +1551,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-opcodes configure 2.32.51
+opcodes configure 2.33.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1962,7 +1962,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by opcodes $as_me 2.32.51, which was
+It was created by opcodes $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3909,7 +3909,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='opcodes'
- VERSION='2.32.51'
+ VERSION='2.33.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13546,7 +13546,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by opcodes $as_me 2.32.51, which was
+This file was extended by opcodes $as_me 2.33.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13612,7 +13612,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-opcodes config.status 2.32.51
+opcodes config.status 2.33.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't duplicate comment in symfile.c and .h
@ 2019-09-17  3:49 gdb-buildbot
  2019-09-17  4:29 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-17  3:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f2f24aa9c438e540fd751690f52dbcbf5e5b8aa6 ***

commit f2f24aa9c438e540fd751690f52dbcbf5e5b8aa6
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Mon Sep 16 22:07:16 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Mon Sep 16 22:10:36 2019 -0500

    Don't duplicate comment in symfile.c and .h
    
    This just replaces the comment in the .c file with
    "See symfile.h.".
    
    gdb/ChangeLog:
    
    2019-09-16  Christian Biesinger  <cbiesinger@google.com>
    
            * symfile.c (auto_solib_add): Replace comment with a reference
            to the header file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fc2260d53d..59c6f754ef 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* symfile.c (auto_solib_add): Replace comment with a reference
+	to the header file.
+
 2019-09-14  Christian Biesinger  <cbiesinger@google.com>
 
 	* NEWS: Mention that gdb can now be compiled with Python 3
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 3cd514409b..259a30aa04 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -141,15 +141,7 @@ static const char *print_symbol_loading_enums[] =
 };
 static const char *print_symbol_loading = print_symbol_loading_full;
 
-/* If non-zero, shared library symbols will be added automatically
-   when the inferior is created, new libraries are loaded, or when
-   attaching to the inferior.  This is almost always what users will
-   want to have happen; but for very large programs, the startup time
-   will be excessive, and so if this is a problem, the user can clear
-   this flag and then add the shared library symbols as needed.  Note
-   that there is a potential for confusion, since if the shared
-   library symbols are not loaded, commands like "info fun" will *not*
-   report all the functions that are actually present.  */
+/* See symfile.h.  */
 
 int auto_solib_add = 1;
 \f


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] (Ada) do not print Ada task names in quotes in "info tasks" output
@ 2019-09-17 19:09 gdb-buildbot
  2019-09-17 20:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-17 19:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 743321899674e03cf572fcfeb6c7705aded7c9a5 ***

commit 743321899674e03cf572fcfeb6c7705aded7c9a5
Author:     Joel Brobecker <brobecker@adacore.com>
AuthorDate: Tue Sep 17 13:27:55 2019 -0500
Commit:     Joel Brobecker <brobecker@adacore.com>
CommitDate: Tue Sep 17 14:27:55 2019 -0400

    (Ada) do not print Ada task names in quotes in "info tasks" output
    
    A recent change enhanced a couple of notifications about Ada tasks to
    include the task's name in addition to the task's number. That change
    also modified the output of the "info tasks" when printing the detailed
    information of one given task. I believe this change was unintentionally
    left over from the initial version after it was decided that quoting
    the task's name should not be done. This patch therefore undoes this
    part of the patch.
    
    gdb/ChangeLog:
    
            * ada-tasks.c (info_task): Remove quoting of the task's name.
    
    Tested on x86_64-linux, with both the official testsuite as well as
    AdaCore's testsuite.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 59c6f754ef..c564fcecc0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-tasks.c (info_task): Remove quoting of the task's name.
+
 2019-09-16  Christian Biesinger  <cbiesinger@google.com>
 
 	* symfile.c (auto_solib_add): Replace comment with a reference
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index 34da786eb7..24ceab1fca 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -1199,7 +1199,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 
   /* Print the name of the task.  */
   if (task_info->name[0] != '\0')
-    printf_filtered (_("Name: \"%s\"\n"), task_info->name);
+    printf_filtered (_("Name: %s\n"), task_info->name);
   else
     printf_filtered (_("<no name>\n"));
 
@@ -1220,7 +1220,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 
       printf_filtered (_("Parent: %d"), parent_taskno);
       if (parent->name[0] != '\0')
-        printf_filtered (" (\"%s\")", parent->name);
+        printf_filtered (" (%s)", parent->name);
       printf_filtered ("\n");
     }
   else
@@ -1253,7 +1253,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
         ada_task_info *target_task_info = &data->task_list[target_taskno - 1];
 
         if (target_task_info->name[0] != '\0')
-          printf_filtered (" (\"%s\")", target_task_info->name);
+          printf_filtered (" (%s)", target_task_info->name);
       }
 
     printf_filtered ("\n");


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Catch exceptions when accessing source cache
@ 2019-09-17 20:17 gdb-buildbot
  2019-09-17 21:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-17 20:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 67f3ed6afef86d08ef9989cc251eac585e9ef9cf ***

commit 67f3ed6afef86d08ef9989cc251eac585e9ef9cf
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Sun Sep 8 00:05:22 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Tue Sep 17 15:53:32 2019 -0400

    gdb: Catch exceptions when accessing source cache
    
    The source_cache::get_line_charpos function can currently throw an
    exception if the source file is missing, which doesn't match the
    expected behaviour documented in the functions header file.  The
    documented behaviour is to return false on failure, and this is how
    the function appears to be used throughout GDB.
    
    I spotted this in the 'info source' command, currently for a missing
    source file you'll see something like this:
    
      (gdb) info source
      Current source file is /path/to/src/file.c
      Compilation directory is /path/to/build/
      /path/to/src/file.c: No such file or directory.
      (gdb)
    
    After this patch we see this:
    
      (gdb) info source
      Current source file is /path/to/src/file.c
      Compilation directory is /path/to/build/
      Source language is c.
      Producer is COMPILER VERSION AND FLAGS.
      Compiled with DWARF 2 debugging format.
      Does not include preprocessor macro info.
    
    We don't currently indicate that the source file can't be found, and
    maybe that would be something worth adding in the future.
    
    gdb/ChangeLog:
    
            * source-cache.c (source_cache::get_line_charpos): Catch
            exceptions and return false, this matches the behaviour documented
            in the header file.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/list-missing-source.exp: New file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c564fcecc0..c9be686c26 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source-cache.c (source_cache::get_line_charpos): Catch
+	exceptions and return false, this matches the behaviour documented
+	in the header file.
+
 2019-09-17  Joel Brobecker  <brobecker@adacore.com>
 
 	* ada-tasks.c (info_task): Remove quoting of the task's name.
diff --git a/gdb/source-cache.c b/gdb/source-cache.c
index 18e2be989b..7a52ce9458 100644
--- a/gdb/source-cache.c
+++ b/gdb/source-cache.c
@@ -231,19 +231,26 @@ bool
 source_cache::get_line_charpos (struct symtab *s,
 				const std::vector<off_t> **offsets)
 {
-  std::string fullname = symtab_to_fullname (s);
+  try
+    {
+      std::string fullname = symtab_to_fullname (s);
+
+      auto iter = m_offset_cache.find (fullname);
+      if (iter == m_offset_cache.end ())
+	{
+	  ensure (s);
+	  iter = m_offset_cache.find (fullname);
+	  /* cache_source_text ensured this was entered.  */
+	  gdb_assert (iter != m_offset_cache.end ());
+	}
 
-  auto iter = m_offset_cache.find (fullname);
-  if (iter == m_offset_cache.end ())
+      *offsets = &iter->second;
+      return true;
+    }
+  catch (const gdb_exception_error &e)
     {
-      ensure (s);
-      iter = m_offset_cache.find (fullname);
-      /* cache_source_text ensured this was entered.  */
-      gdb_assert (iter != m_offset_cache.end ());
+      return false;
     }
-
-  *offsets = &iter->second;
-  return true;
 }
 
 /* A helper function that extracts the desired source lines from TEXT,
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d04cff15b8..b9060ef5d0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/list-missing-source.exp: New file.
+
 2019-09-14  Tom de Vries  <tdevries@suse.de>
 
 	PR teststuite/24599
diff --git a/gdb/testsuite/gdb.base/list-missing-source.exp b/gdb/testsuite/gdb.base/list-missing-source.exp
new file mode 100644
index 0000000000..703603e7cb
--- /dev/null
+++ b/gdb/testsuite/gdb.base/list-missing-source.exp
@@ -0,0 +1,63 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This test checks how GDB handles missing source files around the
+# 'list' and 'info source' commands.
+
+standard_testfile
+
+# Create a source file in the output directory.
+set srcfile [standard_output_file main.c]
+set fd [open "$srcfile" w]
+puts $fd {
+int
+main ()
+{
+  return 0;
+}
+}
+close $fd
+
+# Compile the source file.
+set options "debug"
+if  { [gdb_compile "${srcfile}" "${binfile}" \
+	   executable $options] != "" } {
+    untested "failed to compile"
+    return -1
+}
+
+# Now delete the source file.
+file delete $srcfile
+
+# Now start GDB, run to main and try to list the source.
+clean_restart ${binfile}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+gdb_test "list" "1\[ \t\]+in\[ \t\]+$srcfile"
+
+gdb_test "info source" \
+    [multi_line \
+	 "info source" \
+	 "Current source file is $srcfile" \
+	 "Compilation directory is \[^\n\r\]+" \
+	 "Source language is c." \
+	 "Producer is \[^\n\r\]+" \
+	 "Compiled with DWARF $decimal debugging format." \
+	 "Does not include preprocessor macro info." ]
+


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Look for compilation directory relative to directory search path
@ 2019-09-17 21:49 gdb-buildbot
  2019-09-17 21:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-17 21:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f1b620e9b4eea4bfd2f35a3039672fa8a5925bcb ***

commit f1b620e9b4eea4bfd2f35a3039672fa8a5925bcb
Author:     Mike Gulick <mgulick@mathworks.com>
AuthorDate: Thu Sep 12 11:16:06 2019 -0400
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Tue Sep 17 16:20:19 2019 -0400

    gdb: Look for compilation directory relative to directory search path
    
    The 'directory' command allows the user to provide a list of filesystem
    directories in which to search for source code.  The directories in this
    search path are used as the base directory for the source filename from
    the debug information (DW_AT_name).  Thus the directory search path
    provides alternatives to the existing compilation directory from the
    debug information (DW_AT_comp_dir).  Generally speaking, DW_AT_name
    stores the filename argument passed to the compiler (including any
    directory components), and DW_AT_comp_dir stores the current working
    directory from which the compiler was executed.  For example:
    
        $ cd /path/to/project/subdir1
        $ gcc -c a/test.c -g
    
    The corresponding debug information will look like this:
    
        DW_AT_name      : a/test.c
        DW_AT_comp_dir  : /path/to/project/subdir1
    
    When compiling with the -fdebug-prefix-map GCC option, the compilation
    directory can be arbitrarily rewritten.  In the above example, we may
    rewrite the compilation directory as follows:
    
        $ gcc -c a/test.c -g -fdebug-prefix-map=/path/to/project=
    
    In this case, the corresponding debug information will look like:
    
        DW_AT_name      : a/test.c
        DW_AT_comp_dir  : /subdir1
    
    This prevents GDB from finding the corresponding source code based on
    the debug information alone.  In some cases, a substitute-path command
    can be used to re-map a consistent prefix in the rewritten compilation
    directory to the real filesystem path.  However, there may not be a
    consistent prefix remaining in the debug symbols (for example in a
    project that has source code in many subdirectories under the project's
    root), thereby requiring multiple substitute-path rules.  In this case,
    it is easier to add the missing prefix to the directory search path via
    the 'directory' command.
    
    The function find_and_open_source currently searches in:
    
        SEARCH_PATH/FILENAME
    
    where SEARCH_PATH corresponds to each individual entry in the directory
    search path (which is guaranteed to contain the compilation directory
    from the debug information, as well as the current working directory).
    FILENAME corresponds to the source filename (DW_AT_name), which may have
    directory components in it.  In addition, GDB searches in:
    
        SEARCH_PATH/FILE_BASENAME
    
    where FILE_BASENAME is the basename of the DW_AT_name entry.
    
    This change modifies find_and_open_source to additionally search in:
    
        SEARCH_PATH/COMP_DIR/FILENAME
    
    where COMP_DIR is the compilation directory from the debug symbols.  In
    the example given earlier, running:
    
        (gdb) directory /path/to/project
    
    will now allow GDB to correctly locate the source code from the debug
    information.
    
    gdb/ChangeLog:
    
            * source.c (prepare_path_for_appending): New function.
            (openp): Make use of new function.
            (find_and_open_source): Search for the compilation directory and
            source file as a relative path beneath the directory search path.
    
    gdb/doc/ChangeLog:
    
            * gdb.texinfo (Source Path): Additional text to better describe
            how the source path directory list is used when searching for
            source files.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/source-dir.exp: Add extra test for mapped compilation
            directory.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c9be686c26..3bf43d2dfe 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-17  Mike Gulick  <mgulick@mathworks.com>
+
+	* source.c (prepare_path_for_appending): New function.
+	(openp): Make use of new function.
+	(find_and_open_source): Search for the compilation directory and
+	source file as a relative path beneath the directory search path.
+
 2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* source-cache.c (source_cache::get_line_charpos): Catch
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 4705fbc541..a16d32d48a 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Source Path): Additional text to better describe
+	how the source path directory list is used when searching for
+	source files.
+
 2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* gdb.texinfo (Ada Tasks): Tell the task name is printed, update
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index eee0c9d4dd..f4bfd9f980 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -8954,11 +8954,21 @@ it tries all the directories in the list, in the order they are present
 in the list, until it finds a file with the desired name.
 
 For example, suppose an executable references the file
-@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
-@file{/mnt/cross}.  The file is first looked up literally; if this
-fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
-fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
-message is printed.  @value{GDBN} does not look up the parts of the
+@file{/usr/src/foo-1.0/lib/foo.c}, does not record a compilation
+directory, and the @dfn{source path} is @file{/mnt/cross}.
+@value{GDBN} would look for the source file in the following
+locations:
+
+@enumerate
+
+@item @file{/usr/src/foo-1.0/lib/foo.c}
+@item @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c}
+@item @file{/mnt/cross/foo.c}
+
+@end enumerate
+
+If the source file is not present at any of the above locations then
+an error is printed.  @value{GDBN} does not look up the parts of the
 source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
 Likewise, the subdirectories of the source path are not searched: if
 the source path is @file{/mnt/cross}, and the binary refers to
@@ -8966,11 +8976,91 @@ the source path is @file{/mnt/cross}, and the binary refers to
 @file{/mnt/cross/usr/src/foo-1.0/lib}.
 
 Plain file names, relative file names with leading directories, file
-names containing dots, etc.@: are all treated as described above; for
-instance, if the source path is @file{/mnt/cross}, and the source file
-is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
-@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
-that---@file{/mnt/cross/foo.c}.
+names containing dots, etc.@: are all treated as described above,
+except that non-absolute file names are not looked up literally.  If
+the @dfn{source path} is @file{/mnt/cross}, the source file is
+recorded as @file{../lib/foo.c}, and no compilation directory is
+recorded, then @value{GDBN} will search in the following locations:
+
+@enumerate
+
+@item @file{/mnt/cross/../lib/foo.c}
+@item @file{/mnt/cross/foo.c}
+
+@end enumerate
+
+@kindex cdir
+@kindex cwd
+@vindex $cdir@r{, convenience variable}
+@vindex $cwd@r{, convenience variable}
+@cindex compilation directory
+@cindex current directory
+@cindex working directory
+@cindex directory, current
+@cindex directory, compilation
+The @dfn{source path} will always include two special entries
+@samp{$cdir} and @samp{$cwd}, these refer to the compilation directory
+(if one is recorded) and the current working directory respectively.
+
+@samp{$cdir} causes @value{GDBN} to search within the compilation
+directory, if one is recorded in the debug information.  If no
+compilation directory is recorded in the debug information then
+@samp{$cdir} is ignored.
+
+@samp{$cwd} is not the same as @samp{.}---the former tracks the
+current working directory as it changes during your @value{GDBN}
+session, while the latter is immediately expanded to the current
+directory at the time you add an entry to the source path.
+
+If a compilation directory is recorded in the debug information, and
+@value{GDBN} has not found the source file after the first search
+using @dfn{source path}, then @value{GDBN} will combine the
+compilation directory and the filename, and then search for the source
+file again using the @dfn{source path}.
+
+For example, if the executable records the source file as
+@file{/usr/src/foo-1.0/lib/foo.c}, the compilation directory is
+recorded as @file{/project/build}, and the @dfn{source path} is
+@file{/mnt/cross:$cdir:$cwd} while the current working directory of
+the @value{GDBN} session is @file{/home/user}, then @value{GDBN} will
+search for the source file in the following loctions:
+
+@enumerate
+
+@item @file{/usr/src/foo-1.0/lib/foo.c}
+@item @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c}
+@item @file{/project/build/usr/src/foo-1.0/lib/foo.c}
+@item @file{/home/user/usr/src/foo-1.0/lib/foo.c}
+@item @file{/mnt/cross/project/build/usr/src/foo-1.0/lib/foo.c}
+@item @file{/project/build/project/build/usr/src/foo-1.0/lib/foo.c}
+@item @file{/home/user/project/build/usr/src/foo-1.0/lib/foo.c}
+@item @file{/mnt/cross/foo.c}
+@item @file{/project/build/foo.c}
+@item @file{/home/user/foo.c}
+
+@end enumerate
+
+If the file name in the previous example had been recorded in the
+executable as a relative path rather than an absolute path, then the
+first look up would not have occurred, but all of the remaining steps
+would be similar.
+
+When searching for source files on MS-DOS and MS-Windows, where
+absolute paths start with a drive letter (e.g.
+@file{C:/project/foo.c}), @value{GDBN} will remove the drive letter
+from the file name before appending it to a search directory from
+@dfn{source path}; for instance if the executable references the
+source file @file{C:/project/foo.c} and @dfn{source path} is set to
+@file{D:/mnt/cross}, then @value{GDBN} will search in the following
+locations for the source file:
+
+@enumerate
+
+@item @file{C:/project/foo.c}
+@item @file{D:/mnt/cross/project/foo.c}
+@item @file{D:/mnt/cross/foo.c}
+
+@end enumerate
 
 Note that the executable search path is @emph{not} used to locate the
 source files.
@@ -8981,8 +9071,8 @@ each line is in the file.
 
 @kindex directory
 @kindex dir
-When you start @value{GDBN}, its source path includes only @samp{cdir}
-and @samp{cwd}, in that order.
+When you start @value{GDBN}, its source path includes only @samp{$cdir}
+and @samp{$cwd}, in that order.
 To add other directories, use the @code{directory} command.
 
 The search path is used to find both program source files and @value{GDBN}
@@ -9058,21 +9148,12 @@ part of absolute file names) or
 whitespace.  You may specify a directory that is already in the source
 path; this moves it forward, so @value{GDBN} searches it sooner.
 
-@kindex cdir
-@kindex cwd
-@vindex $cdir@r{, convenience variable}
-@vindex $cwd@r{, convenience variable}
-@cindex compilation directory
-@cindex current directory
-@cindex working directory
-@cindex directory, current
-@cindex directory, compilation
-You can use the string @samp{$cdir} to refer to the compilation
-directory (if one is recorded), and @samp{$cwd} to refer to the current
-working directory.  @samp{$cwd} is not the same as @samp{.}---the former
-tracks the current working directory as it changes during your @value{GDBN}
-session, while the latter is immediately expanded to the current
-directory at the time you add an entry to the source path.
+The special strings @samp{$cdir} (to refer to the compilation
+directory, if one is recorded), and @samp{$cwd} (to refer to the
+current working directory) can also be included in the list of
+directories @var{dirname}.  Though these will already be in the source
+path they will be moved forward in the list so @value{GDBN} searches
+them sooner.
 
 @item directory
 Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems).  This requires confirmation.
diff --git a/gdb/source.c b/gdb/source.c
index b27f210802..0171f2748b 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -654,6 +654,36 @@ info_source_command (const char *ignore, int from_tty)
 }
 \f
 
+/* Helper function to remove characters from the start of PATH so that
+   PATH can then be appended to a directory name.  We remove leading drive
+   letters (for dos) as well as leading '/' characters and './'
+   sequences.  */
+
+const char *
+prepare_path_for_appending (const char *path)
+{
+  /* For dos paths, d:/foo -> /foo, and d:foo -> foo.  */
+  if (HAS_DRIVE_SPEC (path))
+    path = STRIP_DRIVE_SPEC (path);
+
+  const char *old_path;
+  do
+    {
+      old_path = path;
+
+      /* /foo => foo, to avoid multiple slashes that Emacs doesn't like.  */
+      while (IS_DIR_SEPARATOR(path[0]))
+	path++;
+
+      /* ./foo => foo */
+      while (path[0] == '.' && IS_DIR_SEPARATOR (path[1]))
+	path += 2;
+    }
+  while (old_path != path);
+
+  return path;
+}
+
 /* Open a file named STRING, searching path PATH (dir names sep by some char)
    using mode MODE in the calls to open.  You cannot use this function to
    create files (O_CREAT).
@@ -747,17 +777,9 @@ openp (const char *path, openp_flags opts, const char *string,
 	    goto done;
     }
 
-  /* For dos paths, d:/foo -> /foo, and d:foo -> foo.  */
-  if (HAS_DRIVE_SPEC (string))
-    string = STRIP_DRIVE_SPEC (string);
-
-  /* /foo => foo, to avoid multiple slashes that Emacs doesn't like.  */
-  while (IS_DIR_SEPARATOR(string[0]))
-    string++;
-
-  /* ./foo => foo */
-  while (string[0] == '.' && IS_DIR_SEPARATOR (string[1]))
-    string += 2;
+  /* Remove characters from the start of PATH that we don't need when PATH
+     is appended to a directory name.  */
+  string = prepare_path_for_appending (string);
 
   alloclen = strlen (path) + strlen (string) + 2;
   filename = (char *) alloca (alloclen);
@@ -1033,7 +1055,32 @@ find_and_open_source (const char *filename,
   openp_flags flags = OPF_SEARCH_IN_PATH;
   if (basenames_may_differ)
     flags |= OPF_RETURN_REALPATH;
+
+  /* Try to locate file using filename.  */
   result = openp (path, flags, filename, OPEN_MODE, fullname);
+  if (result < 0 && dirname != NULL)
+    {
+      /* Remove characters from the start of PATH that we don't need when
+	 PATH is appended to a directory name.  */
+      const char *filename_start = prepare_path_for_appending (filename);
+
+      /* Try to locate file using compilation dir + filename.  This is
+	 helpful if part of the compilation directory was removed,
+	 e.g. using gcc's -fdebug-prefix-map, and we have added the missing
+	 prefix to source_path.  */
+      std::string cdir_filename (dirname);
+
+      /* Remove any trailing directory separators.  */
+      while (IS_DIR_SEPARATOR (cdir_filename.back ()))
+	cdir_filename.pop_back ();
+
+      /* Add our own directory separator.  */
+      cdir_filename.append (SLASH_STRING);
+      cdir_filename.append (filename_start);
+
+      result = openp (path, flags, cdir_filename.c_str (), OPEN_MODE,
+		      fullname);
+    }
   if (result < 0)
     {
       /* Didn't work.  Try using just the basename.  */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b9060ef5d0..ed838e947e 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/source-dir.exp: Add extra test for mapped compilation
+	directory.
+
 2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/list-missing-source.exp: New file.
diff --git a/gdb/testsuite/gdb.base/source-dir.c b/gdb/testsuite/gdb.base/source-dir.c
new file mode 100644
index 0000000000..d94b8074ec
--- /dev/null
+++ b/gdb/testsuite/gdb.base/source-dir.c
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gdb/testsuite/gdb.base/source-dir.exp b/gdb/testsuite/gdb.base/source-dir.exp
index 048c0e9516..25d7b07971 100644
--- a/gdb/testsuite/gdb.base/source-dir.exp
+++ b/gdb/testsuite/gdb.base/source-dir.exp
@@ -15,9 +15,142 @@
 
 standard_testfile
 
-gdb_start
+# Take a list of directories DIRS, and return a regular expression
+# that will match against the output of the 'directory' command
+# assuming that DIRS are all of the directories that should appear in
+# the results.
+proc search_dir_list { dirs } {
+    set output "\r\nSource directories searched: "
+    append output [join $dirs "\[:;\]"]
 
-set foo "/nOtExStInG"
+    return ${output}
+}
 
-gdb_test "directory $foo/a $foo/b $foo/c" "\r\nSource directories searched: $foo/a\[:;\]$foo/b\[:;\]$foo/c\[:;\]\\\$cdir\[:;\]\\\$cwd"
-gdb_test "directory $foo/b $foo/d $foo/c" "\r\nSource directories searched: $foo/b\[:;\]$foo/d\[:;\]$foo/c\[:;\]$foo/a\[:;\]\\\$cdir\[:;\]\\\$cwd"
+# Check that adding directories to the search path changes the order
+# in which directories are searched.
+proc test_changing_search_directory {} {
+    gdb_start
+
+    set foo "/nOtExStInG"
+
+    gdb_test "directory $foo/a $foo/b $foo/c" \
+	[search_dir_list [list \
+			      "$foo/a" \
+			      "$foo/b" \
+			      "$foo/c" \
+			      "\\\$cdir" \
+			      "\\\$cwd"]]
+    gdb_test "directory $foo/b $foo/d $foo/c" \
+	[search_dir_list [list \
+			      "$foo/b" \
+			      "$foo/d" \
+			      "$foo/c" \
+			      "$foo/a" \
+			      "\\\$cdir" \
+			      "\\\$cwd"]]
+    gdb_exit
+}
+
+# Test that the compilation directory can also be extended with a
+# prefix from the directory search path in order to find source files.
+proc test_truncated_comp_dir {} {
+    global srcfile srcdir subdir binfile
+    global decimal
+
+    # When we run this test the current directory will be something
+    # like this:
+    #     /some/path/to/gdb/build/testsuite/
+    # We are going to copy the source file out of the source tree into
+    # a location like this:
+    #     /some/path/to/gdb/build/testsuite/output/gdb.base/soure-dir/
+    #
+    # We will then switch to this directory and compile the source
+    # file, however, we will ask GCC to remove this prefix from the
+    # compilation directory in the debug info:
+    #     /some/path/to/gdb/build/testsuite/output/
+    #
+    # As a result the debug information will look like this:
+    #
+    #     DW_AT_name        : source-dir.c
+    #     DW_AT_comp_dir    : /gdb.base/source-dir
+    #
+    # Finally we switch back to this directory:
+    #     /some/path/to/gdb/build/testsuite/
+    #
+    # and start GDB.  There was a time when GDB would be unable to
+    # find the source file no matter what we added to the directory
+    # search path, this should now be fixed.
+
+    set original_dir [pwd]
+    set working_dir [standard_output_file ""]
+    cd ${working_dir}
+
+    set strip_dir [file normalize "${working_dir}/../.."]
+
+    set new_srcfile [standard_output_file ${srcfile}]
+    set fd [open "$new_srcfile" w]
+    puts $fd "int
+    main ()
+    {
+      return 0;
+    }"
+    close $fd
+
+    set options \
+	"debug additional_flags=-fdebug-prefix-map=${strip_dir}="
+    if  { [gdb_compile "${srcfile}" "${binfile}" \
+	       executable ${options}] != "" } {
+	untested "failed to compile"
+	return -1
+    }
+
+    cd ${original_dir}
+
+    clean_restart ${binfile}
+
+    gdb_test_no_output "set directories \$cdir:\$cwd"
+    gdb_test "show directories" \
+	"\r\nSource directories searched: \\\$cdir\[:;\]\\\$cwd"
+
+    if ![runto_main] then {
+	fail "can't run to main"
+	return 0
+    }
+
+    gdb_test "info source" \
+    [multi_line \
+	 "Current source file is ${srcfile}" \
+	 "Compilation directory is \[^\n\r\]+" \
+	 "Source language is c." \
+	 "Producer is \[^\n\r\]+" \
+	 "Compiled with DWARF $decimal debugging format." \
+	 "Does not include preprocessor macro info." ] \
+	"info source before setting directory search list"
+
+    gdb_test "dir $strip_dir" \
+	[search_dir_list [list \
+			      "$strip_dir" \
+			      "\\\$cdir" \
+			      "\\\$cwd"]]
+    gdb_test "list" [multi_line \
+			 "1\[ \t\]+int" \
+			 "2\[ \t\]+main \\(\\)" \
+			 "3\[ \t\]+\\{" \
+			 "4\[ \t\]+return 0;" \
+			 "5\[ \t\]+\\}" ]
+
+    gdb_test "info source" \
+	[multi_line \
+	     "Current source file is ${srcfile}" \
+	     "Compilation directory is \[^\n\r\]+" \
+	     "Located in ${new_srcfile}" \
+	     "Contains 5 lines." \
+	     "Source language is c." \
+	     "Producer is \[^\n\r\]+" \
+	     "\[^\n\r\]+" \
+	     "\[^\n\r\]+" ] \
+	"info source after setting directory search list"
+}
+
+test_changing_search_directory
+test_truncated_comp_dir


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change boolean options to bool instead of int
@ 2019-09-18  0:59 gdb-buildbot
  2019-09-18  1:49 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18  0:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 491144b5e21bbfd41969c175aebb663976f59058 ***

commit 491144b5e21bbfd41969c175aebb663976f59058
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Sat Sep 14 15:36:58 2019 -0400
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 18 09:35:12 2019 +0900

    Change boolean options to bool instead of int
    
    This is for add_setshow_boolean_cmd as well as the gdb::option interface.
    
    gdb/ChangeLog:
    
    2019-09-17  Christian Biesinger  <cbiesinger@google.com>
    
            * ada-lang.c (ada_ignore_descriptive_types_p): Change to bool.
            (print_signatures): Likewise.
            (trust_pad_over_xvs): Likewise.
            * arch/aarch64-insn.c (aarch64_debug): Likewise.
            * arch/aarch64-insn.h (aarch64_debug): Likewise.
            * arm-linux-nat.c (arm_apcs_32): Likewise.
            * arm-linux-tdep.c (arm_apcs_32): Likewise.
            * arm-nbsd-nat.c (arm_apcs_32): Likewise.
            * arm-tdep.c (arm_debug): Likewise.
            (arm_apcs_32): Likewise.
            * auto-load.c (debug_auto_load): Likewise.
            (auto_load_gdb_scripts): Likewise.
            (global_auto_load): Likewise.
            (auto_load_local_gdbinit): Likewise.
            (auto_load_local_gdbinit_loaded): Likewise.
            * auto-load.h (global_auto_load): Likewise.
            (auto_load_local_gdbinit): Likewise.
            (auto_load_local_gdbinit_loaded): Likewise.
            * breakpoint.c (disconnected_dprintf): Likewise.
            (breakpoint_proceeded): Likewise.
            (automatic_hardware_breakpoints): Likewise.
            (always_inserted_mode): Likewise.
            (target_exact_watchpoints): Likewise.
            (_initialize_breakpoint): Update.
            * breakpoint.h (target_exact_watchpoints): Change to bool.
            * btrace.c (maint_btrace_pt_skip_pad): Likewise.
            * cli/cli-cmds.c (trace_commands): Likewise.
            * cli/cli-cmds.h (trace_commands): Likewise.
            * cli/cli-decode.c (add_setshow_boolean_cmd): Change int* argument
            to bool*.
            * cli/cli-logging.c (logging_overwrite): Change to bool.
            (logging_redirect): Likewise.
            (debug_redirect): Likewise.
            * cli/cli-option.h (option_def) <boolean>: Change return type to bool*.
            (struct boolean_option_def) <get_var_address_cb_>: Change return type
            to bool.
            <boolean_option_def>: Update.
            (struct flag_option_def): Change default type of Context to bool
            from int.
            <flag_option_def>: Change return type of var_address_cb_ to bool*.
            * cli/cli-setshow.c (do_set_command): Cast to bool* instead of int*.
            (get_setshow_command_value_string): Likewise.
            * cli/cli-style.c (cli_styling): Change to bool.
            (source_styling): Likewise.
            * cli/cli-style.h (source_styling): Likewise.
            (cli_styling): Likewise.
            * cli/cli-utils.h (struct qcs_flags) <quiet, cont, silent>: Change
            to bool.
            * command.h (var_types): Update comment.
            (add_setshow_boolean_cmd): Change int* var argument to bool*.
            * compile/compile-cplus-types.c (debug_compile_cplus_types): Change to
            bool.
            (debug_compile_cplus_scopes): Likewise.
            * compile/compile-internal.h (compile_debug): Likewise.
            * compile/compile.c (compile_debug): Likewise.
            (struct compile_options) <raw>: Likewise.
            * cp-support.c (catch_demangler_crashes): Likewise.
            * cris-tdep.c (usr_cmd_cris_version_valid): Likewise.
            (usr_cmd_cris_dwarf2_cfi): Likewise.
            * csky-tdep.c (csky_debug): Likewise.
            * darwin-nat.c (enable_mach_exceptions): Likewise.
            * dcache.c (dcache_enabled_p): Likewise.
            * defs.h (info_verbose): Likewise.
            * demangle.c (demangle): Likewise.
            (asm_demangle): Likewise.
            * dwarf-index-cache.c (debug_index_cache): Likewise.
            * dwarf2-frame.c (dwarf2_frame_unwinders_enabled_p): Likewise.
            * dwarf2-frame.h (dwarf2_frame_unwinders_enabled_p): Likewise.
            * dwarf2read.c (check_physname): Likewise.
            (use_deprecated_index_sections): Likewise.
            (dwarf_always_disassemble): Likewise.
            * eval.c (overload_resolution): Likewise.
            * event-top.c (set_editing_cmd_var): Likewise.
            (exec_done_display_p): Likewise.
            * event-top.h (set_editing_cmd_var): Likewise.
            (exec_done_display_p): Likewise.
            * exec.c (write_files): Likewise.
            * fbsd-nat.c (debug_fbsd_lwp): Likewise
            (debug_fbsd_nat): Likewise.
            * frame.h (struct frame_print_options) <print_raw_frame_arguments>:
            Likewise.
            (struct set_backtrace_options) <backtrace_past_main>: Likewise.
            <backtrace_past_entry> Likewise.
            * gdb-demangle.h (demangle): Likewise.
            (asm_demangle): Likewise.
            * gdb_bfd.c (bfd_sharing): Likewise.
            * gdbcore.h (write_files): Likewise.
            * gdbsupport/common-debug.c (show_debug_regs): Likewise.
            * gdbsupport/common-debug.h (show_debug_regs): Likewise.
            * gdbthread.h (print_thread_events): Likewise.
            * gdbtypes.c (opaque_type_resolution): Likewise.
            (strict_type_checking): Likewise.
            * gnu-nat.c (gnu_debug_flag): Likewise.
            * guile/scm-auto-load.c (auto_load_guile_scripts): Likewise.
            * guile/scm-param.c (pascm_variable): Add boolval.
            (add_setshow_generic): Update.
            (pascm_param_value): Update.
            (pascm_set_param_value_x): Update.
            * hppa-tdep.c (hppa_debug): Change to bool..
            * infcall.c (may_call_functions_p): Likewise.
            (coerce_float_to_double_p): Likewise.
            (unwind_on_signal_p): Likewise.
            (unwind_on_terminating_exception_p): Likewise.
            * infcmd.c (startup_with_shell): Likewise.
            * inferior.c (print_inferior_events): Likewise.
            * inferior.h (startup_with_shell): Likewise.
            (print_inferior_events): Likewise.
            * infrun.c (step_stop_if_no_debug): Likewise.
            (detach_fork): Likewise.
            (debug_displaced): Likewise.
            (disable_randomization): Likewise.
            (non_stop): Likewise.
            (non_stop_1): Likewise.
            (observer_mode): Likewise.
            (observer_mode_1): Likewise.
            (set_observer_mode): Update.
            (sched_multi): Change to bool.
            * infrun.h (debug_displaced): Likewise.
            (sched_multi): Likewise.
            (step_stop_if_no_debug): Likewise.
            (non_stop): Likewise.
            (disable_randomization): Likewise.
            * linux-tdep.c (use_coredump_filter): Likewise.
            (dump_excluded_mappings): Likewise.
            * linux-thread-db.c (auto_load_thread_db): Likewise.
            (check_thread_db_on_load): Likewise.
            * main.c (captured_main_1): Update.
            * maint-test-options.c (struct test_options_opts) <flag_opt, xx1_opt,
            xx2_opt, boolean_opt>: Change to bool.
            * maint-test-settings.c (maintenance_test_settings_boolean): Likewise.
            * maint.c (maintenance_profile_p): Likewise.
            (per_command_time): Likewise.
            (per_command_space): Likewise.
            (per_command_symtab): Likewise.
            * memattr.c (inaccessible_by_default): Likewise.
            * mi/mi-main.c (mi_async): Likewise.
            (mi_async_1): Likewise.
            * mips-tdep.c (mips64_transfers_32bit_regs_p): Likewise.
            * nat/fork-inferior.h (startup_with_shell): Likewise.
            * nat/linux-namespaces.c (debug_linux_namespaces): Likewise.
            * nat/linux-namespaces.h (debug_linux_namespaces): Likewise.
            * nios2-tdep.c (nios2_debug): Likewise.
            * or1k-tdep.c (or1k_debug): Likewise.
            * parse.c (parser_debug): Likewise.
            * parser-defs.h (parser_debug): Likewise.
            * printcmd.c (print_symbol_filename): Likewise.
            * proc-api.c (procfs_trace): Likewise.
            * python/py-auto-load.c (auto_load_python_scripts): Likewise.
            * python/py-param.c (union parmpy_variable): Add "bool boolval" field.
            (set_parameter_value): Update.
            (add_setshow_generic): Update.
            * python/py-value.c (copy_py_bool_obj): Change argument from int*
            to bool*.
            * python/python.c (gdbpy_parameter_value): Cast to bool* instead of
            int*.
            * ravenscar-thread.c (ravenscar_task_support): Change to bool.
            * record-btrace.c (record_btrace_target::store_registers): Update.
            * record-full.c (record_full_memory_query): Change to bool.
            (record_full_stop_at_limit): Likewise.
            * record-full.h (record_full_memory_query): Likewise.
            * remote-notif.c (notif_debug): Likewise.
            * remote-notif.h (notif_debug): Likewise.
            * remote.c (use_range_stepping): Likewise.
            (interrupt_on_connect): Likewise.
            (remote_break): Likewise.
            * ser-tcp.c (tcp_auto_retry): Likewise.
            * ser-unix.c (serial_hwflow): Likewise.
            * skip.c (debug_skip): Likewise.
            * solib-aix.c (solib_aix_debug): Likewise.
            * spu-tdep.c (spu_stop_on_load_p): Likewise.
            (spu_auto_flush_cache_p): Likewise.
            * stack.c (struct backtrace_cmd_options) <full, no_filters, hide>:
            Likewise.
            (struct info_print_options) <quiet>: Likewise.
            * symfile-debug.c (debug_symfile): Likewise.
            * symfile.c (auto_solib_add): Likewise.
            (separate_debug_file_debug): Likewise.
            * symfile.h (auto_solib_add): Likewise.
            (separate_debug_file_debug): Likewise.
            * symtab.c (basenames_may_differ): Likewise.
            (struct filename_partial_match_opts) <dirname, basename>: Likewise.
            (struct info_print_options) <quiet, exclude_minsyms>: Likewise.
            (struct info_types_options) <quiet>: Likewise.
            * symtab.h (demangle): Likewise.
            (basenames_may_differ): Likewise.
            * target-dcache.c (stack_cache_enabled_1): Likewise.
            (code_cache_enabled_1): Likewise.
            * target.c (trust_readonly): Likewise.
            (may_write_registers): Likewise.
            (may_write_memory): Likewise.
            (may_insert_breakpoints): Likewise.
            (may_insert_tracepoints): Likewise.
            (may_insert_fast_tracepoints): Likewise.
            (may_stop): Likewise.
            (auto_connect_native_target): Likewise.
            (target_stop_and_wait): Update.
            (target_async_permitted): Change to bool.
            (target_async_permitted_1): Likewise.
            (may_write_registers_1): Likewise.
            (may_write_memory_1): Likewise.
            (may_insert_breakpoints_1): Likewise.
            (may_insert_tracepoints_1): Likewise.
            (may_insert_fast_tracepoints_1): Likewise.
            (may_stop_1): Likewise.
            * target.h (target_async_permitted): Likewise.
            (may_write_registers): Likewise.
            (may_write_memory): Likewise.
            (may_insert_breakpoints): Likewise.
            (may_insert_tracepoints): Likewise.
            (may_insert_fast_tracepoints): Likewise.
            (may_stop): Likewise.
            * thread.c (struct info_threads_opts) <show_global_ids>: Likewise.
            (make_thread_apply_all_options_def_group): Change argument from int*
            to bool*.
            (thread_apply_all_command): Update.
            (print_thread_events): Change to bool.
            * top.c (confirm): Likewise.
            (command_editing_p): Likewise.
            (history_expansion_p): Likewise.
            (write_history_p): Likewise.
            (info_verbose): Likewise.
            * top.h (confirm): Likewise.
            (history_expansion_p): Likewise.
            * tracepoint.c (disconnected_tracing): Likewise.
            (circular_trace_buffer): Likewise.
            * typeprint.c (print_methods): Likewise.
            (print_typedefs): Likewise.
            * utils.c (debug_timestamp): Likewise.
            (sevenbit_strings): Likewise.
            (pagination_enabled): Likewise.
            * utils.h (sevenbit_strings): Likewise.
            (pagination_enabled): Likewise.
            * valops.c (overload_resolution): Likewise.
            * valprint.h (struct value_print_options) <prettyformat_arrays,
            prettyformat_structs, vtblprint, unionprint, addressprint, objectprint,
            stop_print_at_null, print_array_indexes, deref_ref, static_field_print,
            pascal_static_field_print, raw, summary, symbol_print, finish_print>:
            Likewise.
            * windows-nat.c (new_console): Likewise.
            (cygwin_exceptions): Likewise.
            (new_group): Likewise.
            (debug_exec): Likewise.
            (debug_events): Likewise.
            (debug_memory): Likewise.
            (debug_exceptions): Likewise.
            (useshell): Likewise.
            * windows-tdep.c (maint_display_all_tib): Likewise.
            * xml-support.c (debug_xml): Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3bf43d2dfe..8cb5bfeeb9 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,254 @@
+2019-09-17  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-lang.c (ada_ignore_descriptive_types_p): Change to bool.
+	(print_signatures): Likewise.
+	(trust_pad_over_xvs): Likewise.
+	* arch/aarch64-insn.c (aarch64_debug): Likewise.
+	* arch/aarch64-insn.h (aarch64_debug): Likewise.
+	* arm-linux-nat.c (arm_apcs_32): Likewise.
+	* arm-linux-tdep.c (arm_apcs_32): Likewise.
+	* arm-nbsd-nat.c (arm_apcs_32): Likewise.
+	* arm-tdep.c (arm_debug): Likewise.
+	(arm_apcs_32): Likewise.
+	* auto-load.c (debug_auto_load): Likewise.
+	(auto_load_gdb_scripts): Likewise.
+	(global_auto_load): Likewise.
+	(auto_load_local_gdbinit): Likewise.
+	(auto_load_local_gdbinit_loaded): Likewise.
+	* auto-load.h (global_auto_load): Likewise.
+	(auto_load_local_gdbinit): Likewise.
+	(auto_load_local_gdbinit_loaded): Likewise.
+	* breakpoint.c (disconnected_dprintf): Likewise.
+	(breakpoint_proceeded): Likewise.
+	(automatic_hardware_breakpoints): Likewise.
+	(always_inserted_mode): Likewise.
+	(target_exact_watchpoints): Likewise.
+	(_initialize_breakpoint): Update.
+	* breakpoint.h (target_exact_watchpoints): Change to bool.
+	* btrace.c (maint_btrace_pt_skip_pad): Likewise.
+	* cli/cli-cmds.c (trace_commands): Likewise.
+	* cli/cli-cmds.h (trace_commands): Likewise.
+	* cli/cli-decode.c (add_setshow_boolean_cmd): Change int* argument
+	to bool*.
+	* cli/cli-logging.c (logging_overwrite): Change to bool.
+	(logging_redirect): Likewise.
+	(debug_redirect): Likewise.
+	* cli/cli-option.h (option_def) <boolean>: Change return type to bool*.
+	(struct boolean_option_def) <get_var_address_cb_>: Change return type
+	to bool.
+	<boolean_option_def>: Update.
+	(struct flag_option_def): Change default type of Context to bool
+	from int.
+	<flag_option_def>: Change return type of var_address_cb_ to bool*.
+	* cli/cli-setshow.c (do_set_command): Cast to bool* instead of int*.
+	(get_setshow_command_value_string): Likewise.
+	* cli/cli-style.c (cli_styling): Change to bool.
+	(source_styling): Likewise.
+	* cli/cli-style.h (source_styling): Likewise.
+	(cli_styling): Likewise.
+	* cli/cli-utils.h (struct qcs_flags) <quiet, cont, silent>: Change
+	to bool.
+	* command.h (var_types): Update comment.
+	(add_setshow_boolean_cmd): Change int* var argument to bool*.
+	* compile/compile-cplus-types.c (debug_compile_cplus_types): Change to
+	bool.
+	(debug_compile_cplus_scopes): Likewise.
+	* compile/compile-internal.h (compile_debug): Likewise.
+	* compile/compile.c (compile_debug): Likewise.
+	(struct compile_options) <raw>: Likewise.
+	* cp-support.c (catch_demangler_crashes): Likewise.
+	* cris-tdep.c (usr_cmd_cris_version_valid): Likewise.
+	(usr_cmd_cris_dwarf2_cfi): Likewise.
+	* csky-tdep.c (csky_debug): Likewise.
+	* darwin-nat.c (enable_mach_exceptions): Likewise.
+	* dcache.c (dcache_enabled_p): Likewise.
+	* defs.h (info_verbose): Likewise.
+	* demangle.c (demangle): Likewise.
+	(asm_demangle): Likewise.
+	* dwarf-index-cache.c (debug_index_cache): Likewise.
+	* dwarf2-frame.c (dwarf2_frame_unwinders_enabled_p): Likewise.
+	* dwarf2-frame.h (dwarf2_frame_unwinders_enabled_p): Likewise.
+	* dwarf2read.c (check_physname): Likewise.
+	(use_deprecated_index_sections): Likewise.
+	(dwarf_always_disassemble): Likewise.
+	* eval.c (overload_resolution): Likewise.
+	* event-top.c (set_editing_cmd_var): Likewise.
+	(exec_done_display_p): Likewise.
+	* event-top.h (set_editing_cmd_var): Likewise.
+	(exec_done_display_p): Likewise.
+	* exec.c (write_files): Likewise.
+	* fbsd-nat.c (debug_fbsd_lwp): Likewise
+	(debug_fbsd_nat): Likewise.
+	* frame.h (struct frame_print_options) <print_raw_frame_arguments>:
+	Likewise.
+	(struct set_backtrace_options) <backtrace_past_main>: Likewise.
+	<backtrace_past_entry> Likewise.
+	* gdb-demangle.h (demangle): Likewise.
+	(asm_demangle): Likewise.
+	* gdb_bfd.c (bfd_sharing): Likewise.
+	* gdbcore.h (write_files): Likewise.
+	* gdbsupport/common-debug.c (show_debug_regs): Likewise.
+	* gdbsupport/common-debug.h (show_debug_regs): Likewise.
+	* gdbthread.h (print_thread_events): Likewise.
+	* gdbtypes.c (opaque_type_resolution): Likewise.
+	(strict_type_checking): Likewise.
+	* gnu-nat.c (gnu_debug_flag): Likewise.
+	* guile/scm-auto-load.c (auto_load_guile_scripts): Likewise.
+	* guile/scm-param.c (pascm_variable): Add boolval.
+	(add_setshow_generic): Update.
+	(pascm_param_value): Update.
+	(pascm_set_param_value_x): Update.
+	* hppa-tdep.c (hppa_debug): Change to bool..
+	* infcall.c (may_call_functions_p): Likewise.
+	(coerce_float_to_double_p): Likewise.
+	(unwind_on_signal_p): Likewise.
+	(unwind_on_terminating_exception_p): Likewise.
+	* infcmd.c (startup_with_shell): Likewise.
+	* inferior.c (print_inferior_events): Likewise.
+	* inferior.h (startup_with_shell): Likewise.
+	(print_inferior_events): Likewise.
+	* infrun.c (step_stop_if_no_debug): Likewise.
+	(detach_fork): Likewise.
+	(debug_displaced): Likewise.
+	(disable_randomization): Likewise.
+	(non_stop): Likewise.
+	(non_stop_1): Likewise.
+	(observer_mode): Likewise.
+	(observer_mode_1): Likewise.
+	(set_observer_mode): Update.
+	(sched_multi): Change to bool.
+	* infrun.h (debug_displaced): Likewise.
+	(sched_multi): Likewise.
+	(step_stop_if_no_debug): Likewise.
+	(non_stop): Likewise.
+	(disable_randomization): Likewise.
+	* linux-tdep.c (use_coredump_filter): Likewise.
+	(dump_excluded_mappings): Likewise.
+	* linux-thread-db.c (auto_load_thread_db): Likewise.
+	(check_thread_db_on_load): Likewise.
+	* main.c (captured_main_1): Update.
+	* maint-test-options.c (struct test_options_opts) <flag_opt, xx1_opt,
+	xx2_opt, boolean_opt>: Change to bool.
+	* maint-test-settings.c (maintenance_test_settings_boolean): Likewise.
+	* maint.c (maintenance_profile_p): Likewise.
+	(per_command_time): Likewise.
+	(per_command_space): Likewise.
+	(per_command_symtab): Likewise.
+	* memattr.c (inaccessible_by_default): Likewise.
+	* mi/mi-main.c (mi_async): Likewise.
+	(mi_async_1): Likewise.
+	* mips-tdep.c (mips64_transfers_32bit_regs_p): Likewise.
+	* nat/fork-inferior.h (startup_with_shell): Likewise.
+	* nat/linux-namespaces.c (debug_linux_namespaces): Likewise.
+	* nat/linux-namespaces.h (debug_linux_namespaces): Likewise.
+	* nios2-tdep.c (nios2_debug): Likewise.
+	* or1k-tdep.c (or1k_debug): Likewise.
+	* parse.c (parser_debug): Likewise.
+	* parser-defs.h (parser_debug): Likewise.
+	* printcmd.c (print_symbol_filename): Likewise.
+	* proc-api.c (procfs_trace): Likewise.
+	* python/py-auto-load.c (auto_load_python_scripts): Likewise.
+	* python/py-param.c (union parmpy_variable): Add "bool boolval" field.
+	(set_parameter_value): Update.
+	(add_setshow_generic): Update.
+	* python/py-value.c (copy_py_bool_obj): Change argument from int*
+	to bool*.
+	* python/python.c (gdbpy_parameter_value): Cast to bool* instead of
+	int*.
+	* ravenscar-thread.c (ravenscar_task_support): Change to bool.
+	* record-btrace.c (record_btrace_target::store_registers): Update.
+	* record-full.c (record_full_memory_query): Change to bool.
+	(record_full_stop_at_limit): Likewise.
+	* record-full.h (record_full_memory_query): Likewise.
+	* remote-notif.c (notif_debug): Likewise.
+	* remote-notif.h (notif_debug): Likewise.
+	* remote.c (use_range_stepping): Likewise.
+	(interrupt_on_connect): Likewise.
+	(remote_break): Likewise.
+	* ser-tcp.c (tcp_auto_retry): Likewise.
+	* ser-unix.c (serial_hwflow): Likewise.
+	* skip.c (debug_skip): Likewise.
+	* solib-aix.c (solib_aix_debug): Likewise.
+	* spu-tdep.c (spu_stop_on_load_p): Likewise.
+	(spu_auto_flush_cache_p): Likewise.
+	* stack.c (struct backtrace_cmd_options) <full, no_filters, hide>:
+	Likewise.
+	(struct info_print_options) <quiet>: Likewise.
+	* symfile-debug.c (debug_symfile): Likewise.
+	* symfile.c (auto_solib_add): Likewise.
+	(separate_debug_file_debug): Likewise.
+	* symfile.h (auto_solib_add): Likewise.
+	(separate_debug_file_debug): Likewise.
+	* symtab.c (basenames_may_differ): Likewise.
+	(struct filename_partial_match_opts) <dirname, basename>: Likewise.
+	(struct info_print_options) <quiet, exclude_minsyms>: Likewise.
+	(struct info_types_options) <quiet>: Likewise.
+	* symtab.h (demangle): Likewise.
+	(basenames_may_differ): Likewise.
+	* target-dcache.c (stack_cache_enabled_1): Likewise.
+	(code_cache_enabled_1): Likewise.
+	* target.c (trust_readonly): Likewise.
+	(may_write_registers): Likewise.
+	(may_write_memory): Likewise.
+	(may_insert_breakpoints): Likewise.
+	(may_insert_tracepoints): Likewise.
+	(may_insert_fast_tracepoints): Likewise.
+	(may_stop): Likewise.
+	(auto_connect_native_target): Likewise.
+	(target_stop_and_wait): Update.
+	(target_async_permitted): Change to bool.
+	(target_async_permitted_1): Likewise.
+	(may_write_registers_1): Likewise.
+	(may_write_memory_1): Likewise.
+	(may_insert_breakpoints_1): Likewise.
+	(may_insert_tracepoints_1): Likewise.
+	(may_insert_fast_tracepoints_1): Likewise.
+	(may_stop_1): Likewise.
+	* target.h (target_async_permitted): Likewise.
+	(may_write_registers): Likewise.
+	(may_write_memory): Likewise.
+	(may_insert_breakpoints): Likewise.
+	(may_insert_tracepoints): Likewise.
+	(may_insert_fast_tracepoints): Likewise.
+	(may_stop): Likewise.
+	* thread.c (struct info_threads_opts) <show_global_ids>: Likewise.
+	(make_thread_apply_all_options_def_group): Change argument from int*
+	to bool*.
+	(thread_apply_all_command): Update.
+	(print_thread_events): Change to bool.
+	* top.c (confirm): Likewise.
+	(command_editing_p): Likewise.
+	(history_expansion_p): Likewise.
+	(write_history_p): Likewise.
+	(info_verbose): Likewise.
+	* top.h (confirm): Likewise.
+	(history_expansion_p): Likewise.
+	* tracepoint.c (disconnected_tracing): Likewise.
+	(circular_trace_buffer): Likewise.
+	* typeprint.c (print_methods): Likewise.
+	(print_typedefs): Likewise.
+	* utils.c (debug_timestamp): Likewise.
+	(sevenbit_strings): Likewise.
+	(pagination_enabled): Likewise.
+	* utils.h (sevenbit_strings): Likewise.
+	(pagination_enabled): Likewise.
+	* valops.c (overload_resolution): Likewise.
+	* valprint.h (struct value_print_options) <prettyformat_arrays,
+	prettyformat_structs, vtblprint, unionprint, addressprint, objectprint,
+	stop_print_at_null, print_array_indexes, deref_ref, static_field_print,
+	pascal_static_field_print, raw, summary, symbol_print, finish_print>:
+	Likewise.
+	* windows-nat.c (new_console): Likewise.
+	(cygwin_exceptions): Likewise.
+	(new_group): Likewise.
+	(debug_exec): Likewise.
+	(debug_events): Likewise.
+	(debug_memory): Likewise.
+	(debug_exceptions): Likewise.
+	(useshell): Likewise.
+	* windows-tdep.c (maint_display_all_tib): Likewise.
+	* xml-support.c (debug_xml): Likewise.
+
 2019-09-17  Mike Gulick  <mgulick@mathworks.com>
 
 	* source.c (prepare_path_for_appending): New function.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 8cdb62bde0..c34733e754 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -358,7 +358,7 @@ maint_show_ada_cmd (const char *args, int from_tty)
 
 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
 
-static int ada_ignore_descriptive_types_p = 0;
+static bool ada_ignore_descriptive_types_p = false;
 
 			/* Inferior-specific data.  */
 
@@ -3795,7 +3795,7 @@ sort_choices (struct block_symbol syms[], int nsyms)
 
 /* Whether GDB should display formals and return types for functions in the
    overloads selection menu.  */
-static int print_signatures = 1;
+static bool print_signatures = true;
 
 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
    all but functions, the signature is just the name of the symbol.  For
@@ -9299,7 +9299,7 @@ ada_is_string_type (struct type *type)
 
    Set to True if the debugger should trust the contents of PAD types.
    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
-static int trust_pad_over_xvs = 1;
+static bool trust_pad_over_xvs = true;
 
 /* True if TYPE is a struct type introduced by the compiler to force the
    alignment of a value.  Such types have a single field with a
diff --git a/gdb/arch/aarch64-insn.c b/gdb/arch/aarch64-insn.c
index e04ad87fef..48d0be83ff 100644
--- a/gdb/arch/aarch64-insn.c
+++ b/gdb/arch/aarch64-insn.c
@@ -20,7 +20,7 @@
 #include "aarch64-insn.h"
 
 /* Toggle this file's internal debugging dump.  */
-int aarch64_debug = 0;
+bool aarch64_debug = false;
 
 /* Extract a signed value from a bit field within an instruction
    encoding.
diff --git a/gdb/arch/aarch64-insn.h b/gdb/arch/aarch64-insn.h
index 4492594c1b..47a825b114 100644
--- a/gdb/arch/aarch64-insn.h
+++ b/gdb/arch/aarch64-insn.h
@@ -19,7 +19,7 @@
 #ifndef ARCH_AARCH64_INSN_H
 #define ARCH_AARCH64_INSN_H
 
-extern int aarch64_debug;
+extern bool aarch64_debug;
 
 /* List of opcodes that we need for building the jump pad and relocating
    an instruction.  */
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index 6a374bbc74..ef44e68d31 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -66,7 +66,7 @@
 #define PTRACE_SETHBPREGS 30
 #endif
 
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 class arm_linux_nat_target final : public linux_nat_target
 {
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index aec20877d9..31ea4564db 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -56,7 +56,7 @@
 #include "user-regs.h"
 #include <ctype.h>
 #include "elf/common.h"
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 /* Under ARM GNU/Linux the traditional way of performing a breakpoint
    is to execute a particular software interrupt, rather than use a
diff --git a/gdb/arm-nbsd-nat.c b/gdb/arm-nbsd-nat.c
index 2a83553a3f..38a9e954b9 100644
--- a/gdb/arm-nbsd-nat.c
+++ b/gdb/arm-nbsd-nat.c
@@ -40,7 +40,7 @@ public:
 
 static arm_netbsd_nat_target the_arm_netbsd_nat_target;
 
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 static void
 arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 5dcc443122..0650485bf0 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -65,7 +65,7 @@
 #include "gdbsupport/selftest.h"
 #endif
 
-static int arm_debug;
+static bool arm_debug;
 
 /* Macros for setting and testing a bit in a minimal symbol that marks
    it as Thumb function.  The MSB of the minimal symbol's "info" field
@@ -296,7 +296,7 @@ static CORE_ADDR arm_analyze_prologue (struct gdbarch *gdbarch,
 
 /* Set to true if the 32-bit mode is in use.  */
 
-int arm_apcs_32 = 1;
+bool arm_apcs_32 = true;
 
 /* Return the bit mask in ARM_PS_REGNUM that indicates Thumb mode.  */
 
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 115d5c10e8..9798ab1a06 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -61,7 +61,7 @@ static void maybe_print_script_not_found_warning
    const char *section_name, unsigned offset);
 
 /* Value of the 'set debug auto-load' configuration variable.  */
-static int debug_auto_load = 0;
+static bool debug_auto_load = false;
 
 /* "show" command for the debug_auto_load configuration variable.  */
 
@@ -79,7 +79,7 @@ show_debug_auto_load (struct ui_file *file, int from_tty,
    set auto-load gdb-scripts on|off
    This is true if we should auto-load associated scripts when an objfile
    is opened, false otherwise.  */
-static int auto_load_gdb_scripts = 1;
+static bool auto_load_gdb_scripts = true;
 
 /* "show" command for the auto_load_gdb_scripts configuration variable.  */
 
@@ -110,16 +110,16 @@ auto_load_gdb_scripts_enabled (const struct extension_language_defn *extlang)
    This flag exists to facilitate deferring auto-loading during start-up
    until after ./.gdbinit has been read; it may augment the search directories
    used to find the scripts.  */
-int global_auto_load = 1;
+bool global_auto_load = true;
 
 /* Auto-load .gdbinit file from the current directory?  */
-int auto_load_local_gdbinit = 1;
+bool auto_load_local_gdbinit = true;
 
 /* Absolute pathname to the current directory .gdbinit, if it exists.  */
 char *auto_load_local_gdbinit_pathname = NULL;
 
-/* Boolean value if AUTO_LOAD_LOCAL_GDBINIT_PATHNAME has been loaded.  */
-int auto_load_local_gdbinit_loaded = 0;
+/* if AUTO_LOAD_LOCAL_GDBINIT_PATHNAME has been loaded.  */
+bool auto_load_local_gdbinit_loaded = false;
 
 /* "show" command for the auto_load_local_gdbinit configuration variable.  */
 
diff --git a/gdb/auto-load.h b/gdb/auto-load.h
index 5d5903e119..ab865e9fa5 100644
--- a/gdb/auto-load.h
+++ b/gdb/auto-load.h
@@ -25,11 +25,11 @@ struct program_space;
 struct auto_load_pspace_info;
 struct extension_language_defn;
 
-extern int global_auto_load;
+extern bool global_auto_load;
 
-extern int auto_load_local_gdbinit;
+extern bool auto_load_local_gdbinit;
 extern char *auto_load_local_gdbinit_pathname;
-extern int auto_load_local_gdbinit_loaded;
+extern bool auto_load_local_gdbinit_loaded;
 
 extern struct auto_load_pspace_info *
   get_auto_load_pspace_data_for_loading (struct program_space *pspace);
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 9478d2dcf2..8ef3aac0c1 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -290,7 +290,7 @@ static char *dprintf_channel;
 
 /* True if dprintf commands should continue to operate even if GDB
    has disconnected.  */
-static int disconnected_dprintf = 1;
+static bool disconnected_dprintf = true;
 
 struct command_line *
 breakpoint_commands (struct breakpoint *b)
@@ -301,7 +301,7 @@ breakpoint_commands (struct breakpoint *b)
 /* Flag indicating that a command has proceeded the inferior past the
    current breakpoint.  */
 
-static int breakpoint_proceeded;
+static bool breakpoint_proceeded;
 
 const char *
 bpdisp_text (enum bpdisp disp)
@@ -346,11 +346,11 @@ show_pending_break_support (struct ui_file *file, int from_tty,
 		    value);
 }
 
-/* If 1, gdb will automatically use hardware breakpoints for breakpoints
+/* If true, gdb will automatically use hardware breakpoints for breakpoints
    set with "break" but falling in read-only memory.
-   If 0, gdb will warn about such breakpoints, but won't automatically
+   If false, gdb will warn about such breakpoints, but won't automatically
    use hardware breakpoints.  */
-static int automatic_hardware_breakpoints;
+static bool automatic_hardware_breakpoints;
 static void
 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
 				     struct cmd_list_element *c,
@@ -368,7 +368,7 @@ show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
    breakpoints until the next resume, and removes them again when the
    target fully stops.  This is a bit safer in case GDB crashes while
    processing user input.  */
-static int always_inserted_mode = 0;
+static bool always_inserted_mode = false;
 
 static void
 show_always_inserted_mode (struct ui_file *file, int from_tty,
@@ -477,7 +477,7 @@ static int executing_breakpoint_commands;
 static int overlay_events_enabled;
 
 /* See description in breakpoint.h. */
-int target_exact_watchpoints = 0;
+bool target_exact_watchpoints = false;
 
 /* Walk the following statement or block through all breakpoints.
    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
@@ -15954,7 +15954,7 @@ Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
 This supports most C printf format specifications, like %s, %d, etc.\n\
 This is useful for formatted output in user-defined commands."));
 
-  automatic_hardware_breakpoints = 1;
+  automatic_hardware_breakpoints = true;
 
   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 69a043c767..49380e30c2 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -675,7 +675,7 @@ enum watchpoint_triggered
    only one register per watchpoint, thus assuming that all acesses that
    modify a memory location happen at its starting address. */
 
-extern int target_exact_watchpoints;
+extern bool target_exact_watchpoints;
 
 /* Note that the ->silent field is not currently used by any commands
    (though the code is in there if it was to be, and set_raw_breakpoint
diff --git a/gdb/btrace.c b/gdb/btrace.c
index 466607dbfc..1b809fb5c0 100644
--- a/gdb/btrace.c
+++ b/gdb/btrace.c
@@ -51,7 +51,7 @@ static struct cmd_list_element *maint_btrace_pt_set_cmdlist;
 static struct cmd_list_element *maint_btrace_pt_show_cmdlist;
 
 /* Control whether to skip PAD packets when computing the packet history.  */
-static int maint_btrace_pt_skip_pad = 1;
+static bool maint_btrace_pt_skip_pad = true;
 
 static void btrace_add_pc (struct thread_info *tp);
 
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 4fc656775c..59c71f6756 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -165,7 +165,7 @@ struct cmd_list_element *showchecklist;
 /* Command tracing state.  */
 
 int source_verbose = 0;
-int trace_commands = 0;
+bool trace_commands = false;
 \f
 /* 'script-extension' option support.  */
 
diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h
index 5bfffde04a..1a8b9a0d50 100644
--- a/gdb/cli/cli-cmds.h
+++ b/gdb/cli/cli-cmds.h
@@ -139,7 +139,7 @@ extern gdb::optional<open_script>
 /* Command tracing state.  */
 
 extern int source_verbose;
-extern int trace_commands;
+extern bool trace_commands;
 
 /* Common code for the "with" and "maintenance with" commands.
    SET_CMD_PREFIX is the spelling of the corresponding "set" command
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 7d4b39f467..debffbc0f7 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -589,7 +589,7 @@ const char * const boolean_enums[] = { "on", "off", NULL };
    Returns the new command element.  */
 
 cmd_list_element *
-add_setshow_boolean_cmd (const char *name, enum command_class theclass, int *var,
+add_setshow_boolean_cmd (const char *name, enum command_class theclass, bool *var,
 			 const char *set_doc, const char *show_doc,
 			 const char *help_doc,
 			 cmd_const_sfunc_ftype *set_func,
diff --git a/gdb/cli/cli-logging.c b/gdb/cli/cli-logging.c
index 9e39be197b..22b540b481 100644
--- a/gdb/cli/cli-logging.c
+++ b/gdb/cli/cli-logging.c
@@ -33,7 +33,7 @@ show_logging_filename (struct ui_file *file, int from_tty,
 		    value);
 }
 
-static int logging_overwrite;
+static bool logging_overwrite;
 
 static void
 maybe_warn_already_logging ()
@@ -61,8 +61,8 @@ show_logging_overwrite (struct ui_file *file, int from_tty,
 }
 
 /* Value as configured by the user.  */
-static int logging_redirect;
-static int debug_redirect;
+static bool logging_redirect;
+static bool debug_redirect;
 
 static void
 set_logging_redirect (const char *args,
diff --git a/gdb/cli/cli-option.h b/gdb/cli/cli-option.h
index d231d8b1ad..3fd0c0cdae 100644
--- a/gdb/cli/cli-option.h
+++ b/gdb/cli/cli-option.h
@@ -82,7 +82,7 @@ public:
      returns the address of some member.  */
   union
     {
-      int *(*boolean) (const option_def &, void *ctx);
+      bool *(*boolean) (const option_def &, void *ctx);
       unsigned int *(*uinteger) (const option_def &, void *ctx);
       int *(*integer) (const option_def &, void *ctx);
       const char **(*enumeration) (const option_def &, void *ctx);
@@ -155,7 +155,7 @@ template<typename Context>
 struct boolean_option_def : option_def
 {
   boolean_option_def (const char *long_option_,
-		      int *(*get_var_address_cb_) (Context *),
+		      bool *(*get_var_address_cb_) (Context *),
 		      show_value_ftype *show_cmd_cb_,
 		      const char *set_doc_,
 		      const char *show_doc_ = nullptr,
@@ -165,7 +165,7 @@ struct boolean_option_def : option_def
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
   {
-    var_address.boolean = detail::get_var_address<int, Context>;
+    var_address.boolean = detail::get_var_address<bool, Context>;
   }
 };
 
@@ -173,11 +173,11 @@ struct boolean_option_def : option_def
    hood, but unlike boolean options, flag options don't take an on/off
    argument.  */
 
-template<typename Context = int>
+template<typename Context = bool>
 struct flag_option_def : boolean_option_def<Context>
 {
   flag_option_def (const char *long_option_,
-		     int *(*var_address_cb_) (Context *),
+		     bool *(*var_address_cb_) (Context *),
 		     const char *set_doc_,
 		     const char *help_doc_ = nullptr)
     : boolean_option_def<Context> (long_option_,
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 40538832b5..d8391597ac 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -416,9 +416,9 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
 
 	if (val < 0)
 	  error (_("\"on\" or \"off\" expected."));
-	if (val != *(int *) c->var)
+	if (val != *(bool *) c->var)
 	  {
-	    *(int *) c->var = val;
+	    *(bool *) c->var = val;
 
 	    option_changed = 1;
 	  }
@@ -588,7 +588,7 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
 	  break;
 	case var_boolean:
 	  {
-	    const char *opt = *(int *) c->var ? "on" : "off";
+	    const char *opt = *(bool *) c->var ? "on" : "off";
 
 	    gdb::observers::command_param_changed.notify (name, opt);
 	  }
@@ -645,7 +645,7 @@ get_setshow_command_value_string (cmd_list_element *c)
 	stb.puts (*(char **) c->var);
       break;
     case var_boolean:
-      stb.puts (*(int *) c->var ? "on" : "off");
+      stb.puts (*(bool *) c->var ? "on" : "off");
       break;
     case var_auto_boolean:
       switch (*(enum auto_boolean*) c->var)
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index e594e38cd6..ea301774d2 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -26,15 +26,15 @@
 /* True if styling is enabled.  */
 
 #if defined (__MSDOS__) || defined (__CYGWIN__)
-int cli_styling = 0;
+bool cli_styling = false;
 #else
-int cli_styling = 1;
+bool cli_styling = true;
 #endif
 
 /* True if source styling is enabled.  Note that this is only
    consulted when cli_styling is true.  */
 
-int source_styling = 1;
+bool source_styling = true;
 
 /* Name of colors; must correspond to ui_file_style::basic_color.  */
 static const char * const cli_colors[] = {
diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h
index cdcea84f0e..826162f578 100644
--- a/gdb/cli/cli-style.h
+++ b/gdb/cli/cli-style.h
@@ -110,9 +110,9 @@ extern cli_style_option title_style;
 
 
 /* True if source styling is enabled.  */
-extern int source_styling;
+extern bool source_styling;
 
 /* True if styling is enabled.  */
-extern int cli_styling;
+extern bool cli_styling;
 
 #endif /* CLI_CLI_STYLE_H */
diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
index cbe8ff66e1..33b8663e9a 100644
--- a/gdb/cli/cli-utils.h
+++ b/gdb/cli/cli-utils.h
@@ -215,9 +215,9 @@ check_for_argument (char **str, const char *arg)
 
 struct qcs_flags
 {
-  int quiet = false;
-  int cont = false;
-  int silent = false;
+  bool quiet = false;
+  bool cont = false;
+  bool silent = false;
 };
 
 /* Validate FLAGS.  Throws an error if both FLAGS->CONT and
diff --git a/gdb/command.h b/gdb/command.h
index 2c608048d5..cf190ef649 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -62,8 +62,8 @@ cmd_types;
 /* Types of "set" or "show" command.  */
 typedef enum var_types
   {
-    /* "on" or "off".  *VAR is an integer which is nonzero for on,
-       zero for off.  */
+    /* "on" or "off".  *VAR is a bool which is true for on,
+       false for off.  */
     var_boolean,
 
     /* "on" / "true" / "enable" or "off" / "false" / "disable" or
@@ -331,7 +331,7 @@ extern void add_setshow_auto_boolean_cmd (const char *name,
 extern cmd_list_element *
   add_setshow_boolean_cmd (const char *name,
 			   enum command_class theclass,
-			   int *var,
+			   bool *var,
 			   const char *set_doc, const char *show_doc,
 			   const char *help_doc,
 			   cmd_const_sfunc_ftype *set_func,
diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c
index 3a7c8b01f7..042c2afbe9 100644
--- a/gdb/compile/compile-cplus-types.c
+++ b/gdb/compile/compile-cplus-types.c
@@ -41,11 +41,11 @@ const char *compile_cplus_instance::m_default_cflags = "-std=gnu++11";
 
 /* Flag to enable internal debugging.  */
 
-static int debug_compile_cplus_types = 0;
+static bool debug_compile_cplus_types = false;
 
 /* Flag to enable internal scope switching debugging.  */
 
-static int debug_compile_cplus_scopes = 0;
+static bool debug_compile_cplus_scopes = false;
 
 /* Forward declarations.  */
 
diff --git a/gdb/compile/compile-internal.h b/gdb/compile/compile-internal.h
index 406a369d68..9c0e989410 100644
--- a/gdb/compile/compile-internal.h
+++ b/gdb/compile/compile-internal.h
@@ -21,7 +21,7 @@
 
 /* Debugging flag for the "compile" family of commands.  */
 
-extern int compile_debug;
+extern bool compile_debug;
 
 struct block;
 
diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c
index 87970d2c94..5c3400ffec 100644
--- a/gdb/compile/compile.c
+++ b/gdb/compile/compile.c
@@ -56,7 +56,7 @@ static struct cmd_list_element *compile_command_list;
 
 /* Debug flag for "compile" commands.  */
 
-int compile_debug;
+bool compile_debug;
 
 /* Object of this type are stored in the compiler's symbol_err_map.  */
 
@@ -241,7 +241,7 @@ show_compile_debug (struct ui_file *file, int from_tty,
 struct compile_options
 {
   /* For -raw.  */
-  int raw = false;
+  bool raw = false;
 };
 
 using compile_flag_option_def
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index b8b0fcc0ae..cd732b60e7 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1469,10 +1469,10 @@ cp_lookup_rtti_type (const char *name, const struct block *block)
 
 #ifdef HAVE_WORKING_FORK
 
-/* If nonzero, attempt to catch crashes in the demangler and print
+/* If true, attempt to catch crashes in the demangler and print
    useful debugging information.  */
 
-static int catch_demangler_crashes = 1;
+static bool catch_demangler_crashes = true;
 
 /* Stack context and environment for demangler crash recovery.  */
 
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 8eda05806f..706f65db28 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -148,7 +148,7 @@ extern const struct cris_spec_reg cris_spec_regs[];
 static unsigned int usr_cmd_cris_version;
 
 /* Indicates whether to trust the above variable.  */
-static int usr_cmd_cris_version_valid = 0;
+static bool usr_cmd_cris_version_valid = false;
 
 static const char cris_mode_normal[] = "normal";
 static const char cris_mode_guru[] = "guru";
@@ -163,7 +163,7 @@ static const char *const cris_modes[] = {
 static const char *usr_cmd_cris_mode = cris_mode_normal;
 
 /* Whether to make use of Dwarf-2 CFI (default on).  */
-static int usr_cmd_cris_dwarf2_cfi = 1;
+static bool usr_cmd_cris_dwarf2_cfi = true;
 
 /* Sigtramp identification code copied from i386-linux-tdep.c.  */
 
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 54b856af06..a6f78a187c 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -59,7 +59,7 @@
 #include <vector>
 
 /* Control debugging information emitted in this file.  */
-static int csky_debug = 0;
+static bool csky_debug = false;
 
 static struct reggroup *cr_reggroup;
 static struct reggroup *fr_reggroup;
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 8f71def069..ceef36473d 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -120,7 +120,7 @@ static vm_size_t mach_page_size;
 
 /* If Set, catch all mach exceptions (before they are converted to signals
    by the kernel).  */
-static int enable_mach_exceptions;
+static bool enable_mach_exceptions;
 
 /* Inferior that should report a fake stop event.  */
 static struct inferior *darwin_inf_fake_stop;
diff --git a/gdb/dcache.c b/gdb/dcache.c
index 1716def4c4..509782c319 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -126,7 +126,7 @@ static int dcache_read_line (DCACHE *dcache, struct dcache_block *db);
 
 static struct dcache_block *dcache_alloc (DCACHE *dcache, CORE_ADDR addr);
 
-static int dcache_enabled_p = 0; /* OBSOLETE */
+static bool dcache_enabled_p = false; /* OBSOLETE */
 
 static void
 show_dcache_enabled_p (struct ui_file *file, int from_tty,
diff --git a/gdb/defs.h b/gdb/defs.h
index c9a38b60a6..f12ba366cc 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -314,7 +314,7 @@ struct ui;
 
 extern int input_interactive_p (struct ui *);
 
-extern int info_verbose;
+extern bool info_verbose;
 
 /* From printcmd.c */
 
diff --git a/gdb/demangle.c b/gdb/demangle.c
index 29f46968a2..cfe3421b23 100644
--- a/gdb/demangle.c
+++ b/gdb/demangle.c
@@ -44,7 +44,7 @@
 #endif
 
 /* See documentation in gdb-demangle.h.  */
-int demangle = 1;
+bool demangle = true;
 
 static void
 show_demangle (struct ui_file *file, int from_tty,
@@ -57,7 +57,7 @@ show_demangle (struct ui_file *file, int from_tty,
 }
 
 /* See documentation in gdb-demangle.h.  */
-int asm_demangle = 0;
+bool asm_demangle = false;
 
 static void
 show_asm_demangle (struct ui_file *file, int from_tty,
diff --git a/gdb/dwarf-index-cache.c b/gdb/dwarf-index-cache.c
index e56cb59343..d00d6511ab 100644
--- a/gdb/dwarf-index-cache.c
+++ b/gdb/dwarf-index-cache.c
@@ -32,8 +32,8 @@
 #include <string>
 #include <stdlib.h>
 
-/* When set to 1, show debug messages about the index cache.  */
-static int debug_index_cache = 0;
+/* When set to true, show debug messages about the index cache.  */
+static bool debug_index_cache = false;
 
 /* The index cache directory, used for "set/show index-cache directory".  */
 static char *index_cache_directory = NULL;
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index 7839942b8c..e18b35e7db 100644
--- a/gdb/dwarf2-frame.c
+++ b/gdb/dwarf2-frame.c
@@ -171,7 +171,7 @@ static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
 \f
 
 /* See dwarf2-frame.h.  */
-int dwarf2_frame_unwinders_enabled_p = 1;
+bool dwarf2_frame_unwinders_enabled_p = true;
 
 /* Store the length the expression for the CFA in the `cfa_reg' field,
    which is unused in that case.  */
diff --git a/gdb/dwarf2-frame.h b/gdb/dwarf2-frame.h
index 6caf82ae0f..3c54f0950e 100644
--- a/gdb/dwarf2-frame.h
+++ b/gdb/dwarf2-frame.h
@@ -201,7 +201,7 @@ struct dwarf2_frame_state
    registered with the gdbarch.  Not all architectures can or do use the
    DWARF unwinders.  Setting this to true on a target that does not
    otherwise support the DWARF unwinders has no effect.  */
-extern int dwarf2_frame_unwinders_enabled_p;
+extern bool dwarf2_frame_unwinders_enabled_p;
 
 /* Set the architecture-specific register state initialization
    function for GDBARCH to INIT_REG.  */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index a2b80ebbc1..ea9904c416 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -102,11 +102,11 @@ static unsigned int dwarf_die_debug = 0;
 /* When non-zero, dump line number entries as they are read in.  */
 static unsigned int dwarf_line_debug = 0;
 
-/* When non-zero, cross-check physname against demangler.  */
-static int check_physname = 0;
+/* When true, cross-check physname against demangler.  */
+static bool check_physname = false;
 
-/* When non-zero, do not reject deprecated .gdb_index sections.  */
-static int use_deprecated_index_sections = 0;
+/* When true, do not reject deprecated .gdb_index sections.  */
+static bool use_deprecated_index_sections = false;
 
 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
 
@@ -25837,7 +25837,7 @@ show_dwarf_cmd (const char *args, int from_tty)
   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
 }
 
-int dwarf_always_disassemble;
+bool dwarf_always_disassemble;
 
 static void
 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
diff --git a/gdb/eval.c b/gdb/eval.c
index aed89e5f85..f8915b9957 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -43,7 +43,7 @@
 #include <ctype.h>
 
 /* This is defined in valops.c */
-extern int overload_resolution;
+extern bool overload_resolution;
 
 /* Prototypes for local functions.  */
 
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 2132fb550d..0b05b2f85a 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -86,11 +86,11 @@ static void async_sigterm_handler (gdb_client_data arg);
    ezannoni: as of 1999-04-29 I expect that this
    variable will not be used after gdb is changed to use the event
    loop as default engine, and event-top.c is merged into top.c.  */
-int set_editing_cmd_var;
+bool set_editing_cmd_var;
 
 /* This is used to display the notification of the completion of an
    asynchronous execution command.  */
-int exec_done_display_p = 0;
+bool exec_done_display_p = false;
 
 /* Used by the stdin event handler to compensate for missed stdin events.
    Setting this to a non-zero value inside an stdin callback makes the callback
diff --git a/gdb/event-top.h b/gdb/event-top.h
index 4c3e6cb861..1dc7b13d4f 100644
--- a/gdb/event-top.h
+++ b/gdb/event-top.h
@@ -52,8 +52,8 @@ extern void async_enable_stdin (void);
 /* Exported variables from event-top.c.
    FIXME: these should really go into top.h.  */
 
-extern int set_editing_cmd_var;
-extern int exec_done_display_p;
+extern bool set_editing_cmd_var;
+extern bool exec_done_display_p;
 extern struct prompts the_prompts;
 extern void (*after_char_processing_hook) (void);
 extern int call_stdin_event_handler_again_p;
diff --git a/gdb/exec.c b/gdb/exec.c
index 3098fcaadd..4e4cacffda 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -84,7 +84,7 @@ static exec_target exec_ops;
 
 /* Whether to open exec and core files read-only or read-write.  */
 
-int write_files = 0;
+bool write_files = false;
 static void
 show_write_files (struct ui_file *file, int from_tty,
 		  struct cmd_list_element *c, const char *value)
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index 5f121fc6f2..0274ff542e 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -832,8 +832,8 @@ fbsd_nat_target::xfer_partial (enum target_object object,
 }
 
 #ifdef PT_LWPINFO
-static int debug_fbsd_lwp;
-static int debug_fbsd_nat;
+static bool debug_fbsd_lwp;
+static bool debug_fbsd_nat;
 
 static void
 show_fbsd_lwp_debug (struct ui_file *file, int from_tty,
diff --git a/gdb/frame.h b/gdb/frame.h
index 09842c92a3..624bc87c9d 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -808,9 +808,9 @@ struct frame_print_options
   const char *print_frame_info = print_frame_info_auto;
   const char *print_entry_values = print_entry_values_default;
 
-  /* If non-zero, don't invoke pretty-printers for frame
+  /* If true, don't invoke pretty-printers for frame
      arguments.  */
-  int print_raw_frame_arguments;
+  bool print_raw_frame_arguments;
 };
 
 /* The values behind the global "set print ..." settings.  */
@@ -931,11 +931,11 @@ struct set_backtrace_options
 {
   /* Flag to indicate whether backtraces should continue past
      main.  */
-  int backtrace_past_main = 0;
+  bool backtrace_past_main = false;
 
   /* Flag to indicate whether backtraces should continue past
      entry.  */
-  int backtrace_past_entry = 0;
+  bool backtrace_past_entry = false;
 
   /* Upper bound on the number of backtrace levels.  Note this is not
      exposed as a command option, because "backtrace" and "frame
diff --git a/gdb/gdb-demangle.h b/gdb/gdb-demangle.h
index 9c944a5017..327a63313b 100644
--- a/gdb/gdb-demangle.h
+++ b/gdb/gdb-demangle.h
@@ -19,14 +19,14 @@
 #ifndef GDB_DEMANGLE_H
 #define GDB_DEMANGLE_H
 
-/* Nonzero means that encoded C++/ObjC names should be printed out in their
+/* True means that encoded C++/ObjC names should be printed out in their
    C++/ObjC form rather than raw.  */
-extern int demangle;
+extern bool demangle;
 
-/* Nonzero means that encoded C++/ObjC names should be printed out in their
+/* True means that encoded C++/ObjC names should be printed out in their
    C++/ObjC form even in assembler language displays.  If this is set, but
-   DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls.  */
-extern int asm_demangle;
+   DEMANGLE is false, names are printed raw, i.e. DEMANGLE controls.  */
+extern bool asm_demangle;
 
 /* Check if a character is one of the commonly used C++ marker characters.  */
 extern int is_cplus_marker (int);
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index d3b4c749f5..a17460a8a0 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -137,7 +137,7 @@ static htab_t gdb_bfd_cache;
 /* When true gdb will reuse an existing bfd object if the filename,
    modification time, and file size all match.  */
 
-static int bfd_sharing = 1;
+static bool bfd_sharing = true;
 static void
 show_bfd_sharing  (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h
index 6f9b4d88ec..cac91c097b 100644
--- a/gdb/gdbcore.h
+++ b/gdb/gdbcore.h
@@ -137,7 +137,7 @@ extern void specify_exec_file_hook (void (*hook) (const char *filename));
 
 /* Whether to open exec and core files read-only or read-write.  */
 
-extern int write_files;
+extern bool write_files;
 
 /* Open and set up the core file bfd.  */
 
diff --git a/gdb/gdbsupport/common-debug.c b/gdb/gdbsupport/common-debug.c
index 97c90032eb..7e7e5c3f01 100644
--- a/gdb/gdbsupport/common-debug.c
+++ b/gdb/gdbsupport/common-debug.c
@@ -22,7 +22,7 @@
 
 /* See gdbsupport/common-debug.h.  */
 
-int show_debug_regs;
+bool show_debug_regs;
 
 /* See gdbsupport/common-debug.h.  */
 
diff --git a/gdb/gdbsupport/common-debug.h b/gdb/gdbsupport/common-debug.h
index d5bfc9eb3a..5584f09844 100644
--- a/gdb/gdbsupport/common-debug.h
+++ b/gdb/gdbsupport/common-debug.h
@@ -20,10 +20,10 @@
 #ifndef COMMON_COMMON_DEBUG_H
 #define COMMON_COMMON_DEBUG_H
 
-/* Set to nonzero to enable debugging of hardware breakpoint/
+/* Set to true to enable debugging of hardware breakpoint/
    watchpoint support code.  */
 
-extern int show_debug_regs;
+extern bool show_debug_regs;
 
 /* Print a formatted message to the appropriate channel for
    debugging output for the client.  */
diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h
index 04230d3c17..0daea9c2da 100644
--- a/gdb/gdbthread.h
+++ b/gdb/gdbthread.h
@@ -623,7 +623,7 @@ extern void thread_command (const char *tidstr, int from_tty);
 
 /* Print notices on thread events (attach, detach, etc.), set with
    `set print thread-events'.  */
-extern int print_thread_events;
+extern bool print_thread_events;
 
 /* Prints the list of threads and their details on UIOUT.  If
    REQUESTED_THREADS, a list of GDB ids/ranges, is not NULL, only
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 4bc02e08f9..afda89e43f 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -116,7 +116,7 @@ const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
 
 /* Should opaque types be resolved?  */
 
-static int opaque_type_resolution = 1;
+static bool opaque_type_resolution = true;
 
 /* A flag to enable printing of debugging information of C++
    overloading.  */
@@ -125,7 +125,7 @@ unsigned int overload_debug = 0;
 
 /* A flag to enable strict type checking.  */
 
-static int strict_type_checking = 1;
+static bool strict_type_checking = true;
 
 /* A function to show whether opaque types are resolved.  */
 
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index 80e78e859b..b55c75b097 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -93,7 +93,7 @@ int proc_wait_pid = 0;
 /* The number of wait requests we've sent, and expect replies from.  */
 int proc_waits_pending = 0;
 
-int gnu_debug_flag = 0;
+bool gnu_debug_flag = false;
 
 /* Forward decls */
 
diff --git a/gdb/guile/scm-auto-load.c b/gdb/guile/scm-auto-load.c
index cadf987b6f..4685969348 100644
--- a/gdb/guile/scm-auto-load.c
+++ b/gdb/guile/scm-auto-load.c
@@ -30,7 +30,7 @@
    set auto-load guile-scripts on|off
    This is true if we should auto-load associated Guile scripts when an
    objfile is opened, false otherwise.  */
-static int auto_load_guile_scripts = 1;
+static bool auto_load_guile_scripts = true;
 
 /* "show" command for the auto_load_guile_scripts configuration variable.  */
 
diff --git a/gdb/guile/scm-param.c b/gdb/guile/scm-param.c
index 53120cb23e..6d24c2c37b 100644
--- a/gdb/guile/scm-param.c
+++ b/gdb/guile/scm-param.c
@@ -31,7 +31,10 @@
 
 union pascm_variable
 {
-  /* Hold an integer value, for boolean and integer types.  */
+  /* Hold an boolean value.  */
+  bool boolval;
+
+  /* Hold an integer value.  */
   int intval;
 
   /* Hold an auto_boolean.  */
@@ -365,7 +368,7 @@ add_setshow_generic (enum var_types param_type, enum command_class cmd_class,
     {
     case var_boolean:
       add_setshow_boolean_cmd (cmd_name, cmd_class,
-			       &self->value.intval,
+			       &self->value.boolval,
 			       set_doc, show_doc, help_doc,
 			       set_func, show_func,
 			       set_list, show_list);
@@ -606,7 +609,7 @@ pascm_param_value (enum var_types type, void *var,
 
     case var_boolean:
       {
-	if (* (int *) var)
+	if (* (bool *) var)
 	  return SCM_BOOL_T;
 	else
 	  return SCM_BOOL_F;
@@ -717,7 +720,7 @@ pascm_set_param_value_x (enum var_types type, union pascm_variable *var,
     case var_boolean:
       SCM_ASSERT_TYPE (gdbscm_is_bool (value), value, arg_pos, func_name,
 		       _("boolean"));
-      var->intval = gdbscm_is_true (value);
+      var->boolval = gdbscm_is_true (value);
       break;
 
     case var_auto_boolean:
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index be30359638..b1f71883ec 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -41,7 +41,7 @@
 #include "hppa-tdep.h"
 #include <algorithm>
 
-static int hppa_debug = 0;
+static bool hppa_debug = false;
 
 /* Some local constants.  */
 static const int hppa32_num_regs = 128;
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 23f17ee0e2..726f14d525 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -55,7 +55,7 @@
    asynchronous inferior function call implementation, and that in
    turn means restructuring the code so that it is event driven.  */
 
-static int may_call_functions_p = 1;
+static bool may_call_functions_p = true;
 static void
 show_may_call_functions_p (struct ui_file *file, int from_tty,
 			   struct cmd_list_element *c,
@@ -86,7 +86,7 @@ show_may_call_functions_p (struct ui_file *file, int from_tty,
    trust the debug information; the user can override this behavior
    with "set coerce-float-to-double 0".  */
 
-static int coerce_float_to_double_p = 1;
+static bool coerce_float_to_double_p = true;
 static void
 show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
 			       struct cmd_list_element *c, const char *value)
@@ -104,7 +104,7 @@ show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
 
    The default is to stop in the frame where the signal was received.  */
 
-static int unwind_on_signal_p = 0;
+static bool unwind_on_signal_p = false;
 static void
 show_unwind_on_signal_p (struct ui_file *file, int from_tty,
 			 struct cmd_list_element *c, const char *value)
@@ -127,7 +127,7 @@ show_unwind_on_signal_p (struct ui_file *file, int from_tty,
    The default is to unwind the frame if a std::terminate call is
    made.  */
 
-static int unwind_on_terminating_exception_p = 1;
+static bool unwind_on_terminating_exception_p = true;
 
 static void
 show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index d7a7e6f933..dc82ef043f 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -105,7 +105,7 @@ int stopped_by_random_signal;
 
 /* See inferior.h.  */
 
-int startup_with_shell = 1;
+bool startup_with_shell = true;
 
 \f
 /* Accessor routines.  */
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 2d58a11ba8..cf2175494d 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -46,7 +46,7 @@ struct inferior *inferior_list = NULL;
 static int highest_inferior_num;
 
 /* See inferior.h.  */
-int print_inferior_events = 1;
+bool print_inferior_events = true;
 
 /* The Current Inferior.  This is a strong reference.  I.e., whenever
    an inferior is the current inferior, its refcount is
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 9cfb03cdbb..3a64a7cfea 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -244,7 +244,7 @@ extern void prepare_execution_command (struct target_ops *target,
 
    The catch-exec traps expected during start-up will be one more if
    the target is started up with a shell.  */
-extern int startup_with_shell;
+extern bool startup_with_shell;
 
 /* Nonzero if stopped due to completion of a stack dummy routine.  */
 
@@ -257,7 +257,7 @@ extern int stopped_by_random_signal;
 
 /* Print notices on inferior events (attach, detach, etc.), set with
    `set print inferior-events'.  */
-extern int print_inferior_events;
+extern bool print_inferior_events;
 
 /* Anything but NO_STOP_QUIETLY means we expect a trap and the caller
    will handle it themselves.  STOP_QUIETLY is used when running in
diff --git a/gdb/infrun.c b/gdb/infrun.c
index a9588f896a..be29cbe4f5 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -136,7 +136,7 @@ mark_infrun_async_event_handler (void)
 /* When set, stop the 'step' command if we enter a function which has
    no line number information.  The normal behavior is that we step
    over such function.  */
-int step_stop_if_no_debug = 0;
+bool step_stop_if_no_debug = false;
 static void
 show_step_stop_if_no_debug (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
@@ -155,9 +155,9 @@ static ptid_t previous_inferior_ptid;
    Exactly which branch is detached depends on 'set follow-fork-mode'
    setting.  */
 
-static int detach_fork = 1;
+static bool detach_fork = true;
 
-int debug_displaced = 0;
+bool debug_displaced = false;
 static void
 show_debug_displaced (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
@@ -176,7 +176,7 @@ show_debug_infrun (struct ui_file *file, int from_tty,
 
 /* Support for disabling address space randomization.  */
 
-int disable_randomization = 1;
+bool disable_randomization = true;
 
 static void
 show_disable_randomization (struct ui_file *file, int from_tty,
@@ -205,8 +205,8 @@ set_disable_randomization (const char *args, int from_tty,
 
 /* User interface for non-stop mode.  */
 
-int non_stop = 0;
-static int non_stop_1 = 0;
+bool non_stop = false;
+static bool non_stop_1 = false;
 
 static void
 set_non_stop (const char *args, int from_tty,
@@ -234,8 +234,8 @@ show_non_stop (struct ui_file *file, int from_tty,
    non-stop, in which all GDB operations that might affect the
    target's execution have been disabled.  */
 
-int observer_mode = 0;
-static int observer_mode_1 = 0;
+bool observer_mode = false;
+static bool observer_mode_1 = false;
 
 static void
 set_observer_mode (const char *args, int from_tty,
@@ -256,7 +256,7 @@ set_observer_mode (const char *args, int from_tty,
   /* We can insert fast tracepoints in or out of observer mode,
      but enable them if we're going into this mode.  */
   if (observer_mode)
-    may_insert_fast_tracepoints = 1;
+    may_insert_fast_tracepoints = true;
   may_stop = !observer_mode;
   update_target_permissions ();
 
@@ -265,7 +265,7 @@ set_observer_mode (const char *args, int from_tty,
   if (observer_mode)
     {
       pagination_enabled = 0;
-      non_stop = non_stop_1 = 1;
+      non_stop = non_stop_1 = true;
     }
 
   if (from_tty)
@@ -289,13 +289,11 @@ show_observer_mode (struct ui_file *file, int from_tty,
 void
 update_observer_mode (void)
 {
-  int newval;
-
-  newval = (!may_insert_breakpoints
-	    && !may_insert_tracepoints
-	    && may_insert_fast_tracepoints
-	    && !may_stop
-	    && non_stop);
+  bool newval = (!may_insert_breakpoints
+		 && !may_insert_tracepoints
+		 && may_insert_fast_tracepoints
+		 && !may_stop
+		 && non_stop);
 
   /* Let the user know if things change.  */
   if (newval != observer_mode)
@@ -2089,7 +2087,7 @@ set_schedlock_func (const char *args, int from_tty, struct cmd_list_element *c)
 /* True if execution commands resume all threads of all processes by
    default; otherwise, resume only threads of the current inferior
    process.  */
-int sched_multi = 0;
+bool sched_multi = false;
 
 /* Try to setup for software single stepping over the specified location.
    Return 1 if target_resume() should use hardware single step.
diff --git a/gdb/infrun.h b/gdb/infrun.h
index 30374ee51c..2b2a3a3e44 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -30,7 +30,7 @@ struct return_value_info;
 extern unsigned int debug_infrun;
 
 /* True if we are debugging displaced stepping.  */
-extern int debug_displaced;
+extern bool debug_displaced;
 
 /* Nonzero if we want to give control to the user when we're notified
    of shared library events by the dynamic linker.  */
@@ -39,24 +39,24 @@ extern int stop_on_solib_events;
 /* True if execution commands resume all threads of all processes by
    default; otherwise, resume only threads of the current inferior
    process.  */
-extern int sched_multi;
+extern bool sched_multi;
 
 /* When set, stop the 'step' command if we enter a function which has
    no line number information.  The normal behavior is that we step
    over such function.  */
-extern int step_stop_if_no_debug;
+extern bool step_stop_if_no_debug;
 
 /* If set, the inferior should be controlled in non-stop mode.  In
    this mode, each thread is controlled independently.  Execution
    commands apply only to the selected thread by default, and stop
    events stop only the thread that had the event -- the other threads
    are kept running freely.  */
-extern int non_stop;
+extern bool non_stop;
 
 /* When set (default), the target should attempt to disable the
    operating system's address space randomization feature when
    starting an inferior.  */
-extern int disable_randomization;
+extern bool disable_randomization;
 
 /* Returns a unique identifier for the current stop.  This can be used
    to tell whether a command has proceeded the inferior past the
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 7d0c3e9fc9..ff888a9067 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -91,12 +91,12 @@ struct smaps_vmflags
 /* Whether to take the /proc/PID/coredump_filter into account when
    generating a corefile.  */
 
-static int use_coredump_filter = 1;
+static bool use_coredump_filter = true;
 
 /* Whether the value of smaps_vmflags->exclude_coredump should be
    ignored, including mappings marked with the VM_DONTDUMP flag in
    the dump.  */
-static int dump_excluded_mappings = 0;
+static bool dump_excluded_mappings = false;
 
 /* This enum represents the signals' numbers on a generic architecture
    running the Linux kernel.  The definition of "generic" comes from
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 1d32e9195c..100434e2c9 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -110,13 +110,13 @@ public:
 
 static char *libthread_db_search_path;
 
-/* Set to non-zero if thread_db auto-loading is enabled
+/* Set to true if thread_db auto-loading is enabled
    by the "set auto-load libthread-db" command.  */
-static int auto_load_thread_db = 1;
+static bool auto_load_thread_db = true;
 
-/* Set to non-zero if load-time libthread_db tests have been enabled
+/* Set to true if load-time libthread_db tests have been enabled
    by the "maintenence set check-libthread-db" command.  */
-static int check_thread_db_on_load = 0;
+static bool check_thread_db_on_load = false;
 
 /* "show" command for the auto_load_thread_db configuration variable.  */
 
diff --git a/gdb/main.c b/gdb/main.c
index 6b75fced23..7fab8ff8da 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -594,6 +594,9 @@ captured_main_1 (struct captured_main_args *context)
       OPT_READNOW,
       OPT_READNEVER
     };
+    /* This struct requires int* in the struct, but write_files is a bool.
+       So use this temporary int that we write back after argument parsing.  */
+    int write_files_1 = 0;
     static struct option long_options[] =
     {
       {"tui", no_argument, 0, OPT_TUI},
@@ -658,7 +661,7 @@ captured_main_1 (struct captured_main_args *context)
       {"w", no_argument, NULL, OPT_WINDOWS},
       {"windows", no_argument, NULL, OPT_WINDOWS},
       {"statistics", no_argument, 0, OPT_STATISTICS},
-      {"write", no_argument, &write_files, 1},
+      {"write", no_argument, &write_files_1, 1},
       {"args", no_argument, &set_args, 1},
       {"l", required_argument, 0, 'l'},
       {"return-child-result", no_argument, &return_child_result, 1},
@@ -842,6 +845,7 @@ captured_main_1 (struct captured_main_args *context)
 		   gdb_program_name);
 	  }
       }
+    write_files = (write_files_1 != 0);
 
     if (batch_flag)
       {
diff --git a/gdb/maint-test-options.c b/gdb/maint-test-options.c
index 7039f932f1..9bda34a3fd 100644
--- a/gdb/maint-test-options.c
+++ b/gdb/maint-test-options.c
@@ -126,10 +126,10 @@ static const char *const test_options_enum_values_choices[] =
 
 struct test_options_opts
 {
-  int flag_opt = 0;
-  int xx1_opt = 0;
-  int xx2_opt = 0;
-  int boolean_opt = 0;
+  bool flag_opt = false;
+  bool xx1_opt = false;
+  bool xx2_opt = false;
+  bool boolean_opt = false;
   const char *enum_opt = test_options_enum_values_xxx;
   unsigned int uint_opt = 0;
   int zuint_unl_opt = 0;
diff --git a/gdb/maint-test-settings.c b/gdb/maint-test-settings.c
index a1c43ee917..86d201a3c6 100644
--- a/gdb/maint-test-settings.c
+++ b/gdb/maint-test-settings.c
@@ -50,7 +50,7 @@ maintenance_show_test_settings_cmd (const char *args, int from_tty)
 /* Control variables for all the "maintenance set/show test-settings
    xxx" commands.  */
 
-static int maintenance_test_settings_boolean;
+static bool maintenance_test_settings_boolean;
 
 static auto_boolean maintenance_test_settings_auto_boolean = AUTO_BOOLEAN_AUTO;
 
diff --git a/gdb/maint.c b/gdb/maint.c
index 1a621a1719..b8eb93827c 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -770,7 +770,7 @@ maintenance_with_cmd_completer (struct cmd_list_element *ignore,
 
 /* Profiling support.  */
 
-static int maintenance_profile_p;
+static bool maintenance_profile_p;
 static void
 show_maintenance_profile_p (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
@@ -841,17 +841,17 @@ maintenance_set_profile_cmd (const char *args, int from_tty,
 }
 #endif
 \f
-/* If nonzero, display time usage both at startup and for each command.  */
+/* If true, display time usage both at startup and for each command.  */
 
-static int per_command_time;
+static bool per_command_time;
 
-/* If nonzero, display space usage both at startup and for each command.  */
+/* If true, display space usage both at startup and for each command.  */
 
-static int per_command_space;
+static bool per_command_space;
 
-/* If nonzero, display basic symtab stats for each command.  */
+/* If true, display basic symtab stats for each command.  */
 
-static int per_command_symtab;
+static bool per_command_symtab;
 
 /* mt per-command commands.  */
 
diff --git a/gdb/memattr.c b/gdb/memattr.c
index e695f6e07e..0475780b29 100644
--- a/gdb/memattr.c
+++ b/gdb/memattr.c
@@ -53,7 +53,7 @@ static bool target_mem_regions_valid;
 /* If this flag is set, gdb will assume that memory ranges not
    specified by the memory map have type MEM_NONE, and will
    emit errors on all accesses to that memory.  */
-static int inaccessible_by_default = 1;
+static bool inaccessible_by_default = true;
 
 static void
 show_inaccessible_by_default (struct ui_file *file, int from_tty,
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 5dc436bfd8..2ece360205 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -101,11 +101,11 @@ static void output_register (struct frame_info *, int regnum, int format,
 			     int skip_unavailable);
 
 /* Controls whether the frontend wants MI in async mode.  */
-static int mi_async = 0;
+static bool mi_async = false;
 
 /* The set command writes to this variable.  If the inferior is
    executing, mi_async is *not* updated.  */
-static int mi_async_1 = 0;
+static bool mi_async_1 = false;
 
 static void
 set_mi_async_command (const char *args, int from_tty,
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 3fb53bc76d..37a1b2a0b8 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -858,7 +858,7 @@ static int heuristic_fence_post = 0;
    register N.  NOTE: This defines the pseudo register type so need to
    rebuild the architecture vector.  */
 
-static int mips64_transfers_32bit_regs_p = 0;
+static bool mips64_transfers_32bit_regs_p = false;
 
 static void
 set_mips64_transfers_32bit_regs (const char *args, int from_tty,
diff --git a/gdb/nat/fork-inferior.h b/gdb/nat/fork-inferior.h
index 1d0519fb26..065496c382 100644
--- a/gdb/nat/fork-inferior.h
+++ b/gdb/nat/fork-inferior.h
@@ -72,7 +72,7 @@ extern ptid_t startup_inferior (pid_t pid, int ntraps,
 
    The catch-exec traps expected during start-up will be one more if
    the target is started up with a shell.  */
-extern int startup_with_shell;
+extern bool startup_with_shell;
 
 /* Perform any necessary tasks before a fork/vfork takes place.  ARGS
    is a string containing all the arguments received by the inferior.
diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c
index e49bc1ade3..8cadea9be2 100644
--- a/gdb/nat/linux-namespaces.c
+++ b/gdb/nat/linux-namespaces.c
@@ -31,7 +31,7 @@
 #include "gdbsupport/scope-exit.h"
 
 /* See nat/linux-namespaces.h.  */
-int debug_linux_namespaces;
+bool debug_linux_namespaces;
 
 /* Handle systems without fork.  */
 
diff --git a/gdb/nat/linux-namespaces.h b/gdb/nat/linux-namespaces.h
index 166b11cbdc..fe7e8a452e 100644
--- a/gdb/nat/linux-namespaces.h
+++ b/gdb/nat/linux-namespaces.h
@@ -20,9 +20,9 @@
 #ifndef NAT_LINUX_NAMESPACES_H
 #define NAT_LINUX_NAMESPACES_H
 
-/* Set to nonzero to enable debugging of Linux namespaces code.  */
+/* Set to true to enable debugging of Linux namespaces code.  */
 
-extern int debug_linux_namespaces;
+extern bool debug_linux_namespaces;
 
 /* Enumeration of Linux namespace types.  */
 
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index 8d685d4aca..cb17e4f375 100644
--- a/gdb/nios2-tdep.c
+++ b/gdb/nios2-tdep.c
@@ -52,7 +52,7 @@
 
 /* Control debugging information emitted in this file.  */
 
-static int nios2_debug = 0;
+static bool nios2_debug = false;
 
 /* The following structures are used in the cache for prologue
    analysis; see the reg_value and reg_saved tables in
diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
index 8f6f6e1960..6a6dce1527 100644
--- a/gdb/or1k-tdep.c
+++ b/gdb/or1k-tdep.c
@@ -50,7 +50,7 @@
 
 /* Global debug flag.  */
 
-static int or1k_debug = 0;
+static bool or1k_debug = false;
 
 static void
 show_or1k_debug (struct ui_file *file, int from_tty,
diff --git a/gdb/parse.c b/gdb/parse.c
index a1ab75297a..a17cae6b55 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -74,8 +74,8 @@ show_expressiondebug (struct ui_file *file, int from_tty,
 }
 
 
-/* Non-zero if an expression parser should set yydebug.  */
-int parser_debug;
+/* True if an expression parser should set yydebug.  */
+bool parser_debug;
 
 static void
 show_parserdebug (struct ui_file *file, int from_tty,
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
index 33670b29c4..64aa9b8b1e 100644
--- a/gdb/parser-defs.h
+++ b/gdb/parser-defs.h
@@ -32,7 +32,7 @@ struct language_defn;
 struct internalvar;
 class innermost_block_tracker;
 
-extern int parser_debug;
+extern bool parser_debug;
 
 /* A class that can be used to build a "struct expression".  */
 
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 22356bfd6d..b3f7b59863 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -100,7 +100,7 @@ show_max_symbolic_offset (struct ui_file *file, int from_tty,
 
 /* Append the source filename and linenumber of the symbol when
    printing a symbolic value as `<symbol at filename:linenum>' if set.  */
-static int print_symbol_filename = 0;
+static bool print_symbol_filename = false;
 static void
 show_print_symbol_filename (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
diff --git a/gdb/proc-api.c b/gdb/proc-api.c
index cb2eaf8cb1..214b26f40c 100644
--- a/gdb/proc-api.c
+++ b/gdb/proc-api.c
@@ -50,7 +50,7 @@ struct trans {
   const char *desc;             /* Short description of value */
 };
 
-static int   procfs_trace    = 0;
+static bool  procfs_trace   = false;
 static FILE *procfs_file     = NULL;
 static char *procfs_filename;
 
diff --git a/gdb/python/py-auto-load.c b/gdb/python/py-auto-load.c
index c7b9afdb11..ade2aa1b37 100644
--- a/gdb/python/py-auto-load.c
+++ b/gdb/python/py-auto-load.c
@@ -29,7 +29,7 @@
    set auto-load python-scripts on|off
    This is true if we should auto-load associated Python scripts when an
    objfile is opened, false otherwise.  */
-static int auto_load_python_scripts = 1;
+static bool auto_load_python_scripts = true;
 
 /* "show" command for the auto_load_python_scripts configuration variable.  */
 
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index afeff581ee..4794366583 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -55,7 +55,10 @@ struct parm_constant parm_constants[] =
 /* A union that can hold anything described by enum var_types.  */
 union parmpy_variable
 {
-  /* Hold an integer value, for boolean and integer types.  */
+  /* Hold a boolean value.  */
+  bool boolval;
+
+  /* Hold an integer value.  */
   int intval;
 
   /* Hold an auto_boolean.  */
@@ -198,7 +201,7 @@ set_parameter_value (parmpy_object *self, PyObject *value)
       cmp = PyObject_IsTrue (value);
       if (cmp < 0)
 	  return -1;
-      self->value.intval = cmp;
+      self->value.boolval = cmp;
       break;
 
     case var_auto_boolean:
@@ -475,7 +478,7 @@ add_setshow_generic (int parmclass, enum command_class cmdclass,
     case var_boolean:
 
       add_setshow_boolean_cmd (cmd_name, cmdclass,
-			       &self->value.intval, set_doc, show_doc,
+			       &self->value.boolval, set_doc, show_doc,
 			       help_doc, get_set_value, get_show_value,
 			       set_list, show_list);
 
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index ede4c0e759..1428b7abe5 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -580,7 +580,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
 			   encoding, errors);
 }
 
-/* Given a Python object, copy its truth value to a C int (the value
+/* Given a Python object, copy its truth value to a C bool (the value
    pointed by dest).
    If src_obj is NULL, then *dest is not modified.
 
@@ -588,7 +588,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
    in case of error.  */
 
 static bool
-copy_py_bool_obj (int *dest, PyObject *src_obj)
+copy_py_bool_obj (bool *dest, PyObject *src_obj)
 {
   if (src_obj)
     {
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 9c8c635f72..ddf0e72d26 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -441,7 +441,7 @@ gdbpy_parameter_value (enum var_types type, void *var)
 
     case var_boolean:
       {
-	if (* (int *) var)
+	if (* (bool *) var)
 	  Py_RETURN_TRUE;
 	else
 	  Py_RETURN_FALSE;
diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c
index f217d949f6..0cc7e1dc75 100644
--- a/gdb/ravenscar-thread.c
+++ b/gdb/ravenscar-thread.c
@@ -57,8 +57,8 @@
    is running, switching to its corresponding ptid, and then performing
    the operation on that ptid using the target beneath us.  */
 
-/* If non-null, ravenscar task support is enabled.  */
-static int ravenscar_task_support = 1;
+/* If true, ravenscar task support is enabled.  */
+static bool ravenscar_task_support = true;
 
 static const char running_thread_name[] = "__gnat_running_thread_table";
 
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 65d6a254ff..d402d8733d 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -1560,7 +1560,7 @@ record_btrace_target::store_registers (struct regcache *regcache, int regno)
       && record_is_replaying (regcache->ptid ()))
     error (_("Cannot write registers while replaying."));
 
-  gdb_assert (may_write_registers != 0);
+  gdb_assert (may_write_registers);
 
   this->beneath ()->store_registers (regcache, regno);
 }
diff --git a/gdb/record-full.c b/gdb/record-full.c
index e83ce01b71..c1d124f519 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -159,7 +159,7 @@ struct record_full_entry
 
 /* If true, query if PREC cannot record memory
    change of next instruction.  */
-int record_full_memory_query = 0;
+bool record_full_memory_query = false;
 
 struct record_full_core_buf_entry
 {
@@ -196,8 +196,8 @@ static struct record_full_entry *record_full_list = &record_full_first;
 static struct record_full_entry *record_full_arch_list_head = NULL;
 static struct record_full_entry *record_full_arch_list_tail = NULL;
 
-/* 1 ask user. 0 auto delete the last struct record_full_entry.  */
-static int record_full_stop_at_limit = 1;
+/* true ask user. false auto delete the last struct record_full_entry.  */
+static bool record_full_stop_at_limit = true;
 /* Maximum allowed number of insns in execution log.  */
 static unsigned int record_full_insn_max_num
 	= DEFAULT_RECORD_FULL_INSN_MAX_NUM;
diff --git a/gdb/record-full.h b/gdb/record-full.h
index 8d1693af11..d1eff9760e 100644
--- a/gdb/record-full.h
+++ b/gdb/record-full.h
@@ -20,7 +20,7 @@
 #ifndef RECORD_FULL_H
 #define RECORD_FULL_H
 
-extern int record_full_memory_query;
+extern bool record_full_memory_query;
 
 extern int record_full_arch_list_add_reg (struct regcache *regcache, int num);
 extern int record_full_arch_list_add_mem (CORE_ADDR addr, int len);
diff --git a/gdb/remote-notif.c b/gdb/remote-notif.c
index 2680618b3f..2ff7b3b66c 100644
--- a/gdb/remote-notif.c
+++ b/gdb/remote-notif.c
@@ -41,7 +41,7 @@
 #include "infrun.h"
 #include "gdbcmd.h"
 
-int notif_debug = 0;
+bool notif_debug = false;
 
 /* Supported clients of notifications.  */
 
diff --git a/gdb/remote-notif.h b/gdb/remote-notif.h
index f9b0b2c618..c735cc2918 100644
--- a/gdb/remote-notif.h
+++ b/gdb/remote-notif.h
@@ -129,6 +129,6 @@ remote_notif_state *remote_notif_state_allocate (remote_target *remote);
 
 extern struct notif_client notif_client_stop;
 
-extern int notif_debug;
+extern bool notif_debug;
 
 #endif /* REMOTE_NOTIF_H */
diff --git a/gdb/remote.c b/gdb/remote.c
index ae06c4ba79..e39366d8b2 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1038,7 +1038,7 @@ static struct cmd_list_element *remote_show_cmdlist;
 
 /* Controls whether GDB is willing to use range stepping.  */
 
-static int use_range_stepping = 1;
+static bool use_range_stepping = true;
 
 /* The max number of chars in debug output.  The rest of chars are
    omitted.  */
@@ -1492,12 +1492,12 @@ show_interrupt_sequence (struct ui_file *file, int from_tty,
    to the remote target when gdb connects to it.
    This is mostly needed when you debug the Linux kernel: The Linux kernel
    expects BREAK g which is Magic SysRq g for connecting gdb.  */
-static int interrupt_on_connect = 0;
+static bool interrupt_on_connect = false;
 
 /* This variable is used to implement the "set/show remotebreak" commands.
    Since these commands are now deprecated in favor of "set/show remote
    interrupt-sequence", it no longer has any effect on the code.  */
-static int remote_break;
+static bool remote_break;
 
 static void
 set_remotebreak (const char *args, int from_tty, struct cmd_list_element *c)
diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c
index 7498319cc4..079f24828e 100644
--- a/gdb/ser-tcp.c
+++ b/gdb/ser-tcp.c
@@ -72,7 +72,7 @@ static struct cmd_list_element *tcp_show_cmdlist;
 
 /* Whether to auto-retry refused connections.  */
 
-static int tcp_auto_retry = 1;
+static bool tcp_auto_retry = true;
 
 /* Timeout period for connections, in seconds.  */
 
diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c
index 049dfd5261..c49bd84eb6 100644
--- a/gdb/ser-unix.c
+++ b/gdb/ser-unix.c
@@ -41,7 +41,7 @@ struct hardwire_ttystate
 
 #ifdef CRTSCTS
 /* Boolean to explicitly enable or disable h/w flow control.  */
-static int serial_hwflow;
+static bool serial_hwflow;
 static void
 show_serial_hwflow (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
diff --git a/gdb/skip.c b/gdb/skip.c
index 5258f50ab1..a549aca897 100644
--- a/gdb/skip.c
+++ b/gdb/skip.c
@@ -39,7 +39,7 @@
 
 /* True if we want to print debug printouts related to file/function
    skipping. */
-static int debug_skip = 0;
+static bool debug_skip = false;
 
 class skiplist_entry
 {
diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
index 0c8a18267c..1a25a0d4a9 100644
--- a/gdb/solib-aix.c
+++ b/gdb/solib-aix.c
@@ -30,7 +30,7 @@
 
 /* Variable controlling the output of the debugging traces for
    this module.  */
-static int solib_aix_debug;
+static bool solib_aix_debug;
 
 /* Our private data in struct so_list.  */
 
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
index ddaee54b30..d01f3af300 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
@@ -52,9 +52,9 @@ static struct cmd_list_element *setspucmdlist = NULL;
 static struct cmd_list_element *showspucmdlist = NULL;
 
 /* Whether to stop for new SPE contexts.  */
-static int spu_stop_on_load_p = 0;
+static bool spu_stop_on_load_p = false;
 /* Whether to automatically flush the SW-managed cache.  */
-static int spu_auto_flush_cache_p = 1;
+static bool spu_auto_flush_cache_p = true;
 
 
 /* The tdep structure.  */
diff --git a/gdb/stack.c b/gdb/stack.c
index 10a88e99ab..0f7fbf5e6e 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -183,9 +183,9 @@ pretty-printers for that value.")
 
 struct backtrace_cmd_options
 {
-  int full = 0;
-  int no_filters = 0;
-  int hide = 0;
+  bool full = false;
+  bool no_filters = false;
+  bool hide = false;
 };
 
 using bt_flag_option_def
@@ -2423,7 +2423,7 @@ print_frame_local_vars (struct frame_info *frame,
 
 struct info_print_options
 {
-  int quiet = false;
+  bool quiet = false;
   char *type_regexp = nullptr;
 
   ~info_print_options ()
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index 9a5d0fa0a6..37959bf0d4 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -48,8 +48,8 @@ struct debug_sym_fns_data
 static const struct objfile_key<debug_sym_fns_data>
   symfile_debug_objfile_data_key;
 
-/* If non-zero all calls to the symfile functions are logged.  */
-static int debug_symfile = 0;
+/* If true all calls to the symfile functions are logged.  */
+static bool debug_symfile = false;
 
 /* Return non-zero if symfile debug logging is installed.  */
 
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 259a30aa04..5252c727aa 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -143,7 +143,7 @@ static const char *print_symbol_loading = print_symbol_loading_full;
 
 /* See symfile.h.  */
 
-int auto_solib_add = 1;
+bool auto_solib_add = true;
 \f
 
 /* Return non-zero if symbol-loading messages should be printed.
@@ -1265,7 +1265,7 @@ symbol_file_clear (int from_tty)
 
 /* See symfile.h.  */
 
-int separate_debug_file_debug = 0;
+bool separate_debug_file_debug = false;
 
 static int
 separate_debug_file_exists (const std::string &name, unsigned long crc,
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 6fa6db4750..642a5e223a 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -439,7 +439,7 @@ extern section_addr_info
 
 			/*   Variables   */
 
-/* If non-zero, shared library symbols will be added automatically
+/* If true, shared library symbols will be added automatically
    when the inferior is created, new libraries are loaded, or when
    attaching to the inferior.  This is almost always what users will
    want to have happen; but for very large programs, the startup time
@@ -449,7 +449,7 @@ extern section_addr_info
    library symbols are not loaded, commands like "info fun" will *not*
    report all the functions that are actually present.  */
 
-extern int auto_solib_add;
+extern bool auto_solib_add;
 
 /* From symfile.c */
 
@@ -625,6 +625,6 @@ extern gdb_bfd_ref_ptr find_separate_debug_file_in_section (struct objfile *);
 
 /* True if we are printing debug output about separate debug info files.  */
 
-extern int separate_debug_file_debug;
+extern bool separate_debug_file_debug;
 
 #endif /* !defined(SYMFILE_H) */
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 4b528b4270..e2edad4fb1 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -241,10 +241,10 @@ static unsigned int new_symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
    the original value from here.  */
 static unsigned int symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
 
-/* Non-zero if a file may be known by two different basenames.
+/* True if a file may be known by two different basenames.
    This is the uncommon case, and significantly slows down gdb.
    Default set to "off" to not slow down the common case.  */
-int basenames_may_differ = 0;
+bool basenames_may_differ = false;
 
 /* Allow the user to configure the debugger behavior with respect
    to multiple-choice menus when more than one symbol matches during
@@ -4131,10 +4131,10 @@ operator_chars (const char *p, const char **end)
 struct filename_partial_match_opts
 {
   /* Only match the directory name part.   */
-  int dirname = false;
+  bool dirname = false;
 
   /* Only match the basename part.  */
-  int basename = false;
+  bool basename = false;
 };
 
 /* Data structure to maintain printing state for output_source_filename.  */
@@ -4912,8 +4912,8 @@ symtab_symbol_info (bool quiet, bool exclude_minsyms,
 
 struct info_print_options
 {
-  int quiet = false;
-  int exclude_minsyms = false;
+  bool quiet = false;
+  bool exclude_minsyms = false;
   char *type_regexp = nullptr;
 
   ~info_print_options ()
@@ -5010,7 +5010,7 @@ info_functions_command (const char *args, int from_tty)
 
 struct info_types_options
 {
-  int quiet = false;
+  bool quiet = false;
 };
 
 /* The options used by the 'info types' command.  */
diff --git a/gdb/symtab.h b/gdb/symtab.h
index c54b8ee4b7..d046598774 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -544,7 +544,7 @@ extern const char *symbol_demangled_name
 
 #define SYMBOL_PRINT_NAME(symbol)					\
   (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
-extern int demangle;
+extern bool demangle;
 
 /* Macro that returns the name to be used when sorting and searching symbols.
    In C++, we search for the demangled form of a name,
@@ -2064,7 +2064,7 @@ extern unsigned int symtab_create_debug;
 
 extern unsigned int symbol_lookup_debug;
 
-extern int basenames_may_differ;
+extern bool basenames_may_differ;
 
 int compare_filenames_for_search (const char *filename,
 				  const char *search_name);
diff --git a/gdb/target-dcache.c b/gdb/target-dcache.c
index 98d5c1f83b..c8a415512c 100644
--- a/gdb/target-dcache.c
+++ b/gdb/target-dcache.c
@@ -77,7 +77,7 @@ target_dcache_get_or_init (void)
 }
 
 /* The option sets this.  */
-static int stack_cache_enabled_1 = 1;
+static bool stack_cache_enabled_1 = true;
 /* And set_stack_cache updates this.
    The reason for the separation is so that we don't flush the cache for
    on->on transitions.  */
@@ -114,7 +114,7 @@ stack_cache_enabled_p (void)
 
 /* The option sets this.  */
 
-static int code_cache_enabled_1 = 1;
+static bool code_cache_enabled_1 = true;
 
 /* And set_code_cache updates this.
    The reason for the separation is so that we don't flush the cache for
diff --git a/gdb/target.c b/gdb/target.c
index a19a9bce13..599e22a724 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -128,10 +128,10 @@ current_top_target ()
 
 static struct cmd_list_element *targetlist = NULL;
 
-/* Nonzero if we should trust readonly sections from the
+/* True if we should trust readonly sections from the
    executable when reading memory.  */
 
-static int trust_readonly = 0;
+static bool trust_readonly = false;
 
 /* Nonzero if we should show true memory content including
    memory breakpoint inserted by gdb.  */
@@ -142,17 +142,17 @@ static int show_memory_breakpoints = 0;
    operations; they are useful for targets that need to prevent
    inadvertant disruption, such as in non-stop mode.  */
 
-int may_write_registers = 1;
+bool may_write_registers = true;
 
-int may_write_memory = 1;
+bool may_write_memory = true;
 
-int may_insert_breakpoints = 1;
+bool may_insert_breakpoints = true;
 
-int may_insert_tracepoints = 1;
+bool may_insert_tracepoints = true;
 
-int may_insert_fast_tracepoints = 1;
+bool may_insert_fast_tracepoints = true;
 
-int may_stop = 1;
+bool may_stop = true;
 
 /* Non-zero if we want to see trace of target level stuff.  */
 
@@ -2374,7 +2374,7 @@ target_require_runnable (void)
 
 /* Whether GDB is allowed to fall back to the default run target for
    "run", "attach", etc. when no target is connected yet.  */
-static int auto_connect_native_target = 1;
+static bool auto_connect_native_target = true;
 
 static void
 show_auto_connect_native_target (struct ui_file *file, int from_tty,
@@ -3356,9 +3356,9 @@ void
 target_stop_and_wait (ptid_t ptid)
 {
   struct target_waitstatus status;
-  int was_non_stop = non_stop;
+  bool was_non_stop = non_stop;
 
-  non_stop = 1;
+  non_stop = true;
   target_stop (ptid);
 
   memset (&status, 0, sizeof (status));
@@ -3841,11 +3841,11 @@ target_thread_events (int enable)
 
 /* Controls if targets can report that they can/are async.  This is
    just for maintainers to use when debugging gdb.  */
-int target_async_permitted = 1;
+bool target_async_permitted = true;
 
 /* The set command writes to this variable.  If the inferior is
    executing, target_async_permitted is *not* updated.  */
-static int target_async_permitted_1 = 1;
+static bool target_async_permitted_1 = true;
 
 static void
 maint_set_target_async_command (const char *args, int from_tty,
@@ -3933,12 +3933,12 @@ maint_show_target_non_stop_command (struct ui_file *file, int from_tty,
 
 /* Temporary copies of permission settings.  */
 
-static int may_write_registers_1 = 1;
-static int may_write_memory_1 = 1;
-static int may_insert_breakpoints_1 = 1;
-static int may_insert_tracepoints_1 = 1;
-static int may_insert_fast_tracepoints_1 = 1;
-static int may_stop_1 = 1;
+static bool may_write_registers_1 = true;
+static bool may_write_memory_1 = true;
+static bool may_insert_breakpoints_1 = true;
+static bool may_insert_tracepoints_1 = true;
+static bool may_insert_fast_tracepoints_1 = true;
+static bool may_stop_1 = true;
 
 /* Make the user-set values match the real values again.  */
 
diff --git a/gdb/target.h b/gdb/target.h
index 4e2e75cb80..c2f6203174 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1802,7 +1802,7 @@ extern int target_has_execution_current (void);
   (current_top_target ()->get_thread_control_capabilities () & tc_schedlock)
 
 /* Controls whether async mode is permitted.  */
-extern int target_async_permitted;
+extern bool target_async_permitted;
 
 /* Can the target support asynchronous execution?  */
 #define target_can_async_p() (current_top_target ()->can_async_p ())
@@ -2482,12 +2482,12 @@ extern int remote_timeout;
 extern scoped_restore_tmpl<int>
     make_scoped_restore_show_memory_breakpoints (int show);
 
-extern int may_write_registers;
-extern int may_write_memory;
-extern int may_insert_breakpoints;
-extern int may_insert_tracepoints;
-extern int may_insert_fast_tracepoints;
-extern int may_stop;
+extern bool may_write_registers;
+extern bool may_write_memory;
+extern bool may_insert_breakpoints;
+extern bool may_insert_tracepoints;
+extern bool may_insert_fast_tracepoints;
+extern bool may_stop;
 
 extern void update_target_permissions (void);
 
diff --git a/gdb/thread.c b/gdb/thread.c
index 4a7fe689db..17bc642b84 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -1204,7 +1204,7 @@ print_thread_info (struct ui_out *uiout, const char *requested_threads,
 struct info_threads_opts
 {
   /* For "-gid".  */
-  int show_global_ids = 0;
+  bool show_global_ids = false;
 };
 
 static const gdb::option::option_def info_threads_option_defs[] = {
@@ -1574,7 +1574,7 @@ static const gdb::option::option_def thr_qcs_flags_option_defs[] = {
    ASCENDING and FLAGS as context.  */
 
 static inline std::array<gdb::option::option_def_group, 2>
-make_thread_apply_all_options_def_group (int *ascending,
+make_thread_apply_all_options_def_group (bool *ascending,
 					 qcs_flags *flags)
 {
   return {{
@@ -1603,7 +1603,7 @@ make_thread_apply_options_def_group (qcs_flags *flags)
 static void
 thread_apply_all_command (const char *cmd, int from_tty)
 {
-  int ascending = false;
+  bool ascending = false;
   qcs_flags flags;
 
   auto group = make_thread_apply_all_options_def_group (&ascending,
@@ -1951,7 +1951,7 @@ thread_find_command (const char *arg, int from_tty)
 }
 
 /* Print notices when new threads are attached and detached.  */
-int print_thread_events = 1;
+bool print_thread_events = true;
 static void
 show_print_thread_events (struct ui_file *file, int from_tty,
 			  struct cmd_list_element *c, const char *value)
diff --git a/gdb/top.c b/gdb/top.c
index 2b53640af0..49e6daae94 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -115,7 +115,7 @@ extern char lang_frame_mismatch_warn[];		/* language.c */
 /* Flag for whether we want to confirm potentially dangerous
    operations.  Default is yes.  */
 
-int confirm = 1;
+bool confirm = true;
 
 static void
 show_confirm (struct ui_file *file, int from_tty,
@@ -850,15 +850,15 @@ gdb_readline_no_editing (const char *prompt)
 /* Variables which control command line editing and history
    substitution.  These variables are given default values at the end
    of this file.  */
-static int command_editing_p;
+static bool command_editing_p;
 
 /* NOTE 1999-04-29: This variable will be static again, once we modify
    gdb to use the event loop as the default command loop and we merge
    event-top.c into this file, top.c.  */
 
-/* static */ int history_expansion_p;
+/* static */ bool history_expansion_p;
 
-static int write_history_p;
+static bool write_history_p;
 static void
 show_write_history_p (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
@@ -1876,7 +1876,7 @@ show_history (const char *args, int from_tty)
   cmd_show_list (showhistlist, from_tty, "");
 }
 
-int info_verbose = 0;		/* Default verbose msgs off.  */
+bool info_verbose = false;	/* Default verbose msgs off.  */
 
 /* Called by do_set_command.  An elaborate joke.  */
 void
diff --git a/gdb/top.h b/gdb/top.h
index 32a898b82f..176104f1fd 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -217,7 +217,7 @@ extern void ui_register_input_event_handler (struct ui *ui);
 extern void ui_unregister_input_event_handler (struct ui *ui);
 
 /* From top.c.  */
-extern int confirm;
+extern bool confirm;
 extern int inhibit_gdbinit;
 
 /* Print the GDB version banner to STREAM.  If INTERACTIVE is false,
@@ -280,7 +280,7 @@ extern void gdb_init (char *);
 /* Variables from top.c.  */
 extern int source_line_number;
 extern std::string source_file_name;
-extern int history_expansion_p;
+extern bool history_expansion_p;
 extern int server_command;
 extern char *lim_at_start;
 
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 2d5b9c705e..c2c5f42246 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -131,12 +131,12 @@ static struct cmd_list_element *tfindlist;
 /* List of expressions to collect by default at each tracepoint hit.  */
 char *default_collect;
 
-static int disconnected_tracing;
+static bool disconnected_tracing;
 
 /* This variable controls whether we ask the target for a linear or
    circular trace buffer.  */
 
-static int circular_trace_buffer;
+static bool circular_trace_buffer;
 
 /* This variable is the requested trace buffer size, or -1 to indicate
    that we don't care and leave it up to the target to set a size.  */
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
index c87f6d13e0..41d95c2afb 100644
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
@@ -727,7 +727,7 @@ show_print_type (const char *args, int from_tty)
   cmd_show_list (showprinttypelist, from_tty, "");
 }
 
-static int print_methods = 1;
+static bool print_methods = true;
 
 static void
 set_print_type_methods (const char *args,
@@ -744,7 +744,7 @@ show_print_type_methods (struct ui_file *file, int from_tty,
 		    value);
 }
 
-static int print_typedefs = 1;
+static bool print_typedefs = true;
 
 static void
 set_print_type_typedefs (const char *args,
diff --git a/gdb/utils.c b/gdb/utils.c
index f642cf470f..b2535ebefd 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -99,13 +99,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
 
 /* A flag indicating whether to timestamp debugging messages.  */
 
-static int debug_timestamp = 0;
+static bool debug_timestamp = false;
 
-/* Nonzero means that strings with character values >0x7F should be printed
-   as octal escapes.  Zero means just print the value (e.g. it's an
+/* True means that strings with character values >0x7F should be printed
+   as octal escapes.  False means just print the value (e.g. it's an
    international character, and the terminal or window can cope.)  */
 
-int sevenbit_strings = 0;
+bool sevenbit_strings = false;
 static void
 show_sevenbit_strings (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *c, const char *value)
@@ -119,7 +119,7 @@ show_sevenbit_strings (struct ui_file *file, int from_tty,
 
 const char *warning_pre_print = "\nwarning: ";
 
-int pagination_enabled = 1;
+bool pagination_enabled = true;
 static void
 show_pagination_enabled (struct ui_file *file, int from_tty,
 			 struct cmd_list_element *c, const char *value)
diff --git a/gdb/utils.h b/gdb/utils.h
index fd724444aa..7cdc73ef54 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -32,7 +32,7 @@ extern void initialize_utils (void);
 
 /* String utilities.  */
 
-extern int sevenbit_strings;
+extern bool sevenbit_strings;
 
 /* Modes of operation for strncmp_iw_with_mode.  */
 
@@ -316,7 +316,7 @@ extern void wrap_here (const char *);
 
 extern void reinitialize_more_filter (void);
 
-extern int pagination_enabled;
+extern bool pagination_enabled;
 
 extern struct ui_file **current_ui_gdb_stdout_ptr (void);
 extern struct ui_file **current_ui_gdb_stdin_ptr (void);
diff --git a/gdb/valops.c b/gdb/valops.c
index 0f6ff7b0a5..fc7a4c5918 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -97,7 +97,7 @@ static CORE_ADDR allocate_space_in_inferior (int);
 
 static struct value *cast_into_complex (struct type *, struct value *);
 
-int overload_resolution = 0;
+bool overload_resolution = false;
 static void
 show_overload_resolution (struct ui_file *file, int from_tty,
 			  struct cmd_list_element *c, 
diff --git a/gdb/valprint.h b/gdb/valprint.h
index 07014c11b9..6d57554594 100644
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -30,23 +30,23 @@ struct value_print_options
   enum val_prettyformat prettyformat;
 
   /* Controls pretty formatting of arrays.  */
-  int prettyformat_arrays;
+  bool prettyformat_arrays;
 
   /* Controls pretty formatting of structures.  */
-  int prettyformat_structs;
+  bool prettyformat_structs;
 
   /* Controls printing of virtual tables.  */
-  int vtblprint;
+  bool vtblprint;
 
   /* Controls printing of nested unions.  */
-  int unionprint;
+  bool unionprint;
 
   /* Controls printing of addresses.  */
-  int addressprint;
+  bool addressprint;
 
   /* Controls looking up an object's derived type using what we find
      in its vtables.  */
-  int objectprint;
+  bool objectprint;
 
   /* Maximum number of chars to print for a string pointer value or vector
      contents, or UINT_MAX for no limit.  Note that "set print elements 0"
@@ -66,40 +66,40 @@ struct value_print_options
   int format;
 
   /* Stop printing at null character?  */
-  int stop_print_at_null;
+  bool stop_print_at_null;
 
   /* True if we should print the index of each element when printing
      an array.  */
-  int print_array_indexes;
+  bool print_array_indexes;
 
-  /* If nonzero, then dereference references, otherwise just print
+  /* If true, then dereference references, otherwise just print
      them like pointers.  */
-  int deref_ref;
+  bool deref_ref;
 
-  /* If nonzero, print static fields.  */
-  int static_field_print;
+  /* If true, print static fields.  */
+  bool static_field_print;
 
-  /* If nonzero, print static fields for Pascal.  FIXME: C++ has a
+  /* If true, print static fields for Pascal.  FIXME: C++ has a
      flag, why not share with Pascal too?  */
-  int pascal_static_field_print;
+  bool pascal_static_field_print;
 
-  /* If non-zero don't do Python pretty-printing.  */
-  int raw;
+  /* If true, don't do Python pretty-printing.  */
+  bool raw;
 
-  /* If nonzero, print the value in "summary" form.
-     If raw and summary are both non-zero, don't print non-scalar values
+  /* If true, print the value in "summary" form.
+     If raw and summary are both true, don't print non-scalar values
      ("..." is printed instead).  */
-  int summary;
+  bool summary;
 
-  /* If nonzero, when printing a pointer, print the symbol to which it
+  /* If true, when printing a pointer, print the symbol to which it
      points, if any.  */
-  int symbol_print;
+  bool symbol_print;
 
   /* Maximum print depth when printing nested aggregates.  */
   int max_depth;
 
   /* Whether "finish" should print the value.  */
-  int finish_print;
+  bool finish_print;
 };
 
 /* Create an option_def_group for the value_print options, with OPTS
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 3431181a88..c4fde913af 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -245,16 +245,16 @@ static int saw_create;
 static int open_process_used = 0;
 
 /* User options.  */
-static int new_console = 0;
+static bool new_console = false;
 #ifdef __CYGWIN__
-static int cygwin_exceptions = 0;
+static bool cygwin_exceptions = false;
 #endif
-static int new_group = 1;
-static int debug_exec = 0;		/* show execution */
-static int debug_events = 0;		/* show events from kernel */
-static int debug_memory = 0;		/* show target memory accesses */
-static int debug_exceptions = 0;	/* show target exceptions */
-static int useshell = 0;		/* use shell for subprocesses */
+static bool new_group = true;
+static bool debug_exec = false;		/* show execution */
+static bool debug_events = false;	/* show events from kernel */
+static bool debug_memory = false;	/* show target memory accesses */
+static bool debug_exceptions = false;	/* show target exceptions */
+static bool useshell = false;		/* use shell for subprocesses */
 
 /* This vector maps GDB's idea of a register's number into an offset
    in the windows exception context vector.
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c
index 42083e789a..bb69a79996 100644
--- a/gdb/windows-tdep.c
+++ b/gdb/windows-tdep.c
@@ -100,7 +100,7 @@ static const int MAX_TIB64 =
   sizeof (thread_information_64) / sizeof (uint64_t);
 static const int FULL_TIB_SIZE = 0x1000;
 
-static int maint_display_all_tib = 0;
+static bool maint_display_all_tib = false;
 
 /* Define Thread Local Base pointer type.  */
 
diff --git a/gdb/xml-support.c b/gdb/xml-support.c
index 8b79d69a6d..eaf99efa6b 100644
--- a/gdb/xml-support.c
+++ b/gdb/xml-support.c
@@ -26,7 +26,7 @@
 #include <string>
 
 /* Debugging flag.  */
-static int debug_xml;
+static bool debug_xml;
 
 /* The contents of this file are only useful if XML support is
    available.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Gate opcode tables by enum rather than string.
@ 2019-09-18  1:40 gdb-buildbot
  2019-09-18  2:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18  1:40 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7e9ad3a35cde2342e07c34345d5ee671ea8aeeb4 ***

commit 7e9ad3a35cde2342e07c34345d5ee671ea8aeeb4
Author:     Jim Wilson <jimw@sifive.com>
AuthorDate: Tue Sep 17 17:59:08 2019 -0700
Commit:     Jim Wilson <jimw@sifive.com>
CommitDate: Tue Sep 17 17:59:08 2019 -0700

    RISC-V: Gate opcode tables by enum rather than string.
    
    Generalize opcode arch dependencies so that we can support the
    overlapping B extension Zb* subsets.
    
            2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
            gas/
            * config/tc-riscv.c (riscv_multi_subset_supports): Handle
            insn_class enum rather than subset char string.
            (riscv_ip): Update call to riscv_multi_subset_supports.
            include/
            * opcode/riscv.h (riscv_insn_class): New enum.
            * opcode/riscv.h (struct riscv_opcode): Change
            subset field to insn_class field.
            opcodes/
            * riscv-opc.c (riscv_opcodes): Change subset field
            to insn_class field for all instructions.
            (riscv_insn_types): Likewise.

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 85c80f5772..f22727c7cc 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
+
+	* config/tc-riscv.c (riscv_multi_subset_supports): Handle
+	insn_class enum rather than subset char string.
+	(riscv_ip): Update call to riscv_multi_subset_supports.
+
 2019-09-16  Phil Blundell  <pb@pbcl.net>
 
 	* Makefile.in, configure, doc/Makefile.in: Regenerated.
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 12047d7210..e50505138e 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -121,15 +121,28 @@ riscv_subset_supports (const char *feature)
 }
 
 static bfd_boolean
-riscv_multi_subset_supports (const char *features[])
+riscv_multi_subset_supports (enum riscv_insn_class insn_class)
 {
-  unsigned i = 0;
-  bfd_boolean supported = TRUE;
+  switch (insn_class)
+    {
+    case INSN_CLASS_I: return riscv_subset_supports ("i");
+    case INSN_CLASS_C: return riscv_subset_supports ("c");
+    case INSN_CLASS_A: return riscv_subset_supports ("a");
+    case INSN_CLASS_M: return riscv_subset_supports ("m");
+    case INSN_CLASS_F: return riscv_subset_supports ("f");
+    case INSN_CLASS_D: return riscv_subset_supports ("d");
+    case INSN_CLASS_D_AND_C:
+      return riscv_subset_supports ("d") && riscv_subset_supports ("c");
+
+    case INSN_CLASS_F_AND_C:
+      return riscv_subset_supports ("f") && riscv_subset_supports ("c");
 
-  for (;features[i]; ++i)
-    supported = supported && riscv_subset_supports (features[i]);
+    case INSN_CLASS_Q: return riscv_subset_supports ("q");
 
-  return supported;
+    default:
+      as_fatal ("Unreachable");
+      return FALSE;
+    }
 }
 
 /* Set which ISA and extensions are available.  */
@@ -1427,7 +1440,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
       if ((insn->xlen_requirement != 0) && (xlen != insn->xlen_requirement))
 	continue;
 
-      if (!riscv_multi_subset_supports (insn->subset))
+      if (!riscv_multi_subset_supports (insn->insn_class))
 	continue;
 
       create_insn (ip, insn);
diff --git a/include/ChangeLog b/include/ChangeLog
index eb500e146e..c725bfbbc7 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
+
+	* opcode/riscv.h (riscv_insn_class): New enum.
+	* opcode/riscv.h (struct riscv_opcode): Change
+	subset field to insn_class field.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h
index 4acc25cee2..bfb96c86b6 100644
--- a/include/opcode/riscv.h
+++ b/include/opcode/riscv.h
@@ -294,6 +294,23 @@ static const char * const riscv_pred_succ[16] =
 /* The maximal number of subset can be required. */
 #define MAX_SUBSET_NUM 4
 
+/* All RISC-V instructions belong to at least one of these classes.  */
+
+enum riscv_insn_class
+  {
+   INSN_CLASS_NONE,
+
+   INSN_CLASS_I,
+   INSN_CLASS_C,
+   INSN_CLASS_A,
+   INSN_CLASS_M,
+   INSN_CLASS_F,
+   INSN_CLASS_D,
+   INSN_CLASS_D_AND_C,
+   INSN_CLASS_F_AND_C,
+   INSN_CLASS_Q,
+  };
+
 /* This structure holds information for a particular instruction.  */
 
 struct riscv_opcode
@@ -302,9 +319,9 @@ struct riscv_opcode
   const char *name;
   /* The requirement of xlen for the instruction, 0 if no requirement.  */
   unsigned xlen_requirement;
-  /* An array of ISA subset name (I, M, A, F, D, Xextension), must ended
-     with a NULL pointer sential.  */
-  const char *subset[MAX_SUBSET_NUM];
+  /* Class to which this instruction belongs.  Used to decide whether or
+     not this instruction is legal in the current -march context.  */
+  enum riscv_insn_class insn_class;
   /* A string describing the arguments for this instruction.  */
   const char *args;
   /* The basic opcode for the instruction.  When assembling, this
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 50f1be8533..8f2ca7257e 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
+
+	* riscv-opc.c (riscv_opcodes): Change subset field
+	to insn_class field for all instructions.
+	(riscv_insn_types): Likewise.
+
 2019-09-16  Phil Blundell  <pb@pbcl.net>
 
 	* configure: Regenerated.
diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c
index b7e8d79a48..06c752a96d 100644
--- a/opcodes/riscv-opc.c
+++ b/opcodes/riscv-opc.c
@@ -198,687 +198,687 @@ match_srxi_as_c_srxi (const struct riscv_opcode *op, insn_t insn)
 const struct riscv_opcode riscv_opcodes[] =
 {
 /* name,     xlen, isa,   operands, match, mask, match_func, pinfo.  */
-{"unimp",       0, {"C", 0},   "",  0, 0xffffU,  match_opcode, INSN_ALIAS },
-{"unimp",       0, {"I", 0},   "",  MATCH_CSRRW | (CSR_CYCLE << OP_SH_CSR), 0xffffffffU,  match_opcode, 0 }, /* csrw cycle, x0 */
-{"ebreak",      0, {"C", 0},   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
-{"ebreak",      0, {"I", 0},   "",    MATCH_EBREAK, MASK_EBREAK, match_opcode, 0 },
-{"sbreak",      0, {"C", 0},   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
-{"sbreak",      0, {"I", 0},   "",    MATCH_EBREAK, MASK_EBREAK, match_opcode, INSN_ALIAS },
-{"ret",         0, {"C", 0},   "",  MATCH_C_JR | (X_RA << OP_SH_RD), MASK_C_JR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"ret",         0, {"I", 0},   "",  MATCH_JALR | (X_RA << OP_SH_RS1), MASK_JALR | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"jr",          0, {"C", 0},   "d",  MATCH_C_JR, MASK_C_JR, match_rd_nonzero, INSN_ALIAS|INSN_BRANCH },
-{"jr",          0, {"I", 0},   "s",  MATCH_JALR, MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"jr",          0, {"I", 0},   "o(s)",  MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"jr",          0, {"I", 0},   "s,j",  MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"jalr",        0, {"C", 0},   "d",  MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, INSN_ALIAS|INSN_JSR },
-{"jalr",        0, {"I", 0},   "s",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS|INSN_JSR },
-{"jalr",        0, {"I", 0},   "o(s)",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
-{"jalr",        0, {"I", 0},   "s,j",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
-{"jalr",        0, {"I", 0},   "d,s",  MATCH_JALR, MASK_JALR | MASK_IMM, match_opcode, INSN_ALIAS|INSN_JSR },
-{"jalr",        0, {"I", 0},   "d,o(s)",  MATCH_JALR, MASK_JALR, match_opcode, INSN_JSR },
-{"jalr",        0, {"I", 0},   "d,s,j",  MATCH_JALR, MASK_JALR, match_opcode, INSN_JSR },
-{"j",           0, {"C", 0},   "Ca",  MATCH_C_J, MASK_C_J, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"j",           0, {"I", 0},   "a",  MATCH_JAL, MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
-{"jal",         0, {"I", 0},   "d,a",  MATCH_JAL, MASK_JAL, match_opcode, INSN_JSR },
-{"jal",        32, {"C", 0},   "Ca",  MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_ALIAS|INSN_JSR },
-{"jal",         0, {"I", 0},   "a",  MATCH_JAL | (X_RA << OP_SH_RD), MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
-{"call",        0, {"I", 0},   "d,c", (X_T1 << OP_SH_RS1), (int) M_CALL,  match_never, INSN_MACRO },
-{"call",        0, {"I", 0},   "c", (X_RA << OP_SH_RS1) | (X_RA << OP_SH_RD), (int) M_CALL,  match_never, INSN_MACRO },
-{"tail",        0, {"I", 0},   "c", (X_T1 << OP_SH_RS1), (int) M_CALL,  match_never, INSN_MACRO },
-{"jump",        0, {"I", 0},   "c,s", 0, (int) M_CALL,  match_never, INSN_MACRO },
-{"nop",         0, {"C", 0},   "",  MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },
-{"nop",         0, {"I", 0},   "",         MATCH_ADDI, MASK_ADDI | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS },
-{"lui",         0, {"C", 0},   "d,Cu",  MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
-{"lui",         0, {"I", 0},   "d,u",  MATCH_LUI, MASK_LUI, match_opcode, 0 },
-{"li",          0, {"C", 0},   "d,Cv",  MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
-{"li",          0, {"C", 0},   "d,Co",  MATCH_C_LI, MASK_C_LI, match_rd_nonzero, INSN_ALIAS },
-{"li",          0, {"I", 0},   "d,j",      MATCH_ADDI, MASK_ADDI | MASK_RS1, match_opcode, INSN_ALIAS }, /* addi */
-{"li",          0, {"I", 0},   "d,I",  0,    (int) M_LI,  match_never, INSN_MACRO },
-{"mv",          0, {"C", 0},   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
-{"mv",          0, {"I", 0},   "d,s",  MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
-{"move",        0, {"C", 0},   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
-{"move",        0, {"I", 0},   "d,s",  MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
-{"andi",        0, {"C", 0},   "Cs,Cw,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
-{"andi",        0, {"I", 0},   "d,s,j",  MATCH_ANDI, MASK_ANDI, match_opcode, 0 },
-{"and",         0, {"C", 0},   "Cs,Cw,Ct",  MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
-{"and",         0, {"C", 0},   "Cs,Ct,Cw",  MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
-{"and",         0, {"C", 0},   "Cs,Cw,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
-{"and",         0, {"I", 0},   "d,s,t",  MATCH_AND, MASK_AND, match_opcode, 0 },
-{"and",         0, {"I", 0},   "d,s,j",  MATCH_ANDI, MASK_ANDI, match_opcode, INSN_ALIAS },
-{"beqz",        0, {"C", 0},   "Cs,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"beqz",        0, {"I", 0},   "s,p",  MATCH_BEQ, MASK_BEQ | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"beq",         0, {"C", 0},   "Cs,Cz,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"beq",         0, {"I", 0},   "s,t,p",  MATCH_BEQ, MASK_BEQ, match_opcode, INSN_CONDBRANCH },
-{"blez",        0, {"I", 0},   "t,p",  MATCH_BGE, MASK_BGE | MASK_RS1, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bgez",        0, {"I", 0},   "s,p",  MATCH_BGE, MASK_BGE | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bge",         0, {"I", 0},   "s,t,p",  MATCH_BGE, MASK_BGE, match_opcode, INSN_CONDBRANCH },
-{"bgeu",        0, {"I", 0},   "s,t,p",  MATCH_BGEU, MASK_BGEU, match_opcode, INSN_CONDBRANCH },
-{"ble",         0, {"I", 0},   "t,s,p",  MATCH_BGE, MASK_BGE, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bleu",        0, {"I", 0},   "t,s,p",  MATCH_BGEU, MASK_BGEU, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bltz",        0, {"I", 0},   "s,p",  MATCH_BLT, MASK_BLT | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bgtz",        0, {"I", 0},   "t,p",  MATCH_BLT, MASK_BLT | MASK_RS1, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"blt",         0, {"I", 0},   "s,t,p",  MATCH_BLT, MASK_BLT, match_opcode, INSN_CONDBRANCH },
-{"bltu",        0, {"I", 0},   "s,t,p",  MATCH_BLTU, MASK_BLTU, match_opcode, INSN_CONDBRANCH },
-{"bgt",         0, {"I", 0},   "t,s,p",  MATCH_BLT, MASK_BLT, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bgtu",        0, {"I", 0},   "t,s,p",  MATCH_BLTU, MASK_BLTU, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bnez",        0, {"C", 0},   "Cs,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bnez",        0, {"I", 0},   "s,p",  MATCH_BNE, MASK_BNE | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bne",         0, {"C", 0},   "Cs,Cz,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
-{"bne",         0, {"I", 0},   "s,t,p",  MATCH_BNE, MASK_BNE, match_opcode, INSN_CONDBRANCH },
-{"addi",        0, {"C", 0},   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, INSN_ALIAS },
-{"addi",        0, {"C", 0},   "d,CU,Cj",  MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
-{"addi",        0, {"C", 0},   "d,CU,z",    MATCH_C_NOP, MASK_C_ADDI | MASK_RVC_IMM, match_c_nop, INSN_ALIAS },
-{"addi",        0, {"C", 0},   "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, INSN_ALIAS },
-{"addi",        0, {"I", 0},   "d,s,j",  MATCH_ADDI, MASK_ADDI, match_opcode, 0 },
-{"add",         0, {"C", 0},   "d,CU,CV",  MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
-{"add",         0, {"C", 0},   "d,CV,CU",  MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
-{"add",         0, {"C", 0},   "d,CU,Co",  MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
-{"add",         0, {"C", 0},   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, INSN_ALIAS },
-{"add",         0, {"C", 0},   "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, INSN_ALIAS },
-{"add",         0, {"I", 0},   "d,s,t",  MATCH_ADD, MASK_ADD, match_opcode, 0 },
+{"unimp",       0, INSN_CLASS_C,   "",  0, 0xffffU,  match_opcode, INSN_ALIAS },
+{"unimp",       0, INSN_CLASS_I,   "",  MATCH_CSRRW | (CSR_CYCLE << OP_SH_CSR), 0xffffffffU,  match_opcode, 0 }, /* csrw cycle, x0 */
+{"ebreak",      0, INSN_CLASS_C,   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
+{"ebreak",      0, INSN_CLASS_I,   "",    MATCH_EBREAK, MASK_EBREAK, match_opcode, 0 },
+{"sbreak",      0, INSN_CLASS_C,   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
+{"sbreak",      0, INSN_CLASS_I,   "",    MATCH_EBREAK, MASK_EBREAK, match_opcode, INSN_ALIAS },
+{"ret",         0, INSN_CLASS_C,   "",  MATCH_C_JR | (X_RA << OP_SH_RD), MASK_C_JR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"ret",         0, INSN_CLASS_I,   "",  MATCH_JALR | (X_RA << OP_SH_RS1), MASK_JALR | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"jr",          0, INSN_CLASS_C,   "d",  MATCH_C_JR, MASK_C_JR, match_rd_nonzero, INSN_ALIAS|INSN_BRANCH },
+{"jr",          0, INSN_CLASS_I,   "s",  MATCH_JALR, MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"jr",          0, INSN_CLASS_I,   "o(s)",  MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"jr",          0, INSN_CLASS_I,   "s,j",  MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"jalr",        0, INSN_CLASS_C,   "d",  MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, INSN_ALIAS|INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "s",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS|INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "o(s)",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "s,j",  MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "d,s",  MATCH_JALR, MASK_JALR | MASK_IMM, match_opcode, INSN_ALIAS|INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "d,o(s)",  MATCH_JALR, MASK_JALR, match_opcode, INSN_JSR },
+{"jalr",        0, INSN_CLASS_I,   "d,s,j",  MATCH_JALR, MASK_JALR, match_opcode, INSN_JSR },
+{"j",           0, INSN_CLASS_C,   "Ca",  MATCH_C_J, MASK_C_J, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"j",           0, INSN_CLASS_I,   "a",  MATCH_JAL, MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH },
+{"jal",         0, INSN_CLASS_I,   "d,a",  MATCH_JAL, MASK_JAL, match_opcode, INSN_JSR },
+{"jal",        32, INSN_CLASS_C,   "Ca",  MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_ALIAS|INSN_JSR },
+{"jal",         0, INSN_CLASS_I,   "a",  MATCH_JAL | (X_RA << OP_SH_RD), MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR },
+{"call",        0, INSN_CLASS_I,   "d,c", (X_T1 << OP_SH_RS1), (int) M_CALL,  match_never, INSN_MACRO },
+{"call",        0, INSN_CLASS_I,   "c", (X_RA << OP_SH_RS1) | (X_RA << OP_SH_RD), (int) M_CALL,  match_never, INSN_MACRO },
+{"tail",        0, INSN_CLASS_I,   "c", (X_T1 << OP_SH_RS1), (int) M_CALL,  match_never, INSN_MACRO },
+{"jump",        0, INSN_CLASS_I,   "c,s", 0, (int) M_CALL,  match_never, INSN_MACRO },
+{"nop",         0, INSN_CLASS_C,   "",  MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },
+{"nop",         0, INSN_CLASS_I,   "",         MATCH_ADDI, MASK_ADDI | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS },
+{"lui",         0, INSN_CLASS_C,   "d,Cu",  MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
+{"lui",         0, INSN_CLASS_I,   "d,u",  MATCH_LUI, MASK_LUI, match_opcode, 0 },
+{"li",          0, INSN_CLASS_C,   "d,Cv",  MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
+{"li",          0, INSN_CLASS_C,   "d,Co",  MATCH_C_LI, MASK_C_LI, match_rd_nonzero, INSN_ALIAS },
+{"li",          0, INSN_CLASS_I,   "d,j",      MATCH_ADDI, MASK_ADDI | MASK_RS1, match_opcode, INSN_ALIAS }, /* addi */
+{"li",          0, INSN_CLASS_I,   "d,I",  0,    (int) M_LI,  match_never, INSN_MACRO },
+{"mv",          0, INSN_CLASS_C,   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
+{"mv",          0, INSN_CLASS_I,   "d,s",  MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
+{"move",        0, INSN_CLASS_C,   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
+{"move",        0, INSN_CLASS_I,   "d,s",  MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
+{"andi",        0, INSN_CLASS_C,   "Cs,Cw,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
+{"andi",        0, INSN_CLASS_I,   "d,s,j",  MATCH_ANDI, MASK_ANDI, match_opcode, 0 },
+{"and",         0, INSN_CLASS_C,   "Cs,Cw,Ct",  MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
+{"and",         0, INSN_CLASS_C,   "Cs,Ct,Cw",  MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
+{"and",         0, INSN_CLASS_C,   "Cs,Cw,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
+{"and",         0, INSN_CLASS_I,   "d,s,t",  MATCH_AND, MASK_AND, match_opcode, 0 },
+{"and",         0, INSN_CLASS_I,   "d,s,j",  MATCH_ANDI, MASK_ANDI, match_opcode, INSN_ALIAS },
+{"beqz",        0, INSN_CLASS_C,   "Cs,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"beqz",        0, INSN_CLASS_I,   "s,p",  MATCH_BEQ, MASK_BEQ | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"beq",         0, INSN_CLASS_C,   "Cs,Cz,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"beq",         0, INSN_CLASS_I,   "s,t,p",  MATCH_BEQ, MASK_BEQ, match_opcode, INSN_CONDBRANCH },
+{"blez",        0, INSN_CLASS_I,   "t,p",  MATCH_BGE, MASK_BGE | MASK_RS1, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bgez",        0, INSN_CLASS_I,   "s,p",  MATCH_BGE, MASK_BGE | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bge",         0, INSN_CLASS_I,   "s,t,p",  MATCH_BGE, MASK_BGE, match_opcode, INSN_CONDBRANCH },
+{"bgeu",        0, INSN_CLASS_I,   "s,t,p",  MATCH_BGEU, MASK_BGEU, match_opcode, INSN_CONDBRANCH },
+{"ble",         0, INSN_CLASS_I,   "t,s,p",  MATCH_BGE, MASK_BGE, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bleu",        0, INSN_CLASS_I,   "t,s,p",  MATCH_BGEU, MASK_BGEU, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bltz",        0, INSN_CLASS_I,   "s,p",  MATCH_BLT, MASK_BLT | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bgtz",        0, INSN_CLASS_I,   "t,p",  MATCH_BLT, MASK_BLT | MASK_RS1, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"blt",         0, INSN_CLASS_I,   "s,t,p",  MATCH_BLT, MASK_BLT, match_opcode, INSN_CONDBRANCH },
+{"bltu",        0, INSN_CLASS_I,   "s,t,p",  MATCH_BLTU, MASK_BLTU, match_opcode, INSN_CONDBRANCH },
+{"bgt",         0, INSN_CLASS_I,   "t,s,p",  MATCH_BLT, MASK_BLT, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bgtu",        0, INSN_CLASS_I,   "t,s,p",  MATCH_BLTU, MASK_BLTU, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bnez",        0, INSN_CLASS_C,   "Cs,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bnez",        0, INSN_CLASS_I,   "s,p",  MATCH_BNE, MASK_BNE | MASK_RS2, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bne",         0, INSN_CLASS_C,   "Cs,Cz,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS|INSN_CONDBRANCH },
+{"bne",         0, INSN_CLASS_I,   "s,t,p",  MATCH_BNE, MASK_BNE, match_opcode, INSN_CONDBRANCH },
+{"addi",        0, INSN_CLASS_C,   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, INSN_ALIAS },
+{"addi",        0, INSN_CLASS_C,   "d,CU,Cj",  MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
+{"addi",        0, INSN_CLASS_C,   "d,CU,z",    MATCH_C_NOP, MASK_C_ADDI | MASK_RVC_IMM, match_c_nop, INSN_ALIAS },
+{"addi",        0, INSN_CLASS_C,   "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, INSN_ALIAS },
+{"addi",        0, INSN_CLASS_I,   "d,s,j",  MATCH_ADDI, MASK_ADDI, match_opcode, 0 },
+{"add",         0, INSN_CLASS_C,   "d,CU,CV",  MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
+{"add",         0, INSN_CLASS_C,   "d,CV,CU",  MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
+{"add",         0, INSN_CLASS_C,   "d,CU,Co",  MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
+{"add",         0, INSN_CLASS_C,   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, INSN_ALIAS },
+{"add",         0, INSN_CLASS_C,   "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, INSN_ALIAS },
+{"add",         0, INSN_CLASS_I,   "d,s,t",  MATCH_ADD, MASK_ADD, match_opcode, 0 },
 /* This is used for TLS, where the fourth arg is %tprel_add, to get a reloc
    applied to an add instruction, for relaxation to use.  */
-{"add",         0, {"I", 0},   "d,s,t,1",MATCH_ADD, MASK_ADD, match_opcode, 0 },
-{"add",         0, {"I", 0},   "d,s,j",  MATCH_ADDI, MASK_ADDI, match_opcode, INSN_ALIAS },
-{"la",          0, {"I", 0},   "d,B",  0,    (int) M_LA,  match_never, INSN_MACRO },
-{"lla",         0, {"I", 0},   "d,B",  0,    (int) M_LLA,  match_never, INSN_MACRO },
-{"la.tls.gd",   0, {"I", 0},   "d,A",  0,    (int) M_LA_TLS_GD,  match_never, INSN_MACRO },
-{"la.tls.ie",   0, {"I", 0},   "d,A",  0,    (int) M_LA_TLS_IE,  match_never, INSN_MACRO },
-{"neg",         0, {"I", 0},   "d,t",  MATCH_SUB, MASK_SUB | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
-{"slli",        0, {"C", 0},   "d,CU,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_slli_as_c_slli, INSN_ALIAS },
-{"slli",        0, {"I", 0},   "d,s,>",   MATCH_SLLI, MASK_SLLI, match_opcode, 0 },
-{"sll",         0, {"C", 0},   "d,CU,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_slli_as_c_slli, INSN_ALIAS },
-{"sll",         0, {"I", 0},   "d,s,t",   MATCH_SLL, MASK_SLL, match_opcode, 0 },
-{"sll",         0, {"I", 0},   "d,s,>",   MATCH_SLLI, MASK_SLLI, match_opcode, INSN_ALIAS },
-{"srli",        0, {"C", 0},   "Cs,Cw,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_srxi_as_c_srxi, INSN_ALIAS },
-{"srli",        0, {"I", 0},   "d,s,>",   MATCH_SRLI, MASK_SRLI, match_opcode, 0 },
-{"srl",         0, {"C", 0},   "Cs,Cw,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_srxi_as_c_srxi, INSN_ALIAS },
-{"srl",         0, {"I", 0},   "d,s,t",   MATCH_SRL, MASK_SRL, match_opcode, 0 },
-{"srl",         0, {"I", 0},   "d,s,>",   MATCH_SRLI, MASK_SRLI, match_opcode, INSN_ALIAS },
-{"srai",        0, {"C", 0},   "Cs,Cw,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_srxi_as_c_srxi, INSN_ALIAS },
-{"srai",        0, {"I", 0},   "d,s,>",   MATCH_SRAI, MASK_SRAI, match_opcode, 0 },
-{"sra",         0, {"C", 0},   "Cs,Cw,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_srxi_as_c_srxi, INSN_ALIAS },
-{"sra",         0, {"I", 0},   "d,s,t",   MATCH_SRA, MASK_SRA, match_opcode, 0 },
-{"sra",         0, {"I", 0},   "d,s,>",   MATCH_SRAI, MASK_SRAI, match_opcode, INSN_ALIAS },
-{"sub",         0, {"C", 0},   "Cs,Cw,Ct",  MATCH_C_SUB, MASK_C_SUB, match_opcode, INSN_ALIAS },
-{"sub",         0, {"I", 0},   "d,s,t",  MATCH_SUB, MASK_SUB, match_opcode, 0 },
-{"lb",          0, {"I", 0},   "d,o(s)",  MATCH_LB, MASK_LB, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"lb",          0, {"I", 0},   "d,A",  0, (int) M_LB, match_never, INSN_MACRO },
-{"lbu",         0, {"I", 0},   "d,o(s)",  MATCH_LBU, MASK_LBU, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"lbu",         0, {"I", 0},   "d,A",  0, (int) M_LBU, match_never, INSN_MACRO },
-{"lh",          0, {"I", 0},   "d,o(s)",  MATCH_LH, MASK_LH, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"lh",          0, {"I", 0},   "d,A",  0, (int) M_LH, match_never, INSN_MACRO },
-{"lhu",         0, {"I", 0},   "d,o(s)",  MATCH_LHU, MASK_LHU, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"lhu",         0, {"I", 0},   "d,A",  0, (int) M_LHU, match_never, INSN_MACRO },
-{"lw",          0, {"C", 0},   "d,Cm(Cc)",  MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"lw",          0, {"C", 0},   "Ct,Ck(Cs)",  MATCH_C_LW, MASK_C_LW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"lw",          0, {"I", 0},   "d,o(s)",  MATCH_LW, MASK_LW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lw",          0, {"I", 0},   "d,A",  0, (int) M_LW, match_never, INSN_MACRO },
-{"not",         0, {"I", 0},   "d,s",  MATCH_XORI | MASK_IMM, MASK_XORI | MASK_IMM, match_opcode, INSN_ALIAS },
-{"ori",         0, {"I", 0},   "d,s,j",  MATCH_ORI, MASK_ORI, match_opcode, 0 },
-{"or",          0, {"C", 0},   "Cs,Cw,Ct",  MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
-{"or",          0, {"C", 0},   "Cs,Ct,Cw",  MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
-{"or",          0, {"I", 0},   "d,s,t",  MATCH_OR, MASK_OR, match_opcode, 0 },
-{"or",          0, {"I", 0},   "d,s,j",  MATCH_ORI, MASK_ORI, match_opcode, INSN_ALIAS },
-{"auipc",       0, {"I", 0},   "d,u",  MATCH_AUIPC, MASK_AUIPC, match_opcode, 0 },
-{"seqz",        0, {"I", 0},   "d,s",  MATCH_SLTIU | ENCODE_ITYPE_IMM (1), MASK_SLTIU | MASK_IMM, match_opcode, INSN_ALIAS },
-{"snez",        0, {"I", 0},   "d,t",  MATCH_SLTU, MASK_SLTU | MASK_RS1, match_opcode, INSN_ALIAS },
-{"sltz",        0, {"I", 0},   "d,s",  MATCH_SLT, MASK_SLT | MASK_RS2, match_opcode, INSN_ALIAS },
-{"sgtz",        0, {"I", 0},   "d,t",  MATCH_SLT, MASK_SLT | MASK_RS1, match_opcode, INSN_ALIAS },
-{"slti",        0, {"I", 0},   "d,s,j",  MATCH_SLTI, MASK_SLTI, match_opcode, 0 },
-{"slt",         0, {"I", 0},   "d,s,t",  MATCH_SLT, MASK_SLT, match_opcode, 0 },
-{"slt",         0, {"I", 0},   "d,s,j",  MATCH_SLTI, MASK_SLTI, match_opcode, INSN_ALIAS },
-{"sltiu",       0, {"I", 0},   "d,s,j",  MATCH_SLTIU, MASK_SLTIU, match_opcode, 0 },
-{"sltu",        0, {"I", 0},   "d,s,t",  MATCH_SLTU, MASK_SLTU, match_opcode, 0 },
-{"sltu",        0, {"I", 0},   "d,s,j",  MATCH_SLTIU, MASK_SLTIU, match_opcode, INSN_ALIAS },
-{"sgt",         0, {"I", 0},   "d,t,s",  MATCH_SLT, MASK_SLT, match_opcode, INSN_ALIAS },
-{"sgtu",        0, {"I", 0},   "d,t,s",  MATCH_SLTU, MASK_SLTU, match_opcode, INSN_ALIAS },
-{"sb",          0, {"I", 0},   "t,q(s)",  MATCH_SB, MASK_SB, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"sb",          0, {"I", 0},   "t,A,s",  0, (int) M_SB, match_never, INSN_MACRO },
-{"sh",          0, {"I", 0},   "t,q(s)",  MATCH_SH, MASK_SH, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"sh",          0, {"I", 0},   "t,A,s",  0, (int) M_SH, match_never, INSN_MACRO },
-{"sw",          0, {"C", 0},   "CV,CM(Cc)",  MATCH_C_SWSP, MASK_C_SWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"sw",          0, {"C", 0},   "Ct,Ck(Cs)",  MATCH_C_SW, MASK_C_SW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"sw",          0, {"I", 0},   "t,q(s)",  MATCH_SW, MASK_SW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"sw",          0, {"I", 0},   "t,A,s",  0, (int) M_SW, match_never, INSN_MACRO },
-{"fence",       0, {"I", 0},   "",  MATCH_FENCE | MASK_PRED | MASK_SUCC, MASK_FENCE | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS },
-{"fence",       0, {"I", 0},   "P,Q",  MATCH_FENCE, MASK_FENCE | MASK_RD | MASK_RS1 | (MASK_IMM & ~MASK_PRED & ~MASK_SUCC), match_opcode, 0 },
-{"fence.i",     0, {"I", 0},   "",  MATCH_FENCE_I, MASK_FENCE | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, 0 },
-{"fence.tso",   0, {"I", 0},   "",  MATCH_FENCE_TSO, MASK_FENCE_TSO | MASK_RD | MASK_RS1, match_opcode, INSN_ALIAS },
-{"rdcycle",     0, {"I", 0},   "d",  MATCH_RDCYCLE, MASK_RDCYCLE, match_opcode, INSN_ALIAS },
-{"rdinstret",   0, {"I", 0},   "d",  MATCH_RDINSTRET, MASK_RDINSTRET, match_opcode, INSN_ALIAS },
-{"rdtime",      0, {"I", 0},   "d",  MATCH_RDTIME, MASK_RDTIME, match_opcode, INSN_ALIAS },
-{"rdcycleh",   32, {"I", 0},   "d",  MATCH_RDCYCLEH, MASK_RDCYCLEH, match_opcode, INSN_ALIAS },
-{"rdinstreth", 32, {"I", 0},   "d",  MATCH_RDINSTRETH, MASK_RDINSTRETH, match_opcode, INSN_ALIAS },
-{"rdtimeh",    32, {"I", 0},   "d",  MATCH_RDTIMEH, MASK_RDTIMEH, match_opcode, INSN_ALIAS },
-{"ecall",       0, {"I", 0},   "",    MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
-{"scall",       0, {"I", 0},   "",    MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
-{"xori",        0, {"I", 0},   "d,s,j",  MATCH_XORI, MASK_XORI, match_opcode, 0 },
-{"xor",         0, {"C", 0},   "Cs,Cw,Ct",  MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
-{"xor",         0, {"C", 0},   "Cs,Ct,Cw",  MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
-{"xor",         0, {"I", 0},   "d,s,t",  MATCH_XOR, MASK_XOR, match_opcode, 0 },
-{"xor",         0, {"I", 0},   "d,s,j",  MATCH_XORI, MASK_XORI, match_opcode, INSN_ALIAS },
-{"lwu",        64, {"I", 0}, "d,o(s)",  MATCH_LWU, MASK_LWU, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lwu",        64, {"I", 0}, "d,A",  0, (int) M_LWU, match_never, INSN_MACRO },
-{"ld",         64, {"C", 0}, "d,Cn(Cc)",  MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"ld",         64, {"C", 0}, "Ct,Cl(Cs)",  MATCH_C_LD, MASK_C_LD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"ld",         64, {"I", 0}, "d,o(s)", MATCH_LD, MASK_LD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"ld",         64, {"I", 0}, "d,A",  0, (int) M_LD, match_never, INSN_MACRO },
-{"sd",         64, {"C", 0}, "CV,CN(Cc)",  MATCH_C_SDSP, MASK_C_SDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"sd",         64, {"C", 0}, "Ct,Cl(Cs)",  MATCH_C_SD, MASK_C_SD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"sd",         64, {"I", 0}, "t,q(s)",  MATCH_SD, MASK_SD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"sd",         64, {"I", 0}, "t,A,s",  0, (int) M_SD, match_never, INSN_MACRO },
-{"sext.w",     64, {"C", 0}, "d,CU",  MATCH_C_ADDIW, MASK_C_ADDIW | MASK_RVC_IMM, match_rd_nonzero, INSN_ALIAS },
-{"sext.w",     64, {"I", 0}, "d,s",  MATCH_ADDIW, MASK_ADDIW | MASK_IMM, match_opcode, INSN_ALIAS },
-{"addiw",      64, {"C", 0}, "d,CU,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
-{"addiw",      64, {"I", 0}, "d,s,j",  MATCH_ADDIW, MASK_ADDIW, match_opcode, 0 },
-{"addw",       64, {"C", 0}, "Cs,Cw,Ct",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
-{"addw",       64, {"C", 0}, "Cs,Ct,Cw",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
-{"addw",       64, {"C", 0}, "d,CU,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
-{"addw",       64, {"I", 0}, "d,s,t",  MATCH_ADDW, MASK_ADDW, match_opcode, 0 },
-{"addw",       64, {"I", 0}, "d,s,j",  MATCH_ADDIW, MASK_ADDIW, match_opcode, INSN_ALIAS },
-{"negw",       64, {"I", 0}, "d,t",  MATCH_SUBW, MASK_SUBW | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
-{"slliw",      64, {"I", 0}, "d,s,<",   MATCH_SLLIW, MASK_SLLIW, match_opcode, 0 },
-{"sllw",       64, {"I", 0}, "d,s,t",   MATCH_SLLW, MASK_SLLW, match_opcode, 0 },
-{"sllw",       64, {"I", 0}, "d,s,<",   MATCH_SLLIW, MASK_SLLIW, match_opcode, INSN_ALIAS },
-{"srliw",      64, {"I", 0}, "d,s,<",   MATCH_SRLIW, MASK_SRLIW, match_opcode, 0 },
-{"srlw",       64, {"I", 0}, "d,s,t",   MATCH_SRLW, MASK_SRLW, match_opcode, 0 },
-{"srlw",       64, {"I", 0}, "d,s,<",   MATCH_SRLIW, MASK_SRLIW, match_opcode, INSN_ALIAS },
-{"sraiw",      64, {"I", 0}, "d,s,<",   MATCH_SRAIW, MASK_SRAIW, match_opcode, 0 },
-{"sraw",       64, {"I", 0}, "d,s,t",   MATCH_SRAW, MASK_SRAW, match_opcode, 0 },
-{"sraw",       64, {"I", 0}, "d,s,<",   MATCH_SRAIW, MASK_SRAIW, match_opcode, INSN_ALIAS },
-{"subw",       64, {"C", 0}, "Cs,Cw,Ct",  MATCH_C_SUBW, MASK_C_SUBW, match_opcode, INSN_ALIAS },
-{"subw",       64, {"I", 0}, "d,s,t",  MATCH_SUBW, MASK_SUBW, match_opcode, 0 },
+{"add",         0, INSN_CLASS_I,   "d,s,t,1",MATCH_ADD, MASK_ADD, match_opcode, 0 },
+{"add",         0, INSN_CLASS_I,   "d,s,j",  MATCH_ADDI, MASK_ADDI, match_opcode, INSN_ALIAS },
+{"la",          0, INSN_CLASS_I,   "d,B",  0,    (int) M_LA,  match_never, INSN_MACRO },
+{"lla",         0, INSN_CLASS_I,   "d,B",  0,    (int) M_LLA,  match_never, INSN_MACRO },
+{"la.tls.gd",   0, INSN_CLASS_I,   "d,A",  0,    (int) M_LA_TLS_GD,  match_never, INSN_MACRO },
+{"la.tls.ie",   0, INSN_CLASS_I,   "d,A",  0,    (int) M_LA_TLS_IE,  match_never, INSN_MACRO },
+{"neg",         0, INSN_CLASS_I,   "d,t",  MATCH_SUB, MASK_SUB | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
+{"slli",        0, INSN_CLASS_C,   "d,CU,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_slli_as_c_slli, INSN_ALIAS },
+{"slli",        0, INSN_CLASS_I,   "d,s,>",   MATCH_SLLI, MASK_SLLI, match_opcode, 0 },
+{"sll",         0, INSN_CLASS_C,   "d,CU,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_slli_as_c_slli, INSN_ALIAS },
+{"sll",         0, INSN_CLASS_I,   "d,s,t",   MATCH_SLL, MASK_SLL, match_opcode, 0 },
+{"sll",         0, INSN_CLASS_I,   "d,s,>",   MATCH_SLLI, MASK_SLLI, match_opcode, INSN_ALIAS },
+{"srli",        0, INSN_CLASS_C,   "Cs,Cw,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_srxi_as_c_srxi, INSN_ALIAS },
+{"srli",        0, INSN_CLASS_I,   "d,s,>",   MATCH_SRLI, MASK_SRLI, match_opcode, 0 },
+{"srl",         0, INSN_CLASS_C,   "Cs,Cw,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_srxi_as_c_srxi, INSN_ALIAS },
+{"srl",         0, INSN_CLASS_I,   "d,s,t",   MATCH_SRL, MASK_SRL, match_opcode, 0 },
+{"srl",         0, INSN_CLASS_I,   "d,s,>",   MATCH_SRLI, MASK_SRLI, match_opcode, INSN_ALIAS },
+{"srai",        0, INSN_CLASS_C,   "Cs,Cw,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_srxi_as_c_srxi, INSN_ALIAS },
+{"srai",        0, INSN_CLASS_I,   "d,s,>",   MATCH_SRAI, MASK_SRAI, match_opcode, 0 },
+{"sra",         0, INSN_CLASS_C,   "Cs,Cw,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_srxi_as_c_srxi, INSN_ALIAS },
+{"sra",         0, INSN_CLASS_I,   "d,s,t",   MATCH_SRA, MASK_SRA, match_opcode, 0 },
+{"sra",         0, INSN_CLASS_I,   "d,s,>",   MATCH_SRAI, MASK_SRAI, match_opcode, INSN_ALIAS },
+{"sub",         0, INSN_CLASS_C,   "Cs,Cw,Ct",  MATCH_C_SUB, MASK_C_SUB, match_opcode, INSN_ALIAS },
+{"sub",         0, INSN_CLASS_I,   "d,s,t",  MATCH_SUB, MASK_SUB, match_opcode, 0 },
+{"lb",          0, INSN_CLASS_I,   "d,o(s)",  MATCH_LB, MASK_LB, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"lb",          0, INSN_CLASS_I,   "d,A",  0, (int) M_LB, match_never, INSN_MACRO },
+{"lbu",         0, INSN_CLASS_I,   "d,o(s)",  MATCH_LBU, MASK_LBU, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"lbu",         0, INSN_CLASS_I,   "d,A",  0, (int) M_LBU, match_never, INSN_MACRO },
+{"lh",          0, INSN_CLASS_I,   "d,o(s)",  MATCH_LH, MASK_LH, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"lh",          0, INSN_CLASS_I,   "d,A",  0, (int) M_LH, match_never, INSN_MACRO },
+{"lhu",         0, INSN_CLASS_I,   "d,o(s)",  MATCH_LHU, MASK_LHU, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"lhu",         0, INSN_CLASS_I,   "d,A",  0, (int) M_LHU, match_never, INSN_MACRO },
+{"lw",          0, INSN_CLASS_C,   "d,Cm(Cc)",  MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"lw",          0, INSN_CLASS_C,   "Ct,Ck(Cs)",  MATCH_C_LW, MASK_C_LW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"lw",          0, INSN_CLASS_I,   "d,o(s)",  MATCH_LW, MASK_LW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lw",          0, INSN_CLASS_I,   "d,A",  0, (int) M_LW, match_never, INSN_MACRO },
+{"not",         0, INSN_CLASS_I,   "d,s",  MATCH_XORI | MASK_IMM, MASK_XORI | MASK_IMM, match_opcode, INSN_ALIAS },
+{"ori",         0, INSN_CLASS_I,   "d,s,j",  MATCH_ORI, MASK_ORI, match_opcode, 0 },
+{"or",          0, INSN_CLASS_C,   "Cs,Cw,Ct",  MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
+{"or",          0, INSN_CLASS_C,   "Cs,Ct,Cw",  MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
+{"or",          0, INSN_CLASS_I,   "d,s,t",  MATCH_OR, MASK_OR, match_opcode, 0 },
+{"or",          0, INSN_CLASS_I,   "d,s,j",  MATCH_ORI, MASK_ORI, match_opcode, INSN_ALIAS },
+{"auipc",       0, INSN_CLASS_I,   "d,u",  MATCH_AUIPC, MASK_AUIPC, match_opcode, 0 },
+{"seqz",        0, INSN_CLASS_I,   "d,s",  MATCH_SLTIU | ENCODE_ITYPE_IMM (1), MASK_SLTIU | MASK_IMM, match_opcode, INSN_ALIAS },
+{"snez",        0, INSN_CLASS_I,   "d,t",  MATCH_SLTU, MASK_SLTU | MASK_RS1, match_opcode, INSN_ALIAS },
+{"sltz",        0, INSN_CLASS_I,   "d,s",  MATCH_SLT, MASK_SLT | MASK_RS2, match_opcode, INSN_ALIAS },
+{"sgtz",        0, INSN_CLASS_I,   "d,t",  MATCH_SLT, MASK_SLT | MASK_RS1, match_opcode, INSN_ALIAS },
+{"slti",        0, INSN_CLASS_I,   "d,s,j",  MATCH_SLTI, MASK_SLTI, match_opcode, 0 },
+{"slt",         0, INSN_CLASS_I,   "d,s,t",  MATCH_SLT, MASK_SLT, match_opcode, 0 },
+{"slt",         0, INSN_CLASS_I,   "d,s,j",  MATCH_SLTI, MASK_SLTI, match_opcode, INSN_ALIAS },
+{"sltiu",       0, INSN_CLASS_I,   "d,s,j",  MATCH_SLTIU, MASK_SLTIU, match_opcode, 0 },
+{"sltu",        0, INSN_CLASS_I,   "d,s,t",  MATCH_SLTU, MASK_SLTU, match_opcode, 0 },
+{"sltu",        0, INSN_CLASS_I,   "d,s,j",  MATCH_SLTIU, MASK_SLTIU, match_opcode, INSN_ALIAS },
+{"sgt",         0, INSN_CLASS_I,   "d,t,s",  MATCH_SLT, MASK_SLT, match_opcode, INSN_ALIAS },
+{"sgtu",        0, INSN_CLASS_I,   "d,t,s",  MATCH_SLTU, MASK_SLTU, match_opcode, INSN_ALIAS },
+{"sb",          0, INSN_CLASS_I,   "t,q(s)",  MATCH_SB, MASK_SB, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"sb",          0, INSN_CLASS_I,   "t,A,s",  0, (int) M_SB, match_never, INSN_MACRO },
+{"sh",          0, INSN_CLASS_I,   "t,q(s)",  MATCH_SH, MASK_SH, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"sh",          0, INSN_CLASS_I,   "t,A,s",  0, (int) M_SH, match_never, INSN_MACRO },
+{"sw",          0, INSN_CLASS_C,   "CV,CM(Cc)",  MATCH_C_SWSP, MASK_C_SWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"sw",          0, INSN_CLASS_C,   "Ct,Ck(Cs)",  MATCH_C_SW, MASK_C_SW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"sw",          0, INSN_CLASS_I,   "t,q(s)",  MATCH_SW, MASK_SW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"sw",          0, INSN_CLASS_I,   "t,A,s",  0, (int) M_SW, match_never, INSN_MACRO },
+{"fence",       0, INSN_CLASS_I,   "",  MATCH_FENCE | MASK_PRED | MASK_SUCC, MASK_FENCE | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, INSN_ALIAS },
+{"fence",       0, INSN_CLASS_I,   "P,Q",  MATCH_FENCE, MASK_FENCE | MASK_RD | MASK_RS1 | (MASK_IMM & ~MASK_PRED & ~MASK_SUCC), match_opcode, 0 },
+{"fence.i",     0, INSN_CLASS_I,   "",  MATCH_FENCE_I, MASK_FENCE | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, 0 },
+{"fence.tso",   0, INSN_CLASS_I,   "",  MATCH_FENCE_TSO, MASK_FENCE_TSO | MASK_RD | MASK_RS1, match_opcode, INSN_ALIAS },
+{"rdcycle",     0, INSN_CLASS_I,   "d",  MATCH_RDCYCLE, MASK_RDCYCLE, match_opcode, INSN_ALIAS },
+{"rdinstret",   0, INSN_CLASS_I,   "d",  MATCH_RDINSTRET, MASK_RDINSTRET, match_opcode, INSN_ALIAS },
+{"rdtime",      0, INSN_CLASS_I,   "d",  MATCH_RDTIME, MASK_RDTIME, match_opcode, INSN_ALIAS },
+{"rdcycleh",   32, INSN_CLASS_I,   "d",  MATCH_RDCYCLEH, MASK_RDCYCLEH, match_opcode, INSN_ALIAS },
+{"rdinstreth", 32, INSN_CLASS_I,   "d",  MATCH_RDINSTRETH, MASK_RDINSTRETH, match_opcode, INSN_ALIAS },
+{"rdtimeh",    32, INSN_CLASS_I,   "d",  MATCH_RDTIMEH, MASK_RDTIMEH, match_opcode, INSN_ALIAS },
+{"ecall",       0, INSN_CLASS_I,   "",    MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
+{"scall",       0, INSN_CLASS_I,   "",    MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
+{"xori",        0, INSN_CLASS_I,   "d,s,j",  MATCH_XORI, MASK_XORI, match_opcode, 0 },
+{"xor",         0, INSN_CLASS_C,   "Cs,Cw,Ct",  MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
+{"xor",         0, INSN_CLASS_C,   "Cs,Ct,Cw",  MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
+{"xor",         0, INSN_CLASS_I,   "d,s,t",  MATCH_XOR, MASK_XOR, match_opcode, 0 },
+{"xor",         0, INSN_CLASS_I,   "d,s,j",  MATCH_XORI, MASK_XORI, match_opcode, INSN_ALIAS },
+{"lwu",        64, INSN_CLASS_I, "d,o(s)",  MATCH_LWU, MASK_LWU, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lwu",        64, INSN_CLASS_I, "d,A",  0, (int) M_LWU, match_never, INSN_MACRO },
+{"ld",         64, INSN_CLASS_C, "d,Cn(Cc)",  MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"ld",         64, INSN_CLASS_C, "Ct,Cl(Cs)",  MATCH_C_LD, MASK_C_LD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"ld",         64, INSN_CLASS_I, "d,o(s)", MATCH_LD, MASK_LD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"ld",         64, INSN_CLASS_I, "d,A",  0, (int) M_LD, match_never, INSN_MACRO },
+{"sd",         64, INSN_CLASS_C, "CV,CN(Cc)",  MATCH_C_SDSP, MASK_C_SDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"sd",         64, INSN_CLASS_C, "Ct,Cl(Cs)",  MATCH_C_SD, MASK_C_SD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"sd",         64, INSN_CLASS_I, "t,q(s)",  MATCH_SD, MASK_SD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"sd",         64, INSN_CLASS_I, "t,A,s",  0, (int) M_SD, match_never, INSN_MACRO },
+{"sext.w",     64, INSN_CLASS_C, "d,CU",  MATCH_C_ADDIW, MASK_C_ADDIW | MASK_RVC_IMM, match_rd_nonzero, INSN_ALIAS },
+{"sext.w",     64, INSN_CLASS_I, "d,s",  MATCH_ADDIW, MASK_ADDIW | MASK_IMM, match_opcode, INSN_ALIAS },
+{"addiw",      64, INSN_CLASS_C, "d,CU,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
+{"addiw",      64, INSN_CLASS_I, "d,s,j",  MATCH_ADDIW, MASK_ADDIW, match_opcode, 0 },
+{"addw",       64, INSN_CLASS_C, "Cs,Cw,Ct",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
+{"addw",       64, INSN_CLASS_C, "Cs,Ct,Cw",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
+{"addw",       64, INSN_CLASS_C, "d,CU,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
+{"addw",       64, INSN_CLASS_I, "d,s,t",  MATCH_ADDW, MASK_ADDW, match_opcode, 0 },
+{"addw",       64, INSN_CLASS_I, "d,s,j",  MATCH_ADDIW, MASK_ADDIW, match_opcode, INSN_ALIAS },
+{"negw",       64, INSN_CLASS_I, "d,t",  MATCH_SUBW, MASK_SUBW | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
+{"slliw",      64, INSN_CLASS_I, "d,s,<",   MATCH_SLLIW, MASK_SLLIW, match_opcode, 0 },
+{"sllw",       64, INSN_CLASS_I, "d,s,t",   MATCH_SLLW, MASK_SLLW, match_opcode, 0 },
+{"sllw",       64, INSN_CLASS_I, "d,s,<",   MATCH_SLLIW, MASK_SLLIW, match_opcode, INSN_ALIAS },
+{"srliw",      64, INSN_CLASS_I, "d,s,<",   MATCH_SRLIW, MASK_SRLIW, match_opcode, 0 },
+{"srlw",       64, INSN_CLASS_I, "d,s,t",   MATCH_SRLW, MASK_SRLW, match_opcode, 0 },
+{"srlw",       64, INSN_CLASS_I, "d,s,<",   MATCH_SRLIW, MASK_SRLIW, match_opcode, INSN_ALIAS },
+{"sraiw",      64, INSN_CLASS_I, "d,s,<",   MATCH_SRAIW, MASK_SRAIW, match_opcode, 0 },
+{"sraw",       64, INSN_CLASS_I, "d,s,t",   MATCH_SRAW, MASK_SRAW, match_opcode, 0 },
+{"sraw",       64, INSN_CLASS_I, "d,s,<",   MATCH_SRAIW, MASK_SRAIW, match_opcode, INSN_ALIAS },
+{"subw",       64, INSN_CLASS_C, "Cs,Cw,Ct",  MATCH_C_SUBW, MASK_C_SUBW, match_opcode, INSN_ALIAS },
+{"subw",       64, INSN_CLASS_I, "d,s,t",  MATCH_SUBW, MASK_SUBW, match_opcode, 0 },
 
 /* Atomic memory operation instruction subset */
-{"lr.w",         0, {"A", 0},   "d,0(s)",    MATCH_LR_W, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"sc.w",         0, {"A", 0},   "d,t,0(s)",  MATCH_SC_W, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoadd.w",     0, {"A", 0},   "d,t,0(s)",  MATCH_AMOADD_W, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoswap.w",    0, {"A", 0},   "d,t,0(s)",  MATCH_AMOSWAP_W, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoand.w",     0, {"A", 0},   "d,t,0(s)",  MATCH_AMOAND_W, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoor.w",      0, {"A", 0},   "d,t,0(s)",  MATCH_AMOOR_W, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoxor.w",     0, {"A", 0},   "d,t,0(s)",  MATCH_AMOXOR_W, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomax.w",     0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAX_W, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomaxu.w",    0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAXU_W, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomin.w",     0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMIN_W, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amominu.w",    0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMINU_W, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lr.w.aq",      0, {"A", 0},   "d,0(s)",    MATCH_LR_W | MASK_AQ, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"sc.w.aq",      0, {"A", 0},   "d,t,0(s)",  MATCH_SC_W | MASK_AQ, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoadd.w.aq",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOADD_W | MASK_AQ, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoswap.w.aq", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_AQ, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoand.w.aq",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOAND_W | MASK_AQ, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoor.w.aq",   0, {"A", 0},   "d,t,0(s)",  MATCH_AMOOR_W | MASK_AQ, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoxor.w.aq",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_AQ, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomax.w.aq",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_AQ, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomaxu.w.aq", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_AQ, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomin.w.aq",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_AQ, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amominu.w.aq", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_AQ, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lr.w.rl",      0, {"A", 0},   "d,0(s)",    MATCH_LR_W | MASK_RL, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"sc.w.rl",      0, {"A", 0},   "d,t,0(s)",  MATCH_SC_W | MASK_RL, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoadd.w.rl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOADD_W | MASK_RL, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoswap.w.rl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_RL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoand.w.rl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOAND_W | MASK_RL, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoor.w.rl",   0, {"A", 0},   "d,t,0(s)",  MATCH_AMOOR_W | MASK_RL, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoxor.w.rl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_RL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomax.w.rl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_RL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomaxu.w.rl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_RL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomin.w.rl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_RL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amominu.w.rl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_RL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lr.w.aqrl",    0, {"A", 0},   "d,0(s)",    MATCH_LR_W | MASK_AQRL, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"sc.w.aqrl",    0, {"A", 0},   "d,t,0(s)",  MATCH_SC_W | MASK_AQRL, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoadd.w.aqrl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOADD_W | MASK_AQRL, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoswap.w.aqrl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_AQRL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoand.w.aqrl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOAND_W | MASK_AQRL, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoor.w.aqrl",   0, {"A", 0},   "d,t,0(s)",  MATCH_AMOOR_W | MASK_AQRL, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amoxor.w.aqrl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_AQRL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomax.w.aqrl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_AQRL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomaxu.w.aqrl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_AQRL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amomin.w.aqrl",  0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_AQRL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"amominu.w.aqrl", 0, {"A", 0},   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_AQRL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"lr.d",         64, {"A", 0} , "d,0(s)",    MATCH_LR_D, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"sc.d",         64, {"A", 0} , "d,t,0(s)",  MATCH_SC_D, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoadd.d",     64, {"A", 0} , "d,t,0(s)",  MATCH_AMOADD_D, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoswap.d",    64, {"A", 0} , "d,t,0(s)",  MATCH_AMOSWAP_D, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoand.d",     64, {"A", 0} , "d,t,0(s)",  MATCH_AMOAND_D, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoor.d",      64, {"A", 0} , "d,t,0(s)",  MATCH_AMOOR_D, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoxor.d",     64, {"A", 0} , "d,t,0(s)",  MATCH_AMOXOR_D, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomax.d",     64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAX_D, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomaxu.d",    64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAXU_D, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomin.d",     64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMIN_D, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amominu.d",    64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMINU_D, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"lr.d.aq",      64, {"A", 0} , "d,0(s)",    MATCH_LR_D | MASK_AQ, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"sc.d.aq",      64, {"A", 0} , "d,t,0(s)",  MATCH_SC_D | MASK_AQ, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoadd.d.aq",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOADD_D | MASK_AQ, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoswap.d.aq", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_AQ, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoand.d.aq",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOAND_D | MASK_AQ, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoor.d.aq",   64, {"A", 0} , "d,t,0(s)",  MATCH_AMOOR_D | MASK_AQ, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoxor.d.aq",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_AQ, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomax.d.aq",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_AQ, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomaxu.d.aq", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_AQ, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomin.d.aq",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_AQ, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amominu.d.aq", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_AQ, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"lr.d.rl",      64, {"A", 0} , "d,0(s)",    MATCH_LR_D | MASK_RL, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"sc.d.rl",      64, {"A", 0} , "d,t,0(s)",  MATCH_SC_D | MASK_RL, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoadd.d.rl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOADD_D | MASK_RL, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoswap.d.rl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_RL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoand.d.rl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOAND_D | MASK_RL, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoor.d.rl",   64, {"A", 0} , "d,t,0(s)",  MATCH_AMOOR_D | MASK_RL, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoxor.d.rl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_RL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomax.d.rl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_RL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomaxu.d.rl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_RL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomin.d.rl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_RL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amominu.d.rl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_RL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"lr.d.aqrl",    64, {"A", 0} , "d,0(s)",    MATCH_LR_D | MASK_AQRL, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"sc.d.aqrl",    64, {"A", 0} , "d,t,0(s)",  MATCH_SC_D | MASK_AQRL, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoadd.d.aqrl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOADD_D | MASK_AQRL, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoswap.d.aqrl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_AQRL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoand.d.aqrl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOAND_D | MASK_AQRL, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoor.d.aqrl",   64, {"A", 0} , "d,t,0(s)",  MATCH_AMOOR_D | MASK_AQRL, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amoxor.d.aqrl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_AQRL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomax.d.aqrl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_AQRL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomaxu.d.aqrl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_AQRL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amomin.d.aqrl",  64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_AQRL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"amominu.d.aqrl", 64, {"A", 0} , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_AQRL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"lr.w",         0, INSN_CLASS_A,   "d,0(s)",    MATCH_LR_W, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"sc.w",         0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_SC_W, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoadd.w",     0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOADD_W, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoswap.w",    0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOSWAP_W, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoand.w",     0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOAND_W, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoor.w",      0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOOR_W, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoxor.w",     0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOXOR_W, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomax.w",     0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAX_W, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomaxu.w",    0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAXU_W, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomin.w",     0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMIN_W, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amominu.w",    0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMINU_W, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lr.w.aq",      0, INSN_CLASS_A,   "d,0(s)",    MATCH_LR_W | MASK_AQ, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"sc.w.aq",      0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_SC_W | MASK_AQ, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoadd.w.aq",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOADD_W | MASK_AQ, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoswap.w.aq", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_AQ, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoand.w.aq",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOAND_W | MASK_AQ, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoor.w.aq",   0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOOR_W | MASK_AQ, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoxor.w.aq",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_AQ, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomax.w.aq",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_AQ, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomaxu.w.aq", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_AQ, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomin.w.aq",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_AQ, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amominu.w.aq", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_AQ, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lr.w.rl",      0, INSN_CLASS_A,   "d,0(s)",    MATCH_LR_W | MASK_RL, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"sc.w.rl",      0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_SC_W | MASK_RL, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoadd.w.rl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOADD_W | MASK_RL, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoswap.w.rl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_RL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoand.w.rl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOAND_W | MASK_RL, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoor.w.rl",   0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOOR_W | MASK_RL, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoxor.w.rl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_RL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomax.w.rl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_RL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomaxu.w.rl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_RL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomin.w.rl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_RL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amominu.w.rl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_RL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lr.w.aqrl",    0, INSN_CLASS_A,   "d,0(s)",    MATCH_LR_W | MASK_AQRL, MASK_LR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"sc.w.aqrl",    0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_SC_W | MASK_AQRL, MASK_SC_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoadd.w.aqrl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOADD_W | MASK_AQRL, MASK_AMOADD_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoswap.w.aqrl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOSWAP_W | MASK_AQRL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoand.w.aqrl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOAND_W | MASK_AQRL, MASK_AMOAND_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoor.w.aqrl",   0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOOR_W | MASK_AQRL, MASK_AMOOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amoxor.w.aqrl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOXOR_W | MASK_AQRL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomax.w.aqrl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAX_W | MASK_AQRL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomaxu.w.aqrl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMAXU_W | MASK_AQRL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amomin.w.aqrl",  0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMIN_W | MASK_AQRL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"amominu.w.aqrl", 0, INSN_CLASS_A,   "d,t,0(s)",  MATCH_AMOMINU_W | MASK_AQRL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"lr.d",         64, INSN_CLASS_A , "d,0(s)",    MATCH_LR_D, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"sc.d",         64, INSN_CLASS_A , "d,t,0(s)",  MATCH_SC_D, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoadd.d",     64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOADD_D, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoswap.d",    64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOSWAP_D, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoand.d",     64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOAND_D, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoor.d",      64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOOR_D, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoxor.d",     64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOXOR_D, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomax.d",     64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAX_D, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomaxu.d",    64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAXU_D, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomin.d",     64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMIN_D, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amominu.d",    64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMINU_D, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"lr.d.aq",      64, INSN_CLASS_A , "d,0(s)",    MATCH_LR_D | MASK_AQ, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"sc.d.aq",      64, INSN_CLASS_A , "d,t,0(s)",  MATCH_SC_D | MASK_AQ, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoadd.d.aq",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOADD_D | MASK_AQ, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoswap.d.aq", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_AQ, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoand.d.aq",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOAND_D | MASK_AQ, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoor.d.aq",   64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOOR_D | MASK_AQ, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoxor.d.aq",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_AQ, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomax.d.aq",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_AQ, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomaxu.d.aq", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_AQ, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomin.d.aq",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_AQ, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amominu.d.aq", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_AQ, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"lr.d.rl",      64, INSN_CLASS_A , "d,0(s)",    MATCH_LR_D | MASK_RL, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"sc.d.rl",      64, INSN_CLASS_A , "d,t,0(s)",  MATCH_SC_D | MASK_RL, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoadd.d.rl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOADD_D | MASK_RL, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoswap.d.rl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_RL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoand.d.rl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOAND_D | MASK_RL, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoor.d.rl",   64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOOR_D | MASK_RL, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoxor.d.rl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_RL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomax.d.rl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_RL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomaxu.d.rl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_RL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomin.d.rl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_RL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amominu.d.rl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_RL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"lr.d.aqrl",    64, INSN_CLASS_A , "d,0(s)",    MATCH_LR_D | MASK_AQRL, MASK_LR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"sc.d.aqrl",    64, INSN_CLASS_A , "d,t,0(s)",  MATCH_SC_D | MASK_AQRL, MASK_SC_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoadd.d.aqrl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOADD_D | MASK_AQRL, MASK_AMOADD_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoswap.d.aqrl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOSWAP_D | MASK_AQRL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoand.d.aqrl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOAND_D | MASK_AQRL, MASK_AMOAND_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoor.d.aqrl",   64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOOR_D | MASK_AQRL, MASK_AMOOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amoxor.d.aqrl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOXOR_D | MASK_AQRL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomax.d.aqrl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAX_D | MASK_AQRL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomaxu.d.aqrl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMAXU_D | MASK_AQRL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amomin.d.aqrl",  64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMIN_D | MASK_AQRL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"amominu.d.aqrl", 64, INSN_CLASS_A , "d,t,0(s)",  MATCH_AMOMINU_D | MASK_AQRL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, INSN_DREF|INSN_8_BYTE },
 
 /* Multiply/Divide instruction subset */
-{"mul",       0, {"M", 0},   "d,s,t",  MATCH_MUL, MASK_MUL, match_opcode, 0 },
-{"mulh",      0, {"M", 0},   "d,s,t",  MATCH_MULH, MASK_MULH, match_opcode, 0 },
-{"mulhu",     0, {"M", 0},   "d,s,t",  MATCH_MULHU, MASK_MULHU, match_opcode, 0 },
-{"mulhsu",    0, {"M", 0},   "d,s,t",  MATCH_MULHSU, MASK_MULHSU, match_opcode, 0 },
-{"div",       0, {"M", 0},   "d,s,t",  MATCH_DIV, MASK_DIV, match_opcode, 0 },
-{"divu",      0, {"M", 0},   "d,s,t",  MATCH_DIVU, MASK_DIVU, match_opcode, 0 },
-{"rem",       0, {"M", 0},   "d,s,t",  MATCH_REM, MASK_REM, match_opcode, 0 },
-{"remu",      0, {"M", 0},   "d,s,t",  MATCH_REMU, MASK_REMU, match_opcode, 0 },
-{"mulw",     64, {"M", 0}, "d,s,t",  MATCH_MULW, MASK_MULW, match_opcode, 0 },
-{"divw",     64, {"M", 0}, "d,s,t",  MATCH_DIVW, MASK_DIVW, match_opcode, 0 },
-{"divuw",    64, {"M", 0}, "d,s,t",  MATCH_DIVUW, MASK_DIVUW, match_opcode, 0 },
-{"remw",     64, {"M", 0}, "d,s,t",  MATCH_REMW, MASK_REMW, match_opcode, 0 },
-{"remuw",    64, {"M", 0}, "d,s,t",  MATCH_REMUW, MASK_REMUW, match_opcode, 0 },
+{"mul",       0, INSN_CLASS_M,   "d,s,t",  MATCH_MUL, MASK_MUL, match_opcode, 0 },
+{"mulh",      0, INSN_CLASS_M,   "d,s,t",  MATCH_MULH, MASK_MULH, match_opcode, 0 },
+{"mulhu",     0, INSN_CLASS_M,   "d,s,t",  MATCH_MULHU, MASK_MULHU, match_opcode, 0 },
+{"mulhsu",    0, INSN_CLASS_M,   "d,s,t",  MATCH_MULHSU, MASK_MULHSU, match_opcode, 0 },
+{"div",       0, INSN_CLASS_M,   "d,s,t",  MATCH_DIV, MASK_DIV, match_opcode, 0 },
+{"divu",      0, INSN_CLASS_M,   "d,s,t",  MATCH_DIVU, MASK_DIVU, match_opcode, 0 },
+{"rem",       0, INSN_CLASS_M,   "d,s,t",  MATCH_REM, MASK_REM, match_opcode, 0 },
+{"remu",      0, INSN_CLASS_M,   "d,s,t",  MATCH_REMU, MASK_REMU, match_opcode, 0 },
+{"mulw",     64, INSN_CLASS_M, "d,s,t",  MATCH_MULW, MASK_MULW, match_opcode, 0 },
+{"divw",     64, INSN_CLASS_M, "d,s,t",  MATCH_DIVW, MASK_DIVW, match_opcode, 0 },
+{"divuw",    64, INSN_CLASS_M, "d,s,t",  MATCH_DIVUW, MASK_DIVUW, match_opcode, 0 },
+{"remw",     64, INSN_CLASS_M, "d,s,t",  MATCH_REMW, MASK_REMW, match_opcode, 0 },
+{"remuw",    64, INSN_CLASS_M, "d,s,t",  MATCH_REMUW, MASK_REMUW, match_opcode, 0 },
 
 /* Single-precision floating-point instruction subset */
-{"frcsr",     0, {"F", 0},   "d",  MATCH_FRCSR, MASK_FRCSR, match_opcode, INSN_ALIAS },
-{"frsr",      0, {"F", 0},   "d",  MATCH_FRCSR, MASK_FRCSR, match_opcode, INSN_ALIAS },
-{"fscsr",     0, {"F", 0},   "s",  MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, INSN_ALIAS },
-{"fscsr",     0, {"F", 0},   "d,s",  MATCH_FSCSR, MASK_FSCSR, match_opcode, INSN_ALIAS },
-{"fssr",      0, {"F", 0},   "s",  MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, INSN_ALIAS },
-{"fssr",      0, {"F", 0},   "d,s",  MATCH_FSCSR, MASK_FSCSR, match_opcode, INSN_ALIAS },
-{"frrm",      0, {"F", 0},   "d",  MATCH_FRRM, MASK_FRRM, match_opcode, INSN_ALIAS },
-{"fsrm",      0, {"F", 0},   "s",  MATCH_FSRM, MASK_FSRM | MASK_RD, match_opcode, INSN_ALIAS },
-{"fsrm",      0, {"F", 0},   "d,s",  MATCH_FSRM, MASK_FSRM, match_opcode, INSN_ALIAS },
-{"fsrmi",     0, {"F", 0},   "d,Z",  MATCH_FSRMI, MASK_FSRMI, match_opcode, INSN_ALIAS },
-{"fsrmi",     0, {"F", 0},   "Z",  MATCH_FSRMI, MASK_FSRMI | MASK_RD, match_opcode, INSN_ALIAS },
-{"frflags",   0, {"F", 0},   "d",  MATCH_FRFLAGS, MASK_FRFLAGS, match_opcode, INSN_ALIAS },
-{"fsflags",   0, {"F", 0},   "s",  MATCH_FSFLAGS, MASK_FSFLAGS | MASK_RD, match_opcode, INSN_ALIAS },
-{"fsflags",   0, {"F", 0},   "d,s",  MATCH_FSFLAGS, MASK_FSFLAGS, match_opcode, INSN_ALIAS },
-{"fsflagsi",  0, {"F", 0},   "d,Z",  MATCH_FSFLAGSI, MASK_FSFLAGSI, match_opcode, INSN_ALIAS },
-{"fsflagsi",  0, {"F", 0},   "Z",  MATCH_FSFLAGSI, MASK_FSFLAGSI | MASK_RD, match_opcode, INSN_ALIAS },
-{"flw",      32, {"F", "C", 0}, "D,Cm(Cc)",  MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"flw",      32, {"F", "C", 0}, "CD,Ck(Cs)",  MATCH_C_FLW, MASK_C_FLW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"flw",       0, {"F", 0},   "D,o(s)",  MATCH_FLW, MASK_FLW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"flw",       0, {"F", 0},   "D,A,s",  0, (int) M_FLW, match_never, INSN_MACRO },
-{"fsw",      32, {"F", "C", 0}, "CT,CM(Cc)",  MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"fsw",      32, {"F", "C", 0}, "CD,Ck(Cs)",  MATCH_C_FSW, MASK_C_FSW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
-{"fsw",       0, {"F", 0},   "T,q(s)",  MATCH_FSW, MASK_FSW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"fsw",       0, {"F", 0},   "T,A,s",  0, (int) M_FSW, match_never, INSN_MACRO },
-
-{"fmv.x.w",    0, {"F", 0},   "d,S",  MATCH_FMV_X_S, MASK_FMV_X_S, match_opcode, 0 },
-{"fmv.w.x",    0, {"F", 0},   "D,s",  MATCH_FMV_S_X, MASK_FMV_S_X, match_opcode, 0 },
-
-{"fmv.x.s",    0, {"F", 0},   "d,S",  MATCH_FMV_X_S, MASK_FMV_X_S, match_opcode, 0 },
-{"fmv.s.x",    0, {"F", 0},   "D,s",  MATCH_FMV_S_X, MASK_FMV_S_X, match_opcode, 0 },
-
-{"fmv.s",      0, {"F", 0},   "D,U",  MATCH_FSGNJ_S, MASK_FSGNJ_S, match_rs1_eq_rs2, INSN_ALIAS },
-{"fneg.s",     0, {"F", 0},   "D,U",  MATCH_FSGNJN_S, MASK_FSGNJN_S, match_rs1_eq_rs2, INSN_ALIAS },
-{"fabs.s",     0, {"F", 0},   "D,U",  MATCH_FSGNJX_S, MASK_FSGNJX_S, match_rs1_eq_rs2, INSN_ALIAS },
-{"fsgnj.s",    0, {"F", 0},   "D,S,T",  MATCH_FSGNJ_S, MASK_FSGNJ_S, match_opcode, 0 },
-{"fsgnjn.s",   0, {"F", 0},   "D,S,T",  MATCH_FSGNJN_S, MASK_FSGNJN_S, match_opcode, 0 },
-{"fsgnjx.s",   0, {"F", 0},   "D,S,T",  MATCH_FSGNJX_S, MASK_FSGNJX_S, match_opcode, 0 },
-{"fadd.s",     0, {"F", 0},   "D,S,T",  MATCH_FADD_S | MASK_RM, MASK_FADD_S | MASK_RM, match_opcode, 0 },
-{"fadd.s",     0, {"F", 0},   "D,S,T,m",  MATCH_FADD_S, MASK_FADD_S, match_opcode, 0 },
-{"fsub.s",     0, {"F", 0},   "D,S,T",  MATCH_FSUB_S | MASK_RM, MASK_FSUB_S | MASK_RM, match_opcode, 0 },
-{"fsub.s",     0, {"F", 0},   "D,S,T,m",  MATCH_FSUB_S, MASK_FSUB_S, match_opcode, 0 },
-{"fmul.s",     0, {"F", 0},   "D,S,T",  MATCH_FMUL_S | MASK_RM, MASK_FMUL_S | MASK_RM, match_opcode, 0 },
-{"fmul.s",     0, {"F", 0},   "D,S,T,m",  MATCH_FMUL_S, MASK_FMUL_S, match_opcode, 0 },
-{"fdiv.s",     0, {"F", 0},   "D,S,T",  MATCH_FDIV_S | MASK_RM, MASK_FDIV_S | MASK_RM, match_opcode, 0 },
-{"fdiv.s",     0, {"F", 0},   "D,S,T,m",  MATCH_FDIV_S, MASK_FDIV_S, match_opcode, 0 },
-{"fsqrt.s",    0, {"F", 0},   "D,S",  MATCH_FSQRT_S | MASK_RM, MASK_FSQRT_S | MASK_RM, match_opcode, 0 },
-{"fsqrt.s",    0, {"F", 0},   "D,S,m",  MATCH_FSQRT_S, MASK_FSQRT_S, match_opcode, 0 },
-{"fmin.s",     0, {"F", 0},   "D,S,T",  MATCH_FMIN_S, MASK_FMIN_S, match_opcode, 0 },
-{"fmax.s",     0, {"F", 0},   "D,S,T",  MATCH_FMAX_S, MASK_FMAX_S, match_opcode, 0 },
-{"fmadd.s",    0, {"F", 0},   "D,S,T,R",  MATCH_FMADD_S | MASK_RM, MASK_FMADD_S | MASK_RM, match_opcode, 0 },
-{"fmadd.s",    0, {"F", 0},   "D,S,T,R,m",  MATCH_FMADD_S, MASK_FMADD_S, match_opcode, 0 },
-{"fnmadd.s",   0, {"F", 0},   "D,S,T,R",  MATCH_FNMADD_S | MASK_RM, MASK_FNMADD_S | MASK_RM, match_opcode, 0 },
-{"fnmadd.s",   0, {"F", 0},   "D,S,T,R,m",  MATCH_FNMADD_S, MASK_FNMADD_S, match_opcode, 0 },
-{"fmsub.s",    0, {"F", 0},   "D,S,T,R",  MATCH_FMSUB_S | MASK_RM, MASK_FMSUB_S | MASK_RM, match_opcode, 0 },
-{"fmsub.s",    0, {"F", 0},   "D,S,T,R,m",  MATCH_FMSUB_S, MASK_FMSUB_S, match_opcode, 0 },
-{"fnmsub.s",   0, {"F", 0},   "D,S,T,R",  MATCH_FNMSUB_S | MASK_RM, MASK_FNMSUB_S | MASK_RM, match_opcode, 0 },
-{"fnmsub.s",   0, {"F", 0},   "D,S,T,R,m",  MATCH_FNMSUB_S, MASK_FNMSUB_S, match_opcode, 0 },
-{"fcvt.w.s",   0, {"F", 0},   "d,S",  MATCH_FCVT_W_S | MASK_RM, MASK_FCVT_W_S | MASK_RM, match_opcode, 0 },
-{"fcvt.w.s",   0, {"F", 0},   "d,S,m",  MATCH_FCVT_W_S, MASK_FCVT_W_S, match_opcode, 0 },
-{"fcvt.wu.s",  0, {"F", 0},   "d,S",  MATCH_FCVT_WU_S | MASK_RM, MASK_FCVT_WU_S | MASK_RM, match_opcode, 0 },
-{"fcvt.wu.s",  0, {"F", 0},   "d,S,m",  MATCH_FCVT_WU_S, MASK_FCVT_WU_S, match_opcode, 0 },
-{"fcvt.s.w",   0, {"F", 0},   "D,s",  MATCH_FCVT_S_W | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
-{"fcvt.s.w",   0, {"F", 0},   "D,s,m",  MATCH_FCVT_S_W, MASK_FCVT_S_W, match_opcode, 0 },
-{"fcvt.s.wu",  0, {"F", 0},   "D,s",  MATCH_FCVT_S_WU | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
-{"fcvt.s.wu",  0, {"F", 0},   "D,s,m",  MATCH_FCVT_S_WU, MASK_FCVT_S_WU, match_opcode, 0 },
-{"fclass.s",   0, {"F", 0},   "d,S",  MATCH_FCLASS_S, MASK_FCLASS_S, match_opcode, 0 },
-{"feq.s",      0, {"F", 0},   "d,S,T",    MATCH_FEQ_S, MASK_FEQ_S, match_opcode, 0 },
-{"flt.s",      0, {"F", 0},   "d,S,T",    MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
-{"fle.s",      0, {"F", 0},   "d,S,T",    MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
-{"fgt.s",      0, {"F", 0},   "d,T,S",    MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
-{"fge.s",      0, {"F", 0},   "d,T,S",    MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
-{"fcvt.l.s",  64, {"F", 0}, "d,S",  MATCH_FCVT_L_S | MASK_RM, MASK_FCVT_L_S | MASK_RM, match_opcode, 0 },
-{"fcvt.l.s",  64, {"F", 0}, "d,S,m",  MATCH_FCVT_L_S, MASK_FCVT_L_S, match_opcode, 0 },
-{"fcvt.lu.s", 64, {"F", 0}, "d,S",  MATCH_FCVT_LU_S | MASK_RM, MASK_FCVT_LU_S | MASK_RM, match_opcode, 0 },
-{"fcvt.lu.s", 64, {"F", 0}, "d,S,m",  MATCH_FCVT_LU_S, MASK_FCVT_LU_S, match_opcode, 0 },
-{"fcvt.s.l",  64, {"F", 0}, "D,s",  MATCH_FCVT_S_L | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
-{"fcvt.s.l",  64, {"F", 0}, "D,s,m",  MATCH_FCVT_S_L, MASK_FCVT_S_L, match_opcode, 0 },
-{"fcvt.s.lu", 64, {"F", 0}, "D,s",  MATCH_FCVT_S_LU | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
-{"fcvt.s.lu", 64, {"F", 0}, "D,s,m",  MATCH_FCVT_S_LU, MASK_FCVT_S_LU, match_opcode, 0 },
+{"frcsr",     0, INSN_CLASS_F,   "d",  MATCH_FRCSR, MASK_FRCSR, match_opcode, INSN_ALIAS },
+{"frsr",      0, INSN_CLASS_F,   "d",  MATCH_FRCSR, MASK_FRCSR, match_opcode, INSN_ALIAS },
+{"fscsr",     0, INSN_CLASS_F,   "s",  MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, INSN_ALIAS },
+{"fscsr",     0, INSN_CLASS_F,   "d,s",  MATCH_FSCSR, MASK_FSCSR, match_opcode, INSN_ALIAS },
+{"fssr",      0, INSN_CLASS_F,   "s",  MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, INSN_ALIAS },
+{"fssr",      0, INSN_CLASS_F,   "d,s",  MATCH_FSCSR, MASK_FSCSR, match_opcode, INSN_ALIAS },
+{"frrm",      0, INSN_CLASS_F,   "d",  MATCH_FRRM, MASK_FRRM, match_opcode, INSN_ALIAS },
+{"fsrm",      0, INSN_CLASS_F,   "s",  MATCH_FSRM, MASK_FSRM | MASK_RD, match_opcode, INSN_ALIAS },
+{"fsrm",      0, INSN_CLASS_F,   "d,s",  MATCH_FSRM, MASK_FSRM, match_opcode, INSN_ALIAS },
+{"fsrmi",     0, INSN_CLASS_F,   "d,Z",  MATCH_FSRMI, MASK_FSRMI, match_opcode, INSN_ALIAS },
+{"fsrmi",     0, INSN_CLASS_F,   "Z",  MATCH_FSRMI, MASK_FSRMI | MASK_RD, match_opcode, INSN_ALIAS },
+{"frflags",   0, INSN_CLASS_F,   "d",  MATCH_FRFLAGS, MASK_FRFLAGS, match_opcode, INSN_ALIAS },
+{"fsflags",   0, INSN_CLASS_F,   "s",  MATCH_FSFLAGS, MASK_FSFLAGS | MASK_RD, match_opcode, INSN_ALIAS },
+{"fsflags",   0, INSN_CLASS_F,   "d,s",  MATCH_FSFLAGS, MASK_FSFLAGS, match_opcode, INSN_ALIAS },
+{"fsflagsi",  0, INSN_CLASS_F,   "d,Z",  MATCH_FSFLAGSI, MASK_FSFLAGSI, match_opcode, INSN_ALIAS },
+{"fsflagsi",  0, INSN_CLASS_F,   "Z",  MATCH_FSFLAGSI, MASK_FSFLAGSI | MASK_RD, match_opcode, INSN_ALIAS },
+{"flw",      32, INSN_CLASS_F_AND_C, "D,Cm(Cc)",  MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"flw",      32, INSN_CLASS_F_AND_C, "CD,Ck(Cs)",  MATCH_C_FLW, MASK_C_FLW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"flw",       0, INSN_CLASS_F,   "D,o(s)",  MATCH_FLW, MASK_FLW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"flw",       0, INSN_CLASS_F,   "D,A,s",  0, (int) M_FLW, match_never, INSN_MACRO },
+{"fsw",      32, INSN_CLASS_F_AND_C, "CT,CM(Cc)",  MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"fsw",      32, INSN_CLASS_F_AND_C, "CD,Ck(Cs)",  MATCH_C_FSW, MASK_C_FSW, match_opcode, INSN_ALIAS|INSN_DREF|INSN_4_BYTE },
+{"fsw",       0, INSN_CLASS_F,   "T,q(s)",  MATCH_FSW, MASK_FSW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"fsw",       0, INSN_CLASS_F,   "T,A,s",  0, (int) M_FSW, match_never, INSN_MACRO },
+
+{"fmv.x.w",    0, INSN_CLASS_F,   "d,S",  MATCH_FMV_X_S, MASK_FMV_X_S, match_opcode, 0 },
+{"fmv.w.x",    0, INSN_CLASS_F,   "D,s",  MATCH_FMV_S_X, MASK_FMV_S_X, match_opcode, 0 },
+
+{"fmv.x.s",    0, INSN_CLASS_F,   "d,S",  MATCH_FMV_X_S, MASK_FMV_X_S, match_opcode, 0 },
+{"fmv.s.x",    0, INSN_CLASS_F,   "D,s",  MATCH_FMV_S_X, MASK_FMV_S_X, match_opcode, 0 },
+
+{"fmv.s",      0, INSN_CLASS_F,   "D,U",  MATCH_FSGNJ_S, MASK_FSGNJ_S, match_rs1_eq_rs2, INSN_ALIAS },
+{"fneg.s",     0, INSN_CLASS_F,   "D,U",  MATCH_FSGNJN_S, MASK_FSGNJN_S, match_rs1_eq_rs2, INSN_ALIAS },
+{"fabs.s",     0, INSN_CLASS_F,   "D,U",  MATCH_FSGNJX_S, MASK_FSGNJX_S, match_rs1_eq_rs2, INSN_ALIAS },
+{"fsgnj.s",    0, INSN_CLASS_F,   "D,S,T",  MATCH_FSGNJ_S, MASK_FSGNJ_S, match_opcode, 0 },
+{"fsgnjn.s",   0, INSN_CLASS_F,   "D,S,T",  MATCH_FSGNJN_S, MASK_FSGNJN_S, match_opcode, 0 },
+{"fsgnjx.s",   0, INSN_CLASS_F,   "D,S,T",  MATCH_FSGNJX_S, MASK_FSGNJX_S, match_opcode, 0 },
+{"fadd.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FADD_S | MASK_RM, MASK_FADD_S | MASK_RM, match_opcode, 0 },
+{"fadd.s",     0, INSN_CLASS_F,   "D,S,T,m",  MATCH_FADD_S, MASK_FADD_S, match_opcode, 0 },
+{"fsub.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FSUB_S | MASK_RM, MASK_FSUB_S | MASK_RM, match_opcode, 0 },
+{"fsub.s",     0, INSN_CLASS_F,   "D,S,T,m",  MATCH_FSUB_S, MASK_FSUB_S, match_opcode, 0 },
+{"fmul.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FMUL_S | MASK_RM, MASK_FMUL_S | MASK_RM, match_opcode, 0 },
+{"fmul.s",     0, INSN_CLASS_F,   "D,S,T,m",  MATCH_FMUL_S, MASK_FMUL_S, match_opcode, 0 },
+{"fdiv.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FDIV_S | MASK_RM, MASK_FDIV_S | MASK_RM, match_opcode, 0 },
+{"fdiv.s",     0, INSN_CLASS_F,   "D,S,T,m",  MATCH_FDIV_S, MASK_FDIV_S, match_opcode, 0 },
+{"fsqrt.s",    0, INSN_CLASS_F,   "D,S",  MATCH_FSQRT_S | MASK_RM, MASK_FSQRT_S | MASK_RM, match_opcode, 0 },
+{"fsqrt.s",    0, INSN_CLASS_F,   "D,S,m",  MATCH_FSQRT_S, MASK_FSQRT_S, match_opcode, 0 },
+{"fmin.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FMIN_S, MASK_FMIN_S, match_opcode, 0 },
+{"fmax.s",     0, INSN_CLASS_F,   "D,S,T",  MATCH_FMAX_S, MASK_FMAX_S, match_opcode, 0 },
+{"fmadd.s",    0, INSN_CLASS_F,   "D,S,T,R",  MATCH_FMADD_S | MASK_RM, MASK_FMADD_S | MASK_RM, match_opcode, 0 },
+{"fmadd.s",    0, INSN_CLASS_F,   "D,S,T,R,m",  MATCH_FMADD_S, MASK_FMADD_S, match_opcode, 0 },
+{"fnmadd.s",   0, INSN_CLASS_F,   "D,S,T,R",  MATCH_FNMADD_S | MASK_RM, MASK_FNMADD_S | MASK_RM, match_opcode, 0 },
+{"fnmadd.s",   0, INSN_CLASS_F,   "D,S,T,R,m",  MATCH_FNMADD_S, MASK_FNMADD_S, match_opcode, 0 },
+{"fmsub.s",    0, INSN_CLASS_F,   "D,S,T,R",  MATCH_FMSUB_S | MASK_RM, MASK_FMSUB_S | MASK_RM, match_opcode, 0 },
+{"fmsub.s",    0, INSN_CLASS_F,   "D,S,T,R,m",  MATCH_FMSUB_S, MASK_FMSUB_S, match_opcode, 0 },
+{"fnmsub.s",   0, INSN_CLASS_F,   "D,S,T,R",  MATCH_FNMSUB_S | MASK_RM, MASK_FNMSUB_S | MASK_RM, match_opcode, 0 },
+{"fnmsub.s",   0, INSN_CLASS_F,   "D,S,T,R,m",  MATCH_FNMSUB_S, MASK_FNMSUB_S, match_opcode, 0 },
+{"fcvt.w.s",   0, INSN_CLASS_F,   "d,S",  MATCH_FCVT_W_S | MASK_RM, MASK_FCVT_W_S | MASK_RM, match_opcode, 0 },
+{"fcvt.w.s",   0, INSN_CLASS_F,   "d,S,m",  MATCH_FCVT_W_S, MASK_FCVT_W_S, match_opcode, 0 },
+{"fcvt.wu.s",  0, INSN_CLASS_F,   "d,S",  MATCH_FCVT_WU_S | MASK_RM, MASK_FCVT_WU_S | MASK_RM, match_opcode, 0 },
+{"fcvt.wu.s",  0, INSN_CLASS_F,   "d,S,m",  MATCH_FCVT_WU_S, MASK_FCVT_WU_S, match_opcode, 0 },
+{"fcvt.s.w",   0, INSN_CLASS_F,   "D,s",  MATCH_FCVT_S_W | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
+{"fcvt.s.w",   0, INSN_CLASS_F,   "D,s,m",  MATCH_FCVT_S_W, MASK_FCVT_S_W, match_opcode, 0 },
+{"fcvt.s.wu",  0, INSN_CLASS_F,   "D,s",  MATCH_FCVT_S_WU | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
+{"fcvt.s.wu",  0, INSN_CLASS_F,   "D,s,m",  MATCH_FCVT_S_WU, MASK_FCVT_S_WU, match_opcode, 0 },
+{"fclass.s",   0, INSN_CLASS_F,   "d,S",  MATCH_FCLASS_S, MASK_FCLASS_S, match_opcode, 0 },
+{"feq.s",      0, INSN_CLASS_F,   "d,S,T",    MATCH_FEQ_S, MASK_FEQ_S, match_opcode, 0 },
+{"flt.s",      0, INSN_CLASS_F,   "d,S,T",    MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
+{"fle.s",      0, INSN_CLASS_F,   "d,S,T",    MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
+{"fgt.s",      0, INSN_CLASS_F,   "d,T,S",    MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
+{"fge.s",      0, INSN_CLASS_F,   "d,T,S",    MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
+{"fcvt.l.s",  64, INSN_CLASS_F, "d,S",  MATCH_FCVT_L_S | MASK_RM, MASK_FCVT_L_S | MASK_RM, match_opcode, 0 },
+{"fcvt.l.s",  64, INSN_CLASS_F, "d,S,m",  MATCH_FCVT_L_S, MASK_FCVT_L_S, match_opcode, 0 },
+{"fcvt.lu.s", 64, INSN_CLASS_F, "d,S",  MATCH_FCVT_LU_S | MASK_RM, MASK_FCVT_LU_S | MASK_RM, match_opcode, 0 },
+{"fcvt.lu.s", 64, INSN_CLASS_F, "d,S,m",  MATCH_FCVT_LU_S, MASK_FCVT_LU_S, match_opcode, 0 },
+{"fcvt.s.l",  64, INSN_CLASS_F, "D,s",  MATCH_FCVT_S_L | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
+{"fcvt.s.l",  64, INSN_CLASS_F, "D,s,m",  MATCH_FCVT_S_L, MASK_FCVT_S_L, match_opcode, 0 },
+{"fcvt.s.lu", 64, INSN_CLASS_F, "D,s",  MATCH_FCVT_S_LU | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
+{"fcvt.s.lu", 64, INSN_CLASS_F, "D,s,m",  MATCH_FCVT_S_LU, MASK_FCVT_S_LU, match_opcode, 0 },
 
 /* Double-precision floating-point instruction subset */
-{"fld",        0, {"D", "C", 0},   "D,Cn(Cc)",  MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"fld",        0, {"D", "C", 0},   "CD,Cl(Cs)",  MATCH_C_FLD, MASK_C_FLD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"fld",        0, {"D", 0},   "D,o(s)",  MATCH_FLD, MASK_FLD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"fld",        0, {"D", 0},   "D,A,s",  0, (int) M_FLD, match_never, INSN_MACRO },
-{"fsd",        0, {"D", "C", 0},   "CT,CN(Cc)",  MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"fsd",        0, {"D", "C", 0},   "CD,Cl(Cs)",  MATCH_C_FSD, MASK_C_FSD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
-{"fsd",        0, {"D", 0},   "T,q(s)",  MATCH_FSD, MASK_FSD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"fsd",        0, {"D", 0},   "T,A,s",  0, (int) M_FSD, match_never, INSN_MACRO },
-{"fmv.d",      0, {"D", 0},   "D,U",  MATCH_FSGNJ_D, MASK_FSGNJ_D, match_rs1_eq_rs2, INSN_ALIAS },
-{"fneg.d",     0, {"D", 0},   "D,U",  MATCH_FSGNJN_D, MASK_FSGNJN_D, match_rs1_eq_rs2, INSN_ALIAS },
-{"fabs.d",     0, {"D", 0},   "D,U",  MATCH_FSGNJX_D, MASK_FSGNJX_D, match_rs1_eq_rs2, INSN_ALIAS },
-{"fsgnj.d",    0, {"D", 0},   "D,S,T",  MATCH_FSGNJ_D, MASK_FSGNJ_D, match_opcode, 0 },
-{"fsgnjn.d",   0, {"D", 0},   "D,S,T",  MATCH_FSGNJN_D, MASK_FSGNJN_D, match_opcode, 0 },
-{"fsgnjx.d",   0, {"D", 0},   "D,S,T",  MATCH_FSGNJX_D, MASK_FSGNJX_D, match_opcode, 0 },
-{"fadd.d",     0, {"D", 0},   "D,S,T",  MATCH_FADD_D | MASK_RM, MASK_FADD_D | MASK_RM, match_opcode, 0 },
-{"fadd.d",     0, {"D", 0},   "D,S,T,m",  MATCH_FADD_D, MASK_FADD_D, match_opcode, 0 },
-{"fsub.d",     0, {"D", 0},   "D,S,T",  MATCH_FSUB_D | MASK_RM, MASK_FSUB_D | MASK_RM, match_opcode, 0 },
-{"fsub.d",     0, {"D", 0},   "D,S,T,m",  MATCH_FSUB_D, MASK_FSUB_D, match_opcode, 0 },
-{"fmul.d",     0, {"D", 0},   "D,S,T",  MATCH_FMUL_D | MASK_RM, MASK_FMUL_D | MASK_RM, match_opcode, 0 },
-{"fmul.d",     0, {"D", 0},   "D,S,T,m",  MATCH_FMUL_D, MASK_FMUL_D, match_opcode, 0 },
-{"fdiv.d",     0, {"D", 0},   "D,S,T",  MATCH_FDIV_D | MASK_RM, MASK_FDIV_D | MASK_RM, match_opcode, 0 },
-{"fdiv.d",     0, {"D", 0},   "D,S,T,m",  MATCH_FDIV_D, MASK_FDIV_D, match_opcode, 0 },
-{"fsqrt.d",    0, {"D", 0},   "D,S",  MATCH_FSQRT_D | MASK_RM, MASK_FSQRT_D | MASK_RM, match_opcode, 0 },
-{"fsqrt.d",    0, {"D", 0},   "D,S,m",  MATCH_FSQRT_D, MASK_FSQRT_D, match_opcode, 0 },
-{"fmin.d",     0, {"D", 0},   "D,S,T",  MATCH_FMIN_D, MASK_FMIN_D, match_opcode, 0 },
-{"fmax.d",     0, {"D", 0},   "D,S,T",  MATCH_FMAX_D, MASK_FMAX_D, match_opcode, 0 },
-{"fmadd.d",    0, {"D", 0},   "D,S,T,R",  MATCH_FMADD_D | MASK_RM, MASK_FMADD_D | MASK_RM, match_opcode, 0 },
-{"fmadd.d",    0, {"D", 0},   "D,S,T,R,m",  MATCH_FMADD_D, MASK_FMADD_D, match_opcode, 0 },
-{"fnmadd.d",   0, {"D", 0},   "D,S,T,R",  MATCH_FNMADD_D | MASK_RM, MASK_FNMADD_D | MASK_RM, match_opcode, 0 },
-{"fnmadd.d",   0, {"D", 0},   "D,S,T,R,m",  MATCH_FNMADD_D, MASK_FNMADD_D, match_opcode, 0 },
-{"fmsub.d",    0, {"D", 0},   "D,S,T,R",  MATCH_FMSUB_D | MASK_RM, MASK_FMSUB_D | MASK_RM, match_opcode, 0 },
-{"fmsub.d",    0, {"D", 0},   "D,S,T,R,m",  MATCH_FMSUB_D, MASK_FMSUB_D, match_opcode, 0 },
-{"fnmsub.d",   0, {"D", 0},   "D,S,T,R",  MATCH_FNMSUB_D | MASK_RM, MASK_FNMSUB_D | MASK_RM, match_opcode, 0 },
-{"fnmsub.d",   0, {"D", 0},   "D,S,T,R,m",  MATCH_FNMSUB_D, MASK_FNMSUB_D, match_opcode, 0 },
-{"fcvt.w.d",   0, {"D", 0},   "d,S",  MATCH_FCVT_W_D | MASK_RM, MASK_FCVT_W_D | MASK_RM, match_opcode, 0 },
-{"fcvt.w.d",   0, {"D", 0},   "d,S,m",  MATCH_FCVT_W_D, MASK_FCVT_W_D, match_opcode, 0 },
-{"fcvt.wu.d",  0, {"D", 0},   "d,S",  MATCH_FCVT_WU_D | MASK_RM, MASK_FCVT_WU_D | MASK_RM, match_opcode, 0 },
-{"fcvt.wu.d",  0, {"D", 0},   "d,S,m",  MATCH_FCVT_WU_D, MASK_FCVT_WU_D, match_opcode, 0 },
-{"fcvt.d.w",   0, {"D", 0},   "D,s",  MATCH_FCVT_D_W, MASK_FCVT_D_W | MASK_RM, match_opcode, 0 },
-{"fcvt.d.wu",  0, {"D", 0},   "D,s",  MATCH_FCVT_D_WU, MASK_FCVT_D_WU | MASK_RM, match_opcode, 0 },
-{"fcvt.d.s",   0, {"D", 0},   "D,S",  MATCH_FCVT_D_S, MASK_FCVT_D_S | MASK_RM, match_opcode, 0 },
-{"fcvt.s.d",   0, {"D", 0},   "D,S",  MATCH_FCVT_S_D | MASK_RM, MASK_FCVT_S_D | MASK_RM, match_opcode, 0 },
-{"fcvt.s.d",   0, {"D", 0},   "D,S,m",  MATCH_FCVT_S_D, MASK_FCVT_S_D, match_opcode, 0 },
-{"fclass.d",   0, {"D", 0},   "d,S",  MATCH_FCLASS_D, MASK_FCLASS_D, match_opcode, 0 },
-{"feq.d",      0, {"D", 0},   "d,S,T",    MATCH_FEQ_D, MASK_FEQ_D, match_opcode, 0 },
-{"flt.d",      0, {"D", 0},   "d,S,T",    MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
-{"fle.d",      0, {"D", 0},   "d,S,T",    MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
-{"fgt.d",      0, {"D", 0},   "d,T,S",    MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
-{"fge.d",      0, {"D", 0},   "d,T,S",    MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
-{"fmv.x.d",   64, {"D", 0}, "d,S",  MATCH_FMV_X_D, MASK_FMV_X_D, match_opcode, 0 },
-{"fmv.d.x",   64, {"D", 0}, "D,s",  MATCH_FMV_D_X, MASK_FMV_D_X, match_opcode, 0 },
-{"fcvt.l.d",  64, {"D", 0}, "d,S",  MATCH_FCVT_L_D | MASK_RM, MASK_FCVT_L_D | MASK_RM, match_opcode, 0 },
-{"fcvt.l.d",  64, {"D", 0}, "d,S,m",  MATCH_FCVT_L_D, MASK_FCVT_L_D, match_opcode, 0 },
-{"fcvt.lu.d", 64, {"D", 0}, "d,S",  MATCH_FCVT_LU_D | MASK_RM, MASK_FCVT_LU_D | MASK_RM, match_opcode, 0 },
-{"fcvt.lu.d", 64, {"D", 0}, "d,S,m",  MATCH_FCVT_LU_D, MASK_FCVT_LU_D, match_opcode, 0 },
-{"fcvt.d.l",  64, {"D", 0}, "D,s",  MATCH_FCVT_D_L | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
-{"fcvt.d.l",  64, {"D", 0}, "D,s,m",  MATCH_FCVT_D_L, MASK_FCVT_D_L, match_opcode, 0 },
-{"fcvt.d.lu", 64, {"D", 0}, "D,s",  MATCH_FCVT_D_LU | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
-{"fcvt.d.lu", 64, {"D", 0}, "D,s,m",  MATCH_FCVT_D_LU, MASK_FCVT_D_LU, match_opcode, 0 },
+{"fld",        0, INSN_CLASS_D_AND_C,   "D,Cn(Cc)",  MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"fld",        0, INSN_CLASS_D_AND_C,   "CD,Cl(Cs)",  MATCH_C_FLD, MASK_C_FLD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"fld",        0, INSN_CLASS_D,   "D,o(s)",  MATCH_FLD, MASK_FLD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"fld",        0, INSN_CLASS_D,   "D,A,s",  0, (int) M_FLD, match_never, INSN_MACRO },
+{"fsd",        0, INSN_CLASS_D_AND_C,   "CT,CN(Cc)",  MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"fsd",        0, INSN_CLASS_D_AND_C,   "CD,Cl(Cs)",  MATCH_C_FSD, MASK_C_FSD, match_opcode, INSN_ALIAS|INSN_DREF|INSN_8_BYTE },
+{"fsd",        0, INSN_CLASS_D,   "T,q(s)",  MATCH_FSD, MASK_FSD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"fsd",        0, INSN_CLASS_D,   "T,A,s",  0, (int) M_FSD, match_never, INSN_MACRO },
+{"fmv.d",      0, INSN_CLASS_D,   "D,U",  MATCH_FSGNJ_D, MASK_FSGNJ_D, match_rs1_eq_rs2, INSN_ALIAS },
+{"fneg.d",     0, INSN_CLASS_D,   "D,U",  MATCH_FSGNJN_D, MASK_FSGNJN_D, match_rs1_eq_rs2, INSN_ALIAS },
+{"fabs.d",     0, INSN_CLASS_D,   "D,U",  MATCH_FSGNJX_D, MASK_FSGNJX_D, match_rs1_eq_rs2, INSN_ALIAS },
+{"fsgnj.d",    0, INSN_CLASS_D,   "D,S,T",  MATCH_FSGNJ_D, MASK_FSGNJ_D, match_opcode, 0 },
+{"fsgnjn.d",   0, INSN_CLASS_D,   "D,S,T",  MATCH_FSGNJN_D, MASK_FSGNJN_D, match_opcode, 0 },
+{"fsgnjx.d",   0, INSN_CLASS_D,   "D,S,T",  MATCH_FSGNJX_D, MASK_FSGNJX_D, match_opcode, 0 },
+{"fadd.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FADD_D | MASK_RM, MASK_FADD_D | MASK_RM, match_opcode, 0 },
+{"fadd.d",     0, INSN_CLASS_D,   "D,S,T,m",  MATCH_FADD_D, MASK_FADD_D, match_opcode, 0 },
+{"fsub.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FSUB_D | MASK_RM, MASK_FSUB_D | MASK_RM, match_opcode, 0 },
+{"fsub.d",     0, INSN_CLASS_D,   "D,S,T,m",  MATCH_FSUB_D, MASK_FSUB_D, match_opcode, 0 },
+{"fmul.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FMUL_D | MASK_RM, MASK_FMUL_D | MASK_RM, match_opcode, 0 },
+{"fmul.d",     0, INSN_CLASS_D,   "D,S,T,m",  MATCH_FMUL_D, MASK_FMUL_D, match_opcode, 0 },
+{"fdiv.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FDIV_D | MASK_RM, MASK_FDIV_D | MASK_RM, match_opcode, 0 },
+{"fdiv.d",     0, INSN_CLASS_D,   "D,S,T,m",  MATCH_FDIV_D, MASK_FDIV_D, match_opcode, 0 },
+{"fsqrt.d",    0, INSN_CLASS_D,   "D,S",  MATCH_FSQRT_D | MASK_RM, MASK_FSQRT_D | MASK_RM, match_opcode, 0 },
+{"fsqrt.d",    0, INSN_CLASS_D,   "D,S,m",  MATCH_FSQRT_D, MASK_FSQRT_D, match_opcode, 0 },
+{"fmin.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FMIN_D, MASK_FMIN_D, match_opcode, 0 },
+{"fmax.d",     0, INSN_CLASS_D,   "D,S,T",  MATCH_FMAX_D, MASK_FMAX_D, match_opcode, 0 },
+{"fmadd.d",    0, INSN_CLASS_D,   "D,S,T,R",  MATCH_FMADD_D | MASK_RM, MASK_FMADD_D | MASK_RM, match_opcode, 0 },
+{"fmadd.d",    0, INSN_CLASS_D,   "D,S,T,R,m",  MATCH_FMADD_D, MASK_FMADD_D, match_opcode, 0 },
+{"fnmadd.d",   0, INSN_CLASS_D,   "D,S,T,R",  MATCH_FNMADD_D | MASK_RM, MASK_FNMADD_D | MASK_RM, match_opcode, 0 },
+{"fnmadd.d",   0, INSN_CLASS_D,   "D,S,T,R,m",  MATCH_FNMADD_D, MASK_FNMADD_D, match_opcode, 0 },
+{"fmsub.d",    0, INSN_CLASS_D,   "D,S,T,R",  MATCH_FMSUB_D | MASK_RM, MASK_FMSUB_D | MASK_RM, match_opcode, 0 },
+{"fmsub.d",    0, INSN_CLASS_D,   "D,S,T,R,m",  MATCH_FMSUB_D, MASK_FMSUB_D, match_opcode, 0 },
+{"fnmsub.d",   0, INSN_CLASS_D,   "D,S,T,R",  MATCH_FNMSUB_D | MASK_RM, MASK_FNMSUB_D | MASK_RM, match_opcode, 0 },
+{"fnmsub.d",   0, INSN_CLASS_D,   "D,S,T,R,m",  MATCH_FNMSUB_D, MASK_FNMSUB_D, match_opcode, 0 },
+{"fcvt.w.d",   0, INSN_CLASS_D,   "d,S",  MATCH_FCVT_W_D | MASK_RM, MASK_FCVT_W_D | MASK_RM, match_opcode, 0 },
+{"fcvt.w.d",   0, INSN_CLASS_D,   "d,S,m",  MATCH_FCVT_W_D, MASK_FCVT_W_D, match_opcode, 0 },
+{"fcvt.wu.d",  0, INSN_CLASS_D,   "d,S",  MATCH_FCVT_WU_D | MASK_RM, MASK_FCVT_WU_D | MASK_RM, match_opcode, 0 },
+{"fcvt.wu.d",  0, INSN_CLASS_D,   "d,S,m",  MATCH_FCVT_WU_D, MASK_FCVT_WU_D, match_opcode, 0 },
+{"fcvt.d.w",   0, INSN_CLASS_D,   "D,s",  MATCH_FCVT_D_W, MASK_FCVT_D_W | MASK_RM, match_opcode, 0 },
+{"fcvt.d.wu",  0, INSN_CLASS_D,   "D,s",  MATCH_FCVT_D_WU, MASK_FCVT_D_WU | MASK_RM, match_opcode, 0 },
+{"fcvt.d.s",   0, INSN_CLASS_D,   "D,S",  MATCH_FCVT_D_S, MASK_FCVT_D_S | MASK_RM, match_opcode, 0 },
+{"fcvt.s.d",   0, INSN_CLASS_D,   "D,S",  MATCH_FCVT_S_D | MASK_RM, MASK_FCVT_S_D | MASK_RM, match_opcode, 0 },
+{"fcvt.s.d",   0, INSN_CLASS_D,   "D,S,m",  MATCH_FCVT_S_D, MASK_FCVT_S_D, match_opcode, 0 },
+{"fclass.d",   0, INSN_CLASS_D,   "d,S",  MATCH_FCLASS_D, MASK_FCLASS_D, match_opcode, 0 },
+{"feq.d",      0, INSN_CLASS_D,   "d,S,T",    MATCH_FEQ_D, MASK_FEQ_D, match_opcode, 0 },
+{"flt.d",      0, INSN_CLASS_D,   "d,S,T",    MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
+{"fle.d",      0, INSN_CLASS_D,   "d,S,T",    MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
+{"fgt.d",      0, INSN_CLASS_D,   "d,T,S",    MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
+{"fge.d",      0, INSN_CLASS_D,   "d,T,S",    MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
+{"fmv.x.d",   64, INSN_CLASS_D, "d,S",  MATCH_FMV_X_D, MASK_FMV_X_D, match_opcode, 0 },
+{"fmv.d.x",   64, INSN_CLASS_D, "D,s",  MATCH_FMV_D_X, MASK_FMV_D_X, match_opcode, 0 },
+{"fcvt.l.d",  64, INSN_CLASS_D, "d,S",  MATCH_FCVT_L_D | MASK_RM, MASK_FCVT_L_D | MASK_RM, match_opcode, 0 },
+{"fcvt.l.d",  64, INSN_CLASS_D, "d,S,m",  MATCH_FCVT_L_D, MASK_FCVT_L_D, match_opcode, 0 },
+{"fcvt.lu.d", 64, INSN_CLASS_D, "d,S",  MATCH_FCVT_LU_D | MASK_RM, MASK_FCVT_LU_D | MASK_RM, match_opcode, 0 },
+{"fcvt.lu.d", 64, INSN_CLASS_D, "d,S,m",  MATCH_FCVT_LU_D, MASK_FCVT_LU_D, match_opcode, 0 },
+{"fcvt.d.l",  64, INSN_CLASS_D, "D,s",  MATCH_FCVT_D_L | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
+{"fcvt.d.l",  64, INSN_CLASS_D, "D,s,m",  MATCH_FCVT_D_L, MASK_FCVT_D_L, match_opcode, 0 },
+{"fcvt.d.lu", 64, INSN_CLASS_D, "D,s",  MATCH_FCVT_D_LU | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
+{"fcvt.d.lu", 64, INSN_CLASS_D, "D,s,m",  MATCH_FCVT_D_LU, MASK_FCVT_D_LU, match_opcode, 0 },
 
 /* Quad-precision floating-point instruction subset */
-{"flq",        0, {"Q", 0},   "D,o(s)",  MATCH_FLQ, MASK_FLQ, match_opcode, INSN_DREF|INSN_16_BYTE },
-{"flq",        0, {"Q", 0},   "D,A,s",  0, (int) M_FLQ, match_never, INSN_MACRO },
-{"fsq",        0, {"Q", 0},   "T,q(s)",  MATCH_FSQ, MASK_FSQ, match_opcode, INSN_DREF|INSN_16_BYTE },
-{"fsq",        0, {"Q", 0},   "T,A,s",  0, (int) M_FSQ, match_never, INSN_MACRO },
-{"fmv.q",      0, {"Q", 0},   "D,U",  MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_rs1_eq_rs2, INSN_ALIAS },
-{"fneg.q",     0, {"Q", 0},   "D,U",  MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_rs1_eq_rs2, INSN_ALIAS },
-{"fabs.q",     0, {"Q", 0},   "D,U",  MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_rs1_eq_rs2, INSN_ALIAS },
-{"fsgnj.q",    0, {"Q", 0},   "D,S,T",  MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_opcode, 0 },
-{"fsgnjn.q",   0, {"Q", 0},   "D,S,T",  MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_opcode, 0 },
-{"fsgnjx.q",   0, {"Q", 0},   "D,S,T",  MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_opcode, 0 },
-{"fadd.q",     0, {"Q", 0},   "D,S,T",  MATCH_FADD_Q | MASK_RM, MASK_FADD_Q | MASK_RM, match_opcode, 0 },
-{"fadd.q",     0, {"Q", 0},   "D,S,T,m",  MATCH_FADD_Q, MASK_FADD_Q, match_opcode, 0 },
-{"fsub.q",     0, {"Q", 0},   "D,S,T",  MATCH_FSUB_Q | MASK_RM, MASK_FSUB_Q | MASK_RM, match_opcode, 0 },
-{"fsub.q",     0, {"Q", 0},   "D,S,T,m",  MATCH_FSUB_Q, MASK_FSUB_Q, match_opcode, 0 },
-{"fmul.q",     0, {"Q", 0},   "D,S,T",  MATCH_FMUL_Q | MASK_RM, MASK_FMUL_Q | MASK_RM, match_opcode, 0 },
-{"fmul.q",     0, {"Q", 0},   "D,S,T,m",  MATCH_FMUL_Q, MASK_FMUL_Q, match_opcode, 0 },
-{"fdiv.q",     0, {"Q", 0},   "D,S,T",  MATCH_FDIV_Q | MASK_RM, MASK_FDIV_Q | MASK_RM, match_opcode, 0 },
-{"fdiv.q",     0, {"Q", 0},   "D,S,T,m",  MATCH_FDIV_Q, MASK_FDIV_Q, match_opcode, 0 },
-{"fsqrt.q",    0, {"Q", 0},   "D,S",  MATCH_FSQRT_Q | MASK_RM, MASK_FSQRT_Q | MASK_RM, match_opcode, 0 },
-{"fsqrt.q",    0, {"Q", 0},   "D,S,m",  MATCH_FSQRT_Q, MASK_FSQRT_Q, match_opcode, 0 },
-{"fmin.q",     0, {"Q", 0},   "D,S,T",  MATCH_FMIN_Q, MASK_FMIN_Q, match_opcode, 0 },
-{"fmax.q",     0, {"Q", 0},   "D,S,T",  MATCH_FMAX_Q, MASK_FMAX_Q, match_opcode, 0 },
-{"fmadd.q",    0, {"Q", 0},   "D,S,T,R",  MATCH_FMADD_Q | MASK_RM, MASK_FMADD_Q | MASK_RM, match_opcode, 0 },
-{"fmadd.q",    0, {"Q", 0},   "D,S,T,R,m",  MATCH_FMADD_Q, MASK_FMADD_Q, match_opcode, 0 },
-{"fnmadd.q",   0, {"Q", 0},   "D,S,T,R",  MATCH_FNMADD_Q | MASK_RM, MASK_FNMADD_Q | MASK_RM, match_opcode, 0 },
-{"fnmadd.q",   0, {"Q", 0},   "D,S,T,R,m",  MATCH_FNMADD_Q, MASK_FNMADD_Q, match_opcode, 0 },
-{"fmsub.q",    0, {"Q", 0},   "D,S,T,R",  MATCH_FMSUB_Q | MASK_RM, MASK_FMSUB_Q | MASK_RM, match_opcode, 0 },
-{"fmsub.q",    0, {"Q", 0},   "D,S,T,R,m",  MATCH_FMSUB_Q, MASK_FMSUB_Q, match_opcode, 0 },
-{"fnmsub.q",   0, {"Q", 0},   "D,S,T,R",  MATCH_FNMSUB_Q | MASK_RM, MASK_FNMSUB_Q | MASK_RM, match_opcode, 0 },
-{"fnmsub.q",   0, {"Q", 0},   "D,S,T,R,m",  MATCH_FNMSUB_Q, MASK_FNMSUB_Q, match_opcode, 0 },
-{"fcvt.w.q",   0, {"Q", 0},   "d,S",  MATCH_FCVT_W_Q | MASK_RM, MASK_FCVT_W_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.w.q",   0, {"Q", 0},   "d,S,m",  MATCH_FCVT_W_Q, MASK_FCVT_W_Q, match_opcode, 0 },
-{"fcvt.wu.q",  0, {"Q", 0},   "d,S",  MATCH_FCVT_WU_Q | MASK_RM, MASK_FCVT_WU_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.wu.q",  0, {"Q", 0},   "d,S,m",  MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q, match_opcode, 0 },
-{"fcvt.q.w",   0, {"Q", 0},   "D,s",  MATCH_FCVT_Q_W, MASK_FCVT_Q_W | MASK_RM, match_opcode, 0 },
-{"fcvt.q.wu",  0, {"Q", 0},   "D,s",  MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU | MASK_RM, match_opcode, 0 },
-{"fcvt.q.s",   0, {"Q", 0},   "D,S",  MATCH_FCVT_Q_S, MASK_FCVT_Q_S | MASK_RM, match_opcode, 0 },
-{"fcvt.q.d",   0, {"Q", 0},   "D,S",  MATCH_FCVT_Q_D, MASK_FCVT_Q_D | MASK_RM, match_opcode, 0 },
-{"fcvt.s.q",   0, {"Q", 0},   "D,S",  MATCH_FCVT_S_Q | MASK_RM, MASK_FCVT_S_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.s.q",   0, {"Q", 0},   "D,S,m",  MATCH_FCVT_S_Q, MASK_FCVT_S_Q, match_opcode, 0 },
-{"fcvt.d.q",   0, {"Q", 0},   "D,S",  MATCH_FCVT_D_Q | MASK_RM, MASK_FCVT_D_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.d.q",   0, {"Q", 0},   "D,S,m",  MATCH_FCVT_D_Q, MASK_FCVT_D_Q, match_opcode, 0 },
-{"fclass.q",   0, {"Q", 0},   "d,S",  MATCH_FCLASS_Q, MASK_FCLASS_Q, match_opcode, 0 },
-{"feq.q",      0, {"Q", 0},   "d,S,T",    MATCH_FEQ_Q, MASK_FEQ_Q, match_opcode, 0 },
-{"flt.q",      0, {"Q", 0},   "d,S,T",    MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
-{"fle.q",      0, {"Q", 0},   "d,S,T",    MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
-{"fgt.q",      0, {"Q", 0},   "d,T,S",    MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
-{"fge.q",      0, {"Q", 0},   "d,T,S",    MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
-{"fmv.x.q",   64, {"Q", 0}, "d,S",  MATCH_FMV_X_Q, MASK_FMV_X_Q, match_opcode, 0 },
-{"fmv.q.x",   64, {"Q", 0}, "D,s",  MATCH_FMV_Q_X, MASK_FMV_Q_X, match_opcode, 0 },
-{"fcvt.l.q",  64, {"Q", 0}, "d,S",  MATCH_FCVT_L_Q | MASK_RM, MASK_FCVT_L_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.l.q",  64, {"Q", 0}, "d,S,m",  MATCH_FCVT_L_Q, MASK_FCVT_L_Q, match_opcode, 0 },
-{"fcvt.lu.q", 64, {"Q", 0}, "d,S",  MATCH_FCVT_LU_Q | MASK_RM, MASK_FCVT_LU_Q | MASK_RM, match_opcode, 0 },
-{"fcvt.lu.q", 64, {"Q", 0}, "d,S,m",  MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q, match_opcode, 0 },
-{"fcvt.q.l",  64, {"Q", 0}, "D,s",  MATCH_FCVT_Q_L | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
-{"fcvt.q.l",  64, {"Q", 0}, "D,s,m",  MATCH_FCVT_Q_L, MASK_FCVT_Q_L, match_opcode, 0 },
-{"fcvt.q.lu", 64, {"Q", 0}, "D,s",  MATCH_FCVT_Q_LU | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
-{"fcvt.q.lu", 64, {"Q", 0}, "D,s,m",  MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU, match_opcode, 0 },
+{"flq",        0, INSN_CLASS_Q,   "D,o(s)",  MATCH_FLQ, MASK_FLQ, match_opcode, INSN_DREF|INSN_16_BYTE },
+{"flq",        0, INSN_CLASS_Q,   "D,A,s",  0, (int) M_FLQ, match_never, INSN_MACRO },
+{"fsq",        0, INSN_CLASS_Q,   "T,q(s)",  MATCH_FSQ, MASK_FSQ, match_opcode, INSN_DREF|INSN_16_BYTE },
+{"fsq",        0, INSN_CLASS_Q,   "T,A,s",  0, (int) M_FSQ, match_never, INSN_MACRO },
+{"fmv.q",      0, INSN_CLASS_Q,   "D,U",  MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_rs1_eq_rs2, INSN_ALIAS },
+{"fneg.q",     0, INSN_CLASS_Q,   "D,U",  MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_rs1_eq_rs2, INSN_ALIAS },
+{"fabs.q",     0, INSN_CLASS_Q,   "D,U",  MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_rs1_eq_rs2, INSN_ALIAS },
+{"fsgnj.q",    0, INSN_CLASS_Q,   "D,S,T",  MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_opcode, 0 },
+{"fsgnjn.q",   0, INSN_CLASS_Q,   "D,S,T",  MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_opcode, 0 },
+{"fsgnjx.q",   0, INSN_CLASS_Q,   "D,S,T",  MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_opcode, 0 },
+{"fadd.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FADD_Q | MASK_RM, MASK_FADD_Q | MASK_RM, match_opcode, 0 },
+{"fadd.q",     0, INSN_CLASS_Q,   "D,S,T,m",  MATCH_FADD_Q, MASK_FADD_Q, match_opcode, 0 },
+{"fsub.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FSUB_Q | MASK_RM, MASK_FSUB_Q | MASK_RM, match_opcode, 0 },
+{"fsub.q",     0, INSN_CLASS_Q,   "D,S,T,m",  MATCH_FSUB_Q, MASK_FSUB_Q, match_opcode, 0 },
+{"fmul.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FMUL_Q | MASK_RM, MASK_FMUL_Q | MASK_RM, match_opcode, 0 },
+{"fmul.q",     0, INSN_CLASS_Q,   "D,S,T,m",  MATCH_FMUL_Q, MASK_FMUL_Q, match_opcode, 0 },
+{"fdiv.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FDIV_Q | MASK_RM, MASK_FDIV_Q | MASK_RM, match_opcode, 0 },
+{"fdiv.q",     0, INSN_CLASS_Q,   "D,S,T,m",  MATCH_FDIV_Q, MASK_FDIV_Q, match_opcode, 0 },
+{"fsqrt.q",    0, INSN_CLASS_Q,   "D,S",  MATCH_FSQRT_Q | MASK_RM, MASK_FSQRT_Q | MASK_RM, match_opcode, 0 },
+{"fsqrt.q",    0, INSN_CLASS_Q,   "D,S,m",  MATCH_FSQRT_Q, MASK_FSQRT_Q, match_opcode, 0 },
+{"fmin.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FMIN_Q, MASK_FMIN_Q, match_opcode, 0 },
+{"fmax.q",     0, INSN_CLASS_Q,   "D,S,T",  MATCH_FMAX_Q, MASK_FMAX_Q, match_opcode, 0 },
+{"fmadd.q",    0, INSN_CLASS_Q,   "D,S,T,R",  MATCH_FMADD_Q | MASK_RM, MASK_FMADD_Q | MASK_RM, match_opcode, 0 },
+{"fmadd.q",    0, INSN_CLASS_Q,   "D,S,T,R,m",  MATCH_FMADD_Q, MASK_FMADD_Q, match_opcode, 0 },
+{"fnmadd.q",   0, INSN_CLASS_Q,   "D,S,T,R",  MATCH_FNMADD_Q | MASK_RM, MASK_FNMADD_Q | MASK_RM, match_opcode, 0 },
+{"fnmadd.q",   0, INSN_CLASS_Q,   "D,S,T,R,m",  MATCH_FNMADD_Q, MASK_FNMADD_Q, match_opcode, 0 },
+{"fmsub.q",    0, INSN_CLASS_Q,   "D,S,T,R",  MATCH_FMSUB_Q | MASK_RM, MASK_FMSUB_Q | MASK_RM, match_opcode, 0 },
+{"fmsub.q",    0, INSN_CLASS_Q,   "D,S,T,R,m",  MATCH_FMSUB_Q, MASK_FMSUB_Q, match_opcode, 0 },
+{"fnmsub.q",   0, INSN_CLASS_Q,   "D,S,T,R",  MATCH_FNMSUB_Q | MASK_RM, MASK_FNMSUB_Q | MASK_RM, match_opcode, 0 },
+{"fnmsub.q",   0, INSN_CLASS_Q,   "D,S,T,R,m",  MATCH_FNMSUB_Q, MASK_FNMSUB_Q, match_opcode, 0 },
+{"fcvt.w.q",   0, INSN_CLASS_Q,   "d,S",  MATCH_FCVT_W_Q | MASK_RM, MASK_FCVT_W_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.w.q",   0, INSN_CLASS_Q,   "d,S,m",  MATCH_FCVT_W_Q, MASK_FCVT_W_Q, match_opcode, 0 },
+{"fcvt.wu.q",  0, INSN_CLASS_Q,   "d,S",  MATCH_FCVT_WU_Q | MASK_RM, MASK_FCVT_WU_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.wu.q",  0, INSN_CLASS_Q,   "d,S,m",  MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q, match_opcode, 0 },
+{"fcvt.q.w",   0, INSN_CLASS_Q,   "D,s",  MATCH_FCVT_Q_W, MASK_FCVT_Q_W | MASK_RM, match_opcode, 0 },
+{"fcvt.q.wu",  0, INSN_CLASS_Q,   "D,s",  MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU | MASK_RM, match_opcode, 0 },
+{"fcvt.q.s",   0, INSN_CLASS_Q,   "D,S",  MATCH_FCVT_Q_S, MASK_FCVT_Q_S | MASK_RM, match_opcode, 0 },
+{"fcvt.q.d",   0, INSN_CLASS_Q,   "D,S",  MATCH_FCVT_Q_D, MASK_FCVT_Q_D | MASK_RM, match_opcode, 0 },
+{"fcvt.s.q",   0, INSN_CLASS_Q,   "D,S",  MATCH_FCVT_S_Q | MASK_RM, MASK_FCVT_S_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.s.q",   0, INSN_CLASS_Q,   "D,S,m",  MATCH_FCVT_S_Q, MASK_FCVT_S_Q, match_opcode, 0 },
+{"fcvt.d.q",   0, INSN_CLASS_Q,   "D,S",  MATCH_FCVT_D_Q | MASK_RM, MASK_FCVT_D_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.d.q",   0, INSN_CLASS_Q,   "D,S,m",  MATCH_FCVT_D_Q, MASK_FCVT_D_Q, match_opcode, 0 },
+{"fclass.q",   0, INSN_CLASS_Q,   "d,S",  MATCH_FCLASS_Q, MASK_FCLASS_Q, match_opcode, 0 },
+{"feq.q",      0, INSN_CLASS_Q,   "d,S,T",    MATCH_FEQ_Q, MASK_FEQ_Q, match_opcode, 0 },
+{"flt.q",      0, INSN_CLASS_Q,   "d,S,T",    MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
+{"fle.q",      0, INSN_CLASS_Q,   "d,S,T",    MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
+{"fgt.q",      0, INSN_CLASS_Q,   "d,T,S",    MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
+{"fge.q",      0, INSN_CLASS_Q,   "d,T,S",    MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
+{"fmv.x.q",   64, INSN_CLASS_Q, "d,S",  MATCH_FMV_X_Q, MASK_FMV_X_Q, match_opcode, 0 },
+{"fmv.q.x",   64, INSN_CLASS_Q, "D,s",  MATCH_FMV_Q_X, MASK_FMV_Q_X, match_opcode, 0 },
+{"fcvt.l.q",  64, INSN_CLASS_Q, "d,S",  MATCH_FCVT_L_Q | MASK_RM, MASK_FCVT_L_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.l.q",  64, INSN_CLASS_Q, "d,S,m",  MATCH_FCVT_L_Q, MASK_FCVT_L_Q, match_opcode, 0 },
+{"fcvt.lu.q", 64, INSN_CLASS_Q, "d,S",  MATCH_FCVT_LU_Q | MASK_RM, MASK_FCVT_LU_Q | MASK_RM, match_opcode, 0 },
+{"fcvt.lu.q", 64, INSN_CLASS_Q, "d,S,m",  MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q, match_opcode, 0 },
+{"fcvt.q.l",  64, INSN_CLASS_Q, "D,s",  MATCH_FCVT_Q_L | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
+{"fcvt.q.l",  64, INSN_CLASS_Q, "D,s,m",  MATCH_FCVT_Q_L, MASK_FCVT_Q_L, match_opcode, 0 },
+{"fcvt.q.lu", 64, INSN_CLASS_Q, "D,s",  MATCH_FCVT_Q_LU | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
+{"fcvt.q.lu", 64, INSN_CLASS_Q, "D,s,m",  MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU, match_opcode, 0 },
 
 /* Compressed instructions.  */
-{"c.unimp",    0, {"C", 0},   "",  0, 0xffffU,  match_opcode, 0 },
-{"c.ebreak",   0, {"C", 0},   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, 0 },
-{"c.jr",       0, {"C", 0},   "d",  MATCH_C_JR, MASK_C_JR, match_rd_nonzero, INSN_BRANCH },
-{"c.jalr",     0, {"C", 0},   "d",  MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, INSN_JSR },
-{"c.j",        0, {"C", 0},   "Ca",  MATCH_C_J, MASK_C_J, match_opcode, INSN_BRANCH },
-{"c.jal",     32, {"C", 0}, "Ca",  MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_JSR },
-{"c.beqz",     0, {"C", 0},   "Cs,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_CONDBRANCH },
-{"c.bnez",     0, {"C", 0},   "Cs,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_CONDBRANCH },
-{"c.lwsp",     0, {"C", 0},   "d,Cm(Cc)",  MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, 0 },
-{"c.lw",       0, {"C", 0},   "Ct,Ck(Cs)",  MATCH_C_LW, MASK_C_LW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.swsp",     0, {"C", 0},   "CV,CM(Cc)",  MATCH_C_SWSP, MASK_C_SWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.sw",       0, {"C", 0},   "Ct,Ck(Cs)",  MATCH_C_SW, MASK_C_SW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.nop",      0, {"C", 0},   "",  MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },
-{"c.nop",      0, {"C", 0},   "Cj",  MATCH_C_ADDI, MASK_C_ADDI | MASK_RD, match_opcode, INSN_ALIAS },
-{"c.mv",       0, {"C", 0},   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add_with_hint, 0 },
-{"c.lui",      0, {"C", 0},   "d,Cu",  MATCH_C_LUI, MASK_C_LUI, match_c_lui_with_hint, 0 },
-{"c.li",       0, {"C", 0},   "d,Co",  MATCH_C_LI, MASK_C_LI, match_opcode, 0 },
-{"c.addi4spn", 0, {"C", 0},   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, 0 },
-{"c.addi16sp", 0, {"C", 0},   "Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, 0 },
-{"c.addi",     0, {"C", 0},   "d,Co",  MATCH_C_ADDI, MASK_C_ADDI, match_opcode, 0 },
-{"c.add",      0, {"C", 0},   "d,CV",  MATCH_C_ADD, MASK_C_ADD, match_c_add_with_hint, 0 },
-{"c.sub",      0, {"C", 0},   "Cs,Ct",  MATCH_C_SUB, MASK_C_SUB, match_opcode, 0 },
-{"c.and",      0, {"C", 0},   "Cs,Ct",  MATCH_C_AND, MASK_C_AND, match_opcode, 0 },
-{"c.or",       0, {"C", 0},   "Cs,Ct",  MATCH_C_OR, MASK_C_OR, match_opcode, 0 },
-{"c.xor",      0, {"C", 0},   "Cs,Ct",  MATCH_C_XOR, MASK_C_XOR, match_opcode, 0 },
-{"c.slli",     0, {"C", 0},   "d,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_c_slli, 0 },
-{"c.srli",     0, {"C", 0},   "Cs,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_c_slli, 0 },
-{"c.srai",     0, {"C", 0},   "Cs,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_c_slli, 0 },
-{"c.slli64",   0, {"C", 0},   "d",  MATCH_C_SLLI64, MASK_C_SLLI64, match_c_slli64, 0 },
-{"c.srli64",   0, {"C", 0},   "Cs",  MATCH_C_SRLI64, MASK_C_SRLI64, match_c_slli64, 0 },
-{"c.srai64",   0, {"C", 0},   "Cs",  MATCH_C_SRAI64, MASK_C_SRAI64, match_c_slli64, 0 },
-{"c.andi",     0, {"C", 0},   "Cs,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, 0 },
-{"c.addiw",   64, {"C", 0}, "d,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, 0 },
-{"c.addw",    64, {"C", 0}, "Cs,Ct",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, 0 },
-{"c.subw",    64, {"C", 0}, "Cs,Ct",  MATCH_C_SUBW, MASK_C_SUBW, match_opcode, 0 },
-{"c.ldsp",    64, {"C", 0}, "d,Cn(Cc)",  MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, INSN_DREF|INSN_8_BYTE },
-{"c.ld",      64, {"C", 0}, "Ct,Cl(Cs)",  MATCH_C_LD, MASK_C_LD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.sdsp",    64, {"C", 0}, "CV,CN(Cc)",  MATCH_C_SDSP, MASK_C_SDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.sd",      64, {"C", 0}, "Ct,Cl(Cs)",  MATCH_C_SD, MASK_C_SD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.fldsp",    0, {"D", "C", 0},   "D,Cn(Cc)",  MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.fld",      0, {"D", "C", 0},   "CD,Cl(Cs)",  MATCH_C_FLD, MASK_C_FLD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.fsdsp",    0, {"D", "C", 0},   "CT,CN(Cc)",  MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.fsd",      0, {"D", "C", 0},   "CD,Cl(Cs)",  MATCH_C_FSD, MASK_C_FSD, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"c.flwsp",   32, {"F", "C", 0}, "D,Cm(Cc)",  MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.flw",     32, {"F", "C", 0}, "CD,Ck(Cs)",  MATCH_C_FLW, MASK_C_FLW, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.fswsp",   32, {"F", "C", 0}, "CT,CM(Cc)",  MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"c.fsw",     32, {"F", "C", 0}, "CD,Ck(Cs)",  MATCH_C_FSW, MASK_C_FSW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.unimp",    0, INSN_CLASS_C,   "",  0, 0xffffU,  match_opcode, 0 },
+{"c.ebreak",   0, INSN_CLASS_C,   "",  MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, 0 },
+{"c.jr",       0, INSN_CLASS_C,   "d",  MATCH_C_JR, MASK_C_JR, match_rd_nonzero, INSN_BRANCH },
+{"c.jalr",     0, INSN_CLASS_C,   "d",  MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, INSN_JSR },
+{"c.j",        0, INSN_CLASS_C,   "Ca",  MATCH_C_J, MASK_C_J, match_opcode, INSN_BRANCH },
+{"c.jal",     32, INSN_CLASS_C, "Ca",  MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_JSR },
+{"c.beqz",     0, INSN_CLASS_C,   "Cs,Cp",  MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_CONDBRANCH },
+{"c.bnez",     0, INSN_CLASS_C,   "Cs,Cp",  MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_CONDBRANCH },
+{"c.lwsp",     0, INSN_CLASS_C,   "d,Cm(Cc)",  MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, 0 },
+{"c.lw",       0, INSN_CLASS_C,   "Ct,Ck(Cs)",  MATCH_C_LW, MASK_C_LW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.swsp",     0, INSN_CLASS_C,   "CV,CM(Cc)",  MATCH_C_SWSP, MASK_C_SWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.sw",       0, INSN_CLASS_C,   "Ct,Ck(Cs)",  MATCH_C_SW, MASK_C_SW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.nop",      0, INSN_CLASS_C,   "",  MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },
+{"c.nop",      0, INSN_CLASS_C,   "Cj",  MATCH_C_ADDI, MASK_C_ADDI | MASK_RD, match_opcode, INSN_ALIAS },
+{"c.mv",       0, INSN_CLASS_C,   "d,CV",  MATCH_C_MV, MASK_C_MV, match_c_add_with_hint, 0 },
+{"c.lui",      0, INSN_CLASS_C,   "d,Cu",  MATCH_C_LUI, MASK_C_LUI, match_c_lui_with_hint, 0 },
+{"c.li",       0, INSN_CLASS_C,   "d,Co",  MATCH_C_LI, MASK_C_LI, match_opcode, 0 },
+{"c.addi4spn", 0, INSN_CLASS_C,   "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_c_addi4spn, 0 },
+{"c.addi16sp", 0, INSN_CLASS_C,   "Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_c_addi16sp, 0 },
+{"c.addi",     0, INSN_CLASS_C,   "d,Co",  MATCH_C_ADDI, MASK_C_ADDI, match_opcode, 0 },
+{"c.add",      0, INSN_CLASS_C,   "d,CV",  MATCH_C_ADD, MASK_C_ADD, match_c_add_with_hint, 0 },
+{"c.sub",      0, INSN_CLASS_C,   "Cs,Ct",  MATCH_C_SUB, MASK_C_SUB, match_opcode, 0 },
+{"c.and",      0, INSN_CLASS_C,   "Cs,Ct",  MATCH_C_AND, MASK_C_AND, match_opcode, 0 },
+{"c.or",       0, INSN_CLASS_C,   "Cs,Ct",  MATCH_C_OR, MASK_C_OR, match_opcode, 0 },
+{"c.xor",      0, INSN_CLASS_C,   "Cs,Ct",  MATCH_C_XOR, MASK_C_XOR, match_opcode, 0 },
+{"c.slli",     0, INSN_CLASS_C,   "d,C>",  MATCH_C_SLLI, MASK_C_SLLI, match_c_slli, 0 },
+{"c.srli",     0, INSN_CLASS_C,   "Cs,C>",  MATCH_C_SRLI, MASK_C_SRLI, match_c_slli, 0 },
+{"c.srai",     0, INSN_CLASS_C,   "Cs,C>",  MATCH_C_SRAI, MASK_C_SRAI, match_c_slli, 0 },
+{"c.slli64",   0, INSN_CLASS_C,   "d",  MATCH_C_SLLI64, MASK_C_SLLI64, match_c_slli64, 0 },
+{"c.srli64",   0, INSN_CLASS_C,   "Cs",  MATCH_C_SRLI64, MASK_C_SRLI64, match_c_slli64, 0 },
+{"c.srai64",   0, INSN_CLASS_C,   "Cs",  MATCH_C_SRAI64, MASK_C_SRAI64, match_c_slli64, 0 },
+{"c.andi",     0, INSN_CLASS_C,   "Cs,Co",  MATCH_C_ANDI, MASK_C_ANDI, match_opcode, 0 },
+{"c.addiw",   64, INSN_CLASS_C, "d,Co",  MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, 0 },
+{"c.addw",    64, INSN_CLASS_C, "Cs,Ct",  MATCH_C_ADDW, MASK_C_ADDW, match_opcode, 0 },
+{"c.subw",    64, INSN_CLASS_C, "Cs,Ct",  MATCH_C_SUBW, MASK_C_SUBW, match_opcode, 0 },
+{"c.ldsp",    64, INSN_CLASS_C, "d,Cn(Cc)",  MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, INSN_DREF|INSN_8_BYTE },
+{"c.ld",      64, INSN_CLASS_C, "Ct,Cl(Cs)",  MATCH_C_LD, MASK_C_LD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.sdsp",    64, INSN_CLASS_C, "CV,CN(Cc)",  MATCH_C_SDSP, MASK_C_SDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.sd",      64, INSN_CLASS_C, "Ct,Cl(Cs)",  MATCH_C_SD, MASK_C_SD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.fldsp",    0, INSN_CLASS_D_AND_C,   "D,Cn(Cc)",  MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.fld",      0, INSN_CLASS_D_AND_C,   "CD,Cl(Cs)",  MATCH_C_FLD, MASK_C_FLD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.fsdsp",    0, INSN_CLASS_D_AND_C,   "CT,CN(Cc)",  MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.fsd",      0, INSN_CLASS_D_AND_C,   "CD,Cl(Cs)",  MATCH_C_FSD, MASK_C_FSD, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"c.flwsp",   32, INSN_CLASS_F_AND_C, "D,Cm(Cc)",  MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.flw",     32, INSN_CLASS_F_AND_C, "CD,Ck(Cs)",  MATCH_C_FLW, MASK_C_FLW, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.fswsp",   32, INSN_CLASS_F_AND_C, "CT,CM(Cc)",  MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"c.fsw",     32, INSN_CLASS_F_AND_C, "CD,Ck(Cs)",  MATCH_C_FSW, MASK_C_FSW, match_opcode, INSN_DREF|INSN_4_BYTE },
 
 /* Supervisor instructions */
-{"csrr",       0, {"I", 0},   "d,E",  MATCH_CSRRS, MASK_CSRRS | MASK_RS1, match_opcode, INSN_ALIAS },
-{"csrwi",      0, {"I", 0},   "E,Z",  MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrsi",      0, {"I", 0},   "E,Z",  MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrci",      0, {"I", 0},   "E,Z",  MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrw",       0, {"I", 0},   "E,s",  MATCH_CSRRW, MASK_CSRRW | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrw",       0, {"I", 0},   "E,Z",  MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrs",       0, {"I", 0},   "E,s",  MATCH_CSRRS, MASK_CSRRS | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrs",       0, {"I", 0},   "E,Z",  MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrc",       0, {"I", 0},   "E,s",  MATCH_CSRRC, MASK_CSRRC | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrc",       0, {"I", 0},   "E,Z",  MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
-{"csrrwi",     0, {"I", 0},   "d,E,Z",  MATCH_CSRRWI, MASK_CSRRWI, match_opcode, 0 },
-{"csrrsi",     0, {"I", 0},   "d,E,Z",  MATCH_CSRRSI, MASK_CSRRSI, match_opcode, 0 },
-{"csrrci",     0, {"I", 0},   "d,E,Z",  MATCH_CSRRCI, MASK_CSRRCI, match_opcode, 0 },
-{"csrrw",      0, {"I", 0},   "d,E,s",  MATCH_CSRRW, MASK_CSRRW, match_opcode, 0 },
-{"csrrw",      0, {"I", 0},   "d,E,Z",  MATCH_CSRRWI, MASK_CSRRWI, match_opcode, INSN_ALIAS },
-{"csrrs",      0, {"I", 0},   "d,E,s",  MATCH_CSRRS, MASK_CSRRS, match_opcode, 0 },
-{"csrrs",      0, {"I", 0},   "d,E,Z",  MATCH_CSRRSI, MASK_CSRRSI, match_opcode, INSN_ALIAS },
-{"csrrc",      0, {"I", 0},   "d,E,s",  MATCH_CSRRC, MASK_CSRRC, match_opcode, 0 },
-{"csrrc",      0, {"I", 0},   "d,E,Z",  MATCH_CSRRCI, MASK_CSRRCI, match_opcode, INSN_ALIAS },
-{"uret",       0, {"I", 0},   "",     MATCH_URET, MASK_URET, match_opcode, 0 },
-{"sret",       0, {"I", 0},   "",     MATCH_SRET, MASK_SRET, match_opcode, 0 },
-{"hret",       0, {"I", 0},   "",     MATCH_HRET, MASK_HRET, match_opcode, 0 },
-{"mret",       0, {"I", 0},   "",     MATCH_MRET, MASK_MRET, match_opcode, 0 },
-{"dret",       0, {"I", 0},   "",     MATCH_DRET, MASK_DRET, match_opcode, 0 },
-{"sfence.vm",  0, {"I", 0},   "",     MATCH_SFENCE_VM, MASK_SFENCE_VM | MASK_RS1, match_opcode, 0 },
-{"sfence.vm",  0, {"I", 0},   "s",    MATCH_SFENCE_VM, MASK_SFENCE_VM, match_opcode, 0 },
-{"sfence.vma", 0, {"I", 0},   "",     MATCH_SFENCE_VMA, MASK_SFENCE_VMA | MASK_RS1 | MASK_RS2, match_opcode, INSN_ALIAS },
-{"sfence.vma", 0, {"I", 0},   "s",    MATCH_SFENCE_VMA, MASK_SFENCE_VMA | MASK_RS2, match_opcode, INSN_ALIAS },
-{"sfence.vma", 0, {"I", 0},   "s,t",  MATCH_SFENCE_VMA, MASK_SFENCE_VMA, match_opcode, 0 },
-{"wfi",        0, {"I", 0},   "",     MATCH_WFI, MASK_WFI, match_opcode, 0 },
+{"csrr",       0, INSN_CLASS_I,   "d,E",  MATCH_CSRRS, MASK_CSRRS | MASK_RS1, match_opcode, INSN_ALIAS },
+{"csrwi",      0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrsi",      0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrci",      0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrw",       0, INSN_CLASS_I,   "E,s",  MATCH_CSRRW, MASK_CSRRW | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrw",       0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrs",       0, INSN_CLASS_I,   "E,s",  MATCH_CSRRS, MASK_CSRRS | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrs",       0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrc",       0, INSN_CLASS_I,   "E,s",  MATCH_CSRRC, MASK_CSRRC | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrc",       0, INSN_CLASS_I,   "E,Z",  MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
+{"csrrwi",     0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRWI, MASK_CSRRWI, match_opcode, 0 },
+{"csrrsi",     0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRSI, MASK_CSRRSI, match_opcode, 0 },
+{"csrrci",     0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRCI, MASK_CSRRCI, match_opcode, 0 },
+{"csrrw",      0, INSN_CLASS_I,   "d,E,s",  MATCH_CSRRW, MASK_CSRRW, match_opcode, 0 },
+{"csrrw",      0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRWI, MASK_CSRRWI, match_opcode, INSN_ALIAS },
+{"csrrs",      0, INSN_CLASS_I,   "d,E,s",  MATCH_CSRRS, MASK_CSRRS, match_opcode, 0 },
+{"csrrs",      0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRSI, MASK_CSRRSI, match_opcode, INSN_ALIAS },
+{"csrrc",      0, INSN_CLASS_I,   "d,E,s",  MATCH_CSRRC, MASK_CSRRC, match_opcode, 0 },
+{"csrrc",      0, INSN_CLASS_I,   "d,E,Z",  MATCH_CSRRCI, MASK_CSRRCI, match_opcode, INSN_ALIAS },
+{"uret",       0, INSN_CLASS_I,   "",     MATCH_URET, MASK_URET, match_opcode, 0 },
+{"sret",       0, INSN_CLASS_I,   "",     MATCH_SRET, MASK_SRET, match_opcode, 0 },
+{"hret",       0, INSN_CLASS_I,   "",     MATCH_HRET, MASK_HRET, match_opcode, 0 },
+{"mret",       0, INSN_CLASS_I,   "",     MATCH_MRET, MASK_MRET, match_opcode, 0 },
+{"dret",       0, INSN_CLASS_I,   "",     MATCH_DRET, MASK_DRET, match_opcode, 0 },
+{"sfence.vm",  0, INSN_CLASS_I,   "",     MATCH_SFENCE_VM, MASK_SFENCE_VM | MASK_RS1, match_opcode, 0 },
+{"sfence.vm",  0, INSN_CLASS_I,   "s",    MATCH_SFENCE_VM, MASK_SFENCE_VM, match_opcode, 0 },
+{"sfence.vma", 0, INSN_CLASS_I,   "",     MATCH_SFENCE_VMA, MASK_SFENCE_VMA | MASK_RS1 | MASK_RS2, match_opcode, INSN_ALIAS },
+{"sfence.vma", 0, INSN_CLASS_I,   "s",    MATCH_SFENCE_VMA, MASK_SFENCE_VMA | MASK_RS2, match_opcode, INSN_ALIAS },
+{"sfence.vma", 0, INSN_CLASS_I,   "s,t",  MATCH_SFENCE_VMA, MASK_SFENCE_VMA, match_opcode, 0 },
+{"wfi",        0, INSN_CLASS_I,   "",     MATCH_WFI, MASK_WFI, match_opcode, 0 },
 
 /* Terminate the list.  */
-{0, 0, {0}, 0, 0, 0, 0, 0}
+{0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}
 };
 
 /* Instruction format for .insn directive.  */
 const struct riscv_opcode riscv_insn_types[] =
 {
 /* name, xlen, isa,          operands, match, mask,    match_func, pinfo.  */
-{"r",       0, {"I", 0},  "O4,F3,F7,d,s,t",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,D,s,t",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,d,S,t",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,D,S,t",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,d,s,T",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,D,s,T",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,d,S,T",     0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F7,D,S,T",     0,    0,  match_opcode, 0 },
-
-{"r",       0, {"I", 0},  "O4,F3,F2,d,s,t,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,s,t,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,S,t,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,S,t,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,s,T,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,s,T,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,S,T,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,S,T,r",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,s,t,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,s,t,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,S,t,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,S,t,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,s,T,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,s,T,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,d,S,T,R",   0,    0,  match_opcode, 0 },
-{"r",       0, {"I", 0},  "O4,F3,F2,D,S,T,R",   0,    0,  match_opcode, 0 },
-
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,s,t,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,s,t,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,S,t,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,S,t,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,s,T,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,s,T,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,S,T,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,S,T,r",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,s,t,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,s,t,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,S,t,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,S,t,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,s,T,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,s,T,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,d,S,T,R",   0,    0,  match_opcode, 0 },
-{"r4",      0, {"I", 0},  "O4,F3,F2,D,S,T,R",   0,    0,  match_opcode, 0 },
-
-{"i",       0, {"I", 0},  "O4,F3,d,s,j",        0,    0,  match_opcode, 0 },
-{"i",       0, {"I", 0},  "O4,F3,D,s,j",        0,    0,  match_opcode, 0 },
-{"i",       0, {"I", 0},  "O4,F3,d,S,j",        0,    0,  match_opcode, 0 },
-{"i",       0, {"I", 0},  "O4,F3,D,S,j",        0,    0,  match_opcode, 0 },
-
-{"i",       0, {"I", 0},  "O4,F3,d,o(s)",       0,    0,  match_opcode, 0 },
-{"i",       0, {"I", 0},  "O4,F3,D,o(s)",       0,    0,  match_opcode, 0 },
-
-{"s",       0, {"I", 0},  "O4,F3,t,q(s)",       0,    0,  match_opcode, 0 },
-{"s",       0, {"I", 0},  "O4,F3,T,q(s)",       0,    0,  match_opcode, 0 },
-
-{"sb",      0, {"I", 0},  "O4,F3,s,t,p",        0,    0,  match_opcode, 0 },
-{"sb",      0, {"I", 0},  "O4,F3,S,t,p",        0,    0,  match_opcode, 0 },
-{"sb",      0, {"I", 0},  "O4,F3,s,T,p",        0,    0,  match_opcode, 0 },
-{"sb",      0, {"I", 0},  "O4,F3,S,T,p",        0,    0,  match_opcode, 0 },
-
-{"b",      0, {"I", 0},  "O4,F3,s,t,p",        0,    0,  match_opcode, 0 },
-{"b",      0, {"I", 0},  "O4,F3,S,t,p",        0,    0,  match_opcode, 0 },
-{"b",      0, {"I", 0},  "O4,F3,s,T,p",        0,    0,  match_opcode, 0 },
-{"b",      0, {"I", 0},  "O4,F3,S,T,p",        0,    0,  match_opcode, 0 },
-
-{"u",       0, {"I", 0},  "O4,d,u",             0,    0,  match_opcode, 0 },
-{"u",       0, {"I", 0},  "O4,D,u",             0,    0,  match_opcode, 0 },
-
-{"uj",      0, {"I", 0},  "O4,d,a",             0,    0,  match_opcode, 0 },
-{"uj",      0, {"I", 0},  "O4,D,a",             0,    0,  match_opcode, 0 },
-
-{"j",      0, {"I", 0},  "O4,d,a",             0,    0,  match_opcode, 0 },
-{"j",      0, {"I", 0},  "O4,D,a",             0,    0,  match_opcode, 0 },
-
-{"cr",      0, {"C", 0},  "O2,CF4,d,CV",        0,    0,  match_opcode, 0 },
-{"cr",      0, {"C", 0},  "O2,CF4,D,CV",        0,    0,  match_opcode, 0 },
-{"cr",      0, {"C", 0},  "O2,CF4,d,CT",        0,    0,  match_opcode, 0 },
-{"cr",      0, {"C", 0},  "O2,CF4,D,CT",        0,    0,  match_opcode, 0 },
-
-{"ci",      0, {"C", 0},  "O2,CF3,d,Co",        0,    0,  match_opcode, 0 },
-{"ci",      0, {"C", 0},  "O2,CF3,D,Co",        0,    0,  match_opcode, 0 },
-
-{"ciw",     0, {"C", 0},  "O2,CF3,Ct,C8",       0,    0,  match_opcode, 0 },
-{"ciw",     0, {"C", 0},  "O2,CF3,CD,C8",       0,    0,  match_opcode, 0 },
-
-{"ca",      0, {"C", 0},  "O2,CF6,CF2,Cs,Ct",   0,    0,  match_opcode, 0 },
-{"ca",      0, {"C", 0},  "O2,CF6,CF2,CS,Ct",   0,    0,  match_opcode, 0 },
-{"ca",      0, {"C", 0},  "O2,CF6,CF2,Cs,CD",   0,    0,  match_opcode, 0 },
-{"ca",      0, {"C", 0},  "O2,CF6,CF2,CS,CD",   0,    0,  match_opcode, 0 },
-
-{"cb",      0, {"C", 0},  "O2,CF3,Cs,Cp",       0,    0,  match_opcode, 0 },
-{"cb",      0, {"C", 0},  "O2,CF3,CS,Cp",       0,    0,  match_opcode, 0 },
-
-{"cj",      0, {"C", 0},  "O2,CF3,Ca",          0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,d,s,t",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,D,s,t",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,d,S,t",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,D,S,t",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,d,s,T",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,D,s,T",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,d,S,T",     0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F7,D,S,T",     0,    0,  match_opcode, 0 },
+
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,s,t,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,s,t,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,S,t,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,S,t,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,s,T,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,s,T,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,S,T,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,S,T,r",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,s,t,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,s,t,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,S,t,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,S,t,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,s,T,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,s,T,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,d,S,T,R",   0,    0,  match_opcode, 0 },
+{"r",       0, INSN_CLASS_I,  "O4,F3,F2,D,S,T,R",   0,    0,  match_opcode, 0 },
+
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,s,t,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,s,t,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,S,t,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,S,t,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,s,T,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,s,T,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,S,T,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,S,T,r",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,s,t,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,s,t,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,S,t,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,S,t,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,s,T,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,s,T,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,d,S,T,R",   0,    0,  match_opcode, 0 },
+{"r4",      0, INSN_CLASS_I,  "O4,F3,F2,D,S,T,R",   0,    0,  match_opcode, 0 },
+
+{"i",       0, INSN_CLASS_I,  "O4,F3,d,s,j",        0,    0,  match_opcode, 0 },
+{"i",       0, INSN_CLASS_I,  "O4,F3,D,s,j",        0,    0,  match_opcode, 0 },
+{"i",       0, INSN_CLASS_I,  "O4,F3,d,S,j",        0,    0,  match_opcode, 0 },
+{"i",       0, INSN_CLASS_I,  "O4,F3,D,S,j",        0,    0,  match_opcode, 0 },
+
+{"i",       0, INSN_CLASS_I,  "O4,F3,d,o(s)",       0,    0,  match_opcode, 0 },
+{"i",       0, INSN_CLASS_I,  "O4,F3,D,o(s)",       0,    0,  match_opcode, 0 },
+
+{"s",       0, INSN_CLASS_I,  "O4,F3,t,q(s)",       0,    0,  match_opcode, 0 },
+{"s",       0, INSN_CLASS_I,  "O4,F3,T,q(s)",       0,    0,  match_opcode, 0 },
+
+{"sb",      0, INSN_CLASS_I,  "O4,F3,s,t,p",        0,    0,  match_opcode, 0 },
+{"sb",      0, INSN_CLASS_I,  "O4,F3,S,t,p",        0,    0,  match_opcode, 0 },
+{"sb",      0, INSN_CLASS_I,  "O4,F3,s,T,p",        0,    0,  match_opcode, 0 },
+{"sb",      0, INSN_CLASS_I,  "O4,F3,S,T,p",        0,    0,  match_opcode, 0 },
+
+{"b",      0, INSN_CLASS_I,  "O4,F3,s,t,p",        0,    0,  match_opcode, 0 },
+{"b",      0, INSN_CLASS_I,  "O4,F3,S,t,p",        0,    0,  match_opcode, 0 },
+{"b",      0, INSN_CLASS_I,  "O4,F3,s,T,p",        0,    0,  match_opcode, 0 },
+{"b",      0, INSN_CLASS_I,  "O4,F3,S,T,p",        0,    0,  match_opcode, 0 },
+
+{"u",       0, INSN_CLASS_I,  "O4,d,u",             0,    0,  match_opcode, 0 },
+{"u",       0, INSN_CLASS_I,  "O4,D,u",             0,    0,  match_opcode, 0 },
+
+{"uj",      0, INSN_CLASS_I,  "O4,d,a",             0,    0,  match_opcode, 0 },
+{"uj",      0, INSN_CLASS_I,  "O4,D,a",             0,    0,  match_opcode, 0 },
+
+{"j",      0, INSN_CLASS_I,  "O4,d,a",             0,    0,  match_opcode, 0 },
+{"j",      0, INSN_CLASS_I,  "O4,D,a",             0,    0,  match_opcode, 0 },
+
+{"cr",      0, INSN_CLASS_C,  "O2,CF4,d,CV",        0,    0,  match_opcode, 0 },
+{"cr",      0, INSN_CLASS_C,  "O2,CF4,D,CV",        0,    0,  match_opcode, 0 },
+{"cr",      0, INSN_CLASS_C,  "O2,CF4,d,CT",        0,    0,  match_opcode, 0 },
+{"cr",      0, INSN_CLASS_C,  "O2,CF4,D,CT",        0,    0,  match_opcode, 0 },
+
+{"ci",      0, INSN_CLASS_C,  "O2,CF3,d,Co",        0,    0,  match_opcode, 0 },
+{"ci",      0, INSN_CLASS_C,  "O2,CF3,D,Co",        0,    0,  match_opcode, 0 },
+
+{"ciw",     0, INSN_CLASS_C,  "O2,CF3,Ct,C8",       0,    0,  match_opcode, 0 },
+{"ciw",     0, INSN_CLASS_C,  "O2,CF3,CD,C8",       0,    0,  match_opcode, 0 },
+
+{"ca",      0, INSN_CLASS_C,  "O2,CF6,CF2,Cs,Ct",   0,    0,  match_opcode, 0 },
+{"ca",      0, INSN_CLASS_C,  "O2,CF6,CF2,CS,Ct",   0,    0,  match_opcode, 0 },
+{"ca",      0, INSN_CLASS_C,  "O2,CF6,CF2,Cs,CD",   0,    0,  match_opcode, 0 },
+{"ca",      0, INSN_CLASS_C,  "O2,CF6,CF2,CS,CD",   0,    0,  match_opcode, 0 },
+
+{"cb",      0, INSN_CLASS_C,  "O2,CF3,Cs,Cp",       0,    0,  match_opcode, 0 },
+{"cb",      0, INSN_CLASS_C,  "O2,CF3,CS,Cp",       0,    0,  match_opcode, 0 },
+
+{"cj",      0, INSN_CLASS_C,  "O2,CF3,Ca",          0,    0,  match_opcode, 0 },
 /* Terminate the list.  */
-{0, 0, {0}, 0, 0, 0, 0, 0}
+{0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}
 };


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make extern declaration of dwarf_always_disassemble correct
@ 2019-09-18  6:12 gdb-buildbot
  2019-09-18 10:24 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18  6:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a3d181d2e784d57ea04728ac2f8f747fa798e78a ***

commit a3d181d2e784d57ea04728ac2f8f747fa798e78a
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Wed Sep 18 13:50:42 2019 +0900
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Wed Sep 18 13:54:48 2019 +0900

    Make extern declaration of dwarf_always_disassemble correct
    
    This was an oversight in 491144b5e21bbfd41969c175aebb663976f59058;
    dwarf2loc.c has an extern definition for dwarf_always_disassemble
    that I missed. This patch updates it from int to bool to match
    the definition in dwarf2read.c.
    
    gdb/ChangeLog:
    
    2019-09-18  Christian Biesinger  <cbiesinger@google.com>
    
            * dwarf2loc.c: Change extern declaration of dwarf_always_disassemble
            to bool to match definition in dwarf2read.c.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8cb5bfeeb9..39fcac7a04 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Christian Biesinger  <cbiesinger@google.com>
+
+	* dwarf2loc.c: Change extern declaration of dwarf_always_disassemble
+	to bool to match definition in dwarf2read.c.
+
 2019-09-17  Christian Biesinger  <cbiesinger@google.com>
 
 	* ada-lang.c (ada_ignore_descriptive_types_p): Change to bool.
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 63643cb45d..29fccae594 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -46,7 +46,7 @@
 #include "gdbsupport/underlying.h"
 #include "gdbsupport/byte-vector.h"
 
-extern int dwarf_always_disassemble;
+extern bool dwarf_always_disassemble;
 
 static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
 						    struct frame_info *frame,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64, support medium model access to common symbols
@ 2019-09-18 13:19 gdb-buildbot
  2019-09-18 13:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 13:19 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1bdd8facfbf6f94fa9603f528c7e8bdf91d90bfd ***

commit 1bdd8facfbf6f94fa9603f528c7e8bdf91d90bfd
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 18 10:27:23 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 21:32:51 2019 +0930

    PowerPC64, support medium model access to common symbols
    
    Some versions of clang apparently generate non-PIC on powerpc64le to
    access common symbols.  Since a common symbol and a strong definition
    with the same name should resolve to the strong definition we have the
    possibility of non-PIC attempting to access shared library variables.
    This is really a clanger since powerpc64le is supposed to be PIC by
    default, but let's see if ld can cope by generating .dynbss copies.
    
            * elf64-ppc.c (must_be_dyn_reloc): Return 0 for TOC16 relocs.
            (ppc64_elf_check_relocs): Support dynamic/copy relocs for TOC16.
            (ppc64_elf_adjust_dynamic_symbol): Don't keep dynamic reloc when
            needs_copy even if all relocs are in rw sections.
            (dec_dynrel_count): Handle TOC16 relocs.
            (ppc64_elf_relocate_section): Support dynamic relocs for TOC16.
            (ppc64_elf_finish_dynamic_symbol): Adjust to handle needs_copy
            semantic change.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 76939880c7..4f48818ef3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (must_be_dyn_reloc): Return 0 for TOC16 relocs.
+	(ppc64_elf_check_relocs): Support dynamic/copy relocs for TOC16.
+	(ppc64_elf_adjust_dynamic_symbol): Don't keep dynamic reloc when
+	needs_copy even if all relocs are in rw sections.
+	(dec_dynrel_count): Handle TOC16 relocs.
+	(ppc64_elf_relocate_section): Support dynamic relocs for TOC16.
+	(ppc64_elf_finish_dynamic_symbol): Adjust to handle needs_copy
+	semantic change.
+
 2019-09-16  Phil Blundell  <pb@pbcl.net>
 
 	* version.m4: Set version to 2.33.50.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 88ace7e6fe..345710ee59 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -2745,6 +2745,12 @@ must_be_dyn_reloc (struct bfd_link_info *info,
     case R_PPC64_REL32:
     case R_PPC64_REL64:
     case R_PPC64_REL30:
+    case R_PPC64_TOC16:
+    case R_PPC64_TOC16_DS:
+    case R_PPC64_TOC16_LO:
+    case R_PPC64_TOC16_HI:
+    case R_PPC64_TOC16_HA:
+    case R_PPC64_TOC16_LO_DS:
       return 0;
 
     case R_PPC64_TPREL16:
@@ -4830,6 +4836,16 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	case R_PPC64_TOC16_HA:
 	case R_PPC64_TOC16_LO_DS:
 	  sec->has_toc_reloc = 1;
+	  if (h != NULL && !bfd_link_pic (info))
+	    {
+	      /* We may need a copy reloc.  */
+	      h->non_got_ref = 1;
+	      /* Strongly prefer a copy reloc over a dynamic reloc.
+		 glibc ld.so as of 2019-08 will error out if one of
+		 these relocations is emitted.  */
+	      h->needs_copy = 1;
+	      goto dodyn;
+	    }
 	  break;
 
 	  /* Marker reloc.  */
@@ -6425,7 +6441,9 @@ ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 
       /* If we don't find any dynamic relocs in read-only sections, then
 	 we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-      || (ELIMINATE_COPY_RELOCS && !alias_readonly_dynrelocs (h))
+      || (ELIMINATE_COPY_RELOCS
+	  && !h->needs_copy
+	  && !alias_readonly_dynrelocs (h))
 
       /* Protected variables do not work with .dynbss.  The copy in
 	 .dynbss won't be used by the shared library with the protected
@@ -6813,6 +6831,16 @@ dec_dynrel_count (bfd_vma r_info,
     default:
       return TRUE;
 
+    case R_PPC64_TOC16:
+    case R_PPC64_TOC16_DS:
+    case R_PPC64_TOC16_LO:
+    case R_PPC64_TOC16_HI:
+    case R_PPC64_TOC16_HA:
+    case R_PPC64_TOC16_LO_DS:
+      if (h == NULL)
+	return TRUE;
+      break;
+
     case R_PPC64_TPREL16:
     case R_PPC64_TPREL16_LO:
     case R_PPC64_TPREL16_HI:
@@ -15801,6 +15829,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	case R_PPC64_TOC16_LO_DS:
 	case R_PPC64_TOC16_HA:
 	  addend -= TOCstart + htab->sec_info[input_section->id].toc_off;
+	  if (h != NULL)
+	    goto dodyn;
 	  break;
 
 	  /* Relocate against the beginning of the section.  */
@@ -16734,18 +16764,18 @@ ppc64_elf_finish_dynamic_symbol (bfd *output_bfd,
 	  break;
 	}
 
-  if (h->needs_copy)
+  if (h->needs_copy
+      && (h->root.type == bfd_link_hash_defined
+	  || h->root.type == bfd_link_hash_defweak)
+      && (h->root.u.def.section == htab->elf.sdynbss
+	  || h->root.u.def.section == htab->elf.sdynrelro))
     {
       /* This symbol needs a copy reloc.  Set it up.  */
       Elf_Internal_Rela rela;
       asection *srel;
       bfd_byte *loc;
 
-      if (h->dynindx == -1
-	  || (h->root.type != bfd_link_hash_defined
-	      && h->root.type != bfd_link_hash_defweak)
-	  || htab->elf.srelbss == NULL
-	  || htab->elf.sreldynrelro == NULL)
+      if (h->dynindx == -1)
 	abort ();
 
       rela.r_offset = (h->root.u.def.value


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use bfd_set_filename more
@ 2019-09-18 13:33 gdb-buildbot
  2019-09-18 14:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 13:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 90d92a632aaf75ce698335efeb383ddf785c12d8 ***

commit 90d92a632aaf75ce698335efeb383ddf785c12d8
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 18 10:34:46 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 21:32:51 2019 +0930

    Use bfd_set_filename more
    
    Fixes a few leaks in bfd and ld.
    
    bfd/
            * mach-o.c (bfd_mach_o_fat_member_init): Likewise.  Replace
            xstrdup and xmalloc with bfd_strdup and bfd_malloc.  Return an
            error status.  Adjust calls.
            * vms-lib.c (_bfd_vms_lib_get_module): Test mhd->id earlier.
            Close bfd on failure.  Replace xstrdup/bfd_alloc use with
            bfd_malloc.  Use bfd_set_filename.
    gdb/
            * solib-spu.c (spu_bfd_open): Use bfd_set_filename.
            * spu-linux-nat.c (spu_bfd_open): Likewise.
    ld/
            * emultempl/pe.em (after_open): Use bfd_set_filename.
            * emultempl/pep.em (after_open): Use bfd_set_filename.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4f48818ef3..08605c3a80 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.  Replace
+	xstrdup and xmalloc with bfd_strdup and bfd_malloc.  Return an
+	error status.  Adjust calls.
+	* vms-lib.c (_bfd_vms_lib_get_module): Test mhd->id earlier.
+	Close bfd on failure.  Replace xstrdup/bfd_alloc use with
+	bfd_malloc.  Use bfd_set_filename.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (must_be_dyn_reloc): Return 0 for TOC16 relocs.
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index d02398048c..7d70087c95 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -5417,7 +5417,7 @@ bfd_mach_o_fat_archive_p (bfd *abfd)
    ARCH_TYPE/ARCH_SUBTYPE and corresponding entry in header is ENTRY.
    Set arelt_data and origin fields too.  */
 
-static void
+static bfd_boolean
 bfd_mach_o_fat_member_init (bfd *abfd,
 			    enum bfd_architecture arch_type,
 			    unsigned long arch_subtype,
@@ -5426,27 +5426,35 @@ bfd_mach_o_fat_member_init (bfd *abfd,
   struct areltdata *areltdata;
   /* Create the member filename. Use ARCH_NAME.  */
   const bfd_arch_info_type *ap = bfd_lookup_arch (arch_type, arch_subtype);
+  char *filename;
 
   if (ap)
     {
       /* Use the architecture name if known.  */
-      abfd->filename = xstrdup (ap->printable_name);
+      filename = bfd_strdup (ap->printable_name);
+      if (filename == NULL)
+	return FALSE;
     }
   else
     {
       /* Forge a uniq id.  */
       const size_t namelen = 2 + 8 + 1 + 2 + 8 + 1;
-      char *name = xmalloc (namelen);
-      snprintf (name, namelen, "0x%lx-0x%lx",
+      filename = bfd_malloc (namelen);
+      if (filename == NULL)
+	return FALSE;
+      snprintf (filename, namelen, "0x%lx-0x%lx",
 		entry->cputype, entry->cpusubtype);
-      abfd->filename = name;
     }
+  bfd_set_filename (abfd, filename);
 
   areltdata = bfd_zmalloc (sizeof (struct areltdata));
+  if (areltdata == NULL)
+    return FALSE;
   areltdata->parsed_size = entry->size;
   abfd->arelt_data = areltdata;
   abfd->iostream = NULL;
   abfd->origin = entry->offset;
+  return TRUE;
 }
 
 bfd *
@@ -5502,7 +5510,11 @@ bfd_mach_o_fat_openr_next_archived_file (bfd *archive, bfd *prev)
   bfd_mach_o_convert_architecture (entry->cputype, entry->cpusubtype,
 				   &arch_type, &arch_subtype);
 
-  bfd_mach_o_fat_member_init (nbfd, arch_type, arch_subtype, entry);
+  if (!bfd_mach_o_fat_member_init (nbfd, arch_type, arch_subtype, entry))
+    {
+      bfd_close (nbfd);
+      return NULL;
+    }
 
   bfd_set_arch_mach (nbfd, arch_type, arch_subtype);
 
@@ -5574,9 +5586,8 @@ bfd_mach_o_fat_extract (bfd *abfd,
       if (res == NULL)
 	return NULL;
 
-      bfd_mach_o_fat_member_init (res, cpu_type, cpu_subtype, e);
-
-      if (bfd_check_format (res, format))
+      if (bfd_mach_o_fat_member_init (res, cpu_type, cpu_subtype, e)
+	  && bfd_check_format (res, format))
 	{
 	  BFD_ASSERT (bfd_get_arch_info (res) == arch);
 	  return res;
diff --git a/bfd/vms-lib.c b/bfd/vms-lib.c
index f238ba0016..43addd46ec 100644
--- a/bfd/vms-lib.c
+++ b/bfd/vms-lib.c
@@ -1297,7 +1297,9 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
   struct lib_tdata *tdata = bfd_libdata (abfd);
   bfd *res;
   file_ptr file_off;
-  char *name;
+  const char *name;
+  char *newname;
+  size_t namelen;
 
   /* Sanity check.  */
   if (modidx >= tdata->nbr_modules)
@@ -1335,18 +1337,22 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
       if (bfd_bread (buf, tdata->mhd_size, abfd) != tdata->mhd_size)
 	return NULL;
 
+      mhd = (struct vms_mhd *) buf;
+      if (mhd->id != MHD__C_MHDID)
+	return NULL;
+
       res = _bfd_create_empty_archive_element_shell (abfd);
       if (res == NULL)
 	return NULL;
       arelt = bfd_zmalloc (sizeof (*arelt));
       if (arelt == NULL)
-	return NULL;
+	{
+	  bfd_close (res);
+	  return NULL;
+	}
       res->arelt_data = arelt;
 
       /* Get info from mhd.  */
-      mhd = (struct vms_mhd *)buf;
-      if (mhd->id != MHD__C_MHDID)
-	return NULL;
       if (tdata->mhd_size >= offsetof (struct vms_mhd, objstat) + 1)
 	res->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0;
       res->mtime = vms_rawtime_to_time_t (mhd->datim);
@@ -1361,23 +1367,25 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
 
   /* Set filename.  */
   name = tdata->modules[modidx].name;
+  namelen = strlen (name);
+  newname = bfd_malloc (namelen + 4 + 1);
+  if (newname == NULL)
+    {
+      bfd_close (res);
+      return NULL;
+    }
+  strcpy (newname, name);
   switch (tdata->type)
     {
     case LBR__C_TYP_IOBJ:
     case LBR__C_TYP_EOBJ:
       /* For object archives, append .obj to mimic standard behaviour.  */
-      {
-	size_t namelen = strlen (name);
-	char *name1 = bfd_alloc (res, namelen + 4 + 1);
-	memcpy (name1, name, namelen);
-	strcpy (name1 + namelen, ".obj");
-	name = name1;
-      }
+      strcpy (newname + namelen, ".obj");
       break;
     default:
       break;
     }
-  res->filename = xstrdup (name);
+  bfd_set_filename (res, newname);
 
   tdata->cache[modidx] = res;
 
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 39fcac7a04..9ad5000480 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* solib-spu.c (spu_bfd_open): Use bfd_set_filename.
+	* spu-linux-nat.c (spu_bfd_open): Likewise.
+
 2019-09-18  Christian Biesinger  <cbiesinger@google.com>
 
 	* dwarf2loc.c: Change extern declaration of dwarf_always_disassemble
diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c
index 5b97b9bcf6..c5e0acaf02 100644
--- a/gdb/solib-spu.c
+++ b/gdb/solib-spu.c
@@ -377,8 +377,7 @@ spu_bfd_open (const char *pathname)
 
 	  strcat (buf, original_name);
 
-	  xfree ((char *)abfd->filename);
-	  abfd->filename = xstrdup (buf);
+	  bfd_set_filename (abfd.get (), xstrdup (buf));
 	}
     }
 
diff --git a/gdb/spu-linux-nat.c b/gdb/spu-linux-nat.c
index 2f4b4d6946..9dbb633734 100644
--- a/gdb/spu-linux-nat.c
+++ b/gdb/spu-linux-nat.c
@@ -371,8 +371,7 @@ spu_bfd_open (ULONGEST addr)
 				    sect_size - 20);
 	  buf[sect_size - 20] = '\0';
 
-	  xfree ((char *)nbfd->filename);
-	  nbfd->filename = xstrdup (buf);
+	  bfd_set_filename (nbfd.get (), xstrdup (buf));
 	}
     }
 
diff --git a/ld/ChangeLog b/ld/ChangeLog
index ea28a0b56f..81935a408c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/pe.em (after_open): Use bfd_set_filename.
+	* emultempl/pep.em (after_open): Use bfd_set_filename.
+
 2019-09-16  Alan Modra  <amodra@gmail.com>
 
 	PR 25002
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index 49bb66b906..2e78f26ad8 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -1543,7 +1543,7 @@ gld_${EMULATION_NAME}_after_open (void)
 			/* Rename this implib to match the other one.  */
 			n = xmalloc (strlen (other_bfd_filename) + 1);
 			strcpy (n, other_bfd_filename);
-			is->the_bfd->my_archive->filename = n;
+			bfd_set_filename (is->the_bfd->my_archive, n);
 		      }
 
 		    free (relocs);
@@ -1648,7 +1648,7 @@ gld_${EMULATION_NAME}_after_open (void)
 
 		new_name = xmalloc (strlen (is->the_bfd->filename) + 3);
 		sprintf (new_name, "%s.%c", is->the_bfd->filename, seq);
-		is->the_bfd->filename = new_name;
+		bfd_set_filename (is->the_bfd, new_name);
 
 		new_name = xmalloc (strlen (is->filename) + 3);
 		sprintf (new_name, "%s.%c", is->filename, seq);
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 4daa32b5c6..601ef11c20 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -1510,7 +1510,7 @@ gld_${EMULATION_NAME}_after_open (void)
 			/* Rename this implib to match the other one.  */
 			n = xmalloc (strlen (other_bfd_filename) + 1);
 			strcpy (n, other_bfd_filename);
-			is->the_bfd->my_archive->filename = n;
+			bfd_set_filename (is->the_bfd->my_archive, n);
 		      }
 
 		    free (relocs);
@@ -1615,7 +1615,7 @@ gld_${EMULATION_NAME}_after_open (void)
 
 		new_name = xmalloc (strlen (is->the_bfd->filename) + 3);
 		sprintf (new_name, "%s.%c", is->the_bfd->filename, seq);
-		is->the_bfd->filename = new_name;
+		bfd_set_filename (is->the_bfd, new_name);
 
 		new_name = xmalloc (strlen (is->filename) + 3);
 		sprintf (new_name, "%s.%c", is->filename, seq);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify target name, reloc name, and carsym name
@ 2019-09-18 13:42 gdb-buildbot
  2019-09-18 15:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 13:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1d38e9d14cc793bca9124d5ed7dc2a6e3122f2e5 ***

commit 1d38e9d14cc793bca9124d5ed7dc2a6e3122f2e5
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 18 15:04:27 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 21:32:51 2019 +0930

    Constify target name, reloc name, and carsym name
    
    bfd/
            * bfd-in.h (carsym.name): Make const.
            * reloc.c (struct reloc_howto_struct.name): Likewise.
            * targets.c (bfd_target.name): Likewise.!
            * bfd.c (bfd_get_sign_extend_vma): Make variable const.
            * som.c (som_bfd_fill_in_ar_symbols): Use an intermediary variable
            when setting carsym.name.
            * bfd-in2.h: Regenerate.
    gdb/
            * amd64-dicos-tdep.c (amd64_dicos_osabi_sniffer): Constify target.
            * i386-cygwin-tdep.c (i386_cygwin_init_abi): Likewise.
            * i386-dicos-tdep.c (i386_dicos_osabi_sniffer): Likewise.
    ld/
            * ldlang.c (stricpy, strcut, name_compare): Constify params.
            (get_first_input_target): Make return and "target" const.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 08605c3a80..8c5ce8b8b2 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (carsym.name): Make const.
+	* reloc.c (struct reloc_howto_struct.name): Likewise.
+	* targets.c (bfd_target.name): Likewise.!
+	* bfd.c (bfd_get_sign_extend_vma): Make variable const.
+	* som.c (som_bfd_fill_in_ar_symbols): Use an intermediary variable
+	when setting carsym.name.
+	* bfd-in2.h: Regenerate.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.  Replace
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 6544838a57..6c72acb705 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -257,7 +257,7 @@ typedef unsigned long symindex;
 /* This is a type pun with struct ranlib on purpose!  */
 typedef struct carsym
 {
-  char *name;
+  const char *name;
   file_ptr file_offset;	/* Look here to find the file.  */
 }
 carsym;			/* To make these you call a carsymogen.  */
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 13445a1de7..135c1e5fbc 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -264,7 +264,7 @@ typedef unsigned long symindex;
 /* This is a type pun with struct ranlib on purpose!  */
 typedef struct carsym
 {
-  char *name;
+  const char *name;
   file_ptr file_offset;	/* Look here to find the file.  */
 }
 carsym;			/* To make these you call a carsymogen.  */
@@ -2718,7 +2718,7 @@ struct reloc_howto_struct
      bfd *, char **);
 
   /* The textual name of the relocation type.  */
-  char *name;
+  const char *name;
 };
 
 #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
@@ -7634,7 +7634,7 @@ typedef struct flag_info flag_info;
 typedef struct bfd_target
 {
   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
-  char *name;
+  const char *name;
 
  /* The "flavour" of a back end is a general indication about
     the contents of a file.  */
diff --git a/bfd/bfd.c b/bfd/bfd.c
index f14ec253fb..91403508a9 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -1507,7 +1507,7 @@ RETURNS
 int
 bfd_get_sign_extend_vma (bfd *abfd)
 {
-  char *name;
+  const char *name;
 
   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
     return get_elf_backend_data (abfd)->sign_extend_vma;
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 9ca68ca61d..8eac73ddfe 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -361,7 +361,7 @@ CODE_FRAGMENT
 .     bfd *, char **);
 .
 .  {* The textual name of the relocation type.  *}
-.  char *name;
+.  const char *name;
 .};
 .
 */
diff --git a/bfd/som.c b/bfd/som.c
index 02a99a3360..cf78843452 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -5995,6 +5995,7 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
       unsigned int hash_val;
       unsigned int len;
       unsigned char ext_len[4];
+      char *name;
 
       /* An empty chain has zero as it's file offset.  */
       hash_val = bfd_getb32 (hash_table + 4 * i);
@@ -6025,13 +6026,14 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
       len = bfd_getb32 (ext_len);
 
       /* Allocate space for the name and null terminate it too.  */
-      set->name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
-      if (!set->name)
+      name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
+      if (!name)
 	goto error_return;
-      if (bfd_bread (set->name, (bfd_size_type) len, abfd) != len)
+      if (bfd_bread (name, (bfd_size_type) len, abfd) != len)
 	goto error_return;
 
-      set->name[len] = 0;
+      name[len] = 0;
+      set->name = name;
 
       /* Fill in the file offset.  Note that the "location" field points
 	 to the SOM itself, not the ar_hdr in front of it.  */
@@ -6068,13 +6070,14 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 	  len = bfd_getb32 (ext_len);
 
 	  /* Allocate space for the name and null terminate it too.  */
-	  set->name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
-	  if (!set->name)
+	  name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
+	  if (!name)
 	    goto error_return;
 
-	  if (bfd_bread (set->name, (bfd_size_type) len, abfd) != len)
+	  if (bfd_bread (name, (bfd_size_type) len, abfd) != len)
 	    goto error_return;
-	  set->name[len] = 0;
+	  name[len] = 0;
+	  set->name = name;
 
 	  /* Fill in the file offset.  Note that the "location" field points
 	     to the SOM itself, not the ar_hdr in front of it.  */
diff --git a/bfd/targets.c b/bfd/targets.c
index 09956994ec..b02dfc5484 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -179,7 +179,7 @@ DESCRIPTION
 .typedef struct bfd_target
 .{
 .  {* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  *}
-.  char *name;
+.  const char *name;
 .
 . {* The "flavour" of a back end is a general indication about
 .    the contents of a file.  *}
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9ad5000480..5e0e37bcfa 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* amd64-dicos-tdep.c (amd64_dicos_osabi_sniffer): Constify target.
+	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Likewise.
+	* i386-dicos-tdep.c (i386_dicos_osabi_sniffer): Likewise.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* solib-spu.c (spu_bfd_open): Use bfd_set_filename.
diff --git a/gdb/amd64-dicos-tdep.c b/gdb/amd64-dicos-tdep.c
index e797843bc9..ee91888491 100644
--- a/gdb/amd64-dicos-tdep.c
+++ b/gdb/amd64-dicos-tdep.c
@@ -35,7 +35,7 @@ amd64_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 static enum gdb_osabi
 amd64_dicos_osabi_sniffer (bfd *abfd)
 {
-  char *target_name = bfd_get_target (abfd);
+  const char *target_name = bfd_get_target (abfd);
 
   /* On amd64-DICOS, the Load Module's "header" section is 72
      bytes.  */
diff --git a/gdb/i386-cygwin-tdep.c b/gdb/i386-cygwin-tdep.c
index 1acd37975e..0e3ba82b76 100644
--- a/gdb/i386-cygwin-tdep.c
+++ b/gdb/i386-cygwin-tdep.c
@@ -229,7 +229,7 @@ i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 static enum gdb_osabi
 i386_cygwin_osabi_sniffer (bfd *abfd)
 {
-  char *target_name = bfd_get_target (abfd);
+  const char *target_name = bfd_get_target (abfd);
 
   if (strcmp (target_name, "pei-i386") == 0)
     return GDB_OSABI_CYGWIN;
diff --git a/gdb/i386-dicos-tdep.c b/gdb/i386-dicos-tdep.c
index 02af91aefd..a8c7c04d1f 100644
--- a/gdb/i386-dicos-tdep.c
+++ b/gdb/i386-dicos-tdep.c
@@ -31,7 +31,7 @@ i386_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 static enum gdb_osabi
 i386_dicos_osabi_sniffer (bfd *abfd)
 {
-  char *target_name = bfd_get_target (abfd);
+  const char *target_name = bfd_get_target (abfd);
 
   /* On x86-DICOS, the Load Module's "header" section is 36 bytes.  */
   if (strcmp (target_name, "elf32-i386") == 0
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 81935a408c..b863676ccd 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* ldlang.c (stricpy, strcut, name_compare): Constify params.
+	(get_first_input_target): Make return and "target" const.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/pe.em (after_open): Use bfd_set_filename.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 8beccd3736..76e862a640 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -3149,7 +3149,7 @@ get_target (const bfd_target *target, void *data)
 /* Like strcpy() but convert to lower case as well.  */
 
 static void
-stricpy (char *dest, char *src)
+stricpy (char *dest, const char *src)
 {
   char c;
 
@@ -3163,7 +3163,7 @@ stricpy (char *dest, char *src)
    from haystack.  */
 
 static void
-strcut (char *haystack, char *needle)
+strcut (char *haystack, const char *needle)
 {
   haystack = strstr (haystack, needle);
 
@@ -3182,7 +3182,7 @@ strcut (char *haystack, char *needle)
    Return a value indicating how "similar" they are.  */
 
 static int
-name_compare (char *first, char *second)
+name_compare (const char *first, const char *second)
 {
   char *copy1;
   char *copy2;
@@ -3267,10 +3267,10 @@ closest_target_match (const bfd_target *target, void *data)
 
 /* Return the BFD target format of the first input file.  */
 
-static char *
+static const char *
 get_first_input_target (void)
 {
-  char *target = NULL;
+  const char *target = NULL;
 
   LANG_FOR_EACH_INPUT_STATEMENT (s)
     {


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Constify bfd_octets_per_byte and related functions
@ 2019-09-18 13:54 gdb-buildbot
  2019-09-18 16:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 13:54 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 01c2b26160575ad4add68da8a043b3fa30defae4 ***

commit 01c2b26160575ad4add68da8a043b3fa30defae4
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Tue Sep 17 15:24:01 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 22:20:13 2019 +0930

    Constify bfd_octets_per_byte and related functions
    
            * archures.c (bfd_get_arch): Make param const.
            (bfd_get_mach, bfd_arch_bits_per_byte): Likewise.
            (bfd_arch_bits_per_address, bfd_octets_per_byte): Likewise.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8c5ce8b8b2..820c3bd5d7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* archures.c (bfd_get_arch): Make param const.
+	(bfd_get_mach, bfd_arch_bits_per_byte): Likewise.
+	(bfd_arch_bits_per_address, bfd_octets_per_byte): Likewise.
+	* bfd-in2.h: Regenerate.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (carsym.name): Make const.
diff --git a/bfd/archures.c b/bfd/archures.c
index 02c8e4ec93..1e6a0e1f1b 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -999,7 +999,7 @@ FUNCTION
 	bfd_get_arch
 
 SYNOPSIS
-	enum bfd_architecture bfd_get_arch (bfd *abfd);
+	enum bfd_architecture bfd_get_arch (const bfd *abfd);
 
 DESCRIPTION
 	Return the enumerated type which describes the BFD @var{abfd}'s
@@ -1007,7 +1007,7 @@ DESCRIPTION
 */
 
 enum bfd_architecture
-bfd_get_arch (bfd *abfd)
+bfd_get_arch (const bfd *abfd)
 {
   return abfd->arch_info->arch;
 }
@@ -1017,7 +1017,7 @@ FUNCTION
 	bfd_get_mach
 
 SYNOPSIS
-	unsigned long bfd_get_mach (bfd *abfd);
+	unsigned long bfd_get_mach (const bfd *abfd);
 
 DESCRIPTION
 	Return the long type which describes the BFD @var{abfd}'s
@@ -1025,7 +1025,7 @@ DESCRIPTION
 */
 
 unsigned long
-bfd_get_mach (bfd *abfd)
+bfd_get_mach (const bfd *abfd)
 {
   return abfd->arch_info->mach;
 }
@@ -1035,7 +1035,7 @@ FUNCTION
 	bfd_arch_bits_per_byte
 
 SYNOPSIS
-	unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+	unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
 
 DESCRIPTION
 	Return the number of bits in one of the BFD @var{abfd}'s
@@ -1043,7 +1043,7 @@ DESCRIPTION
 */
 
 unsigned int
-bfd_arch_bits_per_byte (bfd *abfd)
+bfd_arch_bits_per_byte (const bfd *abfd)
 {
   return abfd->arch_info->bits_per_byte;
 }
@@ -1053,7 +1053,7 @@ FUNCTION
 	bfd_arch_bits_per_address
 
 SYNOPSIS
-	unsigned int bfd_arch_bits_per_address (bfd *abfd);
+	unsigned int bfd_arch_bits_per_address (const bfd *abfd);
 
 DESCRIPTION
 	Return the number of bits in one of the BFD @var{abfd}'s
@@ -1061,7 +1061,7 @@ DESCRIPTION
 */
 
 unsigned int
-bfd_arch_bits_per_address (bfd *abfd)
+bfd_arch_bits_per_address (const bfd *abfd)
 {
   return abfd->arch_info->bits_per_address;
 }
@@ -1383,7 +1383,7 @@ FUNCTION
 	bfd_octets_per_byte
 
 SYNOPSIS
-	unsigned int bfd_octets_per_byte (bfd *abfd);
+	unsigned int bfd_octets_per_byte (const bfd *abfd);
 
 DESCRIPTION
 	Return the number of octets (8-bit quantities) per target byte
@@ -1392,7 +1392,7 @@ DESCRIPTION
 */
 
 unsigned int
-bfd_octets_per_byte (bfd *abfd)
+bfd_octets_per_byte (const bfd *abfd)
 {
   return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd),
 					bfd_get_mach (abfd));
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 135c1e5fbc..aec2143ea6 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -2545,13 +2545,13 @@ void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
 bfd_boolean bfd_default_set_arch_mach
    (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
 
-enum bfd_architecture bfd_get_arch (bfd *abfd);
+enum bfd_architecture bfd_get_arch (const bfd *abfd);
 
-unsigned long bfd_get_mach (bfd *abfd);
+unsigned long bfd_get_mach (const bfd *abfd);
 
-unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
 
-unsigned int bfd_arch_bits_per_address (bfd *abfd);
+unsigned int bfd_arch_bits_per_address (const bfd *abfd);
 
 const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
 
@@ -2561,7 +2561,7 @@ const bfd_arch_info_type *bfd_lookup_arch
 const char *bfd_printable_arch_mach
    (enum bfd_architecture arch, unsigned long machine);
 
-unsigned int bfd_octets_per_byte (bfd *abfd);
+unsigned int bfd_octets_per_byte (const bfd *abfd);
 
 unsigned int bfd_arch_mach_octets_per_byte
    (enum bfd_architecture arch, unsigned long machine);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't use bfd_get_* macro to set bfd fields
@ 2019-09-18 14:17 gdb-buildbot
  2019-09-18 17:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 14:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ed48ec2e6ec5514f01b9b3a810d6ddf39651114b ***

commit ed48ec2e6ec5514f01b9b3a810d6ddf39651114b
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 18 15:07:33 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 22:21:58 2019 +0930

    Don't use bfd_get_* macro to set bfd fields
    
            * aoutx.h (slurp_symbol_table): Don't set symcount using bfd_get
            macros.
            * pdp11.c (slurp_symbol_table): Likewise.
            * som.c (som_slurp_symbol_table): Likewise.
            * coff-ppc.c (ppc_bfd_coff_final_link): Likewise.
            * coffcode.h (coff_slurp_symbol_table): Likewise.
            * cofflink.c (_bfd_coff_final_link): Likewise.
            * ecoff.c (ecoff_slurp_symbolic_header): Likewise.
            (_bfd_ecoff_slurp_symbolic_info): Likewise.
            (_bfd_ecoff_slurp_symbol_table): Likewise.
            (_bfd_ecoff_bfd_final_link): Likewise.
            * elf.c (_bfd_elf_canonicalize_symtab): Likewise.
            * elflink.c (elf_link_output_symstrtab): Likewise.
            (bfd_elf_final_link): Likewise.
            * peicode.h (pe_ILF_build_a_bfd): Likewise.
            * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
            * aoutx.h (some_aout_object_p, slurp_symbol_table): Don't set
            start_address or symcount using bfd_get macros.
            * coffgen.c (coff_real_object_p): Likewise.
            * pdp11.c (some_aout_object_p, slurp_symbol_table): Likewise.
            * som.c (som_object_setup, som_slurp_symbol_table): Likewise.
            * elfcore.h (elf_core_file_p): Don't set start_address using
            bfd_get macro.
            * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Don't set dynsymcount
            using bfd_get macro.
            * bfd.c (bfd_set_file_flags): Don't set flags using bfd_get macro.
            * linker.c (bfd_generic_link_read_symbols): Don't set outsymbols
            or symcount using bfd_get macros.
            (_bfd_generic_final_link, generic_add_output_symbol): Likewise.
            * syms.c (bfd_set_symtab): Likewise.
            * vms-alpha.c (alpha_vms_bfd_final_link): Likewise.
            * archive.c (do_slurp_bsd_armap): Don't set has_armap using
            bfd_has_map macro.
            (do_slurp_coff_armap, bfd_slurp_armap): Likewise.
            * archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
            * coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise.
            * coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
            * ecoff.c (_bfd_ecoff_slurp_armap): Likewise.
            * som.c (som_slurp_armap): Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 820c3bd5d7..32c57b7963 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,45 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* aoutx.h (slurp_symbol_table): Don't set symcount using bfd_get
+	macros.
+	* pdp11.c (slurp_symbol_table): Likewise.
+	* som.c (som_slurp_symbol_table): Likewise.
+	* coff-ppc.c (ppc_bfd_coff_final_link): Likewise.
+	* coffcode.h (coff_slurp_symbol_table): Likewise.
+	* cofflink.c (_bfd_coff_final_link): Likewise.
+	* ecoff.c (ecoff_slurp_symbolic_header): Likewise.
+	(_bfd_ecoff_slurp_symbolic_info): Likewise.
+	(_bfd_ecoff_slurp_symbol_table): Likewise.
+	(_bfd_ecoff_bfd_final_link): Likewise.
+	* elf.c (_bfd_elf_canonicalize_symtab): Likewise.
+	* elflink.c (elf_link_output_symstrtab): Likewise.
+	(bfd_elf_final_link): Likewise.
+	* peicode.h (pe_ILF_build_a_bfd): Likewise.
+	* xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
+	* aoutx.h (some_aout_object_p, slurp_symbol_table): Don't set
+	start_address or symcount using bfd_get macros.
+	* coffgen.c (coff_real_object_p): Likewise.
+	* pdp11.c (some_aout_object_p, slurp_symbol_table): Likewise.
+	* som.c (som_object_setup, som_slurp_symbol_table): Likewise.
+	* elfcore.h (elf_core_file_p): Don't set start_address using
+	bfd_get macro.
+	* elf.c (_bfd_elf_canonicalize_dynamic_symtab): Don't set dynsymcount
+	using bfd_get macro.
+	* bfd.c (bfd_set_file_flags): Don't set flags using bfd_get macro.
+	* linker.c (bfd_generic_link_read_symbols): Don't set outsymbols
+	or symcount using bfd_get macros.
+	(_bfd_generic_final_link, generic_add_output_symbol): Likewise.
+	* syms.c (bfd_set_symtab): Likewise.
+	* vms-alpha.c (alpha_vms_bfd_final_link): Likewise.
+	* archive.c (do_slurp_bsd_armap): Don't set has_armap using
+	bfd_has_map macro.
+	(do_slurp_coff_armap, bfd_slurp_armap): Likewise.
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise.
+	* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
+	* ecoff.c (_bfd_ecoff_slurp_armap): Likewise.
+	* som.c (som_slurp_armap): Likewise.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* archures.c (bfd_get_arch): Make param const.
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index e5d8dcf390..cd50b44e60 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -511,10 +511,10 @@ NAME (aout, some_aout_object_p) (bfd *abfd,
        was called.  */
     abort ();
 
-  bfd_get_start_address (abfd) = execp->a_entry;
+  abfd->start_address = execp->a_entry;
 
   obj_aout_symbols (abfd) = NULL;
-  bfd_get_symcount (abfd) = execp->a_syms / sizeof (struct external_nlist);
+  abfd->symcount = execp->a_syms / sizeof (struct external_nlist);
 
   /* The default relocation entry size is that of traditional V7 Unix.  */
   obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
@@ -1782,7 +1782,7 @@ NAME (aout, slurp_symbol_table) (bfd *abfd)
       return FALSE;
     }
 
-  bfd_get_symcount (abfd) = obj_aout_external_sym_count (abfd);
+  abfd->symcount = obj_aout_external_sym_count (abfd);
 
   obj_aout_symbols (abfd) = cached;
 
diff --git a/bfd/archive.c b/bfd/archive.c
index ef71e8a796..dc0400d1cf 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -1013,7 +1013,7 @@ do_slurp_bsd_armap (bfd *abfd)
   /* FIXME, we should provide some way to free raw_ardata when
      we are done using the strings from it.  For now, it seems
      to be allocated on an objalloc anyway...  */
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
   return TRUE;
 }
 
@@ -1105,7 +1105,7 @@ do_slurp_coff_armap (bfd *abfd)
   /* Pad to an even boundary if you have to.  */
   ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
 
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
   bfd_release (abfd, raw_armap);
 
   /* Check for a second archive header (as used by PE).  */
@@ -1188,7 +1188,7 @@ bfd_slurp_armap (bfd *abfd)
 	return do_slurp_bsd_armap (abfd);
     }
 
-  bfd_has_map (abfd) = FALSE;
+  abfd->has_armap = FALSE;
   return TRUE;
 }
 \f
diff --git a/bfd/archive64.c b/bfd/archive64.c
index a2c628e2b5..37fecc28d4 100644
--- a/bfd/archive64.c
+++ b/bfd/archive64.c
@@ -66,7 +66,7 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
 
   if (! CONST_STRNEQ (nextname, "/SYM64/         "))
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -137,7 +137,7 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
   /* Pad to an even boundary if you have to.  */
   ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
 
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
   bfd_release (abfd, raw_armap);
 
   return TRUE;
diff --git a/bfd/bfd.c b/bfd/bfd.c
index 91403508a9..c973c780b4 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -1418,7 +1418,7 @@ bfd_set_file_flags (bfd *abfd, flagword flags)
       return FALSE;
     }
 
-  bfd_get_file_flags (abfd) = flags;
+  abfd->flags = flags;
   if ((flags & bfd_applicable_file_flags (abfd)) != flags)
     {
       bfd_set_error (bfd_error_invalid_operation);
diff --git a/bfd/coff-ppc.c b/bfd/coff-ppc.c
index 40824c5cb0..ab5c2c837c 100644
--- a/bfd/coff-ppc.c
+++ b/bfd/coff-ppc.c
@@ -2420,9 +2420,9 @@ ppc_bfd_coff_final_link (bfd *abfd, struct bfd_link_info *info)
 
   _bfd_stringtab_free (flaginfo.strtab);
 
-  /* Setting bfd_get_symcount to 0 will cause write_object_contents to
+  /* Setting symcount to 0 will cause write_object_contents to
      not try to write out the symbols.  */
-  bfd_get_symcount (abfd) = 0;
+  abfd->symcount = 0;
 
   return TRUE;
 
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 4620254aae..bdbb499a4a 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -1243,7 +1243,7 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
 
   if (xcoff_ardata (abfd) == NULL)
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -1255,7 +1255,7 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
       GET_VALUE_IN_FIELD (off, xcoff_ardata (abfd)->symoff, 10);
       if (off == 0)
 	{
-	  bfd_has_map (abfd) = FALSE;
+	  abfd->has_armap = FALSE;
 	  return TRUE;
 	}
 
@@ -1310,7 +1310,7 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
       GET_VALUE_IN_FIELD (off, xcoff_ardata_big (abfd)->symoff, 10);
       if (off == 0)
 	{
-	  bfd_has_map (abfd) = FALSE;
+	  abfd->has_armap = FALSE;
 	  return TRUE;
 	}
 
@@ -1373,7 +1373,7 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
     }
 
   bfd_ardata (abfd)->symdef_count = c;
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
 
   return TRUE;
 }
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index b6b189fd2d..1c80a9df88 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -1906,7 +1906,7 @@ xcoff64_slurp_armap (bfd *abfd)
 
   if (xcoff_ardata (abfd) == NULL)
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -1914,7 +1914,7 @@ xcoff64_slurp_armap (bfd *abfd)
 		      (const char **) NULL, 10);
   if (off == 0)
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -1976,7 +1976,7 @@ xcoff64_slurp_armap (bfd *abfd)
     }
 
   bfd_ardata (abfd)->symdef_count = c;
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
 
   return TRUE;
 }
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 054e45c960..dd3189fbd3 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -4809,7 +4809,7 @@ coff_slurp_symbol_table (bfd * abfd)
   obj_symbols (abfd) = cached_area;
   obj_raw_syments (abfd) = native_symbols;
 
-  bfd_get_symcount (abfd) = number_of_symbols;
+  abfd->symcount = number_of_symbols;
   obj_convert (abfd) = table_ptr;
   /* Slurp the line tables for each section too.  */
   {
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 209b01d5d0..80a9a2ab9a 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -257,14 +257,14 @@ coff_real_object_p (bfd *abfd,
   if ((internal_f->f_flags & F_EXEC) != 0)
     abfd->flags |= D_PAGED;
 
-  bfd_get_symcount (abfd) = internal_f->f_nsyms;
+  abfd->symcount = internal_f->f_nsyms;
   if (internal_f->f_nsyms)
     abfd->flags |= HAS_SYMS;
 
   if (internal_a != (struct internal_aouthdr *) NULL)
-    bfd_get_start_address (abfd) = internal_a->entry;
+    abfd->start_address = internal_a->entry;
   else
-    bfd_get_start_address (abfd) = 0;
+    abfd->start_address = 0;
 
   /* Set up the tdata area.  ECOFF uses its own routine, and overrides
      abfd->flags.  */
@@ -309,7 +309,7 @@ coff_real_object_p (bfd *abfd,
  fail2:
   abfd->tdata.any = tdata_save;
   abfd->flags = oflags;
-  bfd_get_start_address (abfd) = ostart;
+  abfd->start_address = ostart;
   return (const bfd_target *) NULL;
 }
 
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 5e02760154..34d68c93b5 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -1186,9 +1186,9 @@ _bfd_coff_final_link (bfd *abfd,
 
   _bfd_stringtab_free (flaginfo.strtab);
 
-  /* Setting bfd_get_symcount to 0 will cause write_object_contents to
+  /* Setting symcount to 0 will cause write_object_contents to
      not try to write out the symbols.  */
-  bfd_get_symcount (abfd) = 0;
+  abfd->symcount = 0;
 
   return TRUE;
 
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index f9844b3b4b..1e6f4d219c 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -446,7 +446,7 @@ ecoff_slurp_symbolic_header (bfd *abfd)
   /* See whether there is a symbolic header.  */
   if (ecoff_data (abfd)->sym_filepos == 0)
     {
-      bfd_get_symcount (abfd) = 0;
+      abfd->symcount = 0;
       return TRUE;
     }
 
@@ -479,8 +479,7 @@ ecoff_slurp_symbolic_header (bfd *abfd)
     }
 
   /* Now we can get the correct number of symbols.  */
-  bfd_get_symcount (abfd) = (internal_symhdr->isymMax
-			     + internal_symhdr->iextMax);
+  abfd->symcount = internal_symhdr->isymMax + internal_symhdr->iextMax;
 
   if (raw != NULL)
     free (raw);
@@ -521,7 +520,7 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abfd,
     return TRUE;
   if (ecoff_data (abfd)->sym_filepos == 0)
     {
-      bfd_get_symcount (abfd) = 0;
+      abfd->symcount = 0;
       return TRUE;
     }
 
@@ -965,7 +964,7 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd)
      the symbol count and warning the user.  */
   if (internal_ptr - internal < (ptrdiff_t) bfd_get_symcount (abfd))
     {
-      bfd_get_symcount (abfd) = internal_ptr - internal;
+      abfd->symcount = internal_ptr - internal;
       _bfd_error_handler
 	/* xgettext:c-format */
 	(_("%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"),
@@ -2905,7 +2904,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
 	  && nextname[ARMAP_OBJECT_ENDIAN_INDEX] != ARMAP_LITTLE_ENDIAN)
       || ! strneq (nextname + ARMAP_END_INDEX, ARMAP_END, sizeof ARMAP_END - 1))
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -3018,7 +3017,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   /* Pad to an even boundary.  */
   ardata->first_file_filepos += ardata->first_file_filepos % 2;
 
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
 
   return TRUE;
 }
@@ -4459,7 +4458,7 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 	}
     }
 
-  bfd_get_symcount (abfd) = symhdr->iextMax + symhdr->isymMax;
+  abfd->symcount = symhdr->iextMax + symhdr->isymMax;
 
   ecoff_data (abfd)->linker = TRUE;
 
diff --git a/bfd/elf.c b/bfd/elf.c
index ec4c643d59..ecd348e1a5 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -8405,7 +8405,7 @@ _bfd_elf_canonicalize_symtab (bfd *abfd, asymbol **allocation)
   long symcount = bed->s->slurp_symbol_table (abfd, allocation, FALSE);
 
   if (symcount >= 0)
-    bfd_get_symcount (abfd) = symcount;
+    abfd->symcount = symcount;
   return symcount;
 }
 
@@ -8417,7 +8417,7 @@ _bfd_elf_canonicalize_dynamic_symtab (bfd *abfd,
   long symcount = bed->s->slurp_symbol_table (abfd, allocation, TRUE);
 
   if (symcount >= 0)
-    bfd_get_dynamic_symcount (abfd) = symcount;
+    abfd->dynsymcount = symcount;
   return symcount;
 }
 
diff --git a/bfd/elfcore.h b/bfd/elfcore.h
index 395feb5ef3..3550eaac27 100644
--- a/bfd/elfcore.h
+++ b/bfd/elfcore.h
@@ -305,7 +305,7 @@ elf_core_file_p (bfd *abfd)
   }
 
   /* Save the entry point from the ELF header.  */
-  bfd_get_start_address (abfd) = i_ehdrp->e_entry;
+  abfd->start_address = i_ehdrp->e_entry;
   return abfd->xvec;
 
 wrong:
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 16d83bb7a3..8f18be07db 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -9481,7 +9481,7 @@ elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
   hash_table->strtab[hash_table->strtabcount].destshndx_index
     = flinfo->symshndxbuf ? bfd_get_symcount (flinfo->output_bfd) : 0;
 
-  bfd_get_symcount (flinfo->output_bfd) += 1;
+  flinfo->output_bfd->symcount += 1;
   hash_table->strtabcount += 1;
 
   return 1;
@@ -12012,7 +12012,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
   /* Figure out the file positions for everything but the symbol table
      and the relocs.  We set symcount to force assign_section_numbers
      to create a symbol table.  */
-  bfd_get_symcount (abfd) = info->strip != strip_all || emit_relocs;
+  abfd->symcount = info->strip != strip_all || emit_relocs;
   BFD_ASSERT (! abfd->output_has_begun);
   if (! _bfd_elf_compute_section_file_positions (abfd, info))
     goto error_return;
@@ -12057,7 +12057,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
      .symtab, .strtab, and non-loaded reloc sections.  We start the
      .symtab section at the current file position, and write directly
      to it.  We build the .strtab section in memory.  */
-  bfd_get_symcount (abfd) = 0;
+  abfd->symcount = 0;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   /* sh_name is set in prep_headers.  */
   symtab_hdr->sh_type = SHT_SYMTAB;
diff --git a/bfd/linker.c b/bfd/linker.c
index f6eef93259..8aec0d2358 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -810,14 +810,13 @@ bfd_generic_link_read_symbols (bfd *abfd)
       symsize = bfd_get_symtab_upper_bound (abfd);
       if (symsize < 0)
 	return FALSE;
-      bfd_get_outsymbols (abfd) = (struct bfd_symbol **) bfd_alloc (abfd,
-								    symsize);
+      abfd->outsymbols = bfd_alloc (abfd, symsize);
       if (bfd_get_outsymbols (abfd) == NULL && symsize != 0)
 	return FALSE;
       symcount = bfd_canonicalize_symtab (abfd, bfd_get_outsymbols (abfd));
       if (symcount < 0)
 	return FALSE;
-      bfd_get_symcount (abfd) = symcount;
+      abfd->symcount = symcount;
     }
 
   return TRUE;
@@ -1824,8 +1823,8 @@ _bfd_generic_final_link (bfd *abfd, struct bfd_link_info *info)
   size_t outsymalloc;
   struct generic_write_global_symbol_info wginfo;
 
-  bfd_get_outsymbols (abfd) = NULL;
-  bfd_get_symcount (abfd) = 0;
+  abfd->outsymbols = NULL;
+  abfd->symcount = 0;
   outsymalloc = 0;
 
   /* Mark all sections which will be included in the output file.  */
@@ -1958,12 +1957,12 @@ generic_add_output_symbol (bfd *output_bfd, size_t *psymalloc, asymbol *sym)
       newsyms = (asymbol **) bfd_realloc (bfd_get_outsymbols (output_bfd), amt);
       if (newsyms == NULL)
 	return FALSE;
-      bfd_get_outsymbols (output_bfd) = newsyms;
+      output_bfd->outsymbols = newsyms;
     }
 
-  bfd_get_outsymbols (output_bfd) [bfd_get_symcount (output_bfd)] = sym;
+  output_bfd->outsymbols[output_bfd->symcount] = sym;
   if (sym != NULL)
-    ++ bfd_get_symcount (output_bfd);
+    ++output_bfd->symcount;
 
   return TRUE;
 }
diff --git a/bfd/pdp11.c b/bfd/pdp11.c
index 1d34047fdc..f7f3128409 100644
--- a/bfd/pdp11.c
+++ b/bfd/pdp11.c
@@ -505,10 +505,10 @@ NAME (aout, some_aout_object_p) (bfd *abfd,
       abort ();
     }
 
-  bfd_get_start_address (abfd) = execp->a_entry;
+  abfd->start_address = execp->a_entry;
 
   obj_aout_symbols (abfd) = NULL;
-  bfd_get_symcount (abfd) = execp->a_syms / sizeof (struct external_nlist);
+  abfd->symcount = execp->a_syms / sizeof (struct external_nlist);
 
   /* The default relocation entry size is that of traditional V7 Unix.  */
   obj_reloc_entry_size (abfd) = RELOC_SIZE;
@@ -1512,7 +1512,7 @@ NAME (aout, slurp_symbol_table) (bfd *abfd)
       return FALSE;
     }
 
-  bfd_get_symcount (abfd) = obj_aout_external_sym_count (abfd);
+  abfd->symcount = obj_aout_external_sym_count (abfd);
 
   obj_aout_symbols (abfd) = cached;
 
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 2a564fec98..679474ecd1 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -1093,7 +1093,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 
   /* Point the bfd at the symbol table.  */
   obj_symbols (abfd) = vars.sym_cache;
-  bfd_get_symcount (abfd) = vars.sym_index;
+  abfd->symcount = vars.sym_index;
 
   obj_raw_syments (abfd) = vars.native_syms;
   obj_raw_syment_count (abfd) = vars.sym_index;
diff --git a/bfd/som.c b/bfd/som.c
index cf78843452..4c9dcaee67 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -2031,12 +2031,12 @@ som_object_setup (bfd *abfd,
 	  || (aux_hdrp->exec_entry & 0x3) != 0
 	  || ! found)
 	{
-	  bfd_get_start_address (abfd) = aux_hdrp->exec_flags;
+	  abfd->start_address = aux_hdrp->exec_flags;
 	  obj_som_exec_data (abfd)->exec_flags = aux_hdrp->exec_entry;
 	}
       else
 	{
-	  bfd_get_start_address (abfd) = aux_hdrp->exec_entry + current_offset;
+	  abfd->start_address = aux_hdrp->exec_entry + current_offset;
 	  obj_som_exec_data (abfd)->exec_flags = aux_hdrp->exec_flags;
 	}
     }
@@ -2044,7 +2044,7 @@ som_object_setup (bfd *abfd,
   obj_som_exec_data (abfd)->version_id = file_hdrp->version_id;
 
   bfd_default_set_arch_mach (abfd, bfd_arch_hppa, pa10);
-  bfd_get_symcount (abfd) = file_hdrp->symbol_total;
+  abfd->symcount = file_hdrp->symbol_total;
 
   /* Initialize the saved symbol table and string table to NULL.
      Save important offsets and sizes from the SOM header into
@@ -4792,7 +4792,7 @@ som_slurp_symbol_table (bfd *abfd)
 
   /* We modify the symbol count to record the number of BFD symbols we
      created.  */
-  bfd_get_symcount (abfd) = sym - symbase;
+  abfd->symcount = sym - symbase;
 
   /* Save our results and return success.  */
   obj_som_symtab (abfd) = symbase;
@@ -6131,7 +6131,7 @@ som_slurp_armap (bfd *abfd)
   /* For archives without .o files there is no symbol table.  */
   if (! CONST_STRNEQ (nextname, "/               "))
     {
-      bfd_has_map (abfd) = FALSE;
+      abfd->has_armap = FALSE;
       return TRUE;
     }
 
@@ -6201,7 +6201,7 @@ som_slurp_armap (bfd *abfd)
     return FALSE;
 
   /* Notify the generic archive code that we have a symbol map.  */
-  bfd_has_map (abfd) = TRUE;
+  abfd->has_armap = TRUE;
   return TRUE;
 }
 
diff --git a/bfd/syms.c b/bfd/syms.c
index da1c90d52e..4d532b2cd2 100644
--- a/bfd/syms.c
+++ b/bfd/syms.c
@@ -455,8 +455,8 @@ bfd_set_symtab (bfd *abfd, asymbol **location, unsigned int symcount)
       return FALSE;
     }
 
-  bfd_get_outsymbols (abfd) = location;
-  bfd_get_symcount (abfd) = symcount;
+  abfd->outsymbols = location;
+  abfd->symcount = symcount;
   return TRUE;
 }
 
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 69822a2ce6..8d2a2dff62 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -8912,8 +8912,8 @@ alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
       return FALSE;
     }
 
-  bfd_get_outsymbols (abfd) = NULL;
-  bfd_get_symcount (abfd) = 0;
+  abfd->outsymbols = NULL;
+  abfd->symcount = 0;
 
   /* Mark all sections which will be included in the output file.  */
   for (o = abfd->sections; o != NULL; o = o->next)
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index f9c12e40f3..1a2f87c4b0 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -6412,9 +6412,9 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 	goto error_return;
     }
 
-  /* Setting bfd_get_symcount to 0 will cause write_object_contents to
+  /* Setting symcount to 0 will cause write_object_contents to
      not try to write out the symbols.  */
-  bfd_get_symcount (abfd) = 0;
+  abfd->symcount = 0;
 
   return TRUE;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Re-generate many configure and Makefile.in files
@ 2019-09-18 14:17 gdb-buildbot
  2019-09-18 18:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 14:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e0b2a78c83207340f6c4b5dbe02bec850dbb7def ***

commit e0b2a78c83207340f6c4b5dbe02bec850dbb7def
Author:     Simon Marchi <simon.marchi@polymtl.ca>
AuthorDate: Wed Sep 18 09:07:44 2019 -0400
Commit:     Simon Marchi <simon.marchi@efficios.com>
CommitDate: Wed Sep 18 09:09:15 2019 -0400

    Re-generate many configure and Makefile.in files
    
    I get some spurious changes when running autoconf/automake for various
    projects in the tree.  This is likely because they were generated using
    distro-patched tools last time.
    
    I ran `autoreconf -f` in the various automake projects of the
    binutils-gdb tree, and this is the result.  The tools I am using have
    been compiled from source, from the upstream release.
    
    bfd/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.
            * doc/Makefile.in: Re-generate.
    
    binutils/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.
            * doc/Makefile.in: Re-generate.
    
    gas/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.
            * doc/Makefile.in: Re-generate.
    
    gold/ChangeLog:
    
            * testsuite/Makefile.in: Re-generate.
    
    gprof/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.
    
    ld/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.
    
    opcodes/ChangeLog:
    
            * Makefile.in: Re-generate.
            * configure: Re-generate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 32c57b7963..86ea499c0e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+	* doc/Makefile.in: Re-generate.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* aoutx.h (slurp_symbol_table): Don't set symcount using bfd_get
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 5578997e5d..9c14721fd8 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -438,7 +438,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/bfd/configure b/bfd/configure
index 10f187a692..e15957e2ce 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -793,7 +793,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -890,7 +889,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1143,15 +1141,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1289,7 +1278,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1442,7 +1431,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -11740,7 +11728,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11743 "configure"
+#line 11731 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11846,7 +11834,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11849 "configure"
+#line 11837 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12235,7 +12223,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12281,7 +12269,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12305,7 +12293,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12350,7 +12338,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12374,7 +12362,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16368,8 +16356,6 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
-  free (data);
-  free (data3);
   return 0;
 }
 _ACEOF
diff --git a/bfd/doc/Makefile.in b/bfd/doc/Makefile.in
index d75411d2af..0115dfc406 100644
--- a/bfd/doc/Makefile.in
+++ b/bfd/doc/Makefile.in
@@ -375,7 +375,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a29de52599..4c4871be81 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+	* doc/Makefile.in: Re-generate.
+
 2019-09-16  Phil Blundell  <pb@pbcl.net>
 
 	* Makefile.in, configure. doc/Makefile.in: Regenerated.
diff --git a/binutils/Makefile.in b/binutils/Makefile.in
index d1828e5fc2..16c078fdd3 100644
--- a/binutils/Makefile.in
+++ b/binutils/Makefile.in
@@ -541,7 +541,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/binutils/configure b/binutils/configure
index f8fe55c2a8..50f8d5b1a2 100755
--- a/binutils/configure
+++ b/binutils/configure
@@ -778,7 +778,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -871,7 +870,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1124,15 +1122,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1270,7 +1259,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1423,7 +1412,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -11535,7 +11523,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11538 "configure"
+#line 11526 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11641,7 +11629,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11644 "configure"
+#line 11632 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12028,7 +12016,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12074,7 +12062,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12098,7 +12086,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12143,7 +12131,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -12167,7 +12155,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -13734,8 +13722,6 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
-  free (data);
-  free (data3);
   return 0;
 }
 _ACEOF
diff --git a/binutils/doc/Makefile.in b/binutils/doc/Makefile.in
index c66caa832e..a0777d8fcc 100644
--- a/binutils/doc/Makefile.in
+++ b/binutils/doc/Makefile.in
@@ -374,7 +374,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f22727c7cc..6735017792 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+	* doc/Makefile.in: Re-generate.
+
 2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
 
 	* config/tc-riscv.c (riscv_multi_subset_supports): Handle
diff --git a/gas/Makefile.in b/gas/Makefile.in
index 595295e555..21545d25b7 100644
--- a/gas/Makefile.in
+++ b/gas/Makefile.in
@@ -402,7 +402,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gas/configure b/gas/configure
index 5cfd52f712..144ead49c4 100755
--- a/gas/configure
+++ b/gas/configure
@@ -770,7 +770,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -868,7 +867,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1121,15 +1119,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1267,7 +1256,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1420,7 +1409,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -11355,7 +11343,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11358 "configure"
+#line 11346 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11461,7 +11449,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11464 "configure"
+#line 11452 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11848,7 +11836,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11894,7 +11882,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11918,7 +11906,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11963,7 +11951,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11987,7 +11975,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in
index 854ee9daef..7c4189a8c6 100644
--- a/gas/doc/Makefile.in
+++ b/gas/doc/Makefile.in
@@ -364,7 +364,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 77a72e3742..9e45c0fb07 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* testsuite/Makefile.in: Re-generate.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
index dac0db21a3..9f29dc638c 100644
--- a/gold/testsuite/Makefile.in
+++ b/gold/testsuite/Makefile.in
@@ -2708,7 +2708,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index 737b2cd3b5..a2ebab5e04 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+
 2019-09-16  Phil Blundell  <pb@pbcl.net>
 
 	* Makefile.in, configure: Regenerated.
diff --git a/gprof/Makefile.in b/gprof/Makefile.in
index d5e883d4de..451fe9585d 100644
--- a/gprof/Makefile.in
+++ b/gprof/Makefile.in
@@ -424,7 +424,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/gprof/configure b/gprof/configure
index 3c414ce75b..cbb3aced46 100755
--- a/gprof/configure
+++ b/gprof/configure
@@ -751,7 +751,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -836,7 +835,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1089,15 +1087,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1235,7 +1224,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1388,7 +1377,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -11202,7 +11190,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11205 "configure"
+#line 11193 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11308,7 +11296,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11311 "configure"
+#line 11299 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11695,7 +11683,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11741,7 +11729,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11765,7 +11753,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11810,7 +11798,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -11834,7 +11822,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
diff --git a/ld/ChangeLog b/ld/ChangeLog
index b863676ccd..b6ac44e1f8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* ldlang.c (stricpy, strcut, name_compare): Constify params.
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 057956139d..d509f62bd2 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -521,7 +521,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/ld/configure b/ld/configure
index 62bb4e45e9..2d6ca5c044 100755
--- a/ld/configure
+++ b/ld/configure
@@ -786,7 +786,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -889,7 +888,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1142,15 +1140,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1288,7 +1277,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1441,7 +1430,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -12039,7 +12027,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12042 "configure"
+#line 12030 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12145,7 +12133,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12148 "configure"
+#line 12136 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15548,7 +15536,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15594,7 +15582,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15618,7 +15606,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15663,7 +15651,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -15687,7 +15675,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -17200,8 +17188,6 @@ main ()
     if (*(data + i) != *(data3 + i))
       return 14;
   close (fd);
-  free (data);
-  free (data3);
   return 0;
 }
 _ACEOF
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 8f2ca7257e..d5b412275f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+
 2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
 
 	* riscv-opc.c (riscv_opcodes): Change subset field
diff --git a/opcodes/Makefile.in b/opcodes/Makefile.in
index ee8b31153f..74faef85b9 100644
--- a/opcodes/Makefile.in
+++ b/opcodes/Makefile.in
@@ -408,7 +408,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/opcodes/configure b/opcodes/configure
index 8062312c28..6a0b919d0f 100755
--- a/opcodes/configure
+++ b/opcodes/configure
@@ -769,7 +769,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -855,7 +854,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1108,15 +1106,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1254,7 +1243,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1407,7 +1396,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -11451,7 +11439,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11454 "configure"
+#line 11442 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11557,7 +11545,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11560 "configure"
+#line 11548 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd_asymbol_* macros
@ 2019-09-18 14:30 gdb-buildbot
  2019-09-18 19:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 14:30 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e6f7f6d14f7e1acba0cf41726616a270e7d3c121 ***

commit e6f7f6d14f7e1acba0cf41726616a270e7d3c121
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Wed Sep 18 16:25:19 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Wed Sep 18 23:07:31 2019 +0930

    bfd_asymbol_* macros
    
    The main point of this patch is to give bfd_get_section a better name,
    bfd_asymbol_section.
    
    bfd/
            * bfd-in.h (bfd_asymbol_section): Rename from bfd_get_section.
            (bfd_get_output_section): Delete.
            (bfd_asymbol_base): Delete.
            (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
            (bfd_asymbol_bfd, bfd_asymbol_flavour): Tidy.
            (bfd_set_asymbol_name): New macro.
            * bfd-in2.h: Regenerate.
            * aout-cris.c: Update throughout to use bfd_asymbol_section.
            * aoutx.h: Likewise.
            * cofflink.c: Likewise.
            * dwarf2.c: Likewise.
            * ecoff.c: Likewise.
            * elf.c: Likewise.
            * elf32-arm.c: Likewise.
            * elf32-mips.c: Likewise.
            * elf32-score.c: Likewise.
            * elf32-score7.c: Likewise.
            * elfn32-mips.c: Likewise.
            * elfnn-aarch64.c: Likewise.
            * elfxx-mips.c: Likewise.
            * linker.c: Likewise.
            * pdp11.c: Likewise.
            * elf64-mmix.c (mmix_elf_reloc): Expand bfd_get_output_section.
    binutils/
            * nm.c: Update bfd_get_section to bfd_asymbol_section throughout.
            * objcopy.c: Likewise.
            * objdump.c: Likewise.
            * rdcoff.c: Likewise.
            * objcopy.c (create_new_symbol): Use bfd_set_asymbol_name.
            (filter_symbols): Likewise.
    gas/
            * symbols.c (S_IS_LOCAL): Update bfd_get_section to
            bfd_asymbol_section.
    gdb/
            * arm-tdep.c (arm_record_special_symbol): Update bfd_get_section
            to bfd_asymbol_section.
    ld/
            * ldcref.c (check_reloc_refs): Update bfd_get_section to
            bfd_asymbol_section.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 86ea499c0e..63f6c4c33f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,29 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_asymbol_section): Rename from bfd_get_section.
+	(bfd_get_output_section): Delete.
+	(bfd_asymbol_base): Delete.
+	(bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_asymbol_flavour): Tidy.
+	(bfd_set_asymbol_name): New macro.
+	* bfd-in2.h: Regenerate.
+	* aout-cris.c: Update throughout to use bfd_asymbol_section.
+	* aoutx.h: Likewise.
+	* cofflink.c: Likewise.
+	* dwarf2.c: Likewise.
+	* ecoff.c: Likewise.
+	* elf.c: Likewise.
+	* elf32-arm.c: Likewise.
+	* elf32-mips.c: Likewise.
+	* elf32-score.c: Likewise.
+	* elf32-score7.c: Likewise.
+	* elfn32-mips.c: Likewise.
+	* elfnn-aarch64.c: Likewise.
+	* elfxx-mips.c: Likewise.
+	* linker.c: Likewise.
+	* pdp11.c: Likewise.
+	* elf64-mmix.c (mmix_elf_reloc): Part expand bfd_get_output_section.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* Makefile.in: Re-generate.
diff --git a/bfd/aout-cris.c b/bfd/aout-cris.c
index feed5ed585..31b003520d 100644
--- a/bfd/aout-cris.c
+++ b/bfd/aout-cris.c
@@ -169,14 +169,14 @@ MY (swap_ext_reloc_out) (bfd *abfd,
      from the abs section, or as a symbol which has an abs value.
      check for that here.  */
 
-  if (bfd_is_abs_section (bfd_get_section (sym)))
+  if (bfd_is_abs_section (bfd_asymbol_section (sym)))
     {
       r_extern = 0;
       r_index = N_ABS;
     }
   else if ((sym->flags & BSF_SECTION_SYM) == 0)
     {
-      if (bfd_is_und_section (bfd_get_section (sym))
+      if (bfd_is_und_section (bfd_asymbol_section (sym))
 	  /* Remember to check for weak symbols; they count as global.  */
 	  || (sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0)
 	r_extern = 1;
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index cd50b44e60..859153be10 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1570,7 +1570,7 @@ translate_to_native_sym_flags (bfd *abfd,
      to another.  */
   sym_pointer->e_type[0] &= ~N_TYPE;
 
-  sec = bfd_get_section (cache_ptr);
+  sec = bfd_asymbol_section (cache_ptr);
   off = 0;
 
   if (sec == NULL)
@@ -2064,14 +2064,14 @@ NAME (aout, swap_ext_reloc_out) (bfd *abfd,
      Absolute symbols can come in in two ways, either as an offset
      from the abs section, or as a symbol which has an abs value.
      check for that here.  */
-  if (bfd_is_abs_section (bfd_get_section (sym)))
+  if (bfd_is_abs_section (bfd_asymbol_section (sym)))
     {
       r_extern = 0;
       r_index = N_ABS;
     }
   else if ((sym->flags & BSF_SECTION_SYM) == 0)
     {
-      if (bfd_is_und_section (bfd_get_section (sym))
+      if (bfd_is_und_section (bfd_asymbol_section (sym))
 	  || (sym->flags & BSF_GLOBAL) != 0)
 	r_extern = 1;
       else
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 6c72acb705..5a30344350 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -240,18 +240,15 @@ typedef unsigned long symindex;
 /* General purpose part of a symbol X;
    target specific parts are in libcoff.h, libaout.h, etc.  */
 
-#define bfd_get_section(x) ((x)->section)
-#define bfd_get_output_section(x) ((x)->section->output_section)
-#define bfd_set_section(x,y) ((x)->section) = (y)
-#define bfd_asymbol_base(x) ((x)->section->vma)
-#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
-#define bfd_asymbol_name(x) ((x)->name)
-/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
-#define bfd_asymbol_bfd(x) ((x)->the_bfd)
-#define bfd_asymbol_flavour(x)			\
-  (((x)->flags & BSF_SYNTHETIC) != 0		\
+#define bfd_asymbol_section(sy) ((sy)->section)
+#define bfd_asymbol_value(sy) ((sy)->section->vma + (sy)->value)
+#define bfd_asymbol_name(sy) ((sy)->name)
+#define bfd_asymbol_bfd(sy) ((sy)->the_bfd)
+#define bfd_asymbol_flavour(sy)			\
+  (((sy)->flags & BSF_SYNTHETIC) != 0		\
    ? bfd_target_unknown_flavour			\
-   : bfd_asymbol_bfd (x)->xvec->flavour)
+   : (sy)->the_bfd->xvec->flavour)
+#define bfd_set_asymbol_name(sy, n) do { (sy)->name = (n); } while (0)
 
 /* A canonical archive symbol.  */
 /* This is a type pun with struct ranlib on purpose!  */
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index aec2143ea6..6542d403e0 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -247,18 +247,15 @@ typedef unsigned long symindex;
 /* General purpose part of a symbol X;
    target specific parts are in libcoff.h, libaout.h, etc.  */
 
-#define bfd_get_section(x) ((x)->section)
-#define bfd_get_output_section(x) ((x)->section->output_section)
-#define bfd_set_section(x,y) ((x)->section) = (y)
-#define bfd_asymbol_base(x) ((x)->section->vma)
-#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
-#define bfd_asymbol_name(x) ((x)->name)
-/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
-#define bfd_asymbol_bfd(x) ((x)->the_bfd)
-#define bfd_asymbol_flavour(x)			\
-  (((x)->flags & BSF_SYNTHETIC) != 0		\
+#define bfd_asymbol_section(sy) ((sy)->section)
+#define bfd_asymbol_value(sy) ((sy)->section->vma + (sy)->value)
+#define bfd_asymbol_name(sy) ((sy)->name)
+#define bfd_asymbol_bfd(sy) ((sy)->the_bfd)
+#define bfd_asymbol_flavour(sy)			\
+  (((sy)->flags & BSF_SYNTHETIC) != 0		\
    ? bfd_target_unknown_flavour			\
-   : bfd_asymbol_bfd (x)->xvec->flavour)
+   : (sy)->the_bfd->xvec->flavour)
+#define bfd_set_asymbol_name(sy, n) do { (sy)->name = (n); } while (0)
 
 /* A canonical archive symbol.  */
 /* This is a type pun with struct ranlib on purpose!  */
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 34d68c93b5..7bcc1ca77d 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -902,7 +902,7 @@ _bfd_coff_final_link (bfd *abfd,
 					bfd_asymbol_name(sym), FALSE, FALSE)
 		       == NULL))
 		  || (((flaginfo.info->discard == discard_sec_merge
-			&& (bfd_get_section (sym)->flags & SEC_MERGE)
+			&& (bfd_asymbol_section (sym)->flags & SEC_MERGE)
 			&& ! bfd_link_relocatable (flaginfo.info))
 		       || flaginfo.info->discard == discard_l)
 		      && bfd_is_local_label_name (sub, bfd_asymbol_name(sym))))
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index ed6dcd48c7..575b082e1d 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -2736,7 +2736,7 @@ lookup_symbol_in_function_table (struct comp_unit *unit,
   bfd_vma best_fit_len = 0;
   struct arange *arange;
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_get_section (sym);
+  asection *sec = bfd_asymbol_section (sym);
 
   for (each_func = unit->function_table;
        each_func;
@@ -2784,7 +2784,7 @@ lookup_symbol_in_variable_table (struct comp_unit *unit,
 				 unsigned int *linenumber_ptr)
 {
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_get_section (sym);
+  asection *sec = bfd_asymbol_section (sym);
   struct varinfo* each;
 
   for (each = unit->variable_table; each; each = each->prev_var)
@@ -4048,7 +4048,7 @@ info_hash_lookup_funcinfo (struct info_hash_table *hash_table,
   struct info_list_node *node;
   struct arange *arange;
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_get_section (sym);
+  asection *sec = bfd_asymbol_section (sym);
 
   for (node = lookup_info_hash_table (hash_table, name);
        node;
@@ -4096,7 +4096,7 @@ info_hash_lookup_varinfo (struct info_hash_table *hash_table,
 			  unsigned int *linenumber_ptr)
 {
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_get_section (sym);
+  asection *sec = bfd_asymbol_section (sym);
   struct varinfo* each;
   struct info_list_node *node;
 
@@ -4695,7 +4695,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd,
   if (do_line)
     {
       BFD_ASSERT (section == NULL && offset == 0 && functionname_ptr == NULL);
-      section = bfd_get_section (symbol);
+      section = bfd_asymbol_section (symbol);
       addr = symbol->value;
     }
   else
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 1e6f4d219c..c06fa5ec7f 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -2312,7 +2312,7 @@ ecoff_get_extr (asymbol *sym, EXTR *esym)
      symbol.  */
   if ((esym->asym.sc == scUndefined
        || esym->asym.sc == scSUndefined)
-      && ! bfd_is_und_section (bfd_get_section (sym)))
+      && ! bfd_is_und_section (bfd_asymbol_section (sym)))
     esym->asym.sc = scAbs;
 
   /* Adjust the FDR index for the symbol by that used for the input
@@ -2719,7 +2719,7 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
 		    { _RCONST, RELOC_SECTION_RCONST }
 		  };
 
-		  name = bfd_get_section_name (abfd, bfd_get_section (sym));
+		  name = bfd_get_section_name (abfd, bfd_asymbol_section (sym));
 
 		  for (j = 0; j < ARRAY_SIZE (section_symndx); j++)
 		    if (streq (name, section_symndx[j].name))
diff --git a/bfd/elf.c b/bfd/elf.c
index ecd348e1a5..1a1eed9085 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4057,8 +4057,8 @@ sym_is_global (bfd *abfd, asymbol *sym)
     return (*bed->elf_backend_sym_is_global) (abfd, sym);
 
   return ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0
-	  || bfd_is_und_section (bfd_get_section (sym))
-	  || bfd_is_com_section (bfd_get_section (sym)));
+	  || bfd_is_und_section (bfd_asymbol_section (sym))
+	  || bfd_is_com_section (bfd_asymbol_section (sym)));
 }
 
 /* Filter global symbols of ABFD to include in the import library.  All
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index b675fc60c1..e29a60abf1 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -16076,7 +16076,7 @@ arm_elf_find_function (bfd *	     abfd,
 		    BFD_ARM_SPECIAL_SYM_TYPE_ANY))
 	    continue;
 	  /* Fall through.  */
-	  if (bfd_get_section (&q->symbol) == section
+	  if (bfd_asymbol_section (&q->symbol) == section
 	      && q->symbol.value >= low_func
 	      && q->symbol.value <= offset)
 	    {
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index 9f8f2bdc26..74300a11e9 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -2281,8 +2281,8 @@ mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
     return (sym->flags & BSF_SECTION_SYM) == 0;
   else
     return ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0
-	    || bfd_is_und_section (bfd_get_section (sym))
-	    || bfd_is_com_section (bfd_get_section (sym)));
+	    || bfd_is_und_section (bfd_asymbol_section (sym))
+	    || bfd_is_com_section (bfd_asymbol_section (sym)));
 }
 \f
 /* Set the right machine number for a MIPS ELF file.  */
diff --git a/bfd/elf32-score.c b/bfd/elf32-score.c
index 6390309f52..1bbf64fe6d 100644
--- a/bfd/elf32-score.c
+++ b/bfd/elf32-score.c
@@ -596,8 +596,8 @@ score_elf_got15_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
 		       bfd *output_bfd, char **error_message)
 {
   if ((symbol->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
-      || bfd_is_und_section (bfd_get_section (symbol))
-      || bfd_is_com_section (bfd_get_section (symbol)))
+      || bfd_is_und_section (bfd_asymbol_section (symbol))
+      || bfd_is_com_section (bfd_asymbol_section (symbol)))
     /* The relocation is against a global symbol.  */
     return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 				  input_section, output_bfd,
diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c
index ea0ccd04e9..51a5fb106d 100644
--- a/bfd/elf32-score7.c
+++ b/bfd/elf32-score7.c
@@ -497,8 +497,8 @@ score_elf_got15_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
 		       bfd *output_bfd, char **error_message)
 {
   if ((symbol->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
-      || bfd_is_und_section (bfd_get_section (symbol))
-      || bfd_is_com_section (bfd_get_section (symbol)))
+      || bfd_is_und_section (bfd_asymbol_section (symbol))
+      || bfd_is_com_section (bfd_asymbol_section (symbol)))
     /* The relocation is against a global symbol.  */
     return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 				  input_section, output_bfd,
diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c
index 839bd45b4a..18ed456c2b 100644
--- a/bfd/elf64-mmix.c
+++ b/bfd/elf64-mmix.c
@@ -1315,7 +1315,7 @@ mmix_elf_reloc (bfd *abfd,
   else
     relocation = symbol->value;
 
-  reloc_target_output_section = bfd_get_output_section (symbol);
+  reloc_target_output_section = bfd_asymbol_section (symbol)->output_section;
 
   /* Here the variable relocation holds the final address of the symbol we
      are relocating against, plus any addend.  */
diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c
index 58d66ce63c..8927e9825b 100644
--- a/bfd/elfn32-mips.c
+++ b/bfd/elfn32-mips.c
@@ -3841,8 +3841,8 @@ mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
     return (sym->flags & BSF_SECTION_SYM) == 0;
   else
     return ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0
-	    || bfd_is_und_section (bfd_get_section (sym))
-	    || bfd_is_com_section (bfd_get_section (sym)));
+	    || bfd_is_und_section (bfd_asymbol_section (sym))
+	    || bfd_is_com_section (bfd_asymbol_section (sym)));
 }
 \f
 /* Set the right machine number for a MIPS ELF file.  */
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index fd44505da4..7132b6bc73 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -8042,7 +8042,7 @@ aarch64_elf_find_function (bfd *          abfd,
 		  (q->symbol.name, BFD_AARCH64_SPECIAL_SYM_TYPE_ANY)))
 	    continue;
 	  /* Fall through.  */
-	  if (bfd_get_section (&q->symbol) == section
+	  if (bfd_asymbol_section (&q->symbol) == section
 	      && q->symbol.value >= low_func && q->symbol.value <= offset)
 	    {
 	      func = (asymbol *) q;
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index e3054043df..8ad5268520 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -2531,8 +2531,8 @@ _bfd_mips_elf_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
 			   bfd *output_bfd, char **error_message)
 {
   if ((symbol->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
-      || bfd_is_und_section (bfd_get_section (symbol))
-      || bfd_is_com_section (bfd_get_section (symbol)))
+      || bfd_is_und_section (bfd_asymbol_section (symbol))
+      || bfd_is_com_section (bfd_asymbol_section (symbol)))
     /* The relocation is against a global symbol.  */
     return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 					input_section, output_bfd,
diff --git a/bfd/linker.c b/bfd/linker.c
index 8aec0d2358..2518371f24 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -1163,9 +1163,9 @@ generic_link_add_symbol_list (bfd *abfd,
 		       | BSF_GLOBAL
 		       | BSF_CONSTRUCTOR
 		       | BSF_WEAK)) != 0
-	  || bfd_is_und_section (bfd_get_section (p))
-	  || bfd_is_com_section (bfd_get_section (p))
-	  || bfd_is_ind_section (bfd_get_section (p)))
+	  || bfd_is_und_section (bfd_asymbol_section (p))
+	  || bfd_is_com_section (bfd_asymbol_section (p))
+	  || bfd_is_ind_section (bfd_asymbol_section (p)))
 	{
 	  const char *name;
 	  const char *string;
@@ -1191,7 +1191,7 @@ generic_link_add_symbol_list (bfd *abfd,
 
 	  bh = NULL;
 	  if (! (_bfd_generic_link_add_one_symbol
-		 (info, abfd, name, p->flags, bfd_get_section (p),
+		 (info, abfd, name, p->flags, bfd_asymbol_section (p),
 		  p->value, string, FALSE, FALSE, &bh)))
 	    return FALSE;
 	  h = (struct generic_link_hash_entry *) bh;
@@ -1218,15 +1218,15 @@ generic_link_add_symbol_list (bfd *abfd,
 	  if (info->output_bfd->xvec == abfd->xvec)
 	    {
 	      if (h->sym == NULL
-		  || (! bfd_is_und_section (bfd_get_section (p))
-		      && (! bfd_is_com_section (bfd_get_section (p))
-			  || bfd_is_und_section (bfd_get_section (h->sym)))))
+		  || (! bfd_is_und_section (bfd_asymbol_section (p))
+		      && (! bfd_is_com_section (bfd_asymbol_section (p))
+			  || bfd_is_und_section (bfd_asymbol_section (h->sym)))))
 		{
 		  h->sym = p;
 		  /* BSF_OLD_COMMON is a hack to support COFF reloc
 		     reading, and it should go away when the COFF
 		     linker is switched to the new version.  */
-		  if (bfd_is_com_section (bfd_get_section (p)))
+		  if (bfd_is_com_section (bfd_asymbol_section (p)))
 		    p->flags |= BSF_OLD_COMMON;
 		}
 	    }
@@ -2026,9 +2026,9 @@ _bfd_generic_link_output_symbols (bfd *output_bfd,
 			 | BSF_GLOBAL
 			 | BSF_CONSTRUCTOR
 			 | BSF_WEAK)) != 0
-	  || bfd_is_und_section (bfd_get_section (sym))
-	  || bfd_is_com_section (bfd_get_section (sym))
-	  || bfd_is_ind_section (bfd_get_section (sym)))
+	  || bfd_is_und_section (bfd_asymbol_section (sym))
+	  || bfd_is_com_section (bfd_asymbol_section (sym))
+	  || bfd_is_ind_section (bfd_asymbol_section (sym)))
 	{
 	  if (sym->udata.p != NULL)
 	    h = (struct generic_link_hash_entry *) sym->udata.p;
@@ -2044,7 +2044,7 @@ _bfd_generic_link_output_symbols (bfd *output_bfd,
 		 the relocs in the output format being used.  */
 	      h = NULL;
 	    }
-	  else if (bfd_is_und_section (bfd_get_section (sym)))
+	  else if (bfd_is_und_section (bfd_asymbol_section (sym)))
 	    h = ((struct generic_link_hash_entry *)
 		 bfd_wrapped_link_hash_lookup (output_bfd, info,
 					       bfd_asymbol_name (sym),
@@ -2601,15 +2601,15 @@ default_indirect_link_order (bfd *output_bfd,
 			     | BSF_GLOBAL
 			     | BSF_CONSTRUCTOR
 			     | BSF_WEAK)) != 0
-	      || bfd_is_und_section (bfd_get_section (sym))
-	      || bfd_is_com_section (bfd_get_section (sym))
-	      || bfd_is_ind_section (bfd_get_section (sym)))
+	      || bfd_is_und_section (bfd_asymbol_section (sym))
+	      || bfd_is_com_section (bfd_asymbol_section (sym))
+	      || bfd_is_ind_section (bfd_asymbol_section (sym)))
 	    {
 	      /* sym->udata may have been set by
 		 generic_link_add_symbol_list.  */
 	      if (sym->udata.p != NULL)
 		h = (struct bfd_link_hash_entry *) sym->udata.p;
-	      else if (bfd_is_und_section (bfd_get_section (sym)))
+	      else if (bfd_is_und_section (bfd_asymbol_section (sym)))
 		h = bfd_wrapped_link_hash_lookup (output_bfd, info,
 						  bfd_asymbol_name (sym),
 						  FALSE, FALSE, TRUE);
diff --git a/bfd/pdp11.c b/bfd/pdp11.c
index f7f3128409..238f5144d4 100644
--- a/bfd/pdp11.c
+++ b/bfd/pdp11.c
@@ -1352,7 +1352,7 @@ translate_to_native_sym_flags (bfd *abfd,
      to another.  */
   sym_pointer->e_type[0] &= ~N_TYPE;
 
-  sec = bfd_get_section (cache_ptr);
+  sec = bfd_asymbol_section (cache_ptr);
   off = 0;
 
   if (sec == NULL)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index c26d2789fd..9c791f6d65 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* nm.c: Update bfd_get_section to bfd_asymbol_section throughout.
+	* objcopy.c: Likewise.
+	* objdump.c: Likewise.
+	* rdcoff.c: Likewise.
+	* objcopy.c (create_new_symbol): Use bfd_set_asymbol_name.
+	(filter_symbols): Likewise.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* doc/Makefile.am (MOSTLYCLEANFILES): Clean all man pages,
diff --git a/binutils/nm.c b/binutils/nm.c
index 67b7ac7b12..0bded07391 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -592,8 +592,8 @@ numeric_forward (const void *P_x, const void *P_y)
   if (x == NULL || y == NULL)
     bfd_fatal (bfd_get_filename (sort_bfd));
 
-  xs = bfd_get_section (x);
-  ys = bfd_get_section (y);
+  xs = bfd_asymbol_section (x);
+  ys = bfd_asymbol_section (y);
 
   if (bfd_is_und_section (xs))
     {
@@ -645,8 +645,8 @@ size_forward1 (const void *P_x, const void *P_y)
   if (x == NULL || y == NULL)
     bfd_fatal (bfd_get_filename (sort_bfd));
 
-  xs = bfd_get_section (x);
-  ys = bfd_get_section (y);
+  xs = bfd_asymbol_section (x);
+  ys = bfd_asymbol_section (y);
 
   if (bfd_is_und_section (xs))
     abort ();
@@ -774,7 +774,7 @@ sort_symbols_by_size (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
       else
 	next = NULL;
 
-      sec = bfd_get_section (sym);
+      sec = bfd_asymbol_section (sym);
 
       /* Synthetic symbols don't have a full type set of data available, thus
 	 we can't rely on that information for the symbol size.  Ditto for
@@ -788,7 +788,7 @@ sort_symbols_by_size (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
       else
 	{
 	  if (from + size < fromend
-	      && sec == bfd_get_section (next))
+	      && sec == bfd_asymbol_section (next))
 	    sz = valueof (next) - valueof (sym);
 	  else
 	    sz = (bfd_get_section_vma (abfd, sec)
@@ -895,7 +895,7 @@ print_symbol (bfd *        abfd,
       if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0)
 	version_string = bfd_get_symbol_version_string (abfd, sym, &hidden);
 
-      if (bfd_is_und_section (bfd_get_section (sym)))
+      if (bfd_is_und_section (bfd_asymbol_section (sym)))
 	hidden = TRUE;
 
       if (version_string && *version_string != '\0')
@@ -931,7 +931,7 @@ print_symbol (bfd *        abfd,
 	  lineno_cache_bfd = abfd;
 	}
 
-      if (bfd_is_und_section (bfd_get_section (sym)))
+      if (bfd_is_und_section (bfd_asymbol_section (sym)))
 	{
 	  static asection **secs;
 	  static arelent ***relocs;
@@ -1001,10 +1001,10 @@ print_symbol (bfd *        abfd,
 		}
 	    }
 	}
-      else if (bfd_get_section (sym)->owner == abfd)
+      else if (bfd_asymbol_section (sym)->owner == abfd)
 	{
 	  if ((bfd_find_line (abfd, syms, sym, &filename, &lineno)
-	       || bfd_find_nearest_line (abfd, bfd_get_section (sym),
+	       || bfd_find_nearest_line (abfd, bfd_asymbol_section (sym),
 					 syms, sym->value, &filename,
 					 &functionname, &lineno))
 	      && filename != NULL
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index ebb99339aa..ce4a4afa55 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -1465,7 +1465,7 @@ create_new_symbol (struct addsym_node *ptr, bfd *obfd)
 {
   asymbol *sym = bfd_make_empty_symbol (obfd);
 
-  bfd_asymbol_name (sym) = ptr->symdef;
+  bfd_set_asymbol_name (sym, ptr->symdef);
   sym->value = ptr->symval;
   sym->flags = ptr->flags;
   if (ptr->section)
@@ -1503,7 +1503,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
       bfd_boolean rem_leading_char;
       bfd_boolean add_leading_char;
 
-      undefined = bfd_is_und_section (bfd_get_section (sym));
+      undefined = bfd_is_und_section (bfd_asymbol_section (sym));
 
       if (add_sym_list)
 	{
@@ -1521,7 +1521,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	  if (new_name == name
 	      && (flags & BSF_SECTION_SYM) != 0)
 	    new_name = (char *) find_section_rename (name, NULL);
-	  bfd_asymbol_name (sym) = new_name;
+	  bfd_set_asymbol_name (sym, new_name);
 	  name = new_name;
 	}
 
@@ -1532,7 +1532,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	    || (remove_leading_char
 		&& ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0
 		    || undefined
-		    || bfd_is_com_section (bfd_get_section (sym)))));
+		    || bfd_is_com_section (bfd_asymbol_section (sym)))));
 
       /* Check if we will add a new leading character.  */
       add_leading_char =
@@ -1545,14 +1545,14 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
       if (rem_leading_char && add_leading_char && !prefix_symbols_string)
 	{
 	  name[0] = bfd_get_symbol_leading_char (obfd);
-	  bfd_asymbol_name (sym) = name;
+	  bfd_set_asymbol_name (sym, name);
 	  rem_leading_char = FALSE;
 	  add_leading_char = FALSE;
 	}
 
       /* Remove leading char.  */
       if (rem_leading_char)
-	bfd_asymbol_name (sym) = ++name;
+	bfd_set_asymbol_name (sym, ++name);
 
       /* Add new leading char and/or prefix.  */
       if (add_leading_char || prefix_symbols_string)
@@ -1571,7 +1571,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	    }
 
 	  strcpy (ptr, name);
-	  bfd_asymbol_name (sym) = n;
+	  bfd_set_asymbol_name (sym, n);
 	  name = n;
 	}
 
@@ -1579,7 +1579,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	keep = FALSE;
       else if ((flags & BSF_KEEP) != 0		/* Used in relocation.  */
 	       || ((flags & BSF_SECTION_SYM) != 0
-		   && ((*bfd_get_section (sym)->symbol_ptr_ptr)->flags
+		   && ((*bfd_asymbol_section (sym)->symbol_ptr_ptr)->flags
 		       & BSF_KEEP) != 0))
 	{
 	  keep = TRUE;
@@ -1587,7 +1587,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	}
       else if (relocatable			/* Relocatable file.  */
 	       && ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0
-		   || bfd_is_com_section (bfd_get_section (sym))))
+		   || bfd_is_com_section (bfd_asymbol_section (sym))))
 	keep = TRUE;
       else if (bfd_decode_symclass (sym) == 'I')
 	/* Global symbols in $idata sections need to be retained
@@ -1598,13 +1598,13 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
       else if ((flags & BSF_GLOBAL) != 0	/* Global symbol.  */
 	       || (flags & BSF_WEAK) != 0
 	       || undefined
-	       || bfd_is_com_section (bfd_get_section (sym)))
+	       || bfd_is_com_section (bfd_asymbol_section (sym)))
 	keep = strip_symbols != STRIP_UNNEEDED;
       else if ((flags & BSF_DEBUGGING) != 0)	/* Debugging symbol.  */
 	keep = (strip_symbols != STRIP_DEBUG
 		&& strip_symbols != STRIP_UNNEEDED
 		&& ! convert_debugging);
-      else if (bfd_coff_get_comdat_section (abfd, bfd_get_section (sym)))
+      else if (bfd_coff_get_comdat_section (abfd, bfd_asymbol_section (sym)))
 	/* COMDAT sections store special information in local
 	   symbols, so we cannot risk stripping any of them.  */
 	keep = TRUE;
@@ -1637,7 +1637,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
 	      || is_specified_symbol (name, keep_specific_htab)))
 	keep = TRUE;
 
-      if (keep && is_strip_section (abfd, bfd_get_section (sym)))
+      if (keep && is_strip_section (abfd, bfd_asymbol_section (sym)))
 	keep = FALSE;
 
       if (keep)
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 00541cbec5..4a7c8f9a74 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -995,7 +995,7 @@ objdump_print_symname (bfd *abfd, struct disassemble_info *inf,
   if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0)
     version_string = bfd_get_symbol_version_string (abfd, sym, &hidden);
 
-  if (bfd_is_und_section (bfd_get_section (sym)))
+  if (bfd_is_und_section (bfd_asymbol_section (sym)))
     hidden = TRUE;
 
   name = sanitize_string (name);
@@ -1351,7 +1351,7 @@ objdump_print_addr (bfd_vma vma,
       /* Adjust the vma to the reloc.  */
       vma += bfd_asymbol_value (sym);
 
-      if (bfd_is_und_section (bfd_get_section (sym)))
+      if (bfd_is_und_section (bfd_asymbol_section (sym)))
 	skip_find = TRUE;
     }
 
@@ -2234,7 +2234,7 @@ disassemble_bytes (struct disassemble_info * inf,
 		    {
 		      asection *sym_sec;
 
-		      sym_sec = bfd_get_section (*q->sym_ptr_ptr);
+		      sym_sec = bfd_asymbol_section (*q->sym_ptr_ptr);
 		      sym_name = bfd_get_section_name (aux->abfd, sym_sec);
 		      if (sym_name == NULL || *sym_name == '\0')
 			sym_name = "*unknown*";
diff --git a/binutils/rdcoff.c b/binutils/rdcoff.c
index 7e585691eb..cbb5db1b94 100644
--- a/binutils/rdcoff.c
+++ b/binutils/rdcoff.c
@@ -816,7 +816,7 @@ parse_coff (bfd *abfd, asymbol **syms, long symcount, void *dhandle)
 		  else
 		    base = auxent.x_sym.x_misc.x_lnsz.x_lnno - 1;
 
-		  addr = bfd_get_section_vma (abfd, bfd_get_section (sym));
+		  addr = bfd_get_section_vma (abfd, bfd_asymbol_section (sym));
 
 		  ++linenos;
 
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6735017792..3d61530a9b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* symbols.c (S_IS_LOCAL): Update bfd_get_section to
+	bfd_asymbol_section.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* Makefile.in: Re-generate.
diff --git a/gas/symbols.c b/gas/symbols.c
index 918028f875..34ec145ad0 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -2310,14 +2310,14 @@ S_IS_LOCAL (symbolS *s)
   if ((flags & BSF_LOCAL) && (flags & BSF_GLOBAL))
     abort ();
 
-  if (bfd_get_section (s->bsym) == reg_section)
+  if (bfd_asymbol_section (s->bsym) == reg_section)
     return 1;
 
   if (flag_strip_local_absolute
       /* Keep BSF_FILE symbols in order to allow debuggers to identify
 	 the source file even when the object file is stripped.  */
       && (flags & (BSF_GLOBAL | BSF_FILE)) == 0
-      && bfd_get_section (s->bsym) == absolute_section)
+      && bfd_asymbol_section (s->bsym) == absolute_section)
     return 1;
 
   name = S_GET_NAME (s);
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5e0e37bcfa..421b26a004 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* arm-tdep.c (arm_record_special_symbol): Update bfd_get_section
+	to bfd_asymbol_section.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* amd64-dicos-tdep.c (amd64_dicos_osabi_sniffer): Constify target.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 0650485bf0..5c494c8ed2 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -8575,7 +8575,7 @@ arm_record_special_symbol (struct gdbarch *gdbarch, struct objfile *objfile,
     data = arm_objfile_data_key.emplace (objfile,
 					 objfile->obfd->section_count);
   arm_mapping_symbol_vec &map
-    = data->section_maps[bfd_get_section (sym)->index];
+    = data->section_maps[bfd_asymbol_section (sym)->index];
 
   new_map_sym.value = sym->value;
   new_map_sym.type = name[1];
diff --git a/ld/ChangeLog b/ld/ChangeLog
index b6ac44e1f8..e8f9ed7365 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* ldcref.c (check_reloc_refs): Update bfd_get_section to
+	bfd_asymbol_section.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* Makefile.in: Re-generate.
diff --git a/ld/ldcref.c b/ld/ldcref.c
index 12cb2942e6..fff852a89a 100644
--- a/ld/ldcref.c
+++ b/ld/ldcref.c
@@ -705,14 +705,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
       if (q->sym_ptr_ptr != NULL
 	  && *q->sym_ptr_ptr != NULL
 	  && ((global
-	       && (bfd_is_und_section (bfd_get_section (*q->sym_ptr_ptr))
-		   || bfd_is_com_section (bfd_get_section (*q->sym_ptr_ptr))
+	       && (bfd_is_und_section (bfd_asymbol_section (*q->sym_ptr_ptr))
+		   || bfd_is_com_section (bfd_asymbol_section (*q->sym_ptr_ptr))
 		   || ((*q->sym_ptr_ptr)->flags & (BSF_GLOBAL
 						   | BSF_WEAK)) != 0))
 	      || (!global
 		  && ((*q->sym_ptr_ptr)->flags & (BSF_LOCAL
 						  | BSF_SECTION_SYM)) != 0
-		  && bfd_get_section (*q->sym_ptr_ptr) == info->defsec))
+		  && bfd_asymbol_section (*q->sym_ptr_ptr) == info->defsec))
 	  && (symname != NULL
 	      ? strcmp (bfd_asymbol_name (*q->sym_ptr_ptr), symname) == 0
 	      : ((*q->sym_ptr_ptr)->flags & BSF_SECTION_SYM) != 0))


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/testsuite: Avoid directory names in test names
@ 2019-09-18 17:17 gdb-buildbot
  2019-09-18 20:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 17:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b078f3ac8803297bfc8416c20e09d0863c5ac6cc ***

commit b078f3ac8803297bfc8416c20e09d0863c5ac6cc
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Wed Sep 18 12:27:11 2019 -0400
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Wed Sep 18 12:36:05 2019 -0400

    gdb/testsuite: Avoid directory names in test names
    
    Give a test an actual name in order to avoid having a directory name
    in the .sum file.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/source-dir.exp: Avoid having directory names in test
            names.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index ed838e947e..83d5a4f005 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/source-dir.exp: Avoid having directory names in test
+	names.
+
 2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/source-dir.exp: Add extra test for mapped compilation
diff --git a/gdb/testsuite/gdb.base/source-dir.exp b/gdb/testsuite/gdb.base/source-dir.exp
index 25d7b07971..9941c1f64e 100644
--- a/gdb/testsuite/gdb.base/source-dir.exp
+++ b/gdb/testsuite/gdb.base/source-dir.exp
@@ -131,7 +131,8 @@ proc test_truncated_comp_dir {} {
 	[search_dir_list [list \
 			      "$strip_dir" \
 			      "\\\$cdir" \
-			      "\\\$cwd"]]
+			      "\\\$cwd"]] \
+	"setup source path search directory"
     gdb_test "list" [multi_line \
 			 "1\[ \t\]+int" \
 			 "2\[ \t\]+main \\(\\)" \


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: remove local extern declaration of cli_styling
@ 2019-09-18 18:13 gdb-buildbot
  2019-09-18 21:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 18:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f64eea3a594042c9cf499b17b5b166276275a051 ***

commit f64eea3a594042c9cf499b17b5b166276275a051
Author:     Simon Marchi <simon.marchi@polymtl.ca>
AuthorDate: Wed Sep 18 13:33:33 2019 -0400
Commit:     Simon Marchi <simon.marchi@efficios.com>
CommitDate: Wed Sep 18 13:33:33 2019 -0400

    gdb: remove local extern declaration of cli_styling
    
    Following the int -> bool conversion of boolean options (commit
    491144b5e21b ("Change boolean options to bool instead of int")), I see
    this ASAN error:
    
      ==357543==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55555b25d440 at pc 0x5555583ce9e1 bp 0x7fffffffd390 sp 0x7fffffffd380
      READ of size 4 at 0x55555b25d440 thread T0
          #0 0x5555583ce9e0 in term_cli_styling /home/simark/src/binutils-gdb/gdb/ui-file.c:111
          #1 0x5555583cf8b0 in stdio_file::can_emit_style_escape() /home/simark/src/binutils-gdb/gdb/ui-file.c:308
          #2 0x5555584450d2 in set_output_style /home/simark/src/binutils-gdb/gdb/utils.c:1442
          #3 0x5555584491af in fprintf_styled(ui_file*, ui_file_style const&, char const*, ...) /home/simark/src/binutils-gdb/gdb/utils.c:2143
          #4 0x5555582fa13c in print_gdb_version(ui_file*, bool) /home/simark/src/binutils-gdb/gdb/top.c:1339
          #5 0x555557b723ab in captured_main_1 /home/simark/src/binutils-gdb/gdb/main.c:981
          #6 0x555557b7353b in captured_main /home/simark/src/binutils-gdb/gdb/main.c:1172
          #7 0x555557b735d0 in gdb_main(captured_main_args*) /home/simark/src/binutils-gdb/gdb/main.c:1197
          #8 0x55555700a53d in main /home/simark/src/binutils-gdb/gdb/gdb.c:32
          #9 0x7ffff64c9ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2)
          #10 0x55555700a30d in _start (/home/simark/build/binutils-gdb/gdb/gdb+0x1ab630d)
    
      0x55555b25d441 is located 0 bytes to the right of global variable 'cli_styling' defined in '/home/simark/src/binutils-gdb/gdb/cli/cli-style.c:31:6' (0x55555b25d440) of size 1
    
    The reason of this is that we have this declaration of cli_styling in cli/cli-style.h:
    
      extern bool cli_styling;
    
    but ui-file.c uses its  own local declaration:
    
      extern int cli_styling;
    
    Because of that, the code in ui-file.c thinks the variable is 4 bytes
    long, when it is actually 1 byte long, so the generated code reads past
    the variable.
    
    Fix it by removing the declaration and making ui-file.c include
    cli/cli-style.h.
    
    gdb/ChangeLog:
    
            * ui-file.c: Include cli/cli-style.h.
            (term_cli_styling): Remove cli_styling declaration.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 421b26a004..796ade3c71 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ui-file.c: Include cli/cli-style.h.
+	(term_cli_styling): Remove cli_styling declaration.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* arm-tdep.c (arm_record_special_symbol): Update bfd_get_section
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
index 042b13ca3b..71b74bba19 100644
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -24,6 +24,7 @@
 #include "gdb_obstack.h"
 #include "gdb_select.h"
 #include "gdbsupport/filestuff.h"
+#include "cli/cli-style.h"
 
 null_file null_stream;
 
@@ -106,8 +107,6 @@ ui_file_isatty (struct ui_file *file)
 static bool
 term_cli_styling ()
 {
-  extern int cli_styling;
-
   if (!cli_styling)
     return false;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: Fix native build on Linux/Alpha.
@ 2019-09-18 19:50 gdb-buildbot
  2019-09-18 21:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 19:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7a27b85f6d9b5eea9bd1493f903158fbea4b2231 ***

commit 7a27b85f6d9b5eea9bd1493f903158fbea4b2231
Author:     Christian Groessler <chris@groessler.org>
AuthorDate: Wed Sep 11 22:19:45 2019 +0000
Commit:     Simon Marchi <simon.marchi@efficios.com>
CommitDate: Wed Sep 18 15:18:39 2019 -0400

    gdb: Fix native build on Linux/Alpha.
    
    Fixes:
    
      CXX    alpha-linux-nat.o
    alpha-linux-nat.c: In member function 'virtual CORE_ADDR alpha_linux_nat_target::register_u_offset(gdbarch*, int, int)':
    alpha-linux-nat.c:93:16: error: 'gdbarch_pc_regnum' was not declared in this scope
       if (regno == gdbarch_pc_regnum (gdbarch))
                    ^~~~~~~~~~~~~~~~~
    alpha-linux-nat.c:93:16: note: suggested alternative: 'gdbarch_info'
       if (regno == gdbarch_pc_regnum (gdbarch))
                    ^~~~~~~~~~~~~~~~~
                    gdbarch_info
    alpha-linux-nat.c:97:15: error: 'gdbarch_fp0_regnum' was not declared in this scope
       if (regno < gdbarch_fp0_regnum (gdbarch))
                   ^~~~~~~~~~~~~~~~~~
    alpha-linux-nat.c:97:15: note: suggested alternative: 'gdbarch_info'
       if (regno < gdbarch_fp0_regnum (gdbarch))
                   ^~~~~~~~~~~~~~~~~~
                   gdbarch_info
    make[2]: *** [Makefile:1638: alpha-linux-nat.o] Error 1
    make[2]: Leaving directory '/home/chris/tmp/binutils-gdb/gdb'
    
    2019-09-12  Christian Groessler  <chris@groessler.org>
    
           * alpha-linux-nat.c: Include gdbarch.h.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 796ade3c71..1ad694a20a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-18  Christian Groessler  <chris@groessler.org>
+
+	* alpha-linux-nat.c: Include gdbarch.h.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* ui-file.c: Include cli/cli-style.h.
diff --git a/gdb/alpha-linux-nat.c b/gdb/alpha-linux-nat.c
index 18806971a7..9f83ad7cc6 100644
--- a/gdb/alpha-linux-nat.c
+++ b/gdb/alpha-linux-nat.c
@@ -22,6 +22,7 @@
 #include "linux-nat-trad.h"
 
 #include "alpha-tdep.h"
+#include "gdbarch.h"
 
 #include "nat/gdb_ptrace.h"
 #include <alpha/ptrace.h>


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Give a name to the TUI SingleKey keymap
@ 2019-09-18 21:35 gdb-buildbot
  2019-09-18 22:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 21:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 11061048d1fed4465b0e62eb3c14dabf0beab59b ***

commit 11061048d1fed4465b0e62eb3c14dabf0beab59b
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Sep 10 17:25:35 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Wed Sep 18 15:03:29 2019 -0600

    Give a name to the TUI SingleKey keymap
    
    Readline 8.0 has a feature that lets an application name a keymap.
    This in turn makes it simpler for users to bind keys in keymaps in
    their .inputrc.
    
    This patch gives a name to the TUI SingleKey keymap, so that
    additional bindings can be made there.  For example:
    
        $if gdb
        set keymap SingleKey
        "X": "echo hello\\n\n"
        $endif
    
    The call to rl_initialize, in tui_initialize_readline, had to be
    removed so that .inputrc was not read too early.  Note that Readline
    explicitly documents that this call is not needed.
    
    gdb/ChangeLog
    2019-09-18  Tom Tromey  <tom@tromey.com>
    
            * NEWS: Add entry.
            * tui/tui.c (tui_initialize_readline): Set name of keymap.  Do not
            call rl_initialize.
            (tui_enable): Do not call rl_initialize.
    
    gdb/doc/ChangeLog
    2019-09-18  Tom Tromey  <tom@tromey.com>
    
            * gdb.texinfo (Editing): Document readline application name.
            (TUI Single Key Mode): Document TUI SingleKey keymap name.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1ad694a20a..f8228b459c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-18  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Add entry.
+	* tui/tui.c (tui_initialize_readline): Set name of keymap.  Do not
+	call rl_initialize.
+	(tui_enable): Do not call rl_initialize.
+
 2019-09-18  Christian Groessler  <chris@groessler.org>
 
 	* alpha-linux-nat.c: Include gdbarch.h.
diff --git a/gdb/NEWS b/gdb/NEWS
index 947b743533..1fefd81409 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -323,6 +323,10 @@ maint show test-options-completion-result
   GDB now bundles GNU readline 8.0, but if you choose to use
   --with-system-readline, only readline >= 7.0 can be used.
 
+* The TUI SingleKey keymap is now named "SingleKey".  This can be used
+  from .inputrc to bind keys in this keymap.  This feature is only
+  available when gdb is built against GNU readline 8.0 or later.
+
 *** Changes in GDB 8.3
 
 * GDB and GDBserver now support access to additional registers on
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index a16d32d48a..8eaaab3ae1 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (Editing): Document readline application name.
+	(TUI Single Key Mode): Document TUI SingleKey keymap name.
+
 2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.texinfo (Source Path): Additional text to better describe
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f4bfd9f980..a129ea0aa1 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -25056,6 +25056,10 @@ for more details about the Readline
 interface.  Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
 encouraged to read that chapter.
 
+@cindex Readline application name
+@value{GDBN} sets the Readline application name to @samp{gdb}.  This
+is useful for conditions in @file{.inputrc}.
+
 @node Command History
 @section Command History
 @cindex command history
@@ -27658,6 +27662,10 @@ with the TUI SingleKey mode.  Once the command is entered the TUI
 SingleKey mode is restored.  The only way to permanently leave
 this mode is by typing @kbd{q} or @kbd{C-x s}.
 
+@cindex SingleKey keymap name
+If @value{GDBN} was built with Readline 8.0 or later, the TUI
+SingleKey keymap will be named @samp{SingleKey}.  This can be used in
+@file{.inputrc} to add additional bindings to this keymap.
 
 @node TUI Commands
 @section TUI-specific Commands
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index db34e0c044..5d6b9f3203 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -329,13 +329,17 @@ tui_initialize_readline (void)
   int i;
   Keymap tui_ctlx_keymap;
 
-  rl_initialize ();
-
   rl_add_defun ("tui-switch-mode", tui_rl_switch_mode, -1);
   rl_add_defun ("gdb-command", tui_rl_command_key, -1);
   rl_add_defun ("next-keymap", tui_rl_next_keymap, -1);
 
   tui_keymap = rl_make_bare_keymap ();
+
+  /* The named keymap feature was added in Readline 8.0.  */
+#if RL_READLINE_VERSION >= 0x800
+  rl_set_keymap_name ("SingleKey", tui_keymap);
+#endif
+
   tui_ctlx_keymap = rl_make_bare_keymap ();
   tui_readline_standard_keymap = rl_get_keymap ();
 
@@ -467,7 +471,6 @@ tui_enable (void)
       nodelay(w, FALSE);
       nl();
       keypad (w, TRUE);
-      rl_initialize ();
       tui_set_term_height_to (LINES);
       tui_set_term_width_to (COLS);
       def_prog_mode ();


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Handle unreachable network in server-connect.exp
@ 2019-09-18 23:21 gdb-buildbot
  2019-09-18 23:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 23:21 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 81dc3ab59476c9851a6cda321b85dcf8a6ef4be8 ***

commit 81dc3ab59476c9851a6cda321b85dcf8a6ef4be8
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 19 00:23:54 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 19 00:23:54 2019 +0200

    [gdb/testsuite] Handle unreachable network in server-connect.exp
    
    When running gdb.server/server-connect.exp I run into:
    ...
    FAIL: gdb.server/server-connect.exp: tcp6: connect to gdbserver using tcp6:::1
    FAIL: gdb.server/server-connect.exp: tcp6-with-brackets: connect to gdbserver \
      using tcp6:[::1]
    FAIL: gdb.server/server-connect.exp: udp6: connect to gdbserver using udp6:::1
    FAIL: gdb.server/server-connect.exp: udp6-with-brackets: connect to gdbserver \
      using udp6:[::1]
    ...
    
    The FAIL is caused by the fact that the ipv6 loopback address is not available:
    ...
    PASS: gdb.server/server-connect.exp: tcp6: start gdbserver
    target remote tcp6:::1:2347^M
    A program is being debugged already.  Kill it? (y or n) y^M
    tcp6:::1:2347: Network is unreachable.^M
    (gdb) FAIL: gdb.server/server-connect.exp: tcp6: connect to gdbserver using tcp6:::1
    ...
    This should be marked UNSUPPORTED rather than FAIL.
    
    Furthermore, the test-case takes about 4 minutes, because the 'Network is
    unreachable' response is not explicitly handled in gdb_target_cmd, so instead
    it runs into the timeout case.
    
    Fix this by handling the 'Network is unreachable' response as UNSUPPORTED.
    This reduces testing time from 4 minutes to about 2 seconds.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-19  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdbserver-support.exp (gdb_target_cmd_ext): Return 2 (meaning
            UNSUPPORTED) for 'Network is unreachable' message.  Factor out of ...
            (gdb_target_cmd): ... here.
            * gdb.server/server-connect.exp: Use gdb_target_cmd_ext, handle return
            value 2.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 83d5a4f005..2acc1f7342 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdbserver-support.exp (gdb_target_cmd_ext): Return 2 (meaning
+	UNSUPPORTED) for 'Network is unreachable' message.  Factor out of ...
+	(gdb_target_cmd): ... here.
+	* gdb.server/server-connect.exp: Use gdb_target_cmd_ext, handle return
+	value 2.
+
 2019-09-18  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/source-dir.exp: Avoid having directory names in test
diff --git a/gdb/testsuite/gdb.server/server-connect.exp b/gdb/testsuite/gdb.server/server-connect.exp
index 682fdaaeeb..e69f792a1b 100644
--- a/gdb/testsuite/gdb.server/server-connect.exp
+++ b/gdb/testsuite/gdb.server/server-connect.exp
@@ -101,10 +101,13 @@ save_vars { GDB_TEST_SOCKETHOST } {
 	    set gdbserver_gdbport [lindex $res 1]
 	    set test "connect to gdbserver using $sockhost"
 
-	    if { [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport] == 0 } {
+	    set res [gdb_target_cmd_ext $gdbserver_protocol $gdbserver_gdbport]
+	    if { $res == 0 } {
 		pass $test
-	    } else {
+	    } elseif { $res == 1 }  {
 		fail $test
+	    } else {
+		unsupported $test
 	    }
 	}
     }
diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
index ade99c0ea1..2ad53c1f60 100644
--- a/gdb/testsuite/lib/gdbserver-support.exp
+++ b/gdb/testsuite/lib/gdbserver-support.exp
@@ -41,12 +41,13 @@
 #
 
 #
-# gdb_target_cmd
-# Send gdb the "target" command.  Returns 0 on success, 1 on failure.
+# gdb_target_cmd_ext
+# Send gdb the "target" command.  Returns 0 on success, 1 on failure, 2 on
+# unsupported.
 # If specified, then ADDITIONAL_TEXT must match the text that comes after
 # the connection message in order for the procedure to succeed.
 #
-proc gdb_target_cmd { targetname serialport {additional_text ""} } {
+proc gdb_target_cmd_ext { targetname serialport {additional_text ""} } {
     global gdb_prompt
 
     set serialport_re [string_to_regexp $serialport]
@@ -97,6 +98,9 @@ proc gdb_target_cmd { targetname serialport {additional_text ""} } {
 		# Leave it there for the test to diagnose.
 		return 1
 	    }
+	    -re ": Network is unreachable.\r\n.*$gdb_prompt $" {
+		return 2
+	    }
 	    timeout {
 		send_gdb "\x03"
 		break
@@ -106,6 +110,12 @@ proc gdb_target_cmd { targetname serialport {additional_text ""} } {
     return 1
 }
 
+# Like gdb_target_cmd_ext, but returns 0 on success, 1 on failure.
+
+proc gdb_target_cmd { $args } {
+    set res [gdb_target_cmd_ext $args]
+    return [expr $res == 0 ? 0 : 1]
+}
 
 global portnum
 set portnum "2345"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Fix gdb_target_cmd
@ 2019-09-18 23:45 gdb-buildbot
  2019-09-19  0:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-18 23:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8a6251301c6ea6d804735fbad8cdb7cba707f784 ***

commit 8a6251301c6ea6d804735fbad8cdb7cba707f784
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 19 01:14:19 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 19 01:14:19 2019 +0200

    [gdb/testsuite] Fix gdb_target_cmd
    
    In commit 81dc3ab594 "[gdb/testsuite] Handle unreachable network in
    server-connect.exp" a regression was introduced in gdb_target_cmd, causing
    ERRORs like this:
    ...
    ERROR: tcl error sourcing src/gdb/testsuite/gdb.server/abspath.exp.
    ERROR: wrong # args: should be "gdb_target_cmd {$args}"
        while executing
    "gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport"
    ...
    
    Fix the argument passing in gdb_target_cmd.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-19  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdbserver-support.exp (gdb_target_cmd): Fix argument passing.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 2acc1f7342..d5a5309fdf 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdbserver-support.exp (gdb_target_cmd): Fix argument passing.
+
 2019-09-19  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdbserver-support.exp (gdb_target_cmd_ext): Return 2 (meaning
diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
index 2ad53c1f60..00f46c8264 100644
--- a/gdb/testsuite/lib/gdbserver-support.exp
+++ b/gdb/testsuite/lib/gdbserver-support.exp
@@ -112,8 +112,8 @@ proc gdb_target_cmd_ext { targetname serialport {additional_text ""} } {
 
 # Like gdb_target_cmd_ext, but returns 0 on success, 1 on failure.
 
-proc gdb_target_cmd { $args } {
-    set res [gdb_target_cmd_ext $args]
+proc gdb_target_cmd { args } {
+    set res [eval gdb_target_cmd_ext $args]
     return [expr $res == 0 ? 0 : 1]
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd_section_* macros
@ 2019-09-19  1:02 gdb-buildbot
  2019-09-19  2:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-19  1:02 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT fd3619828e94a24a92cddec42cbc0ab33352eeb4 ***

commit fd3619828e94a24a92cddec42cbc0ab33352eeb4
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 16 20:25:17 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Sep 19 09:40:13 2019 +0930

    bfd_section_* macros
    
    This large patch removes the unnecessary bfd parameter from various
    bfd section macros and functions.  The bfd is hardly ever used and if
    needed for the bfd_set_section_* or bfd_rename_section functions can
    be found via section->owner except for the com, und, abs, and ind
    std_section special sections.  Those sections shouldn't be modified
    anyway.
    
    The patch also removes various bfd_get_section_<field> macros,
    replacing their use with bfd_section_<field>, and adds
    bfd_set_section_lma.  I've also fixed a minor bug in gas where
    compressed section renaming was done directly rather than calling
    bfd_rename_section.  This would have broken bfd_get_section_by_name
    and similar functions, but that hardly mattered at such a late stage
    in gas processing.
    
    bfd/
            * bfd-in.h (bfd_get_section_name, bfd_get_section_vma),
            (bfd_get_section_lma, bfd_get_section_alignment),
            (bfd_get_section_size, bfd_get_section_flags),
            (bfd_get_section_userdata): Delete.
            (bfd_section_name, bfd_section_size, bfd_section_vma),
            (bfd_section_lma, bfd_section_alignment): Lose bfd parameter.
            (bfd_section_flags, bfd_section_userdata): New.
            (bfd_is_com_section): Rename parameter.
            * section.c (bfd_set_section_userdata, bfd_set_section_vma),
            (bfd_set_section_alignment, bfd_set_section_flags, bfd_rename_section),
            (bfd_set_section_size): Delete bfd parameter, rename section parameter.
            (bfd_set_section_lma): New.
            * bfd-in2.h: Regenerate.
            * mach-o.c (bfd_mach_o_init_section_from_mach_o): Delete bfd param,
            update callers.
            * aoutx.h, * bfd.c, * coff-alpha.c, * coff-arm.c, * coff-mips.c,
            * coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
            * compress.c, * ecoff.c, * elf-eh-frame.c, * elf-hppa.h,
            * elf-ifunc.c, * elf-m10200.c, * elf-m10300.c, * elf-properties.c,
            * elf-s390-common.c, * elf-vxworks.c, * elf.c, * elf32-arc.c,
            * elf32-arm.c, * elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c,
            * elf32-cr16c.c, * elf32-cris.c, * elf32-crx.c, * elf32-csky.c,
            * elf32-d10v.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c,
            * elf32-ft32.c, * elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c,
            * elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c,
            * elf32-m32r.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-mcore.c,
            * elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c,
            * elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
            * elf32-nios2.c, * elf32-or1k.c, * elf32-ppc.c, * elf32-pru.c,
            * elf32-rl78.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c,
            * elf32-score7.c, * elf32-sh.c, * elf32-spu.c, * elf32-tic6x.c,
            * elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c, * elf32-visium.c,
            * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
            * elf64-bpf.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mmix.c,
            * elf64-ppc.c, * elf64-s390.c, * elf64-sparc.c, * elf64-x86-64.c,
            * elflink.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfnn-riscv.c,
            * elfxx-aarch64.c, * elfxx-mips.c, * elfxx-sparc.c,
            * elfxx-tilegx.c, * elfxx-x86.c, * i386msdos.c, * linker.c,
            * mach-o.c, * mmo.c, * opncls.c, * pdp11.c, * pei-x86_64.c,
            * peicode.h, * reloc.c, * section.c, * syms.c, * vms-alpha.c,
            * xcofflink.c: Update throughout for bfd section macro and function
            changes.
    binutils/
            * addr2line.c, * bucomm.c, * coffgrok.c, * dlltool.c, * nm.c,
            * objcopy.c, * objdump.c, * od-elf32_avr.c, * od-macho.c,
            * od-xcoff.c, * prdbg.c, * rdcoff.c, * rddbg.c, * rescoff.c,
            * resres.c, * size.c, * srconv.c, * strings.c, * windmc.c: Update
            throughout for bfd section macro and function changes.
    gas/
            * as.c, * as.h, * dw2gencfi.c, * dwarf2dbg.c, * ecoff.c,
            * read.c, * stabs.c, * subsegs.c, * subsegs.h, * write.c,
            * config/obj-coff-seh.c, * config/obj-coff.c, * config/obj-ecoff.c,
            * config/obj-elf.c, * config/obj-macho.c, * config/obj-som.c,
            * config/tc-aarch64.c, * config/tc-alpha.c, * config/tc-arc.c,
            * config/tc-arm.c, * config/tc-avr.c, * config/tc-bfin.c,
            * config/tc-bpf.c, * config/tc-d10v.c, * config/tc-d30v.c,
            * config/tc-epiphany.c, * config/tc-fr30.c, * config/tc-frv.c,
            * config/tc-h8300.c, * config/tc-hppa.c, * config/tc-i386.c,
            * config/tc-ia64.c, * config/tc-ip2k.c, * config/tc-iq2000.c,
            * config/tc-lm32.c, * config/tc-m32c.c, * config/tc-m32r.c,
            * config/tc-m68hc11.c, * config/tc-mep.c, * config/tc-microblaze.c,
            * config/tc-mips.c, * config/tc-mmix.c, * config/tc-mn10200.c,
            * config/tc-mn10300.c, * config/tc-msp430.c, * config/tc-mt.c,
            * config/tc-nds32.c, * config/tc-or1k.c, * config/tc-ppc.c,
            * config/tc-pru.c, * config/tc-rl78.c, * config/tc-rx.c,
            * config/tc-s12z.c, * config/tc-s390.c, * config/tc-score.c,
            * config/tc-score7.c, * config/tc-sh.c, * config/tc-sparc.c,
            * config/tc-spu.c, * config/tc-tic4x.c, * config/tc-tic54x.c,
            * config/tc-tic6x.c, * config/tc-tilegx.c, * config/tc-tilepro.c,
            * config/tc-v850.c, * config/tc-visium.c, * config/tc-wasm32.c,
            * config/tc-xc16x.c, * config/tc-xgate.c, * config/tc-xstormy16.c,
            * config/tc-xtensa.c, * config/tc-z8k.c: Update throughout for
            bfd section macro and function changes.
            * write.c (compress_debug): Use bfd_rename_section.
    gdb/
            * aarch64-linux-tdep.c, * arm-tdep.c, * auto-load.c,
            * coff-pe-read.c, * coffread.c, * corelow.c, * dbxread.c,
            * dicos-tdep.c, * dwarf2-frame.c, * dwarf2read.c, * elfread.c,
            * exec.c, * fbsd-tdep.c, * gcore.c, * gdb_bfd.c, * gdb_bfd.h,
            * hppa-tdep.c, * i386-cygwin-tdep.c, * i386-fbsd-tdep.c,
            * i386-linux-tdep.c, * jit.c, * linux-tdep.c, * machoread.c,
            * maint.c, * mdebugread.c, * minidebug.c, * mips-linux-tdep.c,
            * mips-sde-tdep.c, * mips-tdep.c, * mipsread.c, * nto-tdep.c,
            * objfiles.c, * objfiles.h, * osabi.c, * ppc-linux-tdep.c,
            * ppc64-tdep.c, * record-btrace.c, * record-full.c, * remote.c,
            * rs6000-aix-tdep.c, * rs6000-tdep.c, * s390-linux-tdep.c,
            * s390-tdep.c, * solib-aix.c, * solib-dsbt.c, * solib-frv.c,
            * solib-spu.c, * solib-svr4.c, * solib-target.c,
            * spu-linux-nat.c, * spu-tdep.c, * symfile-mem.c, * symfile.c,
            * symmisc.c, * symtab.c, * target.c, * windows-nat.c,
            * xcoffread.c, * cli/cli-dump.c, * compile/compile-object-load.c,
            * mi/mi-interp.c: Update throughout for bfd section macro and
            function changes.
            * gcore (gcore_create_callback): Use bfd_set_section_lma.
            * spu-tdep.c (spu_overlay_new_objfile): Likewise.
    gprof/
            * corefile.c, * symtab.c: Update throughout for bfd section
            macro and function changes.
    ld/
            * ldcref.c, * ldctor.c, * ldelf.c, * ldlang.c, * pe-dll.c,
            * emultempl/aarch64elf.em, * emultempl/aix.em,
            * emultempl/armcoff.em, * emultempl/armelf.em,
            * emultempl/cr16elf.em, * emultempl/cskyelf.em,
            * emultempl/m68hc1xelf.em, * emultempl/m68kelf.em,
            * emultempl/mipself.em, * emultempl/mmix-elfnmmo.em,
            * emultempl/mmo.em, * emultempl/msp430.em,
            * emultempl/nios2elf.em, * emultempl/pe.em, * emultempl/pep.em,
            * emultempl/ppc64elf.em, * emultempl/xtensaelf.em: Update
            throughout for bfd section macro and function changes.
    libctf/
            * ctf-open-bfd.c: Update throughout for bfd section macro changes.
    opcodes/
            * arc-ext.c: Update throughout for bfd section macro changes.
    sim/
            * common/sim-load.c, * common/sim-utils.c, * cris/sim-if.c,
            * erc32/func.c, * lm32/sim-if.c, * m32c/load.c, * m32c/trace.c,
            * m68hc11/interp.c, * ppc/hw_htab.c, * ppc/hw_init.c,
            * rl78/load.c, * rl78/trace.c, * rx/gdb-if.c, * rx/load.c,
            * rx/trace.c: Update throughout for bfd section macro changes.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 63f6c4c33f..8fff6a6752 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,48 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_get_section_name, bfd_get_section_vma),
+	(bfd_get_section_lma, bfd_get_section_alignment),
+	(bfd_get_section_size, bfd_get_section_flags),
+	(bfd_get_section_userdata): Delete.
+	(bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment): Lose bfd parameter.
+	(bfd_section_flags, bfd_section_userdata): New.
+	(bfd_is_com_section): Rename parameter.
+	* section.c (bfd_set_section_userdata, bfd_set_section_vma),
+	(bfd_set_section_alignment, bfd_set_section_flags, bfd_rename_section),
+	(bfd_set_section_size): Delete bfd parameter, rename section parameter.
+	(bfd_set_section_lma): New.
+	* bfd-in2.h: Regenerate.
+	* mach-o.c (bfd_mach_o_init_section_from_mach_o): Delete bfd param,
+	update callers.
+	* aoutx.h, * bfd.c, * coff-alpha.c, * coff-arm.c, * coff-mips.c,
+	* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
+	* compress.c, * ecoff.c, * elf-eh-frame.c, * elf-hppa.h,
+	* elf-ifunc.c, * elf-m10200.c, * elf-m10300.c, * elf-properties.c,
+	* elf-s390-common.c, * elf-vxworks.c, * elf.c, * elf32-arc.c,
+	* elf32-arm.c, * elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c,
+	* elf32-cr16c.c, * elf32-cris.c, * elf32-crx.c, * elf32-csky.c,
+	* elf32-d10v.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c,
+	* elf32-ft32.c, * elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c,
+	* elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c,
+	* elf32-m32r.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-mcore.c,
+	* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c,
+	* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
+	* elf32-nios2.c, * elf32-or1k.c, * elf32-ppc.c, * elf32-pru.c,
+	* elf32-rl78.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c,
+	* elf32-score7.c, * elf32-sh.c, * elf32-spu.c, * elf32-tic6x.c,
+	* elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c, * elf32-visium.c,
+	* elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
+	* elf64-bpf.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mmix.c,
+	* elf64-ppc.c, * elf64-s390.c, * elf64-sparc.c, * elf64-x86-64.c,
+	* elflink.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfnn-riscv.c,
+	* elfxx-aarch64.c, * elfxx-mips.c, * elfxx-sparc.c,
+	* elfxx-tilegx.c, * elfxx-x86.c, * i386msdos.c, * linker.c,
+	* mach-o.c, * mmo.c, * opncls.c, * pdp11.c, * pei-x86_64.c,
+	* peicode.h, * reloc.c, * section.c, * syms.c, * vms-alpha.c,
+	* xcofflink.c: Update throughout for bfd section macro and function
+	changes.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_asymbol_section): Rename from bfd_get_section.
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 859153be10..8923ca7b3c 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -3108,18 +3108,18 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 	  break;
 	case N_TEXT | N_EXT:
 	  section = obj_textsec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_DATA | N_EXT:
 	case N_SETV | N_EXT:
 	  /* Treat N_SETV symbols as N_DATA symbol; see comment in
 	     translate_from_native_sym_flags.  */
 	  section = obj_datasec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_BSS | N_EXT:
 	  section = obj_bsssec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_INDR | N_EXT:
 	  /* An indirect symbol.  The next symbol is the symbol
@@ -3145,17 +3145,17 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 	case N_SETT: case N_SETT | N_EXT:
 	  section = obj_textsec (abfd);
 	  flags |= BSF_CONSTRUCTOR;
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_SETD: case N_SETD | N_EXT:
 	  section = obj_datasec (abfd);
 	  flags |= BSF_CONSTRUCTOR;
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_SETB: case N_SETB | N_EXT:
 	  section = obj_bsssec (abfd);
 	  flags |= BSF_CONSTRUCTOR;
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_WARNING:
 	  /* A warning symbol.  The next symbol is the one to warn
@@ -3181,17 +3181,17 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 	  break;
 	case N_WEAKT:
 	  section = obj_textsec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  flags = BSF_WEAK;
 	  break;
 	case N_WEAKD:
 	  section = obj_datasec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  flags = BSF_WEAK;
 	  break;
 	case N_WEAKB:
 	  section = obj_bsssec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  flags = BSF_WEAK;
 	  break;
 	}
@@ -3899,8 +3899,7 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
 	      (*flaginfo->info->callbacks->reloc_overflow)
 		(flaginfo->info, NULL,
 		 (p->type == bfd_section_reloc_link_order
-		  ? bfd_section_name (flaginfo->output_bfd,
-				      pr->u.section)
+		  ? bfd_section_name (pr->u.section)
 		  : pr->u.name),
 		 howto->name, pr->addend, NULL, NULL, (bfd_vma) 0);
 	      break;
@@ -4314,7 +4313,7 @@ aout_link_input_section_std (struct aout_final_link_info *flaginfo,
 		    asection *s;
 
 		    s = aout_reloc_index_to_section (input_bfd, r_index);
-		    name = bfd_section_name (input_bfd, s);
+		    name = bfd_section_name (s);
 		  }
 		(*flaginfo->info->callbacks->reloc_overflow)
 		  (flaginfo->info, (h ? &h->root : NULL), name, howto->name,
@@ -4728,7 +4727,7 @@ aout_link_input_section_ext (struct aout_final_link_info *flaginfo,
 			asection *s;
 
 			s = aout_reloc_index_to_section (input_bfd, r_index);
-			name = bfd_section_name (input_bfd, s);
+			name = bfd_section_name (s);
 		      }
 		    (*flaginfo->info->callbacks->reloc_overflow)
 		      (flaginfo->info, (h ? &h->root : NULL), name,
@@ -4868,8 +4867,7 @@ aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 	return FALSE;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd,
-		(bfd_get_section_vma (output_bfd,
-				      obj_textsec (input_bfd)->output_section)
+		(bfd_section_vma (obj_textsec (input_bfd)->output_section)
 		 + obj_textsec (input_bfd)->output_offset),
 		outsym->e_value);
       ++obj_aout_external_sym_count (output_bfd);
@@ -5077,7 +5075,7 @@ aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 		  BFD_ASSERT (bfd_is_abs_section (output_section)
 			      || output_section->owner == output_bfd);
 		  val = (hresolve->root.u.def.value
-			 + bfd_get_section_vma (output_bfd, output_section)
+			 + bfd_section_vma (output_section)
 			 + input_section->output_offset);
 
 		  /* Get the correct type based on the section.  If
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 5a30344350..e55e3e90ba 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -299,21 +299,15 @@ typedef struct bfd_section *sec_ptr;
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
 
-#define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
-#define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
-#define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
-#define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
-					     (ptr)->alignment_power)
-#define bfd_section_name(bfd, ptr) ((ptr)->name)
-#define bfd_section_size(bfd, ptr) ((ptr)->size)
-#define bfd_get_section_size(ptr) ((ptr)->size)
-#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
-#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
-#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
-#define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
-#define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
-
-#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
+#define bfd_section_name(sec) ((sec)->name)
+#define bfd_section_size(sec) ((sec)->size)
+#define bfd_section_vma(sec) ((sec)->vma)
+#define bfd_section_lma(sec) ((sec)->lma)
+#define bfd_section_alignment(sec) ((sec)->alignment_power)
+#define bfd_section_flags(sec) ((sec)->flags)
+#define bfd_section_userdata(sec) ((sec)->userdata)
+
+#define bfd_is_com_section(sec) (((sec)->flags & SEC_IS_COMMON) != 0)
 
 #define bfd_get_section_limit_octets(bfd, sec)			\
   ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 6542d403e0..425f0c6709 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -306,21 +306,15 @@ typedef struct bfd_section *sec_ptr;
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
 
-#define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
-#define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
-#define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
-#define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
-					     (ptr)->alignment_power)
-#define bfd_section_name(bfd, ptr) ((ptr)->name)
-#define bfd_section_size(bfd, ptr) ((ptr)->size)
-#define bfd_get_section_size(ptr) ((ptr)->size)
-#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
-#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
-#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
-#define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
-#define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
-
-#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
+#define bfd_section_name(sec) ((sec)->name)
+#define bfd_section_size(sec) ((sec)->size)
+#define bfd_section_vma(sec) ((sec)->vma)
+#define bfd_section_lma(sec) ((sec)->lma)
+#define bfd_section_alignment(sec) ((sec)->alignment_power)
+#define bfd_section_flags(sec) ((sec)->flags)
+#define bfd_section_userdata(sec) ((sec)->userdata)
+
+#define bfd_is_com_section(sec) (((sec)->flags & SEC_IS_COMMON) != 0)
 
 #define bfd_get_section_limit_octets(bfd, sec)			\
   ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
@@ -1742,26 +1736,31 @@ struct relax_table {
    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
    compilers will complain about comma expressions that have no effect.  */
 static inline bfd_boolean
-bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr,
-                          void * val)
+bfd_set_section_userdata (asection *sec, void *val)
+{
+  sec->userdata = val;
+  return TRUE;
+}
+
+static inline bfd_boolean
+bfd_set_section_vma (asection *sec, bfd_vma val)
 {
-  ptr->userdata = val;
+  sec->vma = sec->lma = val;
+  sec->user_set_vma = TRUE;
   return TRUE;
 }
 
 static inline bfd_boolean
-bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
+bfd_set_section_lma (asection *sec, bfd_vma val)
 {
-  ptr->vma = ptr->lma = val;
-  ptr->user_set_vma = TRUE;
+  sec->lma = val;
   return TRUE;
 }
 
 static inline bfd_boolean
-bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr,
-                           unsigned int val)
+bfd_set_section_alignment (asection *sec, unsigned int val)
 {
-  ptr->alignment_power = val;
+  sec->alignment_power = val;
   return TRUE;
 }
 
@@ -1963,11 +1962,10 @@ asection *bfd_make_section_with_flags
 
 asection *bfd_make_section (bfd *, const char *name);
 
-bfd_boolean bfd_set_section_flags
-   (bfd *abfd, asection *sec, flagword flags);
+bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
 
 void bfd_rename_section
-   (bfd *abfd, asection *sec, const char *newname);
+   (asection *sec, const char *newname);
 
 void bfd_map_over_sections
    (bfd *abfd,
@@ -1979,8 +1977,7 @@ asection *bfd_sections_find_if
     bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
     void *obj);
 
-bfd_boolean bfd_set_section_size
-   (bfd *abfd, asection *sec, bfd_size_type val);
+bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
 
 bfd_boolean bfd_set_section_contents
    (bfd *abfd, asection *section, const void *data,
diff --git a/bfd/bfd.c b/bfd/bfd.c
index c973c780b4..7029bf7b85 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -2342,7 +2342,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 		  bfd_put_32 (abfd, 1 << sec->alignment_power,
 			      &echdr->ch_addralign);
 		  /* bfd_log2 (alignof (Elf32_Chdr)) */
-		  bfd_set_section_alignment (abfd, sec, 2);
+		  bfd_set_section_alignment (sec, 2);
 		}
 	      else
 		{
@@ -2354,7 +2354,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 		  bfd_put_64 (abfd, 1 << sec->alignment_power,
 			      &echdr->ch_addralign);
 		  /* bfd_log2 (alignof (Elf64_Chdr)) */
-		  bfd_set_section_alignment (abfd, sec, 3);
+		  bfd_set_section_alignment (sec, 3);
 		}
 	    }
 	  else
@@ -2368,7 +2368,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 	      memcpy (contents, "ZLIB", 4);
 	      bfd_putb64 (sec->size, contents + 4);
 	      /* No way to keep the original alignment, just use 1 always. */
-	      bfd_set_section_alignment (abfd, sec, 0);
+	      bfd_set_section_alignment (sec, 0);
 	    }
 	}
     }
@@ -2597,7 +2597,7 @@ bfd_convert_section_contents (bfd *ibfd, sec_ptr isec, bfd *obfd,
       use_memmove = TRUE;
     }
 
-  size = bfd_get_section_size (isec) - ihdr_size + ohdr_size;
+  size = bfd_section_size (isec) - ihdr_size + ohdr_size;
   if (!use_memmove)
     {
       contents = (bfd_byte *) bfd_malloc (size);
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index ee4a3eeded..d36921bbfe 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -426,7 +426,7 @@ alpha_ecoff_object_p (bfd *abfd)
 	  size = sec->line_filepos * 8;
 	  BFD_ASSERT (size == sec->size
 		      || size + 8 == sec->size);
-	  if (! bfd_set_section_size (abfd, sec, size))
+	  if (!bfd_set_section_size (sec, size))
 	    return NULL;
 	}
     }
@@ -1237,7 +1237,7 @@ alpha_convert_external_reloc (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* Compute a new r_symndx value.  */
       hsec = h->root.u.def.section;
-      name = bfd_get_section_name (output_bfd, hsec->output_section);
+      name = bfd_section_name (hsec->output_section);
 
       r_symndx = (unsigned long) -1;
       switch (name[1])
@@ -1928,8 +1928,7 @@ alpha_relocate_section (bfd *output_bfd,
 		    if (r_extern)
 		      name = sym_hashes[r_symndx]->root.root.string;
 		    else
-		      name = bfd_section_name (input_bfd,
-					       symndx_to_section[r_symndx]);
+		      name = bfd_section_name (symndx_to_section[r_symndx]);
 		    (*info->callbacks->reloc_overflow)
 		      (info, NULL, name, alpha_howto_table[r_type].name,
 		       (bfd_vma) 0, input_bfd, input_section,
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index 5237bfb2d0..cbc5257e9f 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -1989,7 +1989,7 @@ bfd_arm_get_bfd_for_interworking (bfd *			 abfd,
       sec = bfd_make_section_with_flags (abfd, ARM2THUMB_GLUE_SECTION_NAME,
 					 flags);
       if (sec == NULL
-	  || ! bfd_set_section_alignment (abfd, sec, 2))
+	  || !bfd_set_section_alignment (sec, 2))
 	return FALSE;
     }
 
@@ -2003,7 +2003,7 @@ bfd_arm_get_bfd_for_interworking (bfd *			 abfd,
 					 flags);
 
       if (sec == NULL
-	  || ! bfd_set_section_alignment (abfd, sec, 2))
+	  || !bfd_set_section_alignment (sec, 2))
 	return FALSE;
     }
 
diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
index a2dd9e1c4f..c6fe679a6c 100644
--- a/bfd/coff-mips.c
+++ b/bfd/coff-mips.c
@@ -1012,8 +1012,7 @@ mips_relocate_section (bfd *output_bfd,
 
 		  /* Compute a new r_symndx value.  */
 		  s = h->root.u.def.section;
-		  name = bfd_get_section_name (output_bfd,
-					       s->output_section);
+		  name = bfd_section_name (s->output_section);
 
 		  int_rel.r_symndx = -1;
 		  switch (name[1])
@@ -1223,7 +1222,7 @@ mips_relocate_section (bfd *output_bfd,
 		if (int_rel.r_extern)
 		  name = NULL;
 		else
-		  name = bfd_section_name (input_bfd, s);
+		  name = bfd_section_name (s);
 		(*info->callbacks->reloc_overflow)
 		  (info, (h ? &h->root : NULL), name, howto->name,
 		   (bfd_vma) 0, input_bfd, input_section,
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index 1c80a9df88..091da1fd5e 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -959,7 +959,7 @@ xcoff64_write_object_contents (bfd *abfd)
       if (text_sec != NULL)
 	{
 	  internal_a.o_sntext = text_sec->target_index;
-	  internal_a.o_algntext = bfd_get_section_alignment (abfd, text_sec);
+	  internal_a.o_algntext = bfd_section_alignment (text_sec);
 	}
       else
 	{
@@ -970,7 +970,7 @@ xcoff64_write_object_contents (bfd *abfd)
       if (data_sec != NULL)
 	{
 	  internal_a.o_sndata = data_sec->target_index;
-	  internal_a.o_algndata = bfd_get_section_alignment (abfd, data_sec);
+	  internal_a.o_algndata = bfd_section_alignment (data_sec);
 	}
       else
 	{
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index dd3189fbd3..948bb705b0 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1696,7 +1696,7 @@ coff_set_custom_section_alignment (bfd *abfd ATTRIBUTE_UNUSED,
 
   for (i = 0; i < table_size; ++i)
     {
-      const char *secname = bfd_get_section_name (abfd, section);
+      const char *secname = bfd_section_name (section);
 
       if (alignment_table[i].comparison_length == (unsigned int) -1
 	  ? strcmp (alignment_table[i].name, secname) == 0
@@ -1759,17 +1759,17 @@ coff_new_section_hook (bfd * abfd, asection * section)
 
 #ifdef RS6000COFF_C
   if (bfd_xcoff_text_align_power (abfd) != 0
-      && strcmp (bfd_get_section_name (abfd, section), ".text") == 0)
+      && strcmp (bfd_section_name (section), ".text") == 0)
     section->alignment_power = bfd_xcoff_text_align_power (abfd);
   else if (bfd_xcoff_data_align_power (abfd) != 0
-      && strcmp (bfd_get_section_name (abfd, section), ".data") == 0)
+      && strcmp (bfd_section_name (section), ".data") == 0)
     section->alignment_power = bfd_xcoff_data_align_power (abfd);
   else
     {
       int i;
 
       for (i = 0; i < XCOFF_DWSECT_NBR_NAMES; i++)
-	if (strcmp (bfd_get_section_name (abfd, section),
+	if (strcmp (bfd_section_name (section),
 		    xcoff_dwsect_names[i].name) == 0)
 	  {
 	    section->alignment_power = 0;
@@ -3221,7 +3221,7 @@ coff_compute_section_file_positions (bfd * abfd)
 	 incremented in coff_set_section_contents.  This is right for
 	 SVR3.2.  */
       if (strcmp (current->name, _LIB) == 0)
-	(void) bfd_set_section_vma (abfd, current, 0);
+	bfd_set_section_vma (current, 0);
 #endif
 
 #ifdef ALIGN_SECTIONS_IN_FILE
@@ -4011,7 +4011,7 @@ coff_write_object_contents (bfd * abfd)
       if (text_sec != NULL)
 	{
 	  internal_a.o_sntext = text_sec->target_index;
-	  internal_a.o_algntext = bfd_get_section_alignment (abfd, text_sec);
+	  internal_a.o_algntext = bfd_section_alignment (text_sec);
 	}
       else
 	{
@@ -4021,7 +4021,7 @@ coff_write_object_contents (bfd * abfd)
       if (data_sec != NULL)
 	{
 	  internal_a.o_sndata = data_sec->target_index;
-	  internal_a.o_algndata = bfd_get_section_alignment (abfd, data_sec);
+	  internal_a.o_algndata = bfd_section_alignment (data_sec);
 	}
       else
 	{
@@ -4390,8 +4390,7 @@ coff_slurp_line_table (bfd *abfd, asection *asect)
 	   PR 17521: file: 078-10659-0.004.  */
 	continue;
       else
-	cache_ptr->u.offset = (dst.l_addr.l_paddr
-			       - bfd_section_vma (abfd, asect));
+	cache_ptr->u.offset = dst.l_addr.l_paddr - bfd_section_vma (asect);
       cache_ptr++;
     }
 
@@ -4886,7 +4885,7 @@ coff_classify_symbol (bfd *abfd,
 	  name = _bfd_coff_internal_syment_name (abfd, syment, buf)
 	  sec = coff_section_from_bfd_index (abfd, syment->n_scnum);
 	  if (sec != NULL && name != NULL
-	      && (strcmp (bfd_get_section_name (abfd, sec), name) == 0))
+	      && (strcmp (bfd_section_name (sec), name) == 0))
 	    return COFF_SYMBOL_PE_SECTION;
 	}
 #endif
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 80a9a2ab9a..ba7bb5eaf4 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -217,7 +217,7 @@ make_a_section_from_file (bfd *abfd,
 	  break;
 	}
       if (new_name != NULL)
-	bfd_rename_section (abfd, return_section, new_name);
+	bfd_rename_section (return_section, new_name);
     }
 
   return result;
@@ -2366,7 +2366,7 @@ coff_find_nearest_line_with_names (bfd *abfd,
       bfd_vma maxdiff;
 
       /* Look through the C_FILE symbols to find the best one.  */
-      sec_vma = bfd_get_section_vma (abfd, section);
+      sec_vma = bfd_section_vma (section);
       *filename_ptr = (char *) p->u.syment._n._n_n._n_offset;
       maxdiff = (bfd_vma) 0 - (bfd_vma) 1;
       while (1)
@@ -2658,7 +2658,7 @@ _bfd_coff_section_already_linked (bfd *abfd,
   if ((flags & SEC_GROUP) != 0)
     return FALSE;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
   s_comdat = bfd_coff_get_comdat_section (abfd, sec);
 
   if (s_comdat != NULL)
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 7bcc1ca77d..2115e9c36a 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -2846,8 +2846,7 @@ _bfd_coff_reloc_link_order (bfd *output_bfd,
 	  (*flaginfo->info->callbacks->reloc_overflow)
 	    (flaginfo->info, NULL,
 	     (link_order->type == bfd_section_reloc_link_order
-	      ? bfd_section_name (output_bfd,
-				  link_order->u.reloc.p->u.section)
+	      ? bfd_section_name (link_order->u.reloc.p->u.section)
 	      : link_order->u.reloc.p->u.name),
 	     howto->name, link_order->u.reloc.p->addend,
 	     (bfd *) NULL, (asection *) NULL, (bfd_vma) 0);
diff --git a/bfd/compress.c b/bfd/compress.c
index 32de09923d..8f96d064bd 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -155,8 +155,7 @@ bfd_compress_section_contents (bfd *abfd, sec_ptr sec,
 	      return 0;
 	    }
 	  free (uncompressed_buffer);
-	  bfd_set_section_alignment (abfd, sec,
-				     orig_uncompressed_alignment_pow);
+	  bfd_set_section_alignment (sec, orig_uncompressed_alignment_pow);
 
 	  sec->contents = buffer;
 	  sec->compress_status = COMPRESS_SECTION_DONE;
@@ -255,7 +254,7 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
 	      && filesize < sz
 	      /* PR 24753: Linker created sections can be larger than
 		 the file size, eg if they are being used to hold stubs.  */
-	      && (bfd_get_section_flags (abfd, sec) & SEC_LINKER_CREATED) == 0
+	      && (bfd_section_flags (sec) & SEC_LINKER_CREATED) == 0
 	      /* The MMO file format supports its own special compression
 		 technique, but it uses COMPRESS_SECTION_NONE when loading
 		 a section's contents.  */
@@ -552,7 +551,7 @@ bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec)
 
   sec->compressed_size = sec->size;
   sec->size = uncompressed_size;
-  bfd_set_section_alignment (abfd, sec, uncompressed_alignment_power);
+  bfd_set_section_alignment (sec, uncompressed_alignment_power);
   sec->compress_status = DECOMPRESS_SECTION_SIZED;
 
   return TRUE;
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index c06fa5ec7f..30adba0e6d 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -1676,10 +1676,10 @@ ecoff_slurp_reloc_table (bfd *abfd,
 	    abort ();
 	  rptr->sym_ptr_ptr = sec->symbol_ptr_ptr;
 
-	  rptr->addend = - bfd_get_section_vma (abfd, sec);
+	  rptr->addend = - bfd_section_vma (sec);
 	}
 
-      rptr->address = intern.r_vaddr - bfd_get_section_vma (abfd, section);
+      rptr->address = intern.r_vaddr - bfd_section_vma (section);
 
       /* Let the backend select the howto field and do any other
 	 required processing.  */
@@ -2431,7 +2431,7 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
       strncpy (section.s_name, current->name, sizeof section.s_name);
 
       /* This seems to be correct for Irix 4 shared libraries.  */
-      vma = bfd_get_section_vma (abfd, current);
+      vma = bfd_section_vma (current);
       if (streq (current->name, _LIB))
 	section.s_vaddr = 0;
       else
@@ -2682,8 +2682,7 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
 	      if (reloc->howto == NULL)
 		continue;
 
-	      in.r_vaddr = (reloc->address
-			    + bfd_get_section_vma (abfd, current));
+	      in.r_vaddr = reloc->address + bfd_section_vma (current);
 	      in.r_type = reloc->howto->type;
 
 	      if ((sym->flags & BSF_SECTION_SYM) == 0)
@@ -2719,7 +2718,7 @@ _bfd_ecoff_write_object_contents (bfd *abfd)
 		    { _RCONST, RELOC_SECTION_RCONST }
 		  };
 
-		  name = bfd_get_section_name (abfd, bfd_asymbol_section (sym));
+		  name = bfd_section_name (bfd_asymbol_section (sym));
 
 		  for (j = 0; j < ARRAY_SIZE (section_symndx); j++)
 		    if (streq (name, section_symndx[j].name))
@@ -4010,7 +4009,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
 	  (*info->callbacks->reloc_overflow)
 	    (info, NULL,
 	     (link_order->type == bfd_section_reloc_link_order
-	      ? bfd_section_name (output_bfd, section)
+	      ? bfd_section_name (section)
 	      : link_order->u.reloc.p->u.name),
 	     rel.howto->name, addend, NULL, NULL, (bfd_vma) 0);
 	  break;
@@ -4025,8 +4024,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
   rel.addend = 0;
 
   /* Move the information into an internal_reloc structure.  */
-  in.r_vaddr = (rel.address
-		+ bfd_get_section_vma (output_bfd, output_section));
+  in.r_vaddr = rel.address + bfd_section_vma (output_section);
   in.r_type = rel.howto->type;
 
   if (type == bfd_symbol_reloc_link_order)
@@ -4076,7 +4074,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
 	{ _RCONST, RELOC_SECTION_RCONST }
       };
 
-      name = bfd_get_section_name (output_bfd, section);
+      name = bfd_section_name (section);
 
       for (i = 0; i < ARRAY_SIZE (section_symndx); i++)
 	if (streq (name, section_symndx[i].name))
@@ -4189,7 +4187,7 @@ ecoff_link_write_external (struct bfd_hash_entry *bh, void * data)
 	  };
 
 	  output_section = h->root.u.def.section->output_section;
-	  name = bfd_section_name (output_section->owner, output_section);
+	  name = bfd_section_name (output_section);
 
 	  for (i = 0; i < ARRAY_SIZE (section_storage_classes); i++)
 	    if (streq (name, section_storage_classes[i].name))
diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c
index 6919ac3031..c2cb77bb11 100644
--- a/bfd/elf-eh-frame.c
+++ b/bfd/elf-eh-frame.c
@@ -1109,7 +1109,7 @@ add_eh_frame_hdr_terminator (asection *sec,
   if (!sec->rawsize)
     sec->rawsize = sec->size;
 
-  bfd_set_section_size (sec->owner, sec, sec->size + 8);
+  bfd_set_section_size (sec, sec->size + 8);
 }
 
 /* Finish a pass over all .eh_frame_entry sections.  */
@@ -1682,7 +1682,7 @@ _bfd_elf_eh_frame_entry_present (struct bfd_link_info *info)
     {
       for (o = abfd->sections; o; o = o->next)
 	{
-	  const char *name = bfd_get_section_name (abfd, o);
+	  const char *name = bfd_section_name (o);
 
 	  if (strcmp (name, ".eh_frame_entry")
 	      && !bfd_is_abs_section (o->output_section))
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index cc98caeeb0..2035d4c9c0 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -881,7 +881,7 @@ elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".PARISC.unwind") == 0)
     {
diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
index 89054e439a..58948e32f1 100644
--- a/bfd/elf-ifunc.c
+++ b/bfd/elf-ifunc.c
@@ -62,8 +62,7 @@ _bfd_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_with_flags (abfd, rel_sec,
 				       flags | SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s,
-					  bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->irelifunc = s;
     }
@@ -73,7 +72,7 @@ _bfd_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 	 for static executables.   */
       s = bfd_make_section_with_flags (abfd, ".iplt", pltflags);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+	  || !bfd_set_section_alignment (s, bed->plt_alignment))
 	return FALSE;
       htab->iplt = s;
 
@@ -82,8 +81,7 @@ _bfd_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 					? ".rela.iplt" : ".rel.iplt"),
 				       flags | SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s,
-					  bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->irelplt = s;
 
@@ -94,8 +92,7 @@ _bfd_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
       else
 	s = bfd_make_section_with_flags (abfd, ".igot", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->igotplt = s;
     }
diff --git a/bfd/elf-m10200.c b/bfd/elf-m10200.c
index cfccb96867..b234c168c8 100644
--- a/bfd/elf-m10200.c
+++ b/bfd/elf-m10200.c
@@ -413,7 +413,7 @@ mn10200_elf_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
index acc3c54258..30828f117a 100644
--- a/bfd/elf-m10300.c
+++ b/bfd/elf-m10300.c
@@ -725,7 +725,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   htab->splt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
 
   /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
@@ -742,7 +742,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   htab->sgot = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (bed->want_got_plt)
@@ -750,7 +750,7 @@ _bfd_mn10300_elf_create_got_section (bfd * abfd,
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       htab->sgotplt = s;
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, ptralign))
+	  || !bfd_set_section_alignment (s, ptralign))
 	return FALSE;
     }
 
@@ -2125,7 +2125,7 @@ mn10300_elf_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -4821,7 +4821,7 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  flags | SEC_READONLY);
   htab->root.srelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (! _bfd_mn10300_elf_create_got_section (abfd, info))
@@ -4858,7 +4858,7 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						   ? ".rela.bss" : ".rel.bss"),
 						  flags | SEC_READONLY);
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
@@ -5073,7 +5073,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (streq (name, ".plt"))
 	{
@@ -5099,8 +5099,7 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
 		     entry.  The entries in the .rela.plt section
 		     really apply to the .got section, which we
 		     created ourselves and so know is not readonly.  */
-		  outname = bfd_get_section_name (output_bfd,
-						  s->output_section);
+		  outname = bfd_section_name (s->output_section);
 		  target = bfd_get_section_by_name (output_bfd, outname + 5);
 		  if (target != NULL
 		      && (target->flags & SEC_READONLY) != 0
diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
index 198eece084..199e61728e 100644
--- a/bfd/elf-properties.c
+++ b/bfd/elf-properties.c
@@ -695,12 +695,12 @@ _bfd_elf_convert_gnu_properties (bfd *ibfd, asection *isec,
   align_shift = bed->s->elfclass == ELFCLASS64 ? 3 : 2;
 
   /* Get the output .note.gnu.property section size.  */
-  size = bfd_get_section_size (isec->output_section);
+  size = bfd_section_size (isec->output_section);
 
   /* Update the output .note.gnu.property section alignment.  */
-  bfd_set_section_alignment (obfd, isec->output_section, align_shift);
+  bfd_set_section_alignment (isec->output_section, align_shift);
 
-  if (size > bfd_get_section_size (isec))
+  if (size > bfd_section_size (isec))
     {
       contents = (bfd_byte *) bfd_malloc (size);
       free (*ptr);
diff --git a/bfd/elf-s390-common.c b/bfd/elf-s390-common.c
index ef8abeb2d0..d7cd7e60e9 100644
--- a/bfd/elf-s390-common.c
+++ b/bfd/elf-s390-common.c
@@ -131,8 +131,7 @@ s390_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_with_flags (abfd, ".rela.ifunc",
 				       flags | SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s,
-					  bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->irelifunc = s;
     }
@@ -141,21 +140,19 @@ s390_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_with_flags (abfd, ".iplt",
 				   flags | SEC_CODE | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   htab->iplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".rela.iplt", flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s,
-				      bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->irelplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".igot.plt", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s,
-				     bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->igotplt = s;
 
diff --git a/bfd/elf-vxworks.c b/bfd/elf-vxworks.c
index a7f574c2ef..8fe17bf628 100644
--- a/bfd/elf-vxworks.c
+++ b/bfd/elf-vxworks.c
@@ -97,7 +97,7 @@ elf_vxworks_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info,
 					      | SEC_READONLY
 					      | SEC_LINKER_CREATED);
       if (s == NULL
-	  || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
 
       *srelplt2_out = s;
@@ -279,9 +279,7 @@ elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn)
 
     case DT_VX_WRS_TLS_DATA_ALIGN:
       sec = bfd_get_section_by_name (output_bfd, ".tls_data");
-      dyn->d_un.d_val
-	= (bfd_size_type)1 << bfd_get_section_alignment (output_bfd,
-							 sec);
+      dyn->d_un.d_val = (bfd_size_type) 1 << bfd_section_alignment (sec);
       break;
 
     case DT_VX_WRS_TLS_VARS_START:
diff --git a/bfd/elf.c b/bfd/elf.c
index 1a1eed9085..664eae5c66 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -547,7 +547,7 @@ bfd_elf_sym_name (bfd *abfd,
   if (name == NULL)
     name = "(null)";
   else if (sym_sec && *name == '\0')
-    name = bfd_section_name (abfd, sym_sec);
+    name = bfd_section_name (sym_sec);
 
   return name;
 }
@@ -1049,10 +1049,9 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
 
   newsect->filepos = hdr->sh_offset;
 
-  if (! bfd_set_section_vma (abfd, newsect, hdr->sh_addr)
-      || ! bfd_set_section_size (abfd, newsect, hdr->sh_size)
-      || ! bfd_set_section_alignment (abfd, newsect,
-				      bfd_log2 (hdr->sh_addralign)))
+  if (!bfd_set_section_vma (newsect, hdr->sh_addr)
+      || !bfd_set_section_size (newsect, hdr->sh_size)
+      || !bfd_set_section_alignment (newsect, bfd_log2 (hdr->sh_addralign)))
     return FALSE;
 
   flags = SEC_NO_FLAGS;
@@ -1142,7 +1141,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
     if (! bed->elf_backend_section_flags (&flags, hdr))
       return FALSE;
 
-  if (! bfd_set_section_flags (abfd, newsect, flags))
+  if (!bfd_set_section_flags (newsect, flags))
     return FALSE;
 
   /* We do not parse the PT_NOTE segments as we are interested even in the
@@ -1286,7 +1285,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
 	      char *new_name = convert_zdebug_to_debug (abfd, name);
 	      if (new_name == NULL)
 		return FALSE;
-	      bfd_rename_section (abfd, newsect, new_name);
+	      bfd_rename_section (newsect, new_name);
 	    }
 	}
       else
@@ -5542,7 +5541,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
 		{
 		  unsigned int secalign;
 
-		  secalign = bfd_get_section_alignment (abfd, *secpp);
+		  secalign = bfd_section_alignment (*secpp);
 		  if (secalign > align_power)
 		    align_power = secalign;
 		}
@@ -5696,7 +5695,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
 
 	  sec = *secpp;
 	  this_hdr = &elf_section_data (sec)->this_hdr;
-	  align = (bfd_size_type) 1 << bfd_get_section_alignment (abfd, sec);
+	  align = (bfd_size_type) 1 << bfd_section_alignment (sec);
 
 	  if ((p->p_type == PT_LOAD
 	       || p->p_type == PT_TLS)
@@ -6835,8 +6834,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
        || (segment->p_paddr						\
 	   ? segment->p_paddr != section->lma				\
 	   : segment->p_vaddr != section->vma)				\
-       || (strcmp (bfd_get_section_name (ibfd, section), ".dynamic")	\
-	   == 0))							\
+       || (strcmp (bfd_section_name (section), ".dynamic") == 0))	\
    && (segment->p_type != PT_LOAD || !section->segment_mark))
 
 /* If the output section of a section in the input segment is NULL,
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 493f32dad7..91537efd84 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -900,7 +900,7 @@ arc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
-	  if ((bfd_get_section_flags (ibfd, sec)
+	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	    only_data_sections = FALSE;
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index e29a60abf1..1c4887a034 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -3817,7 +3817,8 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
       htab->srofixup = bfd_make_section_with_flags (dynobj, ".rofixup",
 						    (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
 						     | SEC_IN_MEMORY | SEC_LINKER_CREATED | SEC_READONLY));
-      if (htab->srofixup == NULL || ! bfd_set_section_alignment (dynobj, htab->srofixup, 2))
+      if (htab->srofixup == NULL
+	  || !bfd_set_section_alignment (htab->srofixup, 2))
 	return FALSE;
     }
 
@@ -3845,7 +3846,7 @@ create_ifunc_sections (struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (dynobj, ".iplt",
 					      flags | SEC_READONLY | SEC_CODE);
       if (s == NULL
-	  || !bfd_set_section_alignment (dynobj, s, bed->plt_alignment))
+	  || !bfd_set_section_alignment (s, bed->plt_alignment))
 	return FALSE;
       htab->root.iplt = s;
     }
@@ -3856,7 +3857,7 @@ create_ifunc_sections (struct bfd_link_info *info)
 					      RELOC_SECTION (htab, ".iplt"),
 					      flags | SEC_READONLY);
       if (s == NULL
-	  || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->root.irelplt = s;
     }
@@ -3865,7 +3866,7 @@ create_ifunc_sections (struct bfd_link_info *info)
     {
       s = bfd_make_section_anyway_with_flags (dynobj, ".igot.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->root.igotplt = s;
     }
@@ -7709,7 +7710,7 @@ arm_make_glue_section (bfd * abfd, const char * name)
   sec = bfd_make_section_anyway_with_flags (abfd, name, ARM_GLUE_SECTION_FLAGS);
 
   if (sec == NULL
-      || !bfd_set_section_alignment (abfd, sec, 2))
+      || !bfd_set_section_alignment (sec, 2))
     return FALSE;
 
   /* Set the gc mark to prevent the section from being removed by garbage
@@ -13374,7 +13375,7 @@ elf32_arm_relocate_section (bfd *		   output_bfd,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       if (r_symndx != STN_UNDEF
@@ -13552,10 +13553,10 @@ adjust_exidx_size(asection *exidx_sec, int adjust)
   if (!exidx_sec->rawsize)
     exidx_sec->rawsize = exidx_sec->size;
 
-  bfd_set_section_size (exidx_sec->owner, exidx_sec, exidx_sec->size + adjust);
+  bfd_set_section_size (exidx_sec, exidx_sec->size + adjust);
   out_sec = exidx_sec->output_section;
   /* Adjust size of output section.  */
-  bfd_set_section_size (out_sec->owner, out_sec, out_sec->size +adjust);
+  bfd_set_section_size (out_sec, out_sec->size +adjust);
 }
 
 /* Insert an EXIDX_CANTUNWIND marker at the end of a section.  */
@@ -15696,9 +15697,9 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
 		{
 		  flagword flags;
 
-		  flags = bfd_get_section_flags (dynobj, sreloc);
+		  flags = bfd_section_flags (sreloc);
 		  flags &= ~(SEC_LOAD | SEC_ALLOC);
-		  bfd_set_section_flags (dynobj, sreloc, flags);
+		  bfd_set_section_flags (sreloc, flags);
 		}
 	    }
 
@@ -17158,7 +17159,7 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (s == htab->root.splt)
 	{
@@ -17951,7 +17952,7 @@ elf32_arm_fake_sections (bfd * abfd, Elf_Internal_Shdr * hdr, asection * sec)
 {
   const char * name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (is_arm_elf_unwind_section_name (abfd, name))
     {
@@ -20874,7 +20875,7 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 	  if (strcmp (sec->name, ".glue_7")
 	      && strcmp (sec->name, ".glue_7t"))
 	    {
-	      if ((bfd_get_section_flags (ibfd, sec)
+	      if ((bfd_section_flags (sec)
 		   & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 		  == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 		only_data_sections = FALSE;
diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
index e75ac9fc1d..f04cc94ff3 100644
--- a/bfd/elf32-avr.c
+++ b/bfd/elf32-avr.c
@@ -1465,7 +1465,7 @@ elf32_avr_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -2354,8 +2354,7 @@ avr_property_record_compare (const void *ap, const void *bp)
     return (a->offset - b->offset);
 
   if (a->section != b->section)
-    return (bfd_get_section_vma (a->section->owner, a->section)
-	    - bfd_get_section_vma (b->section->owner, b->section));
+    return bfd_section_vma (a->section) - bfd_section_vma (b->section);
 
   return (a->type - b->type);
 }
@@ -3948,12 +3947,12 @@ internal_reloc_compare (const void *ap, const void *bp)
 /* Return true if ADDRESS is within the vma range of SECTION from ABFD.  */
 
 static bfd_boolean
-avr_is_section_for_address (bfd *abfd, asection *section, bfd_vma address)
+avr_is_section_for_address (asection *section, bfd_vma address)
 {
   bfd_vma vma;
   bfd_size_type size;
 
-  vma = bfd_get_section_vma (abfd, section);
+  vma = bfd_section_vma (section);
   if (address < vma)
     return FALSE;
 
@@ -3985,7 +3984,7 @@ struct avr_find_section_data
    perform any checks, and just returns.  */
 
 static void
-avr_find_section_for_address (bfd *abfd,
+avr_find_section_for_address (bfd *abfd ATTRIBUTE_UNUSED,
 			      asection *section, void *data)
 {
   struct avr_find_section_data *fs_data
@@ -3996,11 +3995,11 @@ avr_find_section_for_address (bfd *abfd,
     return;
 
   /* If this section isn't part of the addressable code content, skip it.  */
-  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0
-      && (bfd_get_section_flags (abfd, section) & SEC_CODE) == 0)
+  if ((bfd_section_flags (section) & SEC_ALLOC) == 0
+      && (bfd_section_flags (section) & SEC_CODE) == 0)
     return;
 
-  if (avr_is_section_for_address (abfd, section, fs_data->address))
+  if (avr_is_section_for_address (section, fs_data->address))
     fs_data->section = section;
 }
 
@@ -4023,7 +4022,7 @@ avr_elf32_load_records_from_section (bfd *abfd, asection *sec)
 
   fs_data.section = NULL;
 
-  size = bfd_get_section_size (sec);
+  size = bfd_section_size (sec);
   contents = bfd_malloc (size);
   bfd_get_section_contents (abfd, sec, contents, 0, size);
   ptr = contents;
@@ -4126,8 +4125,7 @@ avr_elf32_load_records_from_section (bfd *abfd, asection *sec)
 	{
 	  /* Try to find section and offset from address.  */
 	  if (fs_data.section != NULL
-	      && !avr_is_section_for_address (abfd, fs_data.section,
-					      address))
+	      && !avr_is_section_for_address (fs_data.section, address))
 	    fs_data.section = NULL;
 
 	  if (fs_data.section == NULL)
@@ -4145,7 +4143,7 @@ avr_elf32_load_records_from_section (bfd *abfd, asection *sec)
 
 	  r_list->records [i].section = fs_data.section;
 	  r_list->records [i].offset
-	    = address - bfd_get_section_vma (abfd, fs_data.section);
+	    = address - bfd_section_vma (fs_data.section);
 	}
 
       r_list->records [i].type = *((bfd_byte *) ptr);
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c
index d73bfdaee3..6efee04c8b 100644
--- a/bfd/elf32-bfin.c
+++ b/bfd/elf32-bfin.c
@@ -1601,7 +1601,7 @@ bfin_relocate_section (bfd * output_bfd,
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
@@ -2560,7 +2560,7 @@ bfinfdpic_relocate_section (bfd * output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -2778,8 +2778,7 @@ bfinfdpic_relocate_section (bfd * output_bfd,
 		    bfd_vma offset;
 
 		    addend += bfinfdpic_got_section (info)->output_section->vma;
-		    if ((bfd_get_section_flags (output_bfd,
-						input_section->output_section)
+		    if ((bfd_section_flags (input_section->output_section)
 			 & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		      {
 			if (_bfinfdpic_osec_readonly_p (output_bfd,
@@ -2807,8 +2806,7 @@ bfinfdpic_relocate_section (bfd * output_bfd,
 						  picrel);
 		      }
 		  }
-		else if ((bfd_get_section_flags (output_bfd,
-						 input_section->output_section)
+		else if ((bfd_section_flags (input_section->output_section)
 			  & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    bfd_vma offset;
@@ -2901,8 +2899,7 @@ bfinfdpic_relocate_section (bfd * output_bfd,
 		if (osec)
 		  addend += osec->output_section->vma;
 		if (IS_FDPIC (input_bfd)
-		    && (bfd_get_section_flags (output_bfd,
-					       input_section->output_section)
+		    && (bfd_section_flags (input_section->output_section)
 			& (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    if (_bfinfdpic_osec_readonly_p (output_bfd,
@@ -2939,8 +2936,7 @@ bfinfdpic_relocate_section (bfd * output_bfd,
 	      }
 	    else
 	      {
-		if ((bfd_get_section_flags (output_bfd,
-					    input_section->output_section)
+		if ((bfd_section_flags (input_section->output_section)
 		     & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    if (_bfinfdpic_osec_readonly_p (output_bfd,
@@ -3201,7 +3197,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   elf_hash_table (info)->sgot = s;
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (bed->want_got_sym)
@@ -3238,7 +3234,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
 					      (flags | SEC_READONLY));
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
 
       bfinfdpic_gotrel_section (info) = s;
@@ -3247,7 +3243,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".rofixup",
 					      (flags | SEC_READONLY));
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
 
       bfinfdpic_gotfixup_section (info) = s;
@@ -3261,7 +3257,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   /* Blackfin-specific: remember it.  */
   bfinfdpic_plt_section (info) = s;
@@ -3289,7 +3285,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".rel.plt",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   /* Blackfin-specific: remember it.  */
   bfinfdpic_pltrel_section (info) = s;
@@ -3355,7 +3351,7 @@ elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						  ".rela.bss",
 						  flags | SEC_READONLY);
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	    return FALSE;
 	}
     }
@@ -4616,7 +4612,7 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
 	case R_BFIN_FUNCDESC_VALUE:
 	  picrel->relocsfdv++;
-	  if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+	  if (bfd_section_flags (sec) & SEC_ALLOC)
 	    picrel->relocs32--;
 	  /* Fall through.  */
 
@@ -4625,7 +4621,7 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    break;
 
 	  picrel->sym++;
-	  if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+	  if (bfd_section_flags (sec) & SEC_ALLOC)
 	    picrel->relocs32++;
 	  break;
 
@@ -5064,9 +5060,9 @@ bfin_adjust_dynamic_symbol (struct bfd_link_info *info,
 
   /* Apply the required alignment.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > bfd_get_section_alignment (dynobj, s))
+  if (power_of_two > bfd_section_alignment (s))
     {
-      if (!bfd_set_section_alignment (dynobj, s, power_of_two))
+      if (!bfd_set_section_alignment (s, power_of_two))
 	return FALSE;
     }
 
@@ -5200,7 +5196,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       strip = FALSE;
 
diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c
index 7d0a0e558f..72642e532c 100644
--- a/bfd/elf32-cr16.c
+++ b/bfd/elf32-cr16.c
@@ -610,7 +610,7 @@ _bfd_cr16_elf_create_got_section (bfd * abfd, struct bfd_link_info * info)
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   htab->sgot= s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (bed->want_got_plt)
@@ -618,7 +618,7 @@ _bfd_cr16_elf_create_got_section (bfd * abfd, struct bfd_link_info * info)
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       htab->sgotplt = s;
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, ptralign))
+	  || !bfd_set_section_alignment (s, ptralign))
 	return FALSE;
     }
 
@@ -1444,7 +1444,7 @@ elf32_cr16_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -2241,7 +2241,7 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  flags | SEC_READONLY);
   htab->srelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (! _bfd_cr16_elf_create_got_section (abfd, info))
@@ -2278,7 +2278,7 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						   ? ".rela.bss" : ".rel.bss"),
 						  flags | SEC_READONLY);
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
@@ -2463,7 +2463,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (strcmp (name, ".plt") == 0)
 	{
@@ -2489,8 +2489,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
 		     entry.  The entries in the .rela.plt section
 		     really apply to the .got section, which we
 		     created ourselves and so know is not readonly.  */
-		  outname = bfd_get_section_name (output_bfd,
-						  s->output_section);
+		  outname = bfd_section_name (s->output_section);
 		  target = bfd_get_section_by_name (output_bfd, outname + 5);
 		  if (target != NULL
 		      && (target->flags & SEC_READONLY) != 0
diff --git a/bfd/elf32-cr16c.c b/bfd/elf32-cr16c.c
index 9a2fda0ea8..35bacbbc6f 100644
--- a/bfd/elf32-cr16c.c
+++ b/bfd/elf32-cr16c.c
@@ -763,7 +763,7 @@ elf32_cr16c_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -827,9 +827,9 @@ elf32_cr16c_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 				      asection *sec,
 				      int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".fcommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".fcommon") == 0)
     *retval = SHN_CR16C_FCOMMON;
-  else if (strcmp (bfd_get_section_name (abfd, sec), ".ncommon") == 0)
+  else if (strcmp (bfd_section_name (sec), ".ncommon") == 0)
     *retval = SHN_CR16C_NCOMMON;
   else
     return FALSE;
diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c
index 5d230562a5..9c07b6d7b9 100644
--- a/bfd/elf32-cris.c
+++ b/bfd/elf32-cris.c
@@ -1044,7 +1044,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  symname = (bfd_elf_string_from_elf_section
 		     (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (symname == NULL)
-	    symname = bfd_section_name (input_bfd, sec);
+	    symname = bfd_section_name (sec);
 	}
       else
 	{
@@ -2480,7 +2480,7 @@ cris_elf_plt_sym_val (bfd_vma i ATTRIBUTE_UNUSED, const asection *plt,
   if ((got = bfd_get_section_by_name (abfd, ".got")) == NULL)
     return (bfd_vma) -1;
 
-  plt_sec_size =  bfd_section_size (plt->owner, plt);
+  plt_sec_size =  bfd_section_size (plt);
   plt_entry_size
     = (bfd_get_mach (abfd) == bfd_mach_cris_v32
        ? PLT_ENTRY_SIZE_V32 : PLT_ENTRY_SIZE);
@@ -3580,7 +3580,7 @@ elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (strcmp (name, ".plt") == 0)
 	{
diff --git a/bfd/elf32-crx.c b/bfd/elf32-crx.c
index 306a0e4f2b..6d15b2b10b 100644
--- a/bfd/elf32-crx.c
+++ b/bfd/elf32-crx.c
@@ -905,7 +905,7 @@ elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
index b3451b60b2..16897b3930 100644
--- a/bfd/elf32-csky.c
+++ b/bfd/elf32-csky.c
@@ -2092,7 +2092,7 @@ csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  if (htab->elf.hplt != NULL)
 	    strip_section = FALSE;
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rel") )
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rel") )
 	{
 	  if (s->size != 0 )
 	    relocs = TRUE;
@@ -5070,7 +5070,7 @@ csky_elf_relocate_section (bfd *                  output_bfd,
 		  if (name == NULL)
 		    break;
 		  if (*name == '\0')
-		    name = bfd_section_name (input_bfd, sec);
+		    name = bfd_section_name (sec);
 		}
 	      (*info->callbacks->reloc_overflow)
 		(info,
diff --git a/bfd/elf32-d10v.c b/bfd/elf32-d10v.c
index a03ce63286..bd07ad68b2 100644
--- a/bfd/elf32-d10v.c
+++ b/bfd/elf32-d10v.c
@@ -482,7 +482,7 @@ elf32_d10v_relocate_section (bfd *output_bfd,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
diff --git a/bfd/elf32-epiphany.c b/bfd/elf32-epiphany.c
index 4bd417d6f5..c45f0b3504 100644
--- a/bfd/elf32-epiphany.c
+++ b/bfd/elf32-epiphany.c
@@ -518,7 +518,7 @@ epiphany_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c
index 6a13767c7a..0d299c64b6 100644
--- a/bfd/elf32-fr30.c
+++ b/bfd/elf32-fr30.c
@@ -549,7 +549,7 @@ fr30_elf_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index 8c6a97dea2..7770687f55 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -2736,7 +2736,7 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
 	  if (name == NULL || name[0] == 0)
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
       else
 	{
@@ -3566,8 +3566,7 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 		    && (!h || FRVFDPIC_FUNCDESC_LOCAL (info, h)))
 		  {
 		    addend += frvfdpic_got_section (info)->output_section->vma;
-		    if ((bfd_get_section_flags (output_bfd,
-						input_section->output_section)
+		    if ((bfd_section_flags (input_section->output_section)
 			 & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		      {
 			bfd_vma offset;
@@ -3597,8 +3596,7 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 						 picrel);
 		      }
 		  }
-		else if ((bfd_get_section_flags (output_bfd,
-						 input_section->output_section)
+		else if ((bfd_section_flags (input_section->output_section)
 			  & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    bfd_vma offset;
@@ -3691,8 +3689,7 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 		if (osec)
 		  addend += osec->output_section->vma;
 		if (IS_FDPIC (input_bfd)
-		    && (bfd_get_section_flags (output_bfd,
-					       input_section->output_section)
+		    && (bfd_section_flags (input_section->output_section)
 			& (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    if (_frvfdpic_osec_readonly_p (output_bfd,
@@ -3732,8 +3729,7 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	      }
 	    else
 	      {
-		if ((bfd_get_section_flags (output_bfd,
-					    input_section->output_section)
+		if ((bfd_section_flags (input_section->output_section)
 		     & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 		  {
 		    bfd_vma offset;
@@ -4192,7 +4188,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   elf_hash_table (info)->sgot = s;
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (bed->want_got_sym)
@@ -4230,14 +4226,14 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
 					      (flags | SEC_READONLY));
       elf_hash_table (info)->srelgot = s;
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
 
       /* Machine-specific.  */
       s = bfd_make_section_anyway_with_flags (abfd, ".rofixup",
 					      (flags | SEC_READONLY));
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
 
       frvfdpic_gotfixup_section (info) = s;
@@ -4285,7 +4281,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   /* FRV-specific: remember it.  */
   frvfdpic_plt_section (info) = s;
@@ -4305,7 +4301,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".rel.plt",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   /* FRV-specific: remember it.  */
   frvfdpic_pltrel_section (info) = s;
@@ -4373,7 +4369,7 @@ elf32_frvfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						   ? ".rela.bss" : ".rel.bss"),
 						  flags | SEC_READONLY);
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	    return FALSE;
 	}
     }
@@ -6137,7 +6133,7 @@ elf32_frv_check_relocs (bfd *abfd,
 
 	case R_FRV_FUNCDESC_VALUE:
 	  picrel->relocsfdv++;
-	  if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+	  if (bfd_section_flags (sec) & SEC_ALLOC)
 	    picrel->relocs32--;
 	  /* Fall through.  */
 
@@ -6146,7 +6142,7 @@ elf32_frv_check_relocs (bfd *abfd,
 	    break;
 
 	  picrel->sym = 1;
-	  if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+	  if (bfd_section_flags (sec) & SEC_ALLOC)
 	    picrel->relocs32++;
 	  break;
 
diff --git a/bfd/elf32-ft32.c b/bfd/elf32-ft32.c
index d67372429d..b8e69e5a24 100644
--- a/bfd/elf32-ft32.c
+++ b/bfd/elf32-ft32.c
@@ -389,7 +389,7 @@ ft32_elf_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c
index a2f06d5a92..ba7c8b2062 100644
--- a/bfd/elf32-h8300.c
+++ b/bfd/elf32-h8300.c
@@ -502,7 +502,7 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
index a61adbc3c8..f065449b15 100644
--- a/bfd/elf32-hppa.c
+++ b/bfd/elf32-hppa.c
@@ -2270,12 +2270,12 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	      /* Make space for the plt stub at the end of the .plt
 		 section.  We want this stub right at the end, up
 		 against the .got section.  */
-	      int gotalign = bfd_section_alignment (dynobj, htab->etab.sgot);
-	      int pltalign = bfd_section_alignment (dynobj, sec);
+	      int gotalign = bfd_section_alignment (htab->etab.sgot);
+	      int pltalign = bfd_section_alignment (sec);
 	      bfd_size_type mask;
 
 	      if (gotalign > pltalign)
-		(void) bfd_set_section_alignment (dynobj, sec, gotalign);
+		bfd_set_section_alignment (sec, gotalign);
 	      mask = ((bfd_size_type) 1 << gotalign) - 1;
 	      sec->size = (sec->size + sizeof (plt_stub) + mask) & ~mask;
 	    }
@@ -2284,7 +2284,7 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	       || sec == htab->etab.sdynbss
 	       || sec == htab->etab.sdynrelro)
 	;
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, sec), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (sec), ".rela"))
 	{
 	  if (sec->size != 0)
 	    {
@@ -4151,7 +4151,7 @@ elf32_hppa_relocate_section (bfd *output_bfd,
 		    if (sym_name == NULL)
 		      return FALSE;
 		    if (*sym_name == '\0')
-		      sym_name = bfd_section_name (input_bfd, sym_sec);
+		      sym_name = bfd_section_name (sym_sec);
 		    _bfd_error_handler
 		      (_("%pB:%s has both normal and TLS relocs"),
 		       input_bfd, sym_name);
@@ -4201,7 +4201,7 @@ elf32_hppa_relocate_section (bfd *output_bfd,
 	  if (sym_name == NULL)
 	    return FALSE;
 	  if (*sym_name == '\0')
-	    sym_name = bfd_section_name (input_bfd, sym_sec);
+	    sym_name = bfd_section_name (sym_sec);
 	}
 
       howto = elf_hppa_howto_table + r_type;
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index d7a61d7a48..9248ef5a41 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -1948,7 +1948,7 @@ elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   /* This is an ugly, but unfortunately necessary hack that is
      needed when producing EFI binaries on x86. It tells
@@ -3429,7 +3429,7 @@ check_relocation_error:
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
diff --git a/bfd/elf32-ip2k.c b/bfd/elf32-ip2k.c
index 43e7be63da..6e5131ff98 100644
--- a/bfd/elf32-ip2k.c
+++ b/bfd/elf32-ip2k.c
@@ -1435,7 +1435,7 @@ ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c
index 6e47027292..e95f1a56ea 100644
--- a/bfd/elf32-iq2000.c
+++ b/bfd/elf32-iq2000.c
@@ -625,7 +625,7 @@ iq2000_elf_relocate_section (bfd *		     output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, osec) : name;
+	  name = name == NULL ? bfd_section_name (osec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c
index 5233dbbb67..0601f1454b 100644
--- a/bfd/elf32-lm32.c
+++ b/bfd/elf32-lm32.c
@@ -195,8 +195,7 @@ create_rofixup_section (bfd *dynobj, struct bfd_link_info *info)
 					   | SEC_LINKER_CREATED
 					   | SEC_READONLY));
   if (lm32fdpic_fixup32_section (info) == NULL
-      || ! bfd_set_section_alignment (dynobj,
-				      lm32fdpic_fixup32_section (info), 2))
+      || !bfd_set_section_alignment (lm32fdpic_fixup32_section (info), 2))
     return FALSE;
 
   return TRUE;
@@ -821,7 +820,7 @@ lm32_elf_relocate_section (bfd *output_bfd,
 	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -1036,7 +1035,7 @@ lm32_elf_relocate_section (bfd *output_bfd,
 		  if ((!h) || (h && h->root.type != bfd_link_hash_undefweak))
 		    {
 		      /* Only create .rofixup entries for relocs in loadable sections.  */
-		      if ((bfd_get_section_flags (output_bfd, input_section->output_section)
+		      if ((bfd_section_flags (input_section->output_section)
 			  & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
 
 			{
@@ -1090,7 +1089,7 @@ lm32_elf_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -2120,7 +2119,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
 	    relocs = TRUE;
@@ -2255,7 +2254,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
 			  /* Don't generate entries for weak symbols.  */
 			  if (!h || (h && h->root.type != bfd_link_hash_undefweak))
 			    {
-			      if (!discarded_section (s) && !((bfd_get_section_flags (ibfd, s) & SEC_ALLOC) == 0))
+			      if (!discarded_section (s) && !((bfd_section_flags (s) & SEC_ALLOC) == 0))
 				{
 				  switch (ELF32_R_TYPE (internal_relocs->r_info))
 				    {
@@ -2277,7 +2276,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
 				  if (!strcmp (current->name, h->root.root.string))
 				    break;
 				}
-			      if (!current && !discarded_section (s) && (bfd_get_section_flags (ibfd, s) & SEC_ALLOC))
+			      if (!current && !discarded_section (s) && (bfd_section_flags (s) & SEC_ALLOC))
 				{
 				  /* Will this have an entry in the GOT.  */
 				  if (ELF32_R_TYPE (internal_relocs->r_info) == R_LM32_16_GOT)
@@ -2377,7 +2376,7 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   htab->root.splt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
 
   if (bed->want_plt_sym)
@@ -2408,7 +2407,7 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  flags | SEC_READONLY);
   htab->root.srelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (htab->root.sgot == NULL
@@ -2447,7 +2446,7 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						  flags | SEC_READONLY);
 	  htab->srelbss = s;
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c
index b12c788c0d..e3f03cc045 100644
--- a/bfd/elf32-m32c.c
+++ b/bfd/elf32-m32c.c
@@ -450,7 +450,7 @@ m32c_elf_relocate_section
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (sym->st_name == 0) ? bfd_section_name (input_bfd, sec) : name;
+	  name = sym->st_name == 0 ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -709,7 +709,7 @@ m32c_elf_check_relocs
 							 flags);
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
-		  || ! bfd_set_section_alignment (dynobj, splt, 1))
+		  || !bfd_set_section_alignment (splt, 1))
 		return FALSE;
 	    }
 
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c
index 2f182e782d..edd04b91d9 100644
--- a/bfd/elf32-m32r.c
+++ b/bfd/elf32-m32r.c
@@ -1322,7 +1322,7 @@ _bfd_m32r_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					asection *sec,
 					int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_M32R_SCOMMON;
       return TRUE;
@@ -1407,7 +1407,7 @@ m32r_elf_add_symbol_hook (bfd *abfd,
 						  flags);
 	  if (s == NULL)
 	    return FALSE;
-	  if (! bfd_set_section_alignment (abfd, s, 2))
+	  if (!bfd_set_section_alignment (s, 2))
 	    return FALSE;
 	}
 
@@ -1623,7 +1623,7 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   htab->root.splt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
 
   if (bed->want_plt_sym)
@@ -1654,7 +1654,7 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  flags | SEC_READONLY);
   htab->root.srelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (htab->root.sgot == NULL
@@ -1693,7 +1693,7 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						  flags | SEC_READONLY);
 	  htab->srelbss = s;
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
@@ -2234,7 +2234,7 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
 	    relocs = TRUE;
@@ -2954,7 +2954,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 		const char *name;
 
 		BFD_ASSERT (sec != NULL);
-		name = bfd_get_section_name (sec->owner, sec);
+		name = bfd_section_name (sec);
 
 		if (   strcmp (name, ".sdata") == 0
 		    || strcmp (name, ".sbss") == 0
@@ -3022,7 +3022,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (errmsg != NULL)
diff --git a/bfd/elf32-m68hc1x.c b/bfd/elf32-m68hc1x.c
index 6a996789b5..8739ca86c1 100644
--- a/bfd/elf32-m68hc1x.c
+++ b/bfd/elf32-m68hc1x.c
@@ -267,7 +267,7 @@ elf32_m68hc11_setup_section_lists (bfd *output_bfd, struct bfd_link_info *info)
 	   section != NULL;
 	   section = section->next)
 	{
-	  const char* name = bfd_get_section_name (input_bfd, section);
+	  const char *name = bfd_section_name (section);
 
 	  if (!strcmp (name, ".tramp"))
 	    htab->tramp_section = section;
@@ -1014,7 +1014,7 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       if (is_far && ELF32_R_TYPE (rel->r_info) == R_M68HC11_16)
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 177be5d1d3..559578d818 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -3104,7 +3104,7 @@ elf_m68k_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (strcmp (name, ".plt") == 0)
 	{
@@ -3938,7 +3938,7 @@ elf_m68k_relocate_section (bfd *output_bfd,
 		  name = (bfd_elf_string_from_elf_section
 			  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 		  if (name == NULL || *name == '\0')
-		    name = bfd_section_name (input_bfd, sec);
+		    name = bfd_section_name (sec);
 		}
 
 	      _bfd_error_handler
@@ -3973,7 +3973,7 @@ elf_m68k_relocate_section (bfd *output_bfd,
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c
index 7bca458508..3a58ff3038 100644
--- a/bfd/elf32-mcore.c
+++ b/bfd/elf32-mcore.c
@@ -536,7 +536,7 @@ mcore_elf_relocate_section (bfd * output_bfd,
 		      break;
 
 		    if (* name == '\0')
-		      name = bfd_section_name (input_bfd, sec);
+		      name = bfd_section_name (sec);
 		  }
 
 		(*info->callbacks->reloc_overflow)
diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c
index 414e6f394b..f46e3bcbe3 100644
--- a/bfd/elf32-mep.c
+++ b/bfd/elf32-mep.c
@@ -477,7 +477,7 @@ mep_elf_relocate_section
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c
index f68f9dca6f..e3df8c5684 100644
--- a/bfd/elf32-metag.c
+++ b/bfd/elf32-metag.c
@@ -1519,7 +1519,7 @@ elf_metag_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -2934,7 +2934,7 @@ elf_metag_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->etab.srelplt)
 	    relocs = TRUE;
diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c
index 8d1700bf0f..c187d83ee0 100644
--- a/bfd/elf32-microblaze.c
+++ b/bfd/elf32-microblaze.c
@@ -1071,7 +1071,7 @@ microblaze_elf_relocate_section (bfd *output_bfd,
 		/* Only relocate if the symbol is defined.  */
 		if (sec)
 		  {
-		    name = bfd_get_section_name (sec->owner, sec);
+		    name = bfd_section_name (sec);
 
 		    if (strcmp (name, ".sdata2") == 0
 			|| strcmp (name, ".sbss2") == 0)
@@ -1119,7 +1119,7 @@ microblaze_elf_relocate_section (bfd *output_bfd,
 		/* Only relocate if the symbol is defined.  */
 		if (sec)
 		  {
-		    name = bfd_get_section_name (sec->owner, sec);
+		    name = bfd_section_name (sec);
 
 		    if (strcmp (name, ".sdata") == 0
 			|| strcmp (name, ".sbss") == 0)
@@ -1608,7 +1608,7 @@ microblaze_elf_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (errmsg != NULL)
@@ -2766,7 +2766,7 @@ microblaze_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
   if (power_of_two > s->alignment_power)
     {
-      if (!bfd_set_section_alignment (s->owner, s, power_of_two))
+      if (!bfd_set_section_alignment (s, power_of_two))
 	return FALSE;
     }
 
@@ -3115,7 +3115,7 @@ microblaze_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (strncmp (name, ".rela", 5) == 0)
 	{
@@ -3501,7 +3501,7 @@ microblaze_elf_add_symbol_hook (bfd *abfd,
 	 put into .sbss.  */
       *secp = bfd_make_section_old_way (abfd, ".sbss");
       if (*secp == NULL
-	  || ! bfd_set_section_flags (abfd, *secp, SEC_IS_COMMON))
+	  || !bfd_set_section_flags (*secp, SEC_IS_COMMON))
 	return FALSE;
 
       *valp = sym->st_size;
diff --git a/bfd/elf32-moxie.c b/bfd/elf32-moxie.c
index 9834d8978f..9b6048f0c0 100644
--- a/bfd/elf32-moxie.c
+++ b/bfd/elf32-moxie.c
@@ -243,7 +243,7 @@ moxie_elf_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c
index fe5fd8ff8c..4dcc8d480d 100644
--- a/bfd/elf32-msp430.c
+++ b/bfd/elf32-msp430.c
@@ -1314,7 +1314,7 @@ elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	      (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL || * name == 0) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL || *name == 0 ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -1691,7 +1691,7 @@ msp430_elf_relax_delete_bytes (bfd * abfd, asection * sec, bfd_vma addr,
 
       name = bfd_elf_string_from_elf_section
 	(abfd, symtab_hdr->sh_link, isym->st_name);
-      name = (name == NULL || * name == 0) ? bfd_section_name (abfd, sec) : name;
+      name = name == NULL || *name == 0 ? bfd_section_name (sec) : name;
 
       if (isym->st_shndx != sec_shndx)
 	continue;
diff --git a/bfd/elf32-mt.c b/bfd/elf32-mt.c
index ca6aa13f19..d120d05482 100644
--- a/bfd/elf32-mt.c
+++ b/bfd/elf32-mt.c
@@ -346,7 +346,7 @@ mt_elf_relocate_section
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 27ffea2e69..013355a490 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -3723,11 +3723,11 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
   /* _bfd_elf_create_got_section will create it for us.  */
   ehtab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
   if (ehtab->srelgot == NULL
-      || !bfd_set_section_flags (dynobj, ehtab->srelgot,
+      || !bfd_set_section_flags (ehtab->srelgot,
 				 (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
 				  | SEC_IN_MEMORY | SEC_LINKER_CREATED
 				  | SEC_READONLY))
-      || !bfd_set_section_alignment (dynobj, ehtab->srelgot, 2))
+      || !bfd_set_section_alignment (ehtab->srelgot, 2))
     return FALSE;
 
   return TRUE;
@@ -3769,8 +3769,8 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section (abfd, ".plt");
   ehtab->splt = s;
   if (s == NULL
-      || !bfd_set_section_flags (abfd, s, pltflags)
-      || !bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_flags (s, pltflags)
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
 
   if (bed->want_plt_sym)
@@ -3798,8 +3798,8 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 			bed->default_use_rela_p ? ".rela.plt" : ".rel.plt");
   ehtab->srelplt = s;
   if (s == NULL
-      || !bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
-      || !bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_flags (s, flags | SEC_READONLY)
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (ehtab->sgot == NULL && !create_got_section (abfd, info))
@@ -3807,11 +3807,11 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 
   for (sec = abfd->sections; sec; sec = sec->next)
     {
-      secflags = bfd_get_section_flags (abfd, sec);
+      secflags = bfd_section_flags (sec);
       if ((secflags & (SEC_DATA | SEC_LINKER_CREATED))
 	  || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS))
 	continue;
-      secname = bfd_get_section_name (abfd, sec);
+      secname = bfd_section_name (sec);
       relname = (char *) bfd_malloc ((bfd_size_type) strlen (secname) + 6);
       strcpy (relname, ".rela");
       strcat (relname, secname);
@@ -3819,8 +3819,8 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 	continue;
       s = bfd_make_section (abfd, relname);
       if (s == NULL
-	  || !bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
-	  || !bfd_set_section_alignment (abfd, s, ptralign))
+	  || !bfd_set_section_flags (s, flags | SEC_READONLY)
+	  || !bfd_set_section_alignment (s, ptralign))
 	return FALSE;
     }
 
@@ -3835,7 +3835,7 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section (abfd, ".dynbss");
       htab->sdynbss = s;
       if (s == NULL
-	  || !bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED))
+	  || !bfd_set_section_flags (s, SEC_ALLOC | SEC_LINKER_CREATED))
 	return FALSE;
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
@@ -3854,8 +3854,8 @@ nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 				       ? ".rela.bss" : ".rel.bss"));
 	  htab->srelbss = s;
 	  if (s == NULL
-	      || !bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
-	      || !bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_flags (s, flags | SEC_READONLY)
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
@@ -4065,9 +4065,9 @@ nds32_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 
   /* Apply the required alignment.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > bfd_get_section_alignment (dynobj, s))
+  if (power_of_two > bfd_section_alignment (s))
     {
-      if (!bfd_set_section_alignment (dynobj, s, power_of_two))
+      if (!bfd_set_section_alignment (s, power_of_two))
 	return FALSE;
     }
 
@@ -4525,7 +4525,7 @@ nds32_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	{
 	  got_size += s->size;
 	}
-      else if (strncmp (bfd_get_section_name (dynobj, s), ".rela", 5) == 0)
+      else if (strncmp (bfd_section_name (s), ".rela", 5) == 0)
 	{
 	  if (s->size != 0 && s != elf_hash_table (info)->srelplt)
 	    relocs = TRUE;
@@ -5571,8 +5571,7 @@ nds32_elf_relocate_section (bfd *		   output_bfd ATTRIBUTE_UNUSED,
 		    return FALSE;
 
 		  BFD_ASSERT (strncmp (name, ".rela", 5) == 0
-			      && strcmp (bfd_get_section_name (input_bfd,
-							       input_section),
+			      && strcmp (bfd_section_name (input_section),
 					 name + 5) == 0);
 
 		  sreloc = bfd_get_section_by_name (dynobj, name);
@@ -6166,7 +6165,7 @@ check_reloc:
 	      name = bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name);
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (errmsg != NULL)
@@ -7390,7 +7389,7 @@ nds32_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 		    return FALSE;
 
 		  BFD_ASSERT (strncmp (name, ".rela", 5) == 0
-			      && strcmp (bfd_get_section_name (abfd, sec),
+			      && strcmp (bfd_section_name (sec),
 					 name + 5) == 0);
 
 		  sreloc = bfd_get_section_by_name (dynobj, name);
@@ -7404,8 +7403,8 @@ nds32_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 		      if ((sec->flags & SEC_ALLOC) != 0)
 			flags |= SEC_ALLOC | SEC_LOAD;
 		      if (sreloc == NULL
-			  || !bfd_set_section_flags (dynobj, sreloc, flags)
-			  || !bfd_set_section_alignment (dynobj, sreloc, 2))
+			  || !bfd_set_section_flags (sreloc, flags)
+			  || !bfd_set_section_alignment (sreloc, 2))
 			return FALSE;
 
 		      elf_section_type (sreloc) = SHT_RELA;
diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c
index 5d787eb2f4..698e4e5c2d 100644
--- a/bfd/elf32-nios2.c
+++ b/bfd/elf32-nios2.c
@@ -3846,7 +3846,7 @@ nios2_elf32_relocate_section (bfd *output_bfd,
 				  (input_bfd, symtab_hdr->sh_link,
 				   sym->st_name));
 			  if (name == NULL || *name == '\0')
-			    name = bfd_section_name (input_bfd, sec);
+			    name = bfd_section_name (sec);
 			}
 		      /* xgettext:c-format */
 		      format = _("unable to reach %s (at %#" PRIx64 ") from "
@@ -4484,7 +4484,7 @@ nios2_elf32_relocate_section (bfd *output_bfd,
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -4554,7 +4554,7 @@ static bfd_boolean
 nios2_elf32_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			   Elf_Internal_Shdr *hdr, asection *sec)
 {
-  register const char *name = bfd_get_section_name (abfd, sec);
+  const char *name = bfd_section_name (sec);
 
   if ((sec->flags & SEC_SMALL_DATA)
       || strcmp (name, ".sdata") == 0
@@ -4580,7 +4580,7 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
 
   /* In order for the two loads in .PLTresolve to share the same %hiadj,
      _GLOBAL_OFFSET_TABLE_ must be aligned to a 16-byte boundary.  */
-  if (!bfd_set_section_alignment (dynobj, htab->root.sgotplt, 4))
+  if (!bfd_set_section_alignment (htab->root.sgotplt, 4))
     return FALSE;
 
   /* The Nios II ABI specifies that GOT-relative relocations are relative
@@ -4616,7 +4616,7 @@ nios2_elf32_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
      same %hiadj, the start of the PLT (as well as the GOT) must be aligned
      to a 16-byte boundary.  This is because the addresses for these loads
      include the -(.plt+4) PIC correction.  */
-  return bfd_set_section_alignment (dynobj, htab->root.splt, 4);
+  return bfd_set_section_alignment (htab->root.splt, 4);
 }
 
 /* Implement elf_backend_copy_indirect_symbol:
@@ -5429,8 +5429,8 @@ nios2_elf32_adjust_dynamic_symbol (struct bfd_link_info *info,
 
   /* Align dynbss.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type)1 << align2);
-  if (align2 > bfd_get_section_alignment (dynobj, s)
-      && !bfd_set_section_alignment (dynobj, s, align2))
+  if (align2 > bfd_section_alignment (s)
+      && !bfd_set_section_alignment (s, align2))
     return FALSE;
 
   /* Define the symbol as being at this point in the section.  */
@@ -5853,7 +5853,7 @@ nios2_elf32_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (CONST_STRNEQ (name, ".rela"))
 	{
diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
index 0d1336ceac..4cf0b7cc36 100644
--- a/bfd/elf32-or1k.c
+++ b/bfd/elf32-or1k.c
@@ -1303,7 +1303,7 @@ or1k_elf_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -2064,8 +2064,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		      return FALSE;
 
 		    if (strncmp (name, ".rela", 5) != 0
-			|| strcmp (bfd_get_section_name (abfd, sec),
-				   name + 5) != 0)
+			|| strcmp (bfd_section_name (sec), name + 5) != 0)
 		      {
 			_bfd_error_handler
 			  /* xgettext:c-format */
@@ -2996,7 +2995,7 @@ or1k_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
 	    relocs = TRUE;
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 5e5834a70c..9765a33541 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -1329,14 +1329,14 @@ ppc_elf_section_from_shdr (bfd *abfd,
     return FALSE;
 
   newsect = hdr->bfd_section;
-  flags = bfd_get_section_flags (abfd, newsect);
+  flags = bfd_section_flags (newsect);
   if (hdr->sh_flags & SHF_EXCLUDE)
     flags |= SEC_EXCLUDE;
 
   if (hdr->sh_type == SHT_ORDERED)
     flags |= SEC_SORT_ENTRIES;
 
-  bfd_set_section_flags (abfd, newsect, flags);
+  bfd_set_section_flags (newsect, flags);
   return TRUE;
 }
 
@@ -1674,7 +1674,7 @@ ppc_elf_begin_write_processing (bfd *abfd, struct bfd_link_info *link_info)
       /* Set the output section size, if it exists.  */
       asec = bfd_get_section_by_name (abfd, APUINFO_SECTION_NAME);
 
-      if (asec && ! bfd_set_section_size (abfd, asec, 20 + num_entries * 4))
+      if (asec && !bfd_set_section_size (asec, 20 + num_entries * 4))
 	{
 	  ibfd = abfd;
 	  /* xgettext:c-format */
@@ -2337,7 +2337,7 @@ ppc_elf_create_got (bfd *abfd, struct bfd_link_info *info)
 	 executable.  */
       flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS
 			| SEC_IN_MEMORY | SEC_LINKER_CREATED);
-      if (!bfd_set_section_flags (abfd, htab->elf.sgot, flags))
+      if (!bfd_set_section_flags (htab->elf.sgot, flags))
 	return FALSE;
     }
 
@@ -2390,7 +2390,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
   if (p2align < htab->params->plt_stub_align)
     p2align = htab->params->plt_stub_align;
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, p2align))
+      || !bfd_set_section_alignment (s, p2align))
     return FALSE;
 
   if (!info->no_ld_generated_unwind_info)
@@ -2400,7 +2400,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".eh_frame", flags);
       htab->glink_eh_frame = s;
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
     }
 
@@ -2408,7 +2408,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".iplt", flags);
   htab->elf.iplt = s;
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 4))
+      || !bfd_set_section_alignment (s, 4))
     return FALSE;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_HAS_CONTENTS
@@ -2416,7 +2416,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.iplt", flags);
   htab->elf.irelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, 2))
+      || ! bfd_set_section_alignment (s, 2))
     return FALSE;
 
   /* Local plt entries.  */
@@ -2425,7 +2425,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
   htab->pltlocal = bfd_make_section_anyway_with_flags (abfd, ".branch_lt",
 						       flags);
   if (htab->pltlocal == NULL
-      || ! bfd_set_section_alignment (abfd, htab->pltlocal, 2))
+      || !bfd_set_section_alignment (htab->pltlocal, 2))
     return FALSE;
 
   if (bfd_link_pic (info))
@@ -2435,7 +2435,7 @@ ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
       htab->relpltlocal
 	= bfd_make_section_anyway_with_flags (abfd, ".rela.branch_lt", flags);
       if (htab->relpltlocal == NULL
-	  || ! bfd_set_section_alignment (abfd, htab->relpltlocal, 2))
+	  || !bfd_set_section_alignment (htab->relpltlocal, 2))
 	return FALSE;
     }
 
@@ -2487,7 +2487,7 @@ ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".rela.sbss", flags);
       htab->relsbss = s;
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
     }
 
@@ -2500,7 +2500,7 @@ ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   if (htab->plt_type == PLT_VXWORKS)
     /* The VxWorks PLT is a loaded section with contents.  */
     flags |= SEC_HAS_CONTENTS | SEC_LOAD | SEC_READONLY;
-  return bfd_set_section_flags (abfd, s, flags);
+  return bfd_set_section_flags (s, flags);
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -2739,7 +2739,7 @@ elf_allocate_pointer_linker_section (bfd *abfd,
   linker_section_ptr->lsect = lsect;
   *ptr_linker_section_ptr = linker_section_ptr;
 
-  if (!bfd_set_section_alignment (lsect->section->owner, lsect->section, 2))
+  if (!bfd_set_section_alignment (lsect->section, 2))
     return FALSE;
   linker_section_ptr->offset = lsect->section->size;
   lsect->section->size += 4;
@@ -4029,19 +4029,19 @@ ppc_elf_select_plt_layout (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* The new PLT is a loaded section.  */
       if (htab->elf.splt != NULL
-	  && !bfd_set_section_flags (htab->elf.dynobj, htab->elf.splt, flags))
+	  && !bfd_set_section_flags (htab->elf.splt, flags))
 	return -1;
 
       /* The new GOT is not executable.  */
       if (htab->elf.sgot != NULL
-	  && !bfd_set_section_flags (htab->elf.dynobj, htab->elf.sgot, flags))
+	  && !bfd_set_section_flags (htab->elf.sgot, flags))
 	return -1;
     }
   else
     {
       /* Stop an unused .glink section from affecting .text alignment.  */
       if (htab->glink != NULL
-	  && !bfd_set_section_alignment (htab->elf.dynobj, htab->glink, 0))
+	  && !bfd_set_section_alignment (htab->glink, 0))
 	return -1;
     }
   return htab->plt_type == PLT_NEW;
@@ -5823,8 +5823,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
 	{
 	  strip_section = (s->flags & SEC_KEEP) == 0;
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (htab->elf.dynobj, s),
-			     ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0)
 	    {
@@ -8394,10 +8393,8 @@ ppc_elf_relocate_section (bfd *output_bfd,
 	      unresolved_reloc = TRUE;
 	      break;
 	    }
-	  BFD_ASSERT (strcmp (bfd_get_section_name (sec->owner, sec),
-			      ".got") == 0
-		      || strcmp (bfd_get_section_name (sec->owner, sec),
-				 ".cgot") == 0);
+	  BFD_ASSERT (strcmp (bfd_section_name (sec), ".got") == 0
+		      || strcmp (bfd_section_name (sec), ".cgot") == 0);
 
 	  addend -= sec->output_section->vma + sec->output_offset + 0x8000;
 	  break;
@@ -8512,7 +8509,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
 	      }
 	    addend -= SYM_VAL (sda);
 
-	    name = bfd_get_section_name (output_bfd, sec->output_section);
+	    name = bfd_section_name (sec->output_section);
 	    if (!(strcmp (name, ".sdata") == 0
 		  || strcmp (name, ".sbss") == 0))
 	      {
@@ -8543,7 +8540,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
 	      }
 	    addend -= SYM_VAL (sda);
 
-	    name = bfd_get_section_name (output_bfd, sec->output_section);
+	    name = bfd_section_name (sec->output_section);
 	    if (!(strcmp (name, ".sdata2") == 0
 		  || strcmp (name, ".sbss2") == 0))
 	      {
@@ -8618,7 +8615,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
 		break;
 	      }
 
-	    name = bfd_get_section_name (output_bfd, sec->output_section);
+	    name = bfd_section_name (sec->output_section);
 	    if (strcmp (name, ".sdata") == 0
 		|| strcmp (name, ".sbss") == 0)
 	      {
@@ -8725,7 +8722,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
 		break;
 	      }
 
-	    name = bfd_get_section_name (output_bfd, sec->output_section);
+	    name = bfd_section_name (sec->output_section);
 	    if (strcmp (name, ".sdata") == 0
 		|| strcmp (name, ".sbss") == 0)
 	      sda = htab->sdata[0].sym;
diff --git a/bfd/elf32-pru.c b/bfd/elf32-pru.c
index d9be74f916..054f1650f2 100644
--- a/bfd/elf32-pru.c
+++ b/bfd/elf32-pru.c
@@ -905,7 +905,7 @@ pru_elf32_relocate_section (bfd *output_bfd,
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c
index 8fa7ea30be..ba95515f7d 100644
--- a/bfd/elf32-rl78.c
+++ b/bfd/elf32-rl78.c
@@ -726,7 +726,7 @@ rl78_elf_relocate_section
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (sym->st_name == 0) ? bfd_section_name (input_bfd, sec) : name;
+	  name = sym->st_name == 0 ? bfd_section_name (sec) : name;
 	}
       else
 	{
@@ -1349,7 +1349,7 @@ rl78_elf_check_relocs
 							 flags);
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
-		  || ! bfd_set_section_alignment (dynobj, splt, 1))
+		  || !bfd_set_section_alignment (splt, 1))
 		return FALSE;
 	    }
 
diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c
index e130784bc8..7978244f1e 100644
--- a/bfd/elf32-rx.c
+++ b/bfd/elf32-rx.c
@@ -543,7 +543,7 @@ rx_elf_relocate_section
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (sym->st_name == 0) ? bfd_section_name (input_bfd, sec) : name;
+	  name = sym->st_name == 0 ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 7bdccdbef9..7e22d9666a 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -2003,7 +2003,7 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0)
 	    relocs = TRUE;
@@ -3254,7 +3254,7 @@ elf_s390_relocate_section (bfd *output_bfd,
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
diff --git a/bfd/elf32-score.c b/bfd/elf32-score.c
index 1bbf64fe6d..3d499ca071 100644
--- a/bfd/elf32-score.c
+++ b/bfd/elf32-score.c
@@ -1257,8 +1257,8 @@ score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
 						    | SEC_LINKER_CREATED
 						    | SEC_READONLY));
       if (sreloc == NULL
-	  || ! bfd_set_section_alignment (dynobj, sreloc,
-					  SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
+	  || !bfd_set_section_alignment (sreloc,
+					 SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
 	return NULL;
     }
   return sreloc;
@@ -1431,7 +1431,7 @@ score_elf_create_got_section (bfd *abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   elf_hash_table (info)->sgot = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, 4))
+      || !bfd_set_section_alignment (s, 4))
     return FALSE;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_.  We don't do this in the
@@ -3070,7 +3070,7 @@ s3_bfd_score_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					   asection *sec,
 					   int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_SCORE_SCOMMON;
       return TRUE;
@@ -3283,7 +3283,7 @@ s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (CONST_STRNEQ (name, ".rel"))
 	{
@@ -3296,8 +3296,7 @@ s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 		 the linker now does not create empty output sections.  */
 	      if (s->output_section != NULL
 		  && strcmp (name,
-			     bfd_get_section_name (s->output_section->owner,
-						   s->output_section)) == 0)
+			     bfd_section_name (s->output_section)) == 0)
 		s->flags |= SEC_EXCLUDE;
 	    }
 	  else
@@ -3311,7 +3310,7 @@ s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 		 assert a DT_TEXTREL entry rather than testing whether
 		 there exists a relocation to a read only section or
 		 not.  */
-	      outname = bfd_get_section_name (output_bfd, s->output_section);
+	      outname = bfd_section_name (s->output_section);
 	      target = bfd_get_section_by_name (output_bfd, outname + 4);
 	      if ((target != NULL
 		   && (target->flags & SEC_READONLY) != 0
@@ -3424,7 +3423,7 @@ s3_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_get_linker_section (abfd, ".dynamic");
   if (s != NULL)
     {
-      if (!bfd_set_section_flags (abfd, s, flags))
+      if (!bfd_set_section_flags (s, flags))
 	return FALSE;
     }
 
@@ -3441,7 +3440,7 @@ s3_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
 					      flags | SEC_CODE);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 
 	return FALSE;
     }
@@ -3709,7 +3708,7 @@ s3_bfd_score_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".got") == 0
       || strcmp (name, ".srdata") == 0
@@ -3732,7 +3731,7 @@ s3_bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Sh
 {
   if (hdr->bfd_section != NULL)
     {
-      const char *name = bfd_get_section_name (abfd, hdr->bfd_section);
+      const char *name = bfd_section_name (hdr->bfd_section);
 
       if (strcmp (name, ".sdata") == 0)
 	{
diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c
index 51a5fb106d..e625435ff5 100644
--- a/bfd/elf32-score7.c
+++ b/bfd/elf32-score7.c
@@ -1114,8 +1114,8 @@ score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
 						    | SEC_LINKER_CREATED
 						    | SEC_READONLY));
       if (sreloc == NULL
-	  || ! bfd_set_section_alignment (dynobj, sreloc,
-					  SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
+	  || !bfd_set_section_alignment (sreloc,
+					 SCORE_ELF_LOG_FILE_ALIGN (dynobj)))
 	return NULL;
     }
   return sreloc;
@@ -1289,7 +1289,7 @@ score_elf_create_got_section (bfd *abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   elf_hash_table (info)->sgot = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, 4))
+      || !bfd_set_section_alignment (s, 4))
     return FALSE;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_.  We don't do this in the
@@ -2875,7 +2875,7 @@ s7_bfd_score_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					 asection *sec,
 					 int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_SCORE_SCOMMON;
       return TRUE;
@@ -3091,7 +3091,7 @@ s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (CONST_STRNEQ (name, ".rel"))
 	{
@@ -3104,8 +3104,7 @@ s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 		 the linker now does not create empty output sections.  */
 	      if (s->output_section != NULL
 		  && strcmp (name,
-			     bfd_get_section_name (s->output_section->owner,
-						   s->output_section)) == 0)
+			     bfd_section_name (s->output_section)) == 0)
 		s->flags |= SEC_EXCLUDE;
 	    }
 	  else
@@ -3119,7 +3118,7 @@ s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
 		 assert a DT_TEXTREL entry rather than testing whether
 		 there exists a relocation to a read only section or
 		 not.  */
-	      outname = bfd_get_section_name (output_bfd, s->output_section);
+	      outname = bfd_section_name (s->output_section);
 	      target = bfd_get_section_by_name (output_bfd, outname + 4);
 	      if ((target != NULL
 		   && (target->flags & SEC_READONLY) != 0
@@ -3232,7 +3231,7 @@ s7_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_get_linker_section (abfd, ".dynamic");
   if (s != NULL)
     {
-      if (!bfd_set_section_flags (abfd, s, flags))
+      if (!bfd_set_section_flags (s, flags))
 	return FALSE;
     }
 
@@ -3249,7 +3248,7 @@ s7_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, SCORE_ELF_STUB_SECTION_NAME,
 					      flags | SEC_CODE);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 
 	return FALSE;
     }
@@ -3520,7 +3519,7 @@ s7_bfd_score_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".got") == 0
       || strcmp (name, ".srdata") == 0
@@ -3544,7 +3543,7 @@ s7_bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Sh
 {
   if (hdr->bfd_section != NULL)
     {
-      const char *name = bfd_get_section_name (abfd, hdr->bfd_section);
+      const char *name = bfd_section_name (hdr->bfd_section);
 
       if (strcmp (name, ".sdata") == 0)
 	{
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 91900b8bea..c572f709f2 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -2324,7 +2324,7 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
 							 | SEC_IN_MEMORY
 							 | SEC_LINKER_CREATED));
   if (htab->sfuncdesc == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->sfuncdesc, 2))
+      || !bfd_set_section_alignment (htab->sfuncdesc, 2))
     return FALSE;
 
   htab->srelfuncdesc = bfd_make_section_anyway_with_flags (dynobj,
@@ -2335,7 +2335,7 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
 							    | SEC_LINKER_CREATED
 							    | SEC_READONLY));
   if (htab->srelfuncdesc == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->srelfuncdesc, 2))
+      || !bfd_set_section_alignment (htab->srelfuncdesc, 2))
     return FALSE;
 
   /* Also create .rofixup.  */
@@ -2346,7 +2346,7 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
 							| SEC_LINKER_CREATED
 							| SEC_READONLY));
   if (htab->srofixup == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->srofixup, 2))
+      || !bfd_set_section_alignment (htab->srofixup, 2))
     return FALSE;
 
   return TRUE;
@@ -2401,7 +2401,7 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   htab->root.splt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
 
   if (bed->want_plt_sym)
@@ -2433,7 +2433,7 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  flags | SEC_READONLY);
   htab->root.srelplt = s;
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, ptralign))
+      || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
   if (htab->root.sgot == NULL
@@ -2473,7 +2473,7 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						  flags | SEC_READONLY);
 	  htab->srelbss = s;
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, ptralign))
+	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
@@ -3211,7 +3211,7 @@ sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt && s != htab->srelplt2)
 	    relocs = TRUE;
@@ -3619,7 +3619,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	  symname = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
 	  if (symname == NULL || *symname == '\0')
-	    symname = bfd_section_name (input_bfd, sec);
+	    symname = bfd_section_name (sec);
 
 	  relocation = (sec->output_section->vma
 			+ sec->output_offset
@@ -5170,7 +5170,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 		    if (name == NULL)
 		      return FALSE;
 		    if (*name == '\0')
-		      name = bfd_section_name (input_bfd, sec);
+		      name = bfd_section_name (sec);
 		  }
 		(*info->callbacks->reloc_overflow)
 		  (info, (h ? &h->root : NULL), name, howto->name,
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index f66e37cd00..e75d999fd5 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -585,7 +585,7 @@ spu_elf_create_sections (struct bfd_link_info *info)
       flags = SEC_LOAD | SEC_READONLY | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
       s = bfd_make_section_anyway_with_flags (ibfd, SPU_PTNOTE_SPUNAME, flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (ibfd, s, 4))
+	  || !bfd_set_section_alignment (s, 4))
 	return FALSE;
       /* Because we didn't set SEC_LINKER_CREATED we need to set the
 	 proper section type.  */
@@ -595,7 +595,7 @@ spu_elf_create_sections (struct bfd_link_info *info)
       size = 12 + ((sizeof (SPU_PLUGIN_NAME) + 3) & -4);
       size += (name_len + 3) & -4;
 
-      if (!bfd_set_section_size (ibfd, s, size))
+      if (!bfd_set_section_size (s, size))
 	return FALSE;
 
       data = bfd_zalloc (ibfd, size);
@@ -622,7 +622,7 @@ spu_elf_create_sections (struct bfd_link_info *info)
       flags = (SEC_LOAD | SEC_ALLOC | SEC_READONLY | SEC_HAS_CONTENTS
 	       | SEC_IN_MEMORY | SEC_LINKER_CREATED);
       s = bfd_make_section_anyway_with_flags (ibfd, ".fixup", flags);
-      if (s == NULL || !bfd_set_section_alignment (ibfd, s, 2))
+      if (s == NULL || !bfd_set_section_alignment (s, 2))
 	return FALSE;
       htab->sfixup = s;
     }
@@ -1694,7 +1694,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
       stub = bfd_make_section_anyway_with_flags (ibfd, ".stub", flags);
       htab->stub_sec[0] = stub;
       if (stub == NULL
-	  || !bfd_set_section_alignment (ibfd, stub,
+	  || !bfd_set_section_alignment (stub,
 					 ovl_stub_size_log2 (htab->params)))
 	return 0;
       stub->size = htab->stub_count[0] * ovl_stub_size (htab->params);
@@ -1709,7 +1709,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
 	  stub = bfd_make_section_anyway_with_flags (ibfd, ".stub", flags);
 	  htab->stub_sec[ovl] = stub;
 	  if (stub == NULL
-	      || !bfd_set_section_alignment (ibfd, stub,
+	      || !bfd_set_section_alignment (stub,
 					     ovl_stub_size_log2 (htab->params)))
 	    return 0;
 	  stub->size = htab->stub_count[ovl] * ovl_stub_size (htab->params);
@@ -1727,7 +1727,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
       flags = SEC_ALLOC;
       htab->ovtab = bfd_make_section_anyway_with_flags (ibfd, ".ovtab", flags);
       if (htab->ovtab == NULL
-	  || !bfd_set_section_alignment (ibfd, htab->ovtab, 4))
+	  || !bfd_set_section_alignment (htab->ovtab, 4))
 	return 0;
 
       htab->ovtab->size = (16 + 16 + (16 << htab->fromelem_size_log2))
@@ -1736,7 +1736,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
       flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
       htab->init = bfd_make_section_anyway_with_flags (ibfd, ".ovini", flags);
       if (htab->init == NULL
-	  || !bfd_set_section_alignment (ibfd, htab->init, 4))
+	  || !bfd_set_section_alignment (htab->init, 4))
 	return 0;
 
       htab->init->size = 16;
@@ -1761,7 +1761,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
       flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
       htab->ovtab = bfd_make_section_anyway_with_flags (ibfd, ".ovtab", flags);
       if (htab->ovtab == NULL
-	  || !bfd_set_section_alignment (ibfd, htab->ovtab, 4))
+	  || !bfd_set_section_alignment (htab->ovtab, 4))
 	return 0;
 
       htab->ovtab->size = htab->num_overlays * 16 + 16 + htab->num_buf * 4;
@@ -1769,7 +1769,7 @@ spu_elf_size_stubs (struct bfd_link_info *info)
 
   htab->toe = bfd_make_section_anyway_with_flags (ibfd, ".toe", SEC_ALLOC);
   if (htab->toe == NULL
-      || !bfd_set_section_alignment (ibfd, htab->toe, 4))
+      || !bfd_set_section_alignment (htab->toe, 4))
     return 0;
   htab->toe->size = 16;
 
@@ -5049,7 +5049,7 @@ spu_elf_relocate_section (bfd *output_bfd,
 	    (_("%pB(%s+%#" PRIx64 "): "
 	       "unresolvable %s relocation against symbol `%s'"),
 	     input_bfd,
-	     bfd_get_section_name (input_bfd, input_section),
+	     bfd_section_name (input_section),
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     sym_name);
@@ -5436,7 +5436,7 @@ spu_elf_modify_program_headers (bfd *abfd, struct bfd_link_info *info)
 }
 
 bfd_boolean
-spu_elf_size_sections (bfd * output_bfd, struct bfd_link_info *info)
+spu_elf_size_sections (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
   if (htab->params->emit_fixups)
@@ -5493,7 +5493,7 @@ spu_elf_size_sections (bfd * output_bfd, struct bfd_link_info *info)
 
       /* We always have a NULL fixup as a sentinel */
       size = (fixup_count + 1) * FIXUP_RECORD_SIZE;
-      if (!bfd_set_section_size (output_bfd, sfixup, size))
+      if (!bfd_set_section_size (sfixup, size))
 	return FALSE;
       sfixup->contents = (bfd_byte *) bfd_zalloc (info->input_bfds, size);
       if (sfixup->contents == NULL)
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c
index 87ec8475a8..258349cfb7 100644
--- a/bfd/elf32-tic6x.c
+++ b/bfd/elf32-tic6x.c
@@ -1684,8 +1684,8 @@ elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->dsbt = bfd_make_section_anyway_with_flags (dynobj, ".dsbt",
 						   flags);
   if (htab->dsbt == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->dsbt, 2)
-      || ! bfd_set_section_alignment (dynobj, htab->elf.splt, 5))
+      || !bfd_set_section_alignment (htab->dsbt, 2)
+      || !bfd_set_section_alignment (htab->elf.splt, 5))
     return FALSE;
 
   return TRUE;
@@ -1992,7 +1992,7 @@ elf32_tic6x_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char * name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (is_tic6x_elf_unwind_section_name (name))
     {
@@ -2683,7 +2683,7 @@ elf32_tic6x_relocate_section (bfd *output_bfd,
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch (r)
@@ -3016,7 +3016,7 @@ elf32_tic6x_add_symbol_hook (bfd *abfd,
       *secp = bfd_make_section_old_way (abfd, ".scommon");
       (*secp)->flags |= SEC_IS_COMMON;
       *valp = sym->st_size;
-      (void) bfd_set_section_alignment (abfd, *secp, bfd_log2 (sym->st_value));
+      bfd_set_section_alignment (*secp, bfd_log2 (sym->st_value));
       break;
     }
 
@@ -3072,7 +3072,7 @@ elf32_tic6x_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 				      asection *sec,
 				      int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_TIC6X_SCOMMON;
       return TRUE;
@@ -3385,7 +3385,7 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 	  if (s == htab->elf.splt && s->size > 0)
 	    s->size = (s->size + 31) & ~(bfd_vma)31;
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0
 	      && s != htab->elf.srelplt)
@@ -3992,10 +3992,10 @@ elf32_tic6x_adjust_exidx_size (asection *exidx_sec, int adjust)
   if (!exidx_sec->rawsize)
     exidx_sec->rawsize = exidx_sec->size;
 
-  bfd_set_section_size (exidx_sec->owner, exidx_sec, exidx_sec->size + adjust);
+  bfd_set_section_size (exidx_sec, exidx_sec->size + adjust);
   out_sec = exidx_sec->output_section;
   /* Adjust size of output section.  */
-  bfd_set_section_size (out_sec->owner, out_sec, out_sec->size +adjust);
+  bfd_set_section_size (out_sec, out_sec->size +adjust);
 }
 
 /* Insert an EXIDX_CANTUNWIND marker at the end of a section.  */
diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c
index 832561d260..249b3aaf5b 100644
--- a/bfd/elf32-tilepro.c
+++ b/bfd/elf32-tilepro.c
@@ -1229,13 +1229,13 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 				   (bed->dynamic_sec_flags
 				    | SEC_READONLY));
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->sgot = s;
 
@@ -1246,8 +1246,7 @@ tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
     {
       s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->sgotplt = s;
 
@@ -2754,7 +2753,7 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       switch (r_type)
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 74e1546321..21df3c8b9a 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -177,7 +177,7 @@ v850_elf_check_relocs (bfd *abfd,
 
 	  if (h && h->root.type == bfd_link_hash_common
 	      && h->root.u.c.p
-	      && !strcmp (bfd_get_section_name (abfd, h->root.u.c.p->section), "COMMON"))
+	      && !strcmp (bfd_section_name (h->root.u.c.p->section), "COMMON"))
 	    {
 	      asection * section;
 
@@ -2269,7 +2269,7 @@ v850_elf_relocate_section (bfd *output_bfd,
 	      name = (bfd_elf_string_from_elf_section
 		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  switch ((int) r)
@@ -2372,11 +2372,11 @@ v850_elf_make_note_section (bfd * abfd)
   if (s == NULL)
     return NULL;
 
-  if (!bfd_set_section_alignment (abfd, s, 2))
+  if (!bfd_set_section_alignment (s, 2))
     return NULL;
 
   /* Allocate space for all known notes.  */
-  if (!bfd_set_section_size (abfd, s, NUM_V850_NOTES * SIZEOF_V850_NOTE))
+  if (!bfd_set_section_size (s, NUM_V850_NOTES * SIZEOF_V850_NOTE))
     return NULL;
 
   data = bfd_zalloc (abfd, NUM_V850_NOTES * SIZEOF_V850_NOTE);
@@ -2443,7 +2443,7 @@ v850_elf_copy_notes (bfd *ibfd, bfd *obfd)
   if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) == NULL)
     return;
 
-  if (bfd_section_size (ibfd, inotes) == bfd_section_size (obfd, onotes))
+  if (bfd_section_size (inotes) == bfd_section_size (onotes))
     {
       bfd_byte * icont;
       bfd_byte * ocont;
@@ -2457,7 +2457,7 @@ v850_elf_copy_notes (bfd *ibfd, bfd *obfd)
 	return;
 
       /* Copy/overwrite notes from the input to the output.  */
-      memcpy (ocont, icont, bfd_section_size (obfd, onotes));
+      memcpy (ocont, icont, bfd_section_size (onotes));
     }
 }
 
@@ -2490,7 +2490,7 @@ v850_elf_merge_notes (bfd * ibfd, bfd *obfd)
       bfd_byte * icont;
       bfd_byte * ocont;
 
-      BFD_ASSERT (bfd_section_size (ibfd, inotes) == bfd_section_size (obfd, onotes));
+      BFD_ASSERT (bfd_section_size (inotes) == bfd_section_size (onotes));
 
       if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL)
 	BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont));
@@ -2672,7 +2672,7 @@ v850_elf_print_notes (bfd * abfd, FILE * file)
   if (notes == NULL || notes->contents == NULL)
     return;
 
-  BFD_ASSERT (bfd_section_size (abfd, notes) == NUM_V850_NOTES * SIZEOF_V850_NOTE);
+  BFD_ASSERT (bfd_section_size (notes) == NUM_V850_NOTES * SIZEOF_V850_NOTE);
 
   for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
     print_v850_note (abfd, file, notes->contents, id);
@@ -2946,11 +2946,11 @@ v850_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 				   asection *sec,
 				   int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     *retval = SHN_V850_SCOMMON;
-  else if (strcmp (bfd_get_section_name (abfd, sec), ".tcommon") == 0)
+  else if (strcmp (bfd_section_name (sec), ".tcommon") == 0)
     *retval = SHN_V850_TCOMMON;
-  else if (strcmp (bfd_get_section_name (abfd, sec), ".zcommon") == 0)
+  else if (strcmp (bfd_section_name (sec), ".zcommon") == 0)
     *retval = SHN_V850_ZCOMMON;
   else
     return FALSE;
@@ -3162,10 +3162,9 @@ v850_elf_section_from_shdr (bfd *abfd,
     case SHT_V850_SCOMMON:
     case SHT_V850_TCOMMON:
     case SHT_V850_ZCOMMON:
-      if (! bfd_set_section_flags (abfd, hdr->bfd_section,
-				   (bfd_get_section_flags (abfd,
-							   hdr->bfd_section)
-				    | SEC_IS_COMMON)))
+      if (!bfd_set_section_flags (hdr->bfd_section,
+				  (bfd_section_flags (hdr->bfd_section)
+				   | SEC_IS_COMMON)))
 	return FALSE;
     }
 
@@ -3182,7 +3181,7 @@ v850_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char * name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".scommon") == 0)
     hdr->sh_type = SHT_V850_SCOMMON;
diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c
index 2af7050707..80162d87cb 100644
--- a/bfd/elf32-vax.c
+++ b/bfd/elf32-vax.c
@@ -1069,7 +1069,7 @@ elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (strcmp (name, ".plt") == 0)
 	{
@@ -1094,8 +1094,7 @@ elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 		     section, then we probably need a DT_TEXTREL
 		     entry.  .rela.plt is actually associated with
 		     .got.plt, which is never readonly.  */
-		  outname = bfd_get_section_name (output_bfd,
-						  s->output_section);
+		  outname = bfd_section_name (s->output_section);
 		  target = bfd_get_section_by_name (output_bfd, outname + 5);
 		  if (target != NULL
 		      && (target->flags & SEC_READONLY) != 0
@@ -1633,7 +1632,7 @@ elf_vax_relocate_section (bfd *output_bfd,
 		    if (name == NULL)
 		      return FALSE;
 		    if (*name == '\0')
-		      name = bfd_section_name (input_bfd, sec);
+		      name = bfd_section_name (sec);
 		  }
 		info->callbacks->reloc_overflow
 		  (info, (h ? &h->root : NULL), name, howto->name,
diff --git a/bfd/elf32-visium.c b/bfd/elf32-visium.c
index 76271ce7cd..35e4b84ed1 100644
--- a/bfd/elf32-visium.c
+++ b/bfd/elf32-visium.c
@@ -599,7 +599,7 @@ visium_elf_relocate_section (bfd *output_bfd,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf32-xstormy16.c b/bfd/elf32-xstormy16.c
index 05a9326685..ef106b3f92 100644
--- a/bfd/elf32-xstormy16.c
+++ b/bfd/elf32-xstormy16.c
@@ -471,7 +471,7 @@ xstormy16_elf_check_relocs (bfd *abfd,
 							 flags);
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
-		  || ! bfd_set_section_alignment (dynobj, splt, 1))
+		  || !bfd_set_section_alignment (splt, 1))
 		return FALSE;
 	    }
 
@@ -834,7 +834,7 @@ xstormy16_elf_relocate_section (bfd *			output_bfd ATTRIBUTE_UNUSED,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       switch (ELF32_R_TYPE (rel->r_info))
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index 8a7bf7e96f..306b18b4f2 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -1320,21 +1320,21 @@ elf_xtensa_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
 
   /* Mark the ".got.plt" section READONLY.  */
   if (htab->elf.sgotplt == NULL
-      || ! bfd_set_section_flags (dynobj, htab->elf.sgotplt, flags))
+      || !bfd_set_section_flags (htab->elf.sgotplt, flags))
     return FALSE;
 
   /* Create ".got.loc" (literal tables for use by dynamic linker).  */
   htab->sgotloc = bfd_make_section_anyway_with_flags (dynobj, ".got.loc",
 						      flags);
   if (htab->sgotloc == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->sgotloc, 2))
+      || !bfd_set_section_alignment (htab->sgotloc, 2))
     return FALSE;
 
   /* Create ".xt.lit.plt" (literal table for ".got.plt*").  */
   htab->spltlittbl = bfd_make_section_anyway_with_flags (dynobj, ".xt.lit.plt",
 							 noalloc_flags);
   if (htab->spltlittbl == NULL
-      || ! bfd_set_section_alignment (dynobj, htab->spltlittbl, 2))
+      || !bfd_set_section_alignment (htab->spltlittbl, 2))
     return FALSE;
 
   return TRUE;
@@ -1366,14 +1366,14 @@ add_extra_plt_sections (struct bfd_link_info *info, int count)
       sprintf (sname, ".plt.%u", chunk);
       s = bfd_make_section_anyway_with_flags (dynobj, sname, flags | SEC_CODE);
       if (s == NULL
-	  || ! bfd_set_section_alignment (dynobj, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
 
       sname = (char *) bfd_malloc (14);
       sprintf (sname, ".got.plt.%u", chunk);
       s = bfd_make_section_anyway_with_flags (dynobj, sname, flags);
       if (s == NULL
-	  || ! bfd_set_section_alignment (dynobj, s, 2))
+	  || !bfd_set_section_alignment (s, 2))
 	return FALSE;
     }
 
@@ -1626,7 +1626,7 @@ elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (CONST_STRNEQ (name, ".rela"))
 	{
@@ -2687,7 +2687,7 @@ elf_xtensa_relocate_section (bfd *output_bfd,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       if (r_symndx != STN_UNDEF
@@ -11244,7 +11244,7 @@ xtensa_make_property_section (asection *sec, const char *base_name)
   if (! prop_sec)
     {
       flagword flags = (SEC_RELOC | SEC_HAS_CONTENTS | SEC_READONLY);
-      flags |= (bfd_get_section_flags (sec->owner, sec)
+      flags |= (bfd_section_flags (sec)
 		& (SEC_LINK_ONCE | SEC_LINK_DUPLICATES));
 
       prop_sec = bfd_make_section_anyway_with_flags
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 490860123c..84ec83b74a 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -1168,9 +1168,8 @@ elf64_alpha_section_from_shdr (bfd *abfd,
 
   if (hdr->sh_type == SHT_ALPHA_DEBUG)
     {
-      if (! bfd_set_section_flags (abfd, newsect,
-				   (bfd_get_section_flags (abfd, newsect)
-				    | SEC_DEBUGGING)))
+      if (!bfd_set_section_flags (newsect,
+				  bfd_section_flags (newsect) | SEC_DEBUGGING))
 	return FALSE;
     }
 
@@ -1196,7 +1195,7 @@ elf64_alpha_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
   register const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".mdebug") == 0)
     {
@@ -1270,7 +1269,7 @@ elf64_alpha_create_got_section (bfd *abfd,
 	   | SEC_LINKER_CREATED);
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
 
   alpha_elf_tdata (abfd)->got = s;
@@ -1302,7 +1301,7 @@ elf64_alpha_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 	   | (elf64_alpha_use_secureplt ? SEC_READONLY : 0));
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", flags);
   elf_hash_table (info)->splt = s;
-  if (s == NULL || ! bfd_set_section_alignment (abfd, s, 4))
+  if (s == NULL || ! bfd_set_section_alignment (s, 4))
     return FALSE;
 
   /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
@@ -1317,7 +1316,7 @@ elf64_alpha_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 	   | SEC_LINKER_CREATED | SEC_READONLY);
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.plt", flags);
   elf_hash_table (info)->srelplt = s;
-  if (s == NULL || ! bfd_set_section_alignment (abfd, s, 3))
+  if (s == NULL || ! bfd_set_section_alignment (s, 3))
     return FALSE;
 
   if (elf64_alpha_use_secureplt)
@@ -1325,7 +1324,7 @@ elf64_alpha_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       flags = SEC_ALLOC | SEC_LINKER_CREATED;
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       elf_hash_table (info)->sgotplt = s;
-      if (s == NULL || ! bfd_set_section_alignment (abfd, s, 3))
+      if (s == NULL || ! bfd_set_section_alignment (s, 3))
 	return FALSE;
     }
 
@@ -1343,7 +1342,7 @@ elf64_alpha_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.got", flags);
   elf_hash_table (info)->srelgot = s;
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the
@@ -1616,7 +1615,7 @@ elf64_alpha_output_extsym (struct alpha_elf_link_hash_entry *h, void * data)
 	    h->esym.asym.sc = scUndefined;
 	  else
 	    {
-	      name = bfd_section_name (output_section->owner, output_section);
+	      name = bfd_section_name (output_section);
 
 	      if (strcmp (name, ".text") == 0)
 		h->esym.asym.sc = scText;
@@ -2860,7 +2859,7 @@ elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if (CONST_STRNEQ (name, ".rela"))
 	{
@@ -4508,7 +4507,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 		    if (name == NULL)
 		      name = _("<unknown>");
 		    else if (name[0] == 0)
-		      name = bfd_section_name (input_bfd, sec);
+		      name = bfd_section_name (sec);
 		  }
 		_bfd_error_handler
 		  /* xgettext:c-format */
@@ -4779,7 +4778,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 		if (name == NULL)
 		  return FALSE;
 		if (*name == '\0')
-		  name = bfd_section_name (input_bfd, sec);
+		  name = bfd_section_name (sec);
 	      }
 	    (*info->callbacks->reloc_overflow)
 	      (info, (h ? &h->root.root : NULL), name, howto->name,
diff --git a/bfd/elf64-bpf.c b/bfd/elf64-bpf.c
index 3e11f089ec..67c45a1fa4 100644
--- a/bfd/elf64-bpf.c
+++ b/bfd/elf64-bpf.c
@@ -407,7 +407,7 @@ bpf_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  name = bfd_elf_string_from_elf_section
 	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
+	  name = name == NULL ? bfd_section_name (sec) : name;
 	}
       else
 	{
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
index 77811580c6..25e91d8a23 100644
--- a/bfd/elf64-hppa.c
+++ b/bfd/elf64-hppa.c
@@ -422,7 +422,7 @@ get_reloc_section (bfd *abfd,
 						  | SEC_LINKER_CREATED
 						  | SEC_READONLY));
       if (srel == NULL
-	  || !bfd_set_section_alignment (dynobj, srel, 3))
+	  || !bfd_set_section_alignment (srel, 3))
 	return FALSE;
     }
 
@@ -1159,7 +1159,7 @@ get_opd (bfd *abfd,
 						 | SEC_IN_MEMORY
 						 | SEC_LINKER_CREATED));
       if (!opd
-	  || !bfd_set_section_alignment (abfd, opd, 3))
+	  || !bfd_set_section_alignment (opd, 3))
 	{
 	  BFD_ASSERT (0);
 	  return FALSE;
@@ -1195,7 +1195,7 @@ get_plt (bfd *abfd,
 						 | SEC_IN_MEMORY
 						 | SEC_LINKER_CREATED));
       if (!plt
-	  || !bfd_set_section_alignment (abfd, plt, 3))
+	  || !bfd_set_section_alignment (plt, 3))
 	{
 	  BFD_ASSERT (0);
 	  return FALSE;
@@ -1231,7 +1231,7 @@ get_dlt (bfd *abfd,
 						 | SEC_IN_MEMORY
 						 | SEC_LINKER_CREATED));
       if (!dlt
-	  || !bfd_set_section_alignment (abfd, dlt, 3))
+	  || !bfd_set_section_alignment (dlt, 3))
 	{
 	  BFD_ASSERT (0);
 	  return FALSE;
@@ -1267,7 +1267,7 @@ get_stub (bfd *abfd,
 						  | SEC_READONLY
 						  | SEC_LINKER_CREATED));
       if (!stub
-	  || !bfd_set_section_alignment (abfd, stub, 3))
+	  || !bfd_set_section_alignment (stub, 3))
 	{
 	  BFD_ASSERT (0);
 	  return FALSE;
@@ -1347,7 +1347,7 @@ elf64_hppa_create_dynamic_sections (bfd *abfd,
 					   | SEC_READONLY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   hppa_info->dlt_rel_sec = s;
 
@@ -1358,7 +1358,7 @@ elf64_hppa_create_dynamic_sections (bfd *abfd,
 					   | SEC_READONLY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   hppa_info->plt_rel_sec = s;
 
@@ -1369,7 +1369,7 @@ elf64_hppa_create_dynamic_sections (bfd *abfd,
 					   | SEC_READONLY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   hppa_info->other_rel_sec = s;
 
@@ -1380,7 +1380,7 @@ elf64_hppa_create_dynamic_sections (bfd *abfd,
 					   | SEC_READONLY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   hppa_info->opd_rel_sec = s;
 
@@ -1750,7 +1750,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, sec);
+      name = bfd_section_name (sec);
 
       if (strcmp (name, ".plt") == 0)
 	{
@@ -1783,8 +1783,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 		     entry.  The entries in the .rela.plt section
 		     really apply to the .got section, which we
 		     created ourselves and so know is not readonly.  */
-		  outname = bfd_get_section_name (output_bfd,
-						  sec->output_section);
+		  outname = bfd_section_name (sec->output_section);
 		  target = bfd_get_section_by_name (output_bfd, outname + 4);
 		  if (target != NULL
 		      && (target->flags & SEC_READONLY) != 0
@@ -3938,7 +3937,7 @@ elf64_hppa_relocate_section (bfd *output_bfd,
 		    if (sym_name == NULL)
 		      return FALSE;
 		    if (*sym_name == '\0')
-		      sym_name = bfd_section_name (input_bfd, sym_sec);
+		      sym_name = bfd_section_name (sym_sec);
 		  }
 
 		(*info->callbacks->reloc_overflow)
diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
index 0ae9f353f4..aa2aa119f5 100644
--- a/bfd/elf64-ia64-vms.c
+++ b/bfd/elf64-ia64-vms.c
@@ -840,7 +840,7 @@ elf64_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (is_unwind_section_name (abfd, name))
     {
@@ -1286,12 +1286,12 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".dynamic",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   ia64_info->root.splt = s;
 
@@ -1307,7 +1307,7 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
 					   | SEC_IN_MEMORY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 0))
+      || !bfd_set_section_alignment (s, 0))
     return FALSE;
 
   /* Create a fixup section.  */
@@ -1317,7 +1317,7 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
 					   | SEC_IN_MEMORY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   ia64_info->fixups_sec = s;
 
@@ -1328,7 +1328,7 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
 					   | SEC_IN_MEMORY
 					   | SEC_LINKER_CREATED));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   s->size = sizeof (struct elf64_vms_transfer);
   ia64_info->transfer_sec = s;
@@ -1340,7 +1340,7 @@ elf64_ia64_create_dynamic_sections (bfd *abfd,
 					   | SEC_IN_MEMORY
 					   | SEC_READONLY));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, 3))
+      || !bfd_set_section_alignment (s, 3))
     return FALSE;
   ia64_info->note_sec = s;
 
@@ -1738,7 +1738,7 @@ get_got (bfd *abfd, struct elf64_ia64_link_hash_table *ia64_info)
       got = bfd_make_section_anyway_with_flags (dynobj, ".got",
 						flags | SEC_SMALL_DATA);
       if (got == NULL
-	  || !bfd_set_section_alignment (dynobj, got, 3))
+	  || !bfd_set_section_alignment (got, 3))
 	return NULL;
       ia64_info->root.sgot = got;
     }
@@ -1774,7 +1774,7 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
 						     : SEC_READONLY)
 						  | SEC_LINKER_CREATED));
       if (!fptr
-	  || !bfd_set_section_alignment (dynobj, fptr, 4))
+	  || !bfd_set_section_alignment (fptr, 4))
 	{
 	  BFD_ASSERT (0);
 	  return NULL;
@@ -1792,7 +1792,7 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
 							  | SEC_LINKER_CREATED
 							  | SEC_READONLY));
 	  if (fptr_rel == NULL
-	      || !bfd_set_section_alignment (dynobj, fptr_rel, 3))
+	      || !bfd_set_section_alignment (fptr_rel, 3))
 	    {
 	      BFD_ASSERT (0);
 	      return NULL;
@@ -1827,7 +1827,7 @@ get_pltoff (bfd *abfd, struct elf64_ia64_link_hash_table *ia64_info)
 						    | SEC_SMALL_DATA
 						    | SEC_LINKER_CREATED));
       if (!pltoff
-	  || !bfd_set_section_alignment (dynobj, pltoff, 4))
+	  || !bfd_set_section_alignment (pltoff, 4))
 	{
 	  BFD_ASSERT (0);
 	  return NULL;
@@ -1855,11 +1855,9 @@ get_reloc_section (bfd *abfd,
     return NULL;
 
   BFD_ASSERT ((CONST_STRNEQ (srel_name, ".rela")
-	       && strcmp (bfd_get_section_name (abfd, sec),
-			  srel_name+5) == 0)
+	       && strcmp (bfd_section_name (sec), srel_name+5) == 0)
 	      || (CONST_STRNEQ (srel_name, ".rel")
-		  && strcmp (bfd_get_section_name (abfd, sec),
-			     srel_name+4) == 0));
+		  && strcmp (bfd_section_name (sec), srel_name+4) == 0));
 
   dynobj = ia64_info->root.dynobj;
   if (!dynobj)
@@ -1875,7 +1873,7 @@ get_reloc_section (bfd *abfd,
 						  | SEC_LINKER_CREATED
 						  | SEC_READONLY));
       if (srel == NULL
-	  || !bfd_set_section_alignment (dynobj, srel, 3))
+	  || !bfd_set_section_alignment (srel, 3))
 	return NULL;
     }
 
@@ -2750,7 +2748,7 @@ elf64_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  /* It's OK to base decisions on the section name, because none
 	     of the dynobj section names depend upon the input files.  */
-	  name = bfd_get_section_name (dynobj, sec);
+	  name = bfd_section_name (sec);
 
 	  if (strcmp (name, ".got.plt") == 0)
 	    strip = FALSE;
@@ -4501,8 +4499,8 @@ elf64_vms_section_from_shdr (bfd *abfd,
     {
       asection *newsect = hdr->bfd_section;
 
-      if (! bfd_set_section_flags
-	  (abfd, newsect, bfd_get_section_flags (abfd, newsect) | secflags))
+      if (!bfd_set_section_flags (newsect,
+				  bfd_section_flags (newsect) | secflags))
 	return FALSE;
     }
 
@@ -4629,7 +4627,7 @@ elf64_vms_section_processing (bfd *abfd ATTRIBUTE_UNUSED,
 {
   if (hdr->bfd_section != NULL)
     {
-      const char *name = bfd_get_section_name (abfd, hdr->bfd_section);
+      const char *name = bfd_section_name (hdr->bfd_section);
 
       if (strcmp (name, ".text") == 0)
 	hdr->sh_flags |= SHF_IA_64_VMS_SHARED;
@@ -4670,7 +4668,7 @@ elf64_vms_final_write_processing (bfd *abfd)
     {
       hdr = &elf_section_data (s)->this_hdr;
 
-      if (strcmp (bfd_get_section_name (abfd, hdr->bfd_section),
+      if (strcmp (bfd_section_name (hdr->bfd_section),
 		  ".IA_64.unwind_info") == 0)
 	unwind_info_sect_idx = elf_section_data (s)->this_idx;
 
diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c
index 18ed456c2b..69d57a2ce9 100644
--- a/bfd/elf64-mmix.c
+++ b/bfd/elf64-mmix.c
@@ -1414,7 +1414,7 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 						  symtab_hdr->sh_link,
 						  sym->st_name);
 	  if (name == NULL)
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
       else
 	{
@@ -1606,9 +1606,9 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section,
 	return bfd_reloc_undefined;
 
       /* Check that we're not relocating against a register symbol.  */
-      if (strcmp (bfd_get_section_name (symsec->owner, symsec),
+      if (strcmp (bfd_section_name (symsec),
 		  MMIX_REG_CONTENTS_SECTION_NAME) == 0
-	  || strcmp (bfd_get_section_name (symsec->owner, symsec),
+	  || strcmp (bfd_section_name (symsec),
 		     MMIX_REG_SECTION_NAME) == 0)
 	{
 	  /* Note: This is separated out into two messages in order
@@ -1641,7 +1641,7 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section,
       if (symsec == NULL)
 	return bfd_reloc_undefined;
 
-      if (strcmp (bfd_get_section_name (symsec->owner, symsec),
+      if (strcmp (bfd_section_name (symsec),
 		  MMIX_REG_CONTENTS_SECTION_NAME) == 0)
 	{
 	  if ((srel & 7) != 0 || srel < 32*8 || srel > 255*8)
@@ -1652,7 +1652,7 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section,
 	    }
 	  srel /= 8;
 	}
-      else if (strcmp (bfd_get_section_name (symsec->owner, symsec),
+      else if (strcmp (bfd_section_name (symsec),
 		       MMIX_REG_SECTION_NAME) == 0)
 	{
 	  if (srel < 0 || srel > 255)
@@ -1704,9 +1704,9 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section,
 	   accidentally handling it.  */
 	if (!bfd_is_abs_section (symsec)
 	    && !bfd_is_und_section (symsec)
-	    && strcmp (bfd_get_section_name (symsec->owner, symsec),
+	    && strcmp (bfd_section_name (symsec),
 		       MMIX_REG_CONTENTS_SECTION_NAME) != 0
-	    && strcmp (bfd_get_section_name (symsec->owner, symsec),
+	    && strcmp (bfd_section_name (symsec),
 		       MMIX_REG_SECTION_NAME) != 0)
 	{
 	  _bfd_error_handler
@@ -1722,10 +1722,8 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section,
 	first_global = 255;
       else
 	{
-	  first_global
-	    = bfd_get_section_vma (input_section->output_section->owner,
-				   regsec) / 8;
-	  if (strcmp (bfd_get_section_name (symsec->owner, symsec),
+	  first_global = bfd_section_vma (regsec) / 8;
+	  if (strcmp (bfd_section_name (symsec),
 		      MMIX_REG_CONTENTS_SECTION_NAME) == 0)
 	    {
 	      if ((srel & 7) != 0 || srel < 32*8 || srel > 255*8)
@@ -1876,9 +1874,7 @@ mmix_elf_check_common_relocs  (bfd *abfd,
 		 those flags, as that is what currently happens for usual
 		 GREG allocations, and that works.  */
 	      if (allocated_gregs_section == NULL
-		  || !bfd_set_section_alignment (bpo_greg_owner,
-						 allocated_gregs_section,
-						 3))
+		  || !bfd_set_section_alignment (allocated_gregs_section, 3))
 		return FALSE;
 
 	      gregdata = (struct bpo_greg_section_info *)
@@ -2123,7 +2119,7 @@ mmix_elf_section_from_bfd_section (bfd *       abfd ATTRIBUTE_UNUSED,
 				   asection *  sec,
 				   int *       retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), MMIX_REG_SECTION_NAME) == 0)
+  if (strcmp (bfd_section_name (sec), MMIX_REG_SECTION_NAME) == 0)
     *retval = SHN_REGISTER;
   else
     return FALSE;
@@ -2222,7 +2218,7 @@ mmix_elf_final_link (bfd *abfd, struct bfd_link_info *info)
   if (reg_section != NULL)
     {
       /* FIXME: Pass error state gracefully.  */
-      if (bfd_get_section_flags (abfd, reg_section) & SEC_HAS_CONTENTS)
+      if (bfd_section_flags (reg_section) & SEC_HAS_CONTENTS)
 	_bfd_abort (__FILE__, __LINE__, _("register section has contents\n"));
 
       /* Really remove the section, if it hasn't already been done.  */
@@ -2330,7 +2326,7 @@ _bfd_mmix_before_linker_allocation (bfd *abfd ATTRIBUTE_UNUSED,
   /* Set the zeroth-order estimate for the GREGs size.  */
   gregs_size = n_gregs * 8;
 
-  if (!bfd_set_section_size (bpo_greg_owner, bpo_gregs_section, gregs_size))
+  if (!bfd_set_section_size (bpo_gregs_section, gregs_size))
     return FALSE;
 
   /* Allocate and set up the GREG arrays.  They're filled in at relaxation
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 345710ee59..14119dd259 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -3487,7 +3487,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
       htab->sfpr = bfd_make_section_anyway_with_flags (dynobj, ".sfpr",
 						       flags);
       if (htab->sfpr == NULL
-	  || !bfd_set_section_alignment (dynobj, htab->sfpr, 2))
+	  || !bfd_set_section_alignment (htab->sfpr, 2))
 	return FALSE;
     }
 
@@ -3498,7 +3498,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->glink = bfd_make_section_anyway_with_flags (dynobj, ".glink",
 						    flags);
   if (htab->glink == NULL
-      || !bfd_set_section_alignment (dynobj, htab->glink, 3))
+      || !bfd_set_section_alignment (htab->glink, 3))
     return FALSE;
 
   /* The part of .glink used by global entry stubs, separate so that
@@ -3506,7 +3506,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->global_entry = bfd_make_section_anyway_with_flags (dynobj, ".glink",
 							   flags);
   if (htab->global_entry == NULL
-      || !bfd_set_section_alignment (dynobj, htab->global_entry, 2))
+      || !bfd_set_section_alignment (htab->global_entry, 2))
     return FALSE;
 
   if (!info->no_ld_generated_unwind_info)
@@ -3517,14 +3517,14 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
 								 ".eh_frame",
 								 flags);
       if (htab->glink_eh_frame == NULL
-	  || !bfd_set_section_alignment (dynobj, htab->glink_eh_frame, 2))
+	  || !bfd_set_section_alignment (htab->glink_eh_frame, 2))
 	return FALSE;
     }
 
   flags = SEC_ALLOC | SEC_LINKER_CREATED;
   htab->elf.iplt = bfd_make_section_anyway_with_flags (dynobj, ".iplt", flags);
   if (htab->elf.iplt == NULL
-      || !bfd_set_section_alignment (dynobj, htab->elf.iplt, 3))
+      || !bfd_set_section_alignment (htab->elf.iplt, 3))
     return FALSE;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
@@ -3532,7 +3532,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->elf.irelplt
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.iplt", flags);
   if (htab->elf.irelplt == NULL
-      || !bfd_set_section_alignment (dynobj, htab->elf.irelplt, 3))
+      || !bfd_set_section_alignment (htab->elf.irelplt, 3))
     return FALSE;
 
   /* Create branch lookup table for plt_branch stubs.  */
@@ -3541,7 +3541,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->brlt = bfd_make_section_anyway_with_flags (dynobj, ".branch_lt",
 						   flags);
   if (htab->brlt == NULL
-      || !bfd_set_section_alignment (dynobj, htab->brlt, 3))
+      || !bfd_set_section_alignment (htab->brlt, 3))
     return FALSE;
 
   /* Local plt entries, put in .branch_lt but a separate section for
@@ -3549,7 +3549,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->pltlocal = bfd_make_section_anyway_with_flags (dynobj, ".branch_lt",
 						       flags);
   if (htab->pltlocal == NULL
-      || !bfd_set_section_alignment (dynobj, htab->pltlocal, 3))
+      || !bfd_set_section_alignment (htab->pltlocal, 3))
     return FALSE;
 
   if (!bfd_link_pic (info))
@@ -3560,13 +3560,13 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
   htab->relbrlt
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.branch_lt", flags);
   if (htab->relbrlt == NULL
-      || !bfd_set_section_alignment (dynobj, htab->relbrlt, 3))
+      || !bfd_set_section_alignment (htab->relbrlt, 3))
     return FALSE;
 
   htab->relpltlocal
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.branch_lt", flags);
   if (htab->relpltlocal == NULL
-      || !bfd_set_section_alignment (dynobj, htab->relpltlocal, 3))
+      || !bfd_set_section_alignment (htab->relpltlocal, 3))
     return FALSE;
 
   return TRUE;
@@ -3762,13 +3762,13 @@ create_got_section (bfd *abfd, struct bfd_link_info *info)
 
   got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (!got
-      || !bfd_set_section_alignment (abfd, got, 3))
+      || !bfd_set_section_alignment (got, 3))
     return FALSE;
 
   relgot = bfd_make_section_anyway_with_flags (abfd, ".rela.got",
 					       flags | SEC_READONLY);
   if (!relgot
-      || !bfd_set_section_alignment (abfd, relgot, 3))
+      || !bfd_set_section_alignment (relgot, 3))
     return FALSE;
 
   ppc64_elf_tdata (abfd)->got = got;
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 6bc6dfd50e..4ffcde92e2 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -1957,7 +1957,7 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->elf.srelplt)
 	    relocs = TRUE;
@@ -3203,7 +3203,7 @@ elf_s390_relocate_section (bfd *output_bfd,
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index 50b051aa6b..8bf9623bd9 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -748,7 +748,7 @@ elf64_sparc_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (strcmp (name, ".stab") == 0)
     {
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index e5c8003a68..16e66f95d2 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -3989,7 +3989,7 @@ check_relocation_error:
 	      if (name == NULL)
 		return FALSE;
 	      if (*name == '\0')
-		name = bfd_section_name (input_bfd, sec);
+		name = bfd_section_name (sec);
 	    }
 
 	  if (r == bfd_reloc_overflow)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 8f18be07db..2169e2b40c 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -162,13 +162,13 @@ _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 					  (bed->dynamic_sec_flags
 					   | SEC_READONLY));
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelgot = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->sgot = s;
 
@@ -176,8 +176,7 @@ _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
     {
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->sgotplt = s;
     }
@@ -286,25 +285,25 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   s = bfd_make_section_anyway_with_flags (abfd, ".gnu.version_d",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".gnu.version",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, 1))
+      || !bfd_set_section_alignment (s, 1))
     return FALSE;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".gnu.version_r",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynsym",
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   elf_hash_table (info)->dynsym = s;
 
@@ -315,7 +314,7 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynamic", flags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
 
   /* The special symbol _DYNAMIC is always set to the start of the
@@ -334,7 +333,7 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".hash",
 					      flags | SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       elf_section_data (s)->this_hdr.sh_entsize = bed->s->sizeof_hash_entry;
     }
@@ -344,7 +343,7 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".gnu.hash",
 					      flags | SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       /* For 64-bit ELF, .gnu.hash is a non-uniform entity size section:
 	 4 32-bit words followed by variable count of 64-bit words, then
@@ -395,7 +394,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   htab->splt = s;
 
@@ -415,7 +414,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					   ? ".rela.plt" : ".rel.plt"),
 					  flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelplt = s;
 
@@ -466,7 +465,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 						   ? ".rela.bss" : ".rel.bss"),
 						  flags | SEC_READONLY);
 	  if (s == NULL
-	      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	    return FALSE;
 	  htab->srelbss = s;
 
@@ -477,8 +476,7 @@ _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 			   ? ".rela.data.rel.ro" : ".rel.data.rel.ro"),
 		    flags | SEC_READONLY));
 	      if (s == NULL
-		  || ! bfd_set_section_alignment (abfd, s,
-						  bed->s->log_file_align))
+		  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 		return FALSE;
 	      htab->sreldynrelro = s;
 	    }
@@ -3099,7 +3097,7 @@ _bfd_elf_adjust_dynamic_copy (struct bfd_link_info *info,
      know the symbol alignment requirement, we start with the
      maximum alignment and check low bits of the symbol address
      for the minimum alignment.  */
-  power_of_two = bfd_get_section_alignment (sec->owner, sec);
+  power_of_two = bfd_section_alignment (sec);
   mask = ((bfd_vma) 1 << power_of_two) - 1;
   while ((h->root.u.def.value & mask) != 0)
     {
@@ -3107,12 +3105,10 @@ _bfd_elf_adjust_dynamic_copy (struct bfd_link_info *info,
        --power_of_two;
     }
 
-  if (power_of_two > bfd_get_section_alignment (dynbss->owner,
-						dynbss))
+  if (power_of_two > bfd_section_alignment (dynbss))
     {
       /* Adjust the section alignment if needed.  */
-      if (! bfd_set_section_alignment (dynbss->owner, dynbss,
-				       power_of_two))
+      if (!bfd_set_section_alignment (dynbss, power_of_two))
 	return FALSE;
     }
 
@@ -3949,7 +3945,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
     {
       const char *name;
 
-      name = bfd_get_section_name (abfd, s);
+      name = bfd_section_name (s);
       if (CONST_STRNEQ (name, ".gnu.warning."))
 	{
 	  char *msg;
@@ -11393,8 +11389,7 @@ elf_reloc_link_order (bfd *output_bfd,
 
 	case bfd_reloc_overflow:
 	  if (link_order->type == bfd_section_reloc_link_order)
-	    sym_name = bfd_section_name (output_bfd,
-					 link_order->u.reloc.p->u.section);
+	    sym_name = bfd_section_name (link_order->u.reloc.p->u.section);
 	  else
 	    sym_name = link_order->u.reloc.p->u.name;
 	  (*info->callbacks->reloc_overflow) (info, NULL, sym_name,
@@ -11837,7 +11832,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 	    }
 
 	  attr_size = bfd_elf_obj_attr_size (abfd);
-	  bfd_set_section_size (abfd, o, attr_size);
+	  bfd_set_section_size (o, attr_size);
 	  /* Skip this section later on.  */
 	  o->map_head.link_order = NULL;
 	  if (attr_size)
@@ -13588,7 +13583,7 @@ bfd_elf_parse_eh_frame_entries (bfd *abfd ATTRIBUTE_UNUSED,
 
       for (sec = ibfd->sections; sec; sec = sec->next)
 	{
-	  if (CONST_STRNEQ (bfd_section_name (ibfd, sec), ".eh_frame_entry")
+	  if (CONST_STRNEQ (bfd_section_name (sec), ".eh_frame_entry")
 	      && init_reloc_cookie_rels (&cookie, info, ibfd, sec))
 	    {
 	      _bfd_elf_parse_eh_frame_entry (info, sec, &cookie);
@@ -14444,7 +14439,7 @@ get_dynamic_reloc_section_name (bfd *       abfd,
 				bfd_boolean is_rela)
 {
   char *name;
-  const char *old_name = bfd_get_section_name (NULL, sec);
+  const char *old_name = bfd_section_name (sec);
   const char *prefix = is_rela ? ".rela" : ".rel";
 
   if (old_name == NULL)
@@ -14527,7 +14522,7 @@ _bfd_elf_make_dynamic_reloc_section (asection *sec,
 		 section named "auto" we'll get ".relauto" which is
 		 seen to be a .rela section.  */
 	      elf_section_type (reloc_sec) = is_rela ? SHT_RELA : SHT_REL;
-	      if (! bfd_set_section_alignment (dynobj, reloc_sec, alignment))
+	      if (!bfd_set_section_alignment (reloc_sec, alignment))
 		reloc_sec = NULL;
 	    }
 	}
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 7132b6bc73..6f3bd0d565 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -6790,7 +6790,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       if (r_symndx != 0
@@ -7273,7 +7273,7 @@ elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
-	  if ((bfd_get_section_flags (ibfd, sec)
+	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	    only_data_sections = FALSE;
@@ -7519,13 +7519,13 @@ aarch64_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 					  (bed->dynamic_sec_flags
 					   | SEC_READONLY));
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelgot = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->sgot = s;
   htab->sgot->size += GOT_ENTRY_SIZE;
@@ -7547,8 +7547,7 @@ aarch64_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
     {
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->sgotplt = s;
     }
@@ -9150,7 +9149,7 @@ elfNN_aarch64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela"))
+      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
 	    relocs = TRUE;
diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
index 65471dd4a4..da10178d4f 100644
--- a/bfd/elfnn-ia64.c
+++ b/bfd/elfnn-ia64.c
@@ -956,7 +956,7 @@ elfNN_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr,
 {
   const char *name;
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   if (is_unwind_section_name (abfd, name))
     {
@@ -1561,11 +1561,10 @@ elfNN_ia64_create_dynamic_sections (bfd *abfd,
     return FALSE;
 
   {
-    flagword flags = bfd_get_section_flags (abfd, ia64_info->root.sgot);
-    bfd_set_section_flags (abfd, ia64_info->root.sgot,
-			   SEC_SMALL_DATA | flags);
+    flagword flags = bfd_section_flags (ia64_info->root.sgot);
+    bfd_set_section_flags (ia64_info->root.sgot, SEC_SMALL_DATA | flags);
     /* The .got section is always aligned at 8 bytes.  */
-    if (! bfd_set_section_alignment (abfd, ia64_info->root.sgot, 3))
+    if (!bfd_set_section_alignment (ia64_info->root.sgot, 3))
       return FALSE;
   }
 
@@ -1579,7 +1578,7 @@ elfNN_ia64_create_dynamic_sections (bfd *abfd,
 					   | SEC_LINKER_CREATED
 					   | SEC_READONLY));
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, LOG_SECTION_ALIGN))
+      || !bfd_set_section_alignment (s, LOG_SECTION_ALIGN))
     return FALSE;
   ia64_info->rel_pltoff_sec = s;
 
@@ -1977,11 +1976,11 @@ get_got (bfd *abfd, struct bfd_link_info *info,
       got = ia64_info->root.sgot;
 
       /* The .got section is always aligned at 8 bytes.  */
-      if (!bfd_set_section_alignment (abfd, got, 3))
+      if (!bfd_set_section_alignment (got, 3))
 	return NULL;
 
-      flags = bfd_get_section_flags (abfd, got);
-      if (! bfd_set_section_flags (abfd, got, SEC_SMALL_DATA | flags))
+      flags = bfd_section_flags (got);
+      if (!bfd_set_section_flags (got, SEC_SMALL_DATA | flags))
 	return NULL;
     }
 
@@ -2016,7 +2015,7 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
 						     ? 0 : SEC_READONLY)
 						  | SEC_LINKER_CREATED));
       if (!fptr
-	  || !bfd_set_section_alignment (abfd, fptr, 4))
+	  || !bfd_set_section_alignment (fptr, 4))
 	{
 	  BFD_ASSERT (0);
 	  return NULL;
@@ -2034,8 +2033,7 @@ get_fptr (bfd *abfd, struct bfd_link_info *info,
 							  | SEC_LINKER_CREATED
 							  | SEC_READONLY));
 	  if (fptr_rel == NULL
-	      || !bfd_set_section_alignment (abfd, fptr_rel,
-					     LOG_SECTION_ALIGN))
+	      || !bfd_set_section_alignment (fptr_rel, LOG_SECTION_ALIGN))
 	    {
 	      BFD_ASSERT (0);
 	      return NULL;
@@ -2071,7 +2069,7 @@ get_pltoff (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED,
 						    | SEC_SMALL_DATA
 						    | SEC_LINKER_CREATED));
       if (!pltoff
-	  || !bfd_set_section_alignment (abfd, pltoff, 4))
+	  || !bfd_set_section_alignment (pltoff, 4))
 	{
 	  BFD_ASSERT (0);
 	  return NULL;
@@ -2112,8 +2110,7 @@ get_reloc_section (bfd *abfd,
 						  | SEC_LINKER_CREATED
 						  | SEC_READONLY));
       if (srel == NULL
-	  || !bfd_set_section_alignment (dynobj, srel,
-					 LOG_SECTION_ALIGN))
+	  || !bfd_set_section_alignment (srel, LOG_SECTION_ALIGN))
 	return NULL;
     }
 
@@ -3171,7 +3168,7 @@ elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 
 	  /* It's OK to base decisions on the section name, because none
 	     of the dynobj section names depend upon the input files.  */
-	  name = bfd_get_section_name (dynobj, sec);
+	  name = bfd_section_name (sec);
 
 	  if (strcmp (name, ".got.plt") == 0)
 	    strip = FALSE;
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index 1d04ae9b7e..ccf904af1b 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -310,13 +310,13 @@ riscv_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 					  (bed->dynamic_sec_flags
 					   | SEC_READONLY));
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->sgot = s;
 
@@ -327,8 +327,7 @@ riscv_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
     {
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->sgotplt = s;
 
@@ -1840,7 +1839,7 @@ riscv_elf_relocate_section (bfd *output_bfd,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       resolved_to_zero = (h != NULL
@@ -3160,7 +3159,7 @@ _bfd_riscv_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
-	  if ((bfd_get_section_flags (ibfd, sec)
+	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	    only_data_sections = FALSE;
diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
index 1f69280713..e7290aaab1 100644
--- a/bfd/elfxx-aarch64.c
+++ b/bfd/elfxx-aarch64.c
@@ -758,11 +758,9 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
 	      _("%F%P: failed to create GNU property section\n"));
 
           align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
-          if (!bfd_set_section_alignment (ebfd, sec, align))
-            {
-              info->callbacks->einfo (_("%F%pA: failed to align section\n"),
-                                      sec);
-            }
+	  if (!bfd_set_section_alignment (sec, align))
+	    info->callbacks->einfo (_("%F%pA: failed to align section\n"),
+				    sec);
 
 	  elf_section_type (sec) = SHT_NOTE;
 	}
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 8ad5268520..496e42e7c5 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -1726,7 +1726,7 @@ section_allows_mips16_refs_p (asection *section)
 {
   const char *name;
 
-  name = bfd_get_section_name (section->owner, section);
+  name = bfd_section_name (section);
   return (FN_STUB_P (name)
 	  || CALL_STUB_P (name)
 	  || CALL_FP_STUB_P (name)
@@ -1937,7 +1937,7 @@ mips_elf_add_la25_intro (struct mips_elf_la25_stub *stub,
 
   /* Make sure that any padding goes before the stub.  */
   align = input_section->alignment_power;
-  if (!bfd_set_section_alignment (s->owner, s, align))
+  if (!bfd_set_section_alignment (s, align))
     return FALSE;
   if (align > 3)
     s->size = (1 << align) - 8;
@@ -1974,7 +1974,7 @@ mips_elf_add_la25_trampoline (struct mips_elf_la25_stub *stub,
       asection *input_section = stub->h->root.root.u.def.section;
       s = htab->add_stub_section (".text", NULL,
 				  input_section->output_section);
-      if (s == NULL || !bfd_set_section_alignment (s->owner, s, 4))
+      if (s == NULL || !bfd_set_section_alignment (s, 4))
 	return FALSE;
       htab->strampoline = s;
     }
@@ -2992,7 +2992,7 @@ mips_elf_output_extsym (struct mips_elf_link_hash_entry *h, void *data)
 	    h->esym.asym.sc = scUndefined;
 	  else
 	    {
-	      name = bfd_section_name (output_section->owner, output_section);
+	      name = bfd_section_name (output_section);
 
 	      if (strcmp (name, ".text") == 0)
 		h->esym.asym.sc = scText;
@@ -3265,8 +3265,8 @@ mips_elf_rel_dyn_section (struct bfd_link_info *info, bfd_boolean create_p)
 						    | SEC_LINKER_CREATED
 						    | SEC_READONLY));
       if (sreloc == NULL
-	  || ! bfd_set_section_alignment (dynobj, sreloc,
-					  MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
+	  || !bfd_set_section_alignment (sreloc,
+					 MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
 	return NULL;
     }
   return sreloc;
@@ -5201,8 +5201,7 @@ mips_elf_create_compact_rel_section
 
       s = bfd_make_section_anyway_with_flags (abfd, ".compact_rel", flags);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s,
-					  MIPS_ELF_LOG_FILE_ALIGN (abfd)))
+	  || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
 	return FALSE;
 
       s->size = sizeof (Elf32_External_compact_rel);
@@ -5236,7 +5235,7 @@ mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
      in the function stub generation and in the linker script.  */
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, 4))
+      || !bfd_set_section_alignment (s, 4))
     return FALSE;
   htab->root.sgot = s;
 
@@ -5537,7 +5536,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
 						symtab_hdr->sh_link,
 						sym->st_name);
       if (*namep == NULL || **namep == '\0')
-	*namep = bfd_section_name (input_bfd, sec);
+	*namep = bfd_section_name (sec);
 
       /* For relocations against a section symbol and ones against no
 	 symbol (absolute relocations) infer the ISA mode from the addend.  */
@@ -5735,7 +5734,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
 	      sec = NULL;
 	      for (o = input_bfd->sections; o != NULL; o = o->next)
 		{
-		  if (CALL_FP_STUB_P (bfd_get_section_name (input_bfd, o)))
+		  if (CALL_FP_STUB_P (bfd_section_name (o)))
 		    {
 		      sec = h->call_fp_stub;
 		      break;
@@ -7385,7 +7384,7 @@ _bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr)
 
   if (hdr->bfd_section != NULL)
     {
-      const char *name = bfd_get_section_name (abfd, hdr->bfd_section);
+      const char *name = bfd_section_name (hdr->bfd_section);
 
       /* .sbss is not handled specially here because the GNU/Linux
 	 prelinker can convert .sbss from NOBITS to PROGBITS and
@@ -7514,10 +7513,9 @@ _bfd_mips_elf_section_from_shdr (bfd *abfd,
 
   if (flags)
     {
-      if (! bfd_set_section_flags (abfd, hdr->bfd_section,
-				   (bfd_get_section_flags (abfd,
-							   hdr->bfd_section)
-				    | flags)))
+      if (!bfd_set_section_flags (hdr->bfd_section,
+				  (bfd_section_flags (hdr->bfd_section)
+				   | flags)))
 	return FALSE;
     }
 
@@ -7624,7 +7622,7 @@ _bfd_mips_elf_section_from_shdr (bfd *abfd,
 bfd_boolean
 _bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
-  const char *name = bfd_get_section_name (abfd, sec);
+  const char *name = bfd_section_name (sec);
 
   if (strcmp (name, ".liblist") == 0)
     {
@@ -7764,12 +7762,12 @@ bfd_boolean
 _bfd_mips_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					asection *sec, int *retval)
 {
-  if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_MIPS_SCOMMON;
       return TRUE;
     }
-  if (strcmp (bfd_get_section_name (abfd, sec), ".acommon") == 0)
+  if (strcmp (bfd_section_name (sec), ".acommon") == 0)
     {
       *retval = SHN_MIPS_ACOMMON;
       return TRUE;
@@ -7996,7 +7994,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_get_linker_section (abfd, ".dynamic");
       if (s != NULL)
 	{
-	  if (! bfd_set_section_flags (abfd, s, flags))
+	  if (!bfd_set_section_flags (s, flags))
 	    return FALSE;
 	}
     }
@@ -8013,8 +8011,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 					  MIPS_ELF_STUB_SECTION_NAME (abfd),
 					  flags | SEC_CODE);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s,
-				      MIPS_ELF_LOG_FILE_ALIGN (abfd)))
+      || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
     return FALSE;
   htab->sstubs = s;
 
@@ -8025,8 +8022,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       s = bfd_make_section_anyway_with_flags (abfd, ".rld_map",
 					      flags &~ (flagword) SEC_READONLY);
       if (s == NULL
-	  || ! bfd_set_section_alignment (abfd, s,
-					  MIPS_ELF_LOG_FILE_ALIGN (abfd)))
+	  || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
 	return FALSE;
     }
 
@@ -8069,24 +8065,24 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
       /* Change alignments of some sections.  */
       s = bfd_get_linker_section (abfd, ".hash");
       if (s != NULL)
-	(void) bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
+	bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
 
       s = bfd_get_linker_section (abfd, ".dynsym");
       if (s != NULL)
-	(void) bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
+	bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
 
       s = bfd_get_linker_section (abfd, ".dynstr");
       if (s != NULL)
-	(void) bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
+	bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
 
       /* ??? */
       s = bfd_get_section_by_name (abfd, ".reginfo");
       if (s != NULL)
-	(void) bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
+	bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
 
       s = bfd_get_linker_section (abfd, ".dynamic");
       if (s != NULL)
-	(void) bfd_set_section_alignment (abfd, s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
+	bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd));
     }
 
   if (bfd_link_executable (info))
@@ -8378,7 +8374,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 
   /* Check for the mips16 stub sections.  */
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
   if (FN_STUB_P (name))
     {
       unsigned long r_symndx;
@@ -9375,12 +9371,12 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 	     Encourage better cache usage by aligning.  We do this
 	     lazily to avoid pessimizing traditional objects.  */
 	  if (!htab->is_vxworks
-	      && !bfd_set_section_alignment (dynobj, htab->root.splt, 5))
+	      && !bfd_set_section_alignment (htab->root.splt, 5))
 	    return FALSE;
 
 	  /* Make sure that .got.plt is word-aligned.  We do this lazily
 	     for the same reason as above.  */
-	  if (!bfd_set_section_alignment (dynobj, htab->root.sgotplt,
+	  if (!bfd_set_section_alignment (htab->root.sgotplt,
 					  MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
 	    return FALSE;
 
@@ -9588,7 +9584,7 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
   sect = bfd_get_section_by_name (output_bfd, ".reginfo");
   if (sect != NULL)
     {
-      bfd_set_section_size (output_bfd, sect, sizeof (Elf32_External_RegInfo));
+      bfd_set_section_size (sect, sizeof (Elf32_External_RegInfo));
       sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
     }
 
@@ -9596,8 +9592,7 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
   sect = bfd_get_section_by_name (output_bfd, ".MIPS.abiflags");
   if (sect != NULL)
     {
-      bfd_set_section_size (output_bfd, sect,
-			    sizeof (Elf_External_ABIFlags_v0));
+      bfd_set_section_size (sect, sizeof (Elf_External_ABIFlags_v0));
       sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
     }
 
@@ -10030,7 +10025,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
 
       /* It's OK to base decisions on the section name, because none
 	 of the dynobj section names depend upon the input files.  */
-      name = bfd_get_section_name (dynobj, s);
+      name = bfd_section_name (s);
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -10048,8 +10043,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
 		 assert a DT_TEXTREL entry rather than testing whether
 		 there exists a relocation to a read only section or
 		 not.  */
-	      outname = bfd_get_section_name (output_bfd,
-					      s->output_section);
+	      outname = bfd_section_name (s->output_section);
 	      target = bfd_get_section_by_name (output_bfd, outname + 4);
 	      if ((target != NULL
 		   && (target->flags & SEC_READONLY) != 0
@@ -12445,7 +12439,7 @@ _bfd_mips_final_write_processing (bfd *abfd)
 
 	case SHT_MIPS_GPTAB:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
-	  name = bfd_get_section_name (abfd, (*hdrpp)->bfd_section);
+	  name = bfd_section_name ((*hdrpp)->bfd_section);
 	  BFD_ASSERT (name != NULL
 		      && CONST_STRNEQ (name, ".gptab."));
 	  sec = bfd_get_section_by_name (abfd, name + sizeof ".gptab" - 1);
@@ -12455,7 +12449,7 @@ _bfd_mips_final_write_processing (bfd *abfd)
 
 	case SHT_MIPS_CONTENT:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
-	  name = bfd_get_section_name (abfd, (*hdrpp)->bfd_section);
+	  name = bfd_section_name ((*hdrpp)->bfd_section);
 	  BFD_ASSERT (name != NULL
 		      && CONST_STRNEQ (name, ".MIPS.content"));
 	  sec = bfd_get_section_by_name (abfd,
@@ -12475,7 +12469,7 @@ _bfd_mips_final_write_processing (bfd *abfd)
 
 	case SHT_MIPS_EVENTS:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
-	  name = bfd_get_section_name (abfd, (*hdrpp)->bfd_section);
+	  name = bfd_section_name ((*hdrpp)->bfd_section);
 	  BFD_ASSERT (name != NULL);
 	  if (CONST_STRNEQ (name, ".MIPS.events"))
 	    sec = bfd_get_section_by_name (abfd,
@@ -12861,8 +12855,7 @@ _bfd_mips_elf_gc_mark_extra_sections (struct bfd_link_info *info,
 
       for (o = sub->sections; o != NULL; o = o->next)
 	if (!o->gc_mark
-	    && MIPS_ELF_ABIFLAGS_SECTION_NAME_P
-		 (bfd_get_section_name (sub, o)))
+	    && MIPS_ELF_ABIFLAGS_SECTION_NAME_P (bfd_section_name (o)))
 	  {
 	    if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
 	      return FALSE;
@@ -15024,7 +15017,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 								   ".rtproc",
 								   flags);
 		  if (rtproc_sec == NULL
-		      || ! bfd_set_section_alignment (abfd, rtproc_sec, 4))
+		      || !bfd_set_section_alignment (rtproc_sec, 4))
 		    return FALSE;
 		}
 
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index e479884071..735e83f3de 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -1263,15 +1263,14 @@ create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 
   s = bfd_make_section_with_flags (abfd, ".iplt", pltflags);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+      || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
   htab->iplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".rela.iplt",
 				   flags | SEC_READONLY);
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s,
-				      bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->irelplt = s;
 
@@ -4164,8 +4163,7 @@ do_relocation:
 		     || r_type == R_SPARC_UA32
 		     || r_type == R_SPARC_DISP32)
 		    && (((input_section->flags & SEC_DEBUGGING) != 0
-			 && strcmp (bfd_section_name (input_bfd,
-						      input_section),
+			 && strcmp (bfd_section_name (input_section),
 				    ".stab") == 0)
 			|| _bfd_elf_section_offset (output_bfd, info,
 						    input_section,
@@ -4194,7 +4192,7 @@ do_relocation:
 		    if (name == NULL)
 		      return FALSE;
 		    if (*name == '\0')
-		      name = bfd_section_name (input_bfd, sec);
+		      name = bfd_section_name (sec);
 		  }
 		(*info->callbacks->reloc_overflow)
 		  (info, (h ? &h->root : NULL), name, howto->name,
diff --git a/bfd/elfxx-tilegx.c b/bfd/elfxx-tilegx.c
index 2149fbcd22..41af167e1e 100644
--- a/bfd/elfxx-tilegx.c
+++ b/bfd/elfxx-tilegx.c
@@ -1438,13 +1438,13 @@ tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 					  (bed->dynamic_sec_flags
 					   | SEC_READONLY));
   if (s == NULL
-      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
-      || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
     return FALSE;
   htab->sgot = s;
 
@@ -1455,8 +1455,7 @@ tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
     {
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
-	  || !bfd_set_section_alignment (abfd, s,
-					 bed->s->log_file_align))
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
 	return FALSE;
       htab->sgotplt = s;
 
@@ -3032,7 +3031,7 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 	  name = (bfd_elf_string_from_elf_section
 		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
 	  if (name == NULL || *name == '\0')
-	    name = bfd_section_name (input_bfd, sec);
+	    name = bfd_section_name (sec);
 	}
 
       switch (r_type)
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 634f911ca5..d8165d1752 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -1238,7 +1238,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd *output_bfd,
 	{
 	  /* Strip these too.  */
 	}
-      else if (htab->is_reloc_section (bfd_get_section_name (dynobj, s)))
+      else if (htab->is_reloc_section (bfd_section_name (s)))
 	{
 	  if (s->size != 0
 	      && s != htab->elf.srelplt
@@ -1280,8 +1280,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd *output_bfd,
 	 it is empty.  Update its section alignment now since it
 	 is non-empty.  */
       if (s == htab->elf.iplt)
-	bfd_set_section_alignment (s->owner, s,
-				   htab->plt.iplt_alignment);
+	bfd_set_section_alignment (s, htab->plt.iplt_alignment);
 
       /* Allocate memory for the section contents.  We use bfd_zalloc
 	 here in case unused entries are not reclaimed before the
@@ -2625,7 +2624,7 @@ _bfd_x86_elf_link_setup_gnu_properties
 	  if (sec == NULL)
 	    info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
 
-	  if (!bfd_set_section_alignment (ebfd, sec, class_align))
+	  if (!bfd_set_section_alignment (sec, class_align))
 	    {
 error_alignment:
 	      info->callbacks->einfo (_("%F%pA: failed to align section\n"),
@@ -2839,11 +2838,11 @@ error_alignment:
      instead of in create_dynamic_sections so that they are always
      properly aligned even if create_dynamic_sections isn't called.  */
   sec = htab->elf.sgot;
-  if (!bfd_set_section_alignment (dynobj, sec, got_align))
+  if (!bfd_set_section_alignment (sec, got_align))
     goto error_alignment;
 
   sec = htab->elf.sgotplt;
-  if (!bfd_set_section_alignment (dynobj, sec, got_align))
+  if (!bfd_set_section_alignment (sec, got_align))
     goto error_alignment;
 
   /* Create the ifunc sections here so that check_relocs can be
@@ -2881,8 +2880,7 @@ error_alignment:
 	    = bfd_log2 (htab->non_lazy_plt->plt_entry_size);
 
 	  sec = pltsec;
-	  if (!bfd_set_section_alignment (sec->owner, sec,
-					  plt_alignment))
+	  if (!bfd_set_section_alignment (sec, plt_alignment))
 	    goto error_alignment;
 
 	  /* Create the GOT procedure linkage table.  */
@@ -2892,8 +2890,7 @@ error_alignment:
 	  if (sec == NULL)
 	    info->callbacks->einfo (_("%F%P: failed to create GOT PLT section\n"));
 
-	  if (!bfd_set_section_alignment (dynobj, sec,
-					  non_lazy_plt_alignment))
+	  if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
 	    goto error_alignment;
 
 	  htab->plt_got = sec;
@@ -2913,8 +2910,7 @@ error_alignment:
 		  if (sec == NULL)
 		    info->callbacks->einfo (_("%F%P: failed to create IBT-enabled PLT section\n"));
 
-		  if (!bfd_set_section_alignment (dynobj, sec,
-						  plt_alignment))
+		  if (!bfd_set_section_alignment (sec, plt_alignment))
 		    goto error_alignment;
 		}
 	      else if (htab->params->bndplt && ABI_64_P (dynobj))
@@ -2928,8 +2924,7 @@ error_alignment:
 		  if (sec == NULL)
 		    info->callbacks->einfo (_("%F%P: failed to create BND PLT section\n"));
 
-		  if (!bfd_set_section_alignment (dynobj, sec,
-						  non_lazy_plt_alignment))
+		  if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
 		    goto error_alignment;
 		}
 
@@ -2949,7 +2944,7 @@ error_alignment:
 	  if (sec == NULL)
 	    info->callbacks->einfo (_("%F%P: failed to create PLT .eh_frame section\n"));
 
-	  if (!bfd_set_section_alignment (dynobj, sec, class_align))
+	  if (!bfd_set_section_alignment (sec, class_align))
 	    goto error_alignment;
 
 	  htab->plt_eh_frame = sec;
@@ -2962,7 +2957,7 @@ error_alignment:
 	      if (sec == NULL)
 		info->callbacks->einfo (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
 
-	      if (!bfd_set_section_alignment (dynobj, sec, class_align))
+	      if (!bfd_set_section_alignment (sec, class_align))
 		goto error_alignment;
 
 	      htab->plt_got_eh_frame = sec;
@@ -2976,7 +2971,7 @@ error_alignment:
 	      if (sec == NULL)
 		info->callbacks->einfo (_("%F%P: failed to create the second PLT .eh_frame section\n"));
 
-	      if (!bfd_set_section_alignment (dynobj, sec, class_align))
+	      if (!bfd_set_section_alignment (sec, class_align))
 		goto error_alignment;
 
 	      htab->plt_second_eh_frame = sec;
@@ -2995,7 +2990,7 @@ error_alignment:
 	 section backwards, resulting in a warning and section lma not
 	 being set properly.  It later leads to a "File truncated"
 	 error.  */
-      if (!bfd_set_section_alignment (sec->owner, sec, 0))
+      if (!bfd_set_section_alignment (sec, 0))
 	goto error_alignment;
 
       htab->plt.iplt_alignment = (normal_target
diff --git a/bfd/i386msdos.c b/bfd/i386msdos.c
index 9c4ab4cece..18f332f60d 100644
--- a/bfd/i386msdos.c
+++ b/bfd/i386msdos.c
@@ -109,7 +109,7 @@ msdos_object_p (bfd *abfd)
       return NULL;
     }
 
-  bfd_set_section_size (abfd, section, size);
+  bfd_set_section_size (section, size);
   section->alignment_power = 4;
 
   return abfd->xvec;
@@ -135,16 +135,16 @@ msdos_write_object_contents (bfd *abfd)
     {
       if (sec->size == 0)
 	continue;
-      if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+      if (bfd_section_flags (sec) & SEC_ALLOC)
 	{
-	  bfd_vma sec_vma = bfd_get_section_vma (abfd, sec) + sec->size;
+	  bfd_vma sec_vma = bfd_section_vma (sec) + sec->size;
 	  if (sec_vma > high_vma)
 	    high_vma = sec_vma;
 	}
-      if (bfd_get_section_flags (abfd, sec) & SEC_LOAD)
+      if (bfd_section_flags (sec) & SEC_LOAD)
 	{
 	  file_ptr sec_end = (sizeof (hdr)
-			      + bfd_get_section_vma (abfd, sec)
+			      + bfd_section_vma (sec)
 			      + sec->size);
 	  if (sec_end > outfile_size)
 	    outfile_size = sec_end;
@@ -195,9 +195,9 @@ msdos_set_section_contents (bfd *abfd,
   if (count == 0)
     return TRUE;
 
-  section->filepos = EXE_PAGE_SIZE + bfd_get_section_vma (abfd, section);
+  section->filepos = EXE_PAGE_SIZE + bfd_section_vma (section);
 
-  if (bfd_get_section_flags (abfd, section) & SEC_LOAD)
+  if (bfd_section_flags (section) & SEC_LOAD)
     {
       if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
 	  || bfd_bwrite (location, count, abfd) != count)
diff --git a/bfd/linker.c b/bfd/linker.c
index 2518371f24..143b8eb950 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -2396,7 +2396,7 @@ _bfd_generic_reloc_link_order (bfd *abfd,
 	  (*info->callbacks->reloc_overflow)
 	    (info, NULL,
 	     (link_order->type == bfd_section_reloc_link_order
-	      ? bfd_section_name (abfd, link_order->u.reloc.p->u.section)
+	      ? bfd_section_name (link_order->u.reloc.p->u.section)
 	      : link_order->u.reloc.p->u.name),
 	     r->howto->name, link_order->u.reloc.p->addend,
 	     NULL, NULL, 0);
@@ -2942,7 +2942,7 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
      into a single large link once section, which defeats the purpose
      of having link once sections in the first place.  */
 
-  name = bfd_get_section_name (abfd, sec);
+  name = bfd_section_name (sec);
 
   already_linked_list = bfd_section_already_linked_table_lookup (name);
 
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 7d70087c95..117e410d83 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -437,7 +437,7 @@ bfd_mach_o_convert_section_name_to_mach_o (bfd *abfd ATTRIBUTE_UNUSED,
 					   bfd_mach_o_section *section)
 {
   const mach_o_section_name_xlat *xlat;
-  const char *name = bfd_get_section_name (abfd, sect);
+  const char *name = bfd_section_name (sect);
   const char *segname;
   const char *dot;
   unsigned int len;
@@ -2583,13 +2583,13 @@ bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
   target_index = 0;
   for (sec = abfd->sections; sec; sec = sec->next)
     {
-      unsigned bfd_align = bfd_get_section_alignment (abfd, sec);
+      unsigned bfd_align = bfd_section_alignment (sec);
       bfd_mach_o_section *msect = bfd_mach_o_get_mach_o_section (sec);
 
       mdata->sections[target_index] = msect;
 
-      msect->addr = bfd_get_section_vma (abfd, sec);
-      msect->size = bfd_get_section_size (sec);
+      msect->addr = bfd_section_vma (sec);
+      msect->size = bfd_section_size (sec);
 
       /* Use the largest alignment set, in case it was bumped after the
 	 section was created.  */
@@ -2808,7 +2808,7 @@ bfd_mach_o_set_section_flags_from_bfd (bfd *abfd ATTRIBUTE_UNUSED,
   bfd_mach_o_section *s = bfd_mach_o_get_mach_o_section (sec);
 
   /* Create default flags.  */
-  bfd_flags = bfd_get_section_flags (abfd, sec);
+  bfd_flags = bfd_section_flags (sec);
   if ((bfd_flags & SEC_CODE) == SEC_CODE)
     s->flags = BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS
       | BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS
@@ -2983,7 +2983,7 @@ bfd_mach_o_build_exec_seg_command (bfd *abfd, bfd_mach_o_segment_command *seg)
   for (s = seg->sect_head; s != NULL; s = s->next)
     {
       asection *sec = s->bfdsection;
-      flagword flags = bfd_get_section_flags (abfd, sec);
+      flagword flags = bfd_section_flags (sec);
 
       /* Adjust segment size.  */
       seg->vmsize = FILE_ALIGN (seg->vmsize, s->align);
@@ -3502,7 +3502,7 @@ bfd_boolean
 bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
 {
   bfd_mach_o_section *s;
-  unsigned bfdalign = bfd_get_section_alignment (abfd, sec);
+  unsigned bfdalign = bfd_section_alignment (sec);
 
   s = bfd_mach_o_get_mach_o_section (sec);
   if (s == NULL)
@@ -3526,10 +3526,10 @@ bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
 	  s->flags = xlat->macho_sectype | xlat->macho_secattr;
 	  s->align = xlat->sectalign > bfdalign ? xlat->sectalign
 						: bfdalign;
-	  (void) bfd_set_section_alignment (abfd, sec, s->align);
-	  bfd_flags = bfd_get_section_flags (abfd, sec);
+	  bfd_set_section_alignment (sec, s->align);
+	  bfd_flags = bfd_section_flags (sec);
 	  if (bfd_flags == SEC_NO_FLAGS)
-	    bfd_set_section_flags (abfd, sec, xlat->bfd_flags);
+	    bfd_set_section_flags (sec, xlat->bfd_flags);
 	}
       else
 	/* Create default flags.  */
@@ -3540,13 +3540,12 @@ bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
 }
 
 static void
-bfd_mach_o_init_section_from_mach_o (bfd *abfd, asection *sec,
-				     unsigned long prot)
+bfd_mach_o_init_section_from_mach_o (asection *sec, unsigned long prot)
 {
   flagword flags;
   bfd_mach_o_section *section;
 
-  flags = bfd_get_section_flags (abfd, sec);
+  flags = bfd_section_flags (sec);
   section = bfd_mach_o_get_mach_o_section (sec);
 
   /* TODO: see if we should use the xlat system for doing this by
@@ -3584,7 +3583,7 @@ bfd_mach_o_init_section_from_mach_o (bfd *abfd, asection *sec,
   if (section->nreloc != 0)
     flags |= SEC_RELOC;
 
-  bfd_set_section_flags (abfd, sec, flags);
+  bfd_set_section_flags (sec, flags);
 
   sec->vma = section->addr;
   sec->lma = section->addr;
@@ -3651,7 +3650,7 @@ bfd_mach_o_read_section_32 (bfd *abfd, unsigned long prot)
   section->reserved2 = bfd_h_get_32 (abfd, raw.reserved2);
   section->reserved3 = 0;
 
-  bfd_mach_o_init_section_from_mach_o (abfd, sec, prot);
+  bfd_mach_o_init_section_from_mach_o (sec, prot);
 
   return sec;
 }
@@ -3694,7 +3693,7 @@ bfd_mach_o_read_section_64 (bfd *abfd, unsigned long prot)
   section->reserved2 = bfd_h_get_32 (abfd, raw.reserved2);
   section->reserved3 = bfd_h_get_32 (abfd, raw.reserved3);
 
-  bfd_mach_o_init_section_from_mach_o (abfd, sec, prot);
+  bfd_mach_o_init_section_from_mach_o (sec, prot);
 
   return sec;
 }
diff --git a/bfd/mmo.c b/bfd/mmo.c
index f48f9868fe..736ee4bed8 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -596,7 +596,7 @@ static bfd_boolean
 mmo_section_has_contents (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p ATTRIBUTE_UNUSED)
 {
   /* The point is to match what --extract-symbols does (well, negated).  */
-  return bfd_get_section_size (sec) != 0;
+  return bfd_section_size (sec) != 0;
 }
 
 /* Find out whether we should omit symbol consistency checks for this
@@ -642,10 +642,10 @@ static void
 mmo_find_sec_w_addr (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p)
 {
   struct mmo_find_sec_info *infop = (struct mmo_find_sec_info *) p;
-  bfd_vma vma = bfd_get_section_vma (abfd, sec);
+  bfd_vma vma = bfd_section_vma (sec);
 
   /* Ignore sections that aren't loaded.  */
-  if ((bfd_get_section_flags (abfd, sec) & (SEC_LOAD | SEC_ALLOC))
+  if ((bfd_section_flags (sec) & (SEC_LOAD | SEC_ALLOC))
       !=  (SEC_LOAD | SEC_ALLOC))
     return;
 
@@ -657,10 +657,10 @@ static void
 mmo_find_sec_w_addr_grow (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p)
 {
   struct mmo_find_sec_info *infop = (struct mmo_find_sec_info *) p;
-  bfd_vma vma = bfd_get_section_vma (abfd, sec);
+  bfd_vma vma = bfd_section_vma (sec);
 
   /* Ignore sections that aren't loaded.  */
-  if ((bfd_get_section_flags (abfd, sec) & (SEC_LOAD | SEC_ALLOC))
+  if ((bfd_section_flags (sec) & (SEC_LOAD | SEC_ALLOC))
       !=  (SEC_LOAD | SEC_ALLOC))
     return;
 
@@ -700,12 +700,11 @@ mmo_decide_section (bfd *abfd, bfd_vma vma)
       if (sec == NULL)
 	return NULL;
 
-      if (! sec->user_set_vma && ! bfd_set_section_vma (abfd, sec, vma))
+      if (!sec->user_set_vma && !bfd_set_section_vma (sec, vma))
 	return NULL;
 
-      if (! bfd_set_section_flags (abfd, sec,
-				   bfd_get_section_flags (abfd, sec)
-				   | SEC_CODE | SEC_LOAD | SEC_ALLOC))
+      if (!bfd_set_section_flags (sec, (bfd_section_flags (sec)
+					| SEC_CODE | SEC_LOAD | SEC_ALLOC)))
 	return NULL;
     }
   else if ((vma >> 56) == 0x20)
@@ -715,12 +714,11 @@ mmo_decide_section (bfd *abfd, bfd_vma vma)
       if (sec == NULL)
 	return NULL;
 
-      if (! sec->user_set_vma && ! bfd_set_section_vma (abfd, sec, vma))
+      if (!sec->user_set_vma && !bfd_set_section_vma (sec, vma))
 	return NULL;
 
-      if (! bfd_set_section_flags (abfd, sec,
-				   bfd_get_section_flags (abfd, sec)
-				   | SEC_LOAD | SEC_ALLOC))
+      if (!bfd_set_section_flags (sec, (bfd_section_flags (sec)
+					| SEC_LOAD | SEC_ALLOC)))
 	return NULL;
     }
 
@@ -733,12 +731,11 @@ mmo_decide_section (bfd *abfd, bfd_vma vma)
   sprintf (sec_name, ".MMIX.sec.%d", abfd->tdata.mmo_data->sec_no++);
   sec = mmo_make_section (abfd, sec_name);
 
-  if (! sec->user_set_vma && ! bfd_set_section_vma (abfd, sec, vma))
+  if (!sec->user_set_vma && !bfd_set_section_vma (sec, vma))
     return NULL;
 
-  if (! bfd_set_section_flags (abfd, sec,
-			       bfd_get_section_flags (abfd, sec)
-			       | SEC_LOAD | SEC_ALLOC))
+  if (!bfd_set_section_flags (sec, (bfd_section_flags (sec)
+				    | SEC_LOAD | SEC_ALLOC)))
     return NULL;
   return sec;
 }
@@ -1136,14 +1133,13 @@ mmo_get_spec_section (bfd *abfd, int spec_data_number)
 
   /* Add in the section flags we found to those bfd entered during this
      process and set the contents.  */
-  if (! bfd_set_section_flags (abfd, sec,
-			       bfd_sec_flags_from_mmo_flags (flags)
-			       | bfd_get_section_flags (abfd, sec)
-			       | (section_length != 0 ? SEC_HAS_CONTENTS : 0))
-      || ! bfd_set_section_size (abfd, sec, sec->size + section_length)
+  if (!bfd_set_section_flags (sec,
+			      (bfd_sec_flags_from_mmo_flags (flags)
+			       | bfd_section_flags (sec)
+			       | (section_length != 0 ? SEC_HAS_CONTENTS : 0)))
+      || !bfd_set_section_size (sec, sec->size + section_length)
       /* Set VMA only for the first occurrence.  */
-      || (! sec->user_set_vma
-	  && ! bfd_set_section_vma  (abfd, sec, section_vma)))
+      || (!sec->user_set_vma && !bfd_set_section_vma (sec, section_vma)))
     {
       /* If we get an error for any of the calls above, signal more than
 	 just a format error for the spec section.  */
@@ -1561,9 +1557,8 @@ mmo_get_loc (asection *sec, bfd_vma vma, int size)
 
 	  /* We get here for the first time (at other times too) for this
 	     section.  Say we have contents.  */
-	  if (! bfd_set_section_flags (sec->owner, sec,
-				       bfd_get_section_flags (sec->owner, sec)
-				       | SEC_HAS_CONTENTS))
+	  if (!bfd_set_section_flags (sec, (bfd_section_flags (sec)
+					    | SEC_HAS_CONTENTS)))
 	    return NULL;
 	}
     }
@@ -2070,18 +2065,16 @@ mmo_scan (bfd *abfd)
      section flags must be set then.  */
   sec = bfd_get_section_by_name (abfd, MMO_TEXT_SECTION_NAME);
   if (sec != NULL
-      && (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
-      && ! bfd_set_section_flags (abfd, sec,
-				  bfd_get_section_flags (abfd, sec)
-				  | SEC_ALLOC | SEC_LOAD | SEC_CODE))
+      && (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
+      && !bfd_set_section_flags (sec, (bfd_section_flags (sec)
+				       | SEC_ALLOC | SEC_LOAD | SEC_CODE)))
     error = TRUE;
 
   sec = bfd_get_section_by_name (abfd, MMO_DATA_SECTION_NAME);
   if (sec != NULL
-      && (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
-      && ! bfd_set_section_flags (abfd, sec,
-				  bfd_get_section_flags (abfd, sec)
-				  | SEC_ALLOC | SEC_LOAD))
+      && (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
+      && !bfd_set_section_flags (sec, (bfd_section_flags (sec)
+				       | SEC_ALLOC | SEC_LOAD)))
     error = TRUE;
 
   /* Free whatever resources we took.  */
@@ -2432,7 +2425,7 @@ bfd_sec_flags_from_mmo_flags (flagword flags)
 static bfd_boolean
 mmo_has_leading_or_trailing_zero_tetra_p (bfd *abfd, asection *sec)
 {
-  bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
+  bfd_vma secaddr = bfd_section_vma (sec);
 
   if (sec->size < 4)
     return FALSE;
@@ -2464,7 +2457,7 @@ mmo_internal_write_section (bfd *abfd, asection *sec)
 
   if (strcmp (sec->name, MMO_TEXT_SECTION_NAME) == 0)
     {
-      bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
+      bfd_vma secaddr = bfd_section_vma (sec);
 
       /* Because leading and trailing zeros are omitted in output, we need to
 	 specify the section boundaries so they're correct when the file
@@ -2485,7 +2478,7 @@ mmo_internal_write_section (bfd *abfd, asection *sec)
     }
   else if (strcmp (sec->name, MMO_DATA_SECTION_NAME) == 0)
     {
-      bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
+      bfd_vma secaddr = bfd_section_vma (sec);
 
       /* Same goes as for MMO_TEXT_SECTION_NAME above.  */
       if (sec->size != 0
@@ -2519,7 +2512,7 @@ mmo_internal_write_section (bfd *abfd, asection *sec)
     }
   /* Ignore sections that are just allocated or empty; we write out
      _contents_ here.  */
-  else if ((bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS) != 0
+  else if ((bfd_section_flags (sec) & SEC_HAS_CONTENTS) != 0
 	   && sec->size != 0)
     {
       if (!mmo_write_section_description (abfd, sec))
@@ -2527,7 +2520,7 @@ mmo_internal_write_section (bfd *abfd, asection *sec)
 
       /* Writing a LOP_LOC ends the LOP_SPEC data, and makes data actually
 	 loaded.  */
-      if (bfd_get_section_flags (abfd, sec) & SEC_LOAD)
+      if (bfd_section_flags (sec) & SEC_LOAD)
 	return (! abfd->tdata.mmo_data->have_error
 		&& mmo_write_loc_chunk_list (abfd,
 					 mmo_section_data (sec)->head));
@@ -2646,10 +2639,9 @@ EXAMPLE
      for all alien sections; perhaps mmo.em should clear that flag.  Might
      be related to weak references.  */
   mmo_write_tetra (abfd,
-		   mmo_sec_flags_from_bfd_flags
-		   (bfd_get_section_flags (abfd, sec)));
+		   mmo_sec_flags_from_bfd_flags (bfd_section_flags (sec)));
   mmo_write_octa (abfd, sec->size);
-  mmo_write_octa (abfd, bfd_get_section_vma (abfd, sec));
+  mmo_write_octa (abfd, bfd_section_vma (sec));
   return TRUE;
 }
 
@@ -3171,7 +3163,7 @@ mmo_write_section_unless_reg_contents (bfd *abfd, asection *sec, void *p)
   /* Exclude the convenience register section.  */
   if (strcmp (sec->name, MMIX_REG_SECTION_NAME) == 0)
     {
-      if (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
+      if (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
 	{
 	  /* Make sure it hasn't got contents.  It seems impossible to
 	     make it carry contents, so we don't have a test-case for
diff --git a/bfd/opncls.c b/bfd/opncls.c
index d14dfe9320..b537dfd96d 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -1218,7 +1218,7 @@ bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out)
   if (sect == NULL)
     return NULL;
 
-  size = bfd_get_section_size (sect);
+  size = bfd_section_size (sect);
 
   /* PR 22794: Make sure that the section has a reasonable size.  */
   if (size < 8 || size >= bfd_get_size (abfd))
@@ -1308,7 +1308,7 @@ bfd_get_alt_debug_link_info (bfd * abfd, bfd_size_type *buildid_len,
   if (sect == NULL)
     return NULL;
 
-  size = bfd_get_section_size (sect);
+  size = bfd_section_size (sect);
   if (size < 8 || size >= bfd_get_size (abfd))
     return NULL;
 
@@ -1322,7 +1322,7 @@ bfd_get_alt_debug_link_info (bfd * abfd, bfd_size_type *buildid_len,
   /* BuildID value is stored after the filename.  */
   name = (char *) contents;
   buildid_offset = strnlen (name, size) + 1;
-  if (buildid_offset >= bfd_get_section_size (sect))
+  if (buildid_offset >= bfd_section_size (sect))
     return NULL;
 
   *buildid_len = size - buildid_offset;
@@ -1727,14 +1727,14 @@ bfd_create_gnu_debuglink_section (bfd *abfd, const char *filename)
   debuglink_size &= ~3;
   debuglink_size += 4;
 
-  if (! bfd_set_section_size (abfd, sect, debuglink_size))
+  if (!bfd_set_section_size (sect, debuglink_size))
     /* XXX Should we delete the section from the bfd ?  */
     return NULL;
 
   /* PR 21193: Ensure that the section has 4-byte alignment for the CRC.
      Note - despite the name of the function being called, we are
      setting an alignment power, not a byte alignment value.  */
-  bfd_set_section_alignment (abfd, sect, 2);
+  bfd_set_section_alignment (sect, 2);
 
   return sect;
 }
@@ -1872,7 +1872,7 @@ get_build_id (bfd *abfd)
       return NULL;
     }
 
-  size = bfd_get_section_size (sect);
+  size = bfd_section_size (sect);
   /* FIXME: Should we support smaller build-id notes ?  */
   if (size < 0x24)
     {
@@ -1890,7 +1890,7 @@ get_build_id (bfd *abfd)
   /* FIXME: Paranoia - allow for compressed build-id sections.
      Maybe we should complain if this size is different from
      the one obtained above...  */
-  size = bfd_get_section_size (sect);
+  size = bfd_section_size (sect);
   if (size < sizeof (Elf_External_Note))
     {
       bfd_set_error (bfd_error_invalid_operation);
diff --git a/bfd/pdp11.c b/bfd/pdp11.c
index 238f5144d4..a0c3ac0fa6 100644
--- a/bfd/pdp11.c
+++ b/bfd/pdp11.c
@@ -2802,17 +2802,17 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 	  break;
 	case N_TEXT | N_EXT:
 	  section = obj_textsec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_DATA | N_EXT:
 	  /* Treat N_SETV symbols as N_DATA symbol; see comment in
 	     translate_from_native_sym_flags.  */
 	  section = obj_datasec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	case N_BSS | N_EXT:
 	  section = obj_bsssec (abfd);
-	  value -= bfd_get_section_vma (abfd, section);
+	  value -= bfd_section_vma (section);
 	  break;
 	}
 
@@ -3151,8 +3151,7 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
 	  (*flaginfo->info->callbacks->reloc_overflow)
 	    (flaginfo->info, NULL,
 	     (p->type == bfd_section_reloc_link_order
-	      ? bfd_section_name (flaginfo->output_bfd,
-				  pr->u.section)
+	      ? bfd_section_name (pr->u.section)
 	      : pr->u.name),
 	     howto->name, pr->addend, NULL,
 	     (asection *) NULL, (bfd_vma) 0);
@@ -3477,7 +3476,7 @@ pdp11_aout_link_input_section (struct aout_final_link_info *flaginfo,
 		    asection *s;
 
 		    s = aout_reloc_type_to_section (input_bfd, r_type);
-		    name = bfd_section_name (input_bfd, s);
+		    name = bfd_section_name (s);
 		  }
 		(*flaginfo->info->callbacks->reloc_overflow)
 		  (flaginfo->info, (h ? &h->root : NULL), name, howto->name,
@@ -3997,8 +3996,7 @@ aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 	return FALSE;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd,
-		(bfd_get_section_vma (output_bfd,
-				      obj_textsec (input_bfd)->output_section)
+		(bfd_section_vma (obj_textsec (input_bfd)->output_section)
 		 + obj_textsec (input_bfd)->output_offset),
 		outsym->e_value);
       ++obj_aout_external_sym_count (output_bfd);
@@ -4206,7 +4204,7 @@ aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 		  BFD_ASSERT (bfd_is_abs_section (output_section)
 			      || output_section->owner == output_bfd);
 		  val = (hresolve->root.u.def.value
-			 + bfd_get_section_vma (output_bfd, output_section)
+			 + bfd_section_vma (output_section)
 			 + input_section->output_offset);
 
 		  /* Get the correct type based on the section.  If
diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
index 2588e6c6e9..c0b97351de 100644
--- a/bfd/pei-x86_64.c
+++ b/bfd/pei-x86_64.c
@@ -770,7 +770,7 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
 	  if (PEX64_IS_RUNTIME_FUNCTION_CHAINED (&rf))
 	    {
 	      bfd_vma altent = PEX64_GET_UNWINDDATA_UNIFIED_RVA (&rf);
-	      bfd_vma pdata_vma = bfd_get_section_vma (abfd, pdata_section);
+	      bfd_vma pdata_vma = bfd_section_vma (pdata_section);
 	      struct pex64_runtime_function arf;
 
 	      fprintf (file, "\t shares information with ");
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 679474ecd1..1e2b104430 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -608,16 +608,16 @@ pe_ILF_make_a_section (pe_ILF_vars * vars,
 
   flags = SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_KEEP | SEC_IN_MEMORY;
 
-  bfd_set_section_flags (vars->abfd, sec, flags | extra_flags);
+  bfd_set_section_flags (sec, flags | extra_flags);
 
-  (void) bfd_set_section_alignment (vars->abfd, sec, 2);
+  bfd_set_section_alignment (sec, 2);
 
   /* Check that we will not run out of space.  */
   BFD_ASSERT (vars->data + size < vars->bim->buffer + vars->bim->size);
 
   /* Set the section size and contents.  The actual
      contents are filled in by our parent.  */
-  bfd_set_section_size (vars->abfd, sec, (bfd_size_type) size);
+  bfd_set_section_size (sec, (bfd_size_type) size);
   sec->contents = vars->data;
   sec->target_index = vars->sec_index ++;
 
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 8eac73ddfe..0c67ecd313 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -1526,8 +1526,7 @@ _bfd_clear_contents (reloc_howto_type *howto,
 
   /* For a range list, use 1 instead of 0 as placeholder.  0
      would terminate the list, hiding any later entries.  */
-  if (strcmp (bfd_get_section_name (input_bfd, input_section),
-	      ".debug_ranges") == 0
+  if (strcmp (bfd_section_name (input_section), ".debug_ranges") == 0
       && (howto->dst_mask & 1) != 0)
     x |= 1;
 
diff --git a/bfd/section.c b/bfd/section.c
index 74feb73be9..3a9cb26023 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -554,26 +554,31 @@ CODE_FRAGMENT
 .   would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
 .   compilers will complain about comma expressions that have no effect.  *}
 .static inline bfd_boolean
-.bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr,
-.			   void * val)
+.bfd_set_section_userdata (asection *sec, void *val)
 .{
-.  ptr->userdata = val;
+.  sec->userdata = val;
 .  return TRUE;
 .}
 .
 .static inline bfd_boolean
-.bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
+.bfd_set_section_vma (asection *sec, bfd_vma val)
 .{
-.  ptr->vma = ptr->lma = val;
-.  ptr->user_set_vma = TRUE;
+.  sec->vma = sec->lma = val;
+.  sec->user_set_vma = TRUE;
 .  return TRUE;
 .}
 .
 .static inline bfd_boolean
-.bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr,
-.			    unsigned int val)
+.bfd_set_section_lma (asection *sec, bfd_vma val)
 .{
-.  ptr->alignment_power = val;
+.  sec->lma = val;
+.  return TRUE;
+.}
+.
+.static inline bfd_boolean
+.bfd_set_section_alignment (asection *sec, unsigned int val)
+.{
+.  sec->alignment_power = val;
 .  return TRUE;
 .}
 .
@@ -1289,13 +1294,12 @@ FUNCTION
 	bfd_set_section_flags
 
 SYNOPSIS
-	bfd_boolean bfd_set_section_flags
-	  (bfd *abfd, asection *sec, flagword flags);
+	bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
 
 DESCRIPTION
-	Set the attributes of the section @var{sec} in the BFD
-	@var{abfd} to the value @var{flags}. Return <<TRUE>> on success,
-	<<FALSE>> on error. Possible error returns are:
+	Set the attributes of the section @var{sec} to the value @var{flags}.
+	Return <<TRUE>> on success, <<FALSE>> on error.  Possible error
+	returns are:
 
 	o <<bfd_error_invalid_operation>> -
 	The section cannot have one or more of the attributes
@@ -1305,9 +1309,7 @@ DESCRIPTION
 */
 
 bfd_boolean
-bfd_set_section_flags (bfd *abfd ATTRIBUTE_UNUSED,
-		       sec_ptr section,
-		       flagword flags)
+bfd_set_section_flags (asection *section, flagword flags)
 {
   section->flags = flags;
   return TRUE;
@@ -1319,21 +1321,21 @@ FUNCTION
 
 SYNOPSIS
 	void bfd_rename_section
-	  (bfd *abfd, asection *sec, const char *newname);
+	  (asection *sec, const char *newname);
 
 DESCRIPTION
-	Rename section @var{sec} in @var{abfd} to @var{newname}.
+	Rename section @var{sec} to @var{newname}.
 */
 
 void
-bfd_rename_section (bfd *abfd, sec_ptr sec, const char *newname)
+bfd_rename_section (asection *sec, const char *newname)
 {
   struct section_hash_entry *sh;
 
   sh = (struct section_hash_entry *)
     ((char *) sec - offsetof (struct section_hash_entry, section));
   sh->section.name = newname;
-  bfd_hash_rename (&abfd->section_htab, newname, &sh->root);
+  bfd_hash_rename (&sec->owner->section_htab, newname, &sh->root);
 }
 
 /*
@@ -1417,8 +1419,7 @@ FUNCTION
 	bfd_set_section_size
 
 SYNOPSIS
-	bfd_boolean bfd_set_section_size
-	  (bfd *abfd, asection *sec, bfd_size_type val);
+	bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
 
 DESCRIPTION
 	Set @var{sec} to the size @var{val}. If the operation is
@@ -1431,18 +1432,18 @@ DESCRIPTION
 */
 
 bfd_boolean
-bfd_set_section_size (bfd *abfd, sec_ptr ptr, bfd_size_type val)
+bfd_set_section_size (asection *sec, bfd_size_type val)
 {
   /* Once you've started writing to any section you cannot create or change
      the size of any others.  */
 
-  if (abfd->output_has_begun)
+  if (sec->owner == NULL || sec->owner->output_has_begun)
     {
       bfd_set_error (bfd_error_invalid_operation);
       return FALSE;
     }
 
-  ptr->size = val;
+  sec->size = val;
   return TRUE;
 }
 
@@ -1486,7 +1487,7 @@ bfd_set_section_contents (bfd *abfd,
 {
   bfd_size_type sz;
 
-  if (!(bfd_get_section_flags (abfd, section) & SEC_HAS_CONTENTS))
+  if (!(bfd_section_flags (section) & SEC_HAS_CONTENTS))
     {
       bfd_set_error (bfd_error_no_contents);
       return FALSE;
diff --git a/bfd/syms.c b/bfd/syms.c
index 4d532b2cd2..9a2754ebe6 100644
--- a/bfd/syms.c
+++ b/bfd/syms.c
@@ -1290,7 +1290,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
 
   /* We are passed a section relative offset.  The offsets in the
      stabs information are absolute.  */
-  offset += bfd_get_section_vma (abfd, section);
+  offset += bfd_section_vma (section);
 
 #ifdef ENABLE_CACHING
   if (info->cached_indexentry != NULL
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 8d2a2dff62..4dde056e1e 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -632,7 +632,7 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned int offset)
       section->size = size;
       section->vma = vaddr;
 
-      if (!bfd_set_section_flags (abfd, section, bfd_flags))
+      if (!bfd_set_section_flags (section, bfd_flags))
 	return FALSE;
     }
 
@@ -687,7 +687,7 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned int offset)
       section->size = dstsize;
       section->filepos = VMS_BLOCK_SIZE * (dstvbn - 1);
 
-      if (!bfd_set_section_flags (abfd, section, bfd_flags))
+      if (!bfd_set_section_flags (section, bfd_flags))
 	return FALSE;
 
       PRIV (dst_section) = section;
@@ -705,7 +705,7 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned int offset)
       section->size = dmtbytes;
       section->filepos = VMS_BLOCK_SIZE * (dmtvbn - 1);
 
-      if (!bfd_set_section_flags (abfd, section, bfd_flags))
+      if (!bfd_set_section_flags (section, bfd_flags))
 	return FALSE;
     }
 
@@ -1261,7 +1261,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 		    new_flags |= SEC_CODE;
 		    new_flags &= ~SEC_DATA;
 		  }
-		if (!bfd_set_section_flags (abfd, section, new_flags))
+		if (!bfd_set_section_flags (section, new_flags))
 		  return FALSE;
 
 		/* Give a non-overlapping vma to non absolute sections.  */
@@ -2441,7 +2441,7 @@ vms_slurp_debug (bfd *abfd)
       section = bfd_make_section (abfd, "$DST$");
       if (!section)
 	return FALSE;
-      if (!bfd_set_section_flags (abfd, section, flags))
+      if (!bfd_set_section_flags (section, flags))
 	return FALSE;
       PRIV (dst_section) = section;
     }
@@ -4623,7 +4623,7 @@ build_module_list (bfd *abfd)
 	 section and build the list of modules.  This is sufficient
 	 since we can compute the start address and the end address
 	 of every module from the section contents.  */
-      bfd_size_type size = bfd_get_section_size (dmt);
+      bfd_size_type size = bfd_section_size (dmt);
       unsigned char *ptr, *end;
 
       ptr = (unsigned char *) bfd_alloc (abfd, size);
@@ -9324,7 +9324,7 @@ vms_new_section_hook (bfd * abfd, asection *section)
   vms_debug2 ((1, "vms_new_section_hook (%p, [%u]%s)\n",
 	       abfd, section->index, section->name));
 
-  if (! bfd_set_section_alignment (abfd, section, 0))
+  if (!bfd_set_section_alignment (section, 0))
     return FALSE;
 
   vms_debug2 ((7, "%u: %s\n", section->index, section->name));
@@ -9412,11 +9412,11 @@ vms_get_symbol_info (bfd * abfd ATTRIBUTE_UNUSED,
   else if (bfd_is_ind_section (sec))
     ret->type = 'I';
   else if ((symbol->flags & BSF_FUNCTION)
-	   || (bfd_get_section_flags (abfd, sec) & SEC_CODE))
+	   || (bfd_section_flags (sec) & SEC_CODE))
     ret->type = 'T';
-  else if (bfd_get_section_flags (abfd, sec) & SEC_DATA)
+  else if (bfd_section_flags (sec) & SEC_DATA)
     ret->type = 'D';
-  else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+  else if (bfd_section_flags (sec) & SEC_ALLOC)
     ret->type = 'B';
   else
     ret->type = '?';
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 1a2f87c4b0..52691720ae 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -2080,14 +2080,14 @@ xcoff_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
   for (o = abfd->sections; o != first_csect; o = o->next)
     {
       /* Debugging sections have no csects.  */
-      if (bfd_get_section_flags (abfd, o) & SEC_DEBUGGING)
+      if (bfd_section_flags (o) & SEC_DEBUGGING)
 	continue;
 
       /* Reset the section size and the line number count, since the
 	 data is now attached to the csects.  Don't reset the size of
 	 the .debug section, since we need to read it below in
 	 bfd_xcoff_size_dynamic_sections.  */
-      if (strcmp (bfd_get_section_name (abfd, o), ".debug") != 0)
+      if (strcmp (bfd_section_name (o), ".debug") != 0)
 	o->size = 0;
       o->lineno_count = 0;
 
@@ -3019,7 +3019,7 @@ xcoff_sweep (struct bfd_link_info *info)
 		  || o == xcoff_hash_table (info)->loader_section
 		  || o == xcoff_hash_table (info)->linkage_section
 		  || o == xcoff_hash_table (info)->descriptor_section
-		  || (bfd_get_section_flags (sub, o) & SEC_DEBUGGING)
+		  || (bfd_section_flags (o) & SEC_DEBUGGING)
 		  || strcmp (o->name, ".debug") == 0)
 		o->flags |= SEC_MARK;
 	      else
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 9c791f6d65..9f6300f17d 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* addr2line.c, * bucomm.c, * coffgrok.c, * dlltool.c, * nm.c,
+	* objcopy.c, * objdump.c, * od-elf32_avr.c, * od-macho.c,
+	* od-xcoff.c, * prdbg.c, * rdcoff.c, * rddbg.c, * rescoff.c,
+	* resres.c, * size.c, * srconv.c, * strings.c, * windmc.c: Update
+	throughout for bfd section macro and function changes.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* nm.c: Update bfd_get_section to bfd_asymbol_section throughout.
diff --git a/binutils/addr2line.c b/binutils/addr2line.c
index 8a77c473ba..d9cc2881f8 100644
--- a/binutils/addr2line.c
+++ b/binutils/addr2line.c
@@ -182,14 +182,14 @@ find_address_in_section (bfd *abfd, asection *section,
   if (found)
     return;
 
-  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+  if ((bfd_section_flags (section) & SEC_ALLOC) == 0)
     return;
 
-  vma = bfd_get_section_vma (abfd, section);
+  vma = bfd_section_vma (section);
   if (pc < vma)
     return;
 
-  size = bfd_get_section_size (section);
+  size = bfd_section_size (section);
   if (pc >= vma + size)
     return;
 
@@ -208,10 +208,10 @@ find_offset_in_section (bfd *abfd, asection *section)
   if (found)
     return;
 
-  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+  if ((bfd_section_flags (section) & SEC_ALLOC) == 0)
     return;
 
-  size = bfd_get_section_size (section);
+  size = bfd_section_size (section);
   if (pc >= size)
     return;
 
diff --git a/binutils/bucomm.c b/binutils/bucomm.c
index e8ac3b6de8..2493fd561b 100644
--- a/binutils/bucomm.c
+++ b/binutils/bucomm.c
@@ -94,7 +94,7 @@ bfd_nonfatal_message (const char *filename,
       if (!filename)
 	filename = bfd_get_archive_filename (abfd);
       if (section)
-	section_name = bfd_get_section_name (abfd, section);
+	section_name = bfd_section_name (section);
     }
   if (section_name)
     fprintf (stderr, ":%s[%s]", filename, section_name);
diff --git a/binutils/coffgrok.c b/binutils/coffgrok.c
index 1556a0b8ad..177c66ed76 100644
--- a/binutils/coffgrok.c
+++ b/binutils/coffgrok.c
@@ -145,7 +145,7 @@ do_sections_p1 (struct coff_ofile *head)
       if (strcmp (section->name, ".bss") == 0)
 	head->sections[i].data = 1;
       head->sections[i].address = section->lma;
-      head->sections[i].size = bfd_get_section_size (section);
+      head->sections[i].size = bfd_section_size (section);
       head->sections[i].number = idx;
       head->sections[i].nrelocs = section->reloc_count;
       head->sections[i].relocs =
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index cd2ff24325..85304d0c37 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -1384,7 +1384,7 @@ scan_drectve_symbols (bfd *abfd)
   if (s == NULL)
     return;
 
-  size = bfd_get_section_size (s);
+  size = bfd_section_size (s);
   buf  = xmalloc (size);
 
   bfd_get_section_contents (abfd, s, buf, 0, size);
@@ -2482,11 +2482,9 @@ make_one_lib_file (export_type *exp, int i, int delay)
       if (si->id != i)
 	abort ();
       si->sec = bfd_make_section_old_way (abfd, si->name);
-      bfd_set_section_flags (abfd,
-			     si->sec,
-			     si->flags & applicable);
+      bfd_set_section_flags (si->sec, si->flags & applicable);
 
-      bfd_set_section_alignment(abfd, si->sec, si->align);
+      bfd_set_section_alignment (si->sec, si->align);
       si->sec->output_section = si->sec;
       si->sym = bfd_make_empty_symbol(abfd);
       si->sym->name = si->sec->name;
@@ -2822,7 +2820,7 @@ make_one_lib_file (export_type *exp, int i, int delay)
 	    arelent *imglue, *ba_rel, *ea_rel, *pea_rel;
 
 	    /* Alignment must be set to 2**2 or you get extra stuff.  */
-	    bfd_set_section_alignment(abfd, sec, 2);
+	    bfd_set_section_alignment (sec, 2);
 
 	    si->size = 4 * 5;
 	    si->data = xmalloc (si->size);
@@ -2908,8 +2906,8 @@ make_one_lib_file (export_type *exp, int i, int delay)
       {
 	sinfo *si = secdata + i;
 
-	bfd_set_section_size (abfd, si->sec, si->size);
-	bfd_set_section_vma (abfd, si->sec, vma);
+	bfd_set_section_size (si->sec, si->size);
+	bfd_set_section_vma (si->sec, vma);
       }
   }
   /* Write them out.  */
@@ -3691,7 +3689,7 @@ identify_search_section (bfd * abfd, asection * section, void * obj)
   if (ms_style && ((section->flags & SEC_DATA) == 0))
     return;
 
-  if ((datasize = bfd_section_size (abfd, section)) == 0)
+  if ((datasize = bfd_section_size (section)) == 0)
     return;
 
   data = (bfd_byte *) xmalloc (datasize + 1);
diff --git a/binutils/nm.c b/binutils/nm.c
index 0bded07391..e177d444ef 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -791,8 +791,8 @@ sort_symbols_by_size (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
 	      && sec == bfd_asymbol_section (next))
 	    sz = valueof (next) - valueof (sym);
 	  else
-	    sz = (bfd_get_section_vma (abfd, sec)
-		  + bfd_section_size (abfd, sec)
+	    sz = (bfd_section_vma (sec)
+		  + bfd_section_size (sec)
 		  - valueof (sym));
 	}
 
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index ce4a4afa55..6489fbe72f 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -1255,7 +1255,7 @@ group_signature (asection *group)
 static bfd_boolean
 is_dwo_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 {
-  const char *name = bfd_get_section_name (abfd, sec);
+  const char *name = bfd_section_name (sec);
   int len = strlen (name);
 
   return strncmp (name + len - 4, ".dwo", 4) == 0;
@@ -1310,17 +1310,17 @@ is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
       struct section_list *p;
       struct section_list *q;
 
-      p = find_section_list (bfd_get_section_name (abfd, sec), FALSE,
+      p = find_section_list (bfd_section_name (sec), FALSE,
 			     SECTION_CONTEXT_REMOVE);
-      q = find_section_list (bfd_get_section_name (abfd, sec), FALSE,
+      q = find_section_list (bfd_section_name (sec), FALSE,
 			     SECTION_CONTEXT_COPY);
 
       if (p && q)
 	fatal (_("error: section %s matches both remove and copy options"),
-	       bfd_get_section_name (abfd, sec));
+	       bfd_section_name (sec));
       if (p && is_update_section (abfd, sec))
 	fatal (_("error: section %s matches both update and remove options"),
-	       bfd_get_section_name (abfd, sec));
+	       bfd_section_name (sec));
 
       if (p != NULL)
 	return TRUE;
@@ -1328,7 +1328,7 @@ is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 	return TRUE;
     }
 
-  if ((bfd_get_section_flags (abfd, sec) & SEC_DEBUGGING) != 0)
+  if ((bfd_section_flags (sec) & SEC_DEBUGGING) != 0)
     {
       if (strip_symbols == STRIP_DEBUG
 	  || strip_symbols == STRIP_UNNEEDED
@@ -1339,7 +1339,7 @@ is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 	  /* By default we don't want to strip .reloc section.
 	     This section has for pe-coff special meaning.   See
 	     pe-dll.c file in ld, and peXXigen.c in bfd for details.  */
-	  if (strcmp (bfd_get_section_name (abfd, sec), ".reloc") != 0)
+	  if (strcmp (bfd_section_name (sec), ".reloc") != 0)
 	    return TRUE;
 	}
 
@@ -1364,7 +1364,7 @@ is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
   if (is_strip_section_1 (abfd, sec))
     return TRUE;
 
-  if ((bfd_get_section_flags (abfd, sec) & SEC_GROUP) != 0)
+  if ((bfd_section_flags (sec) & SEC_GROUP) != 0)
     {
       asymbol *gsym;
       const char *gname;
@@ -1414,7 +1414,7 @@ is_nondebug_keep_contents_section (bfd *ibfd, asection *isection)
      directory", but that may be the .text section for objects produced by some
      tools, which it is not sensible to keep.  */
   if (ibfd->xvec->flavour == bfd_target_coff_flavour)
-    return (strcmp (bfd_get_section_name (ibfd, isection), ".buildid") == 0);
+    return (strcmp (bfd_section_name (isection), ".buildid") == 0);
 
   return FALSE;
 }
@@ -2728,7 +2728,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 		}
 	    }
 
-	  if (! bfd_set_section_size (obfd, padd->section, padd->size))
+	  if (!bfd_set_section_size (padd->section, padd->size))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
 	      return FALSE;
@@ -2737,7 +2737,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	  pset = find_section_list (padd->name, FALSE,
 				    SECTION_CONTEXT_SET_VMA | SECTION_CONTEXT_ALTER_VMA);
 	  if (pset != NULL
-	      && ! bfd_set_section_vma (obfd, padd->section, pset->vma_val))
+	      && !bfd_set_section_vma (padd->section, pset->vma_val))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
 	      return FALSE;
@@ -2749,9 +2749,8 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	    {
 	      padd->section->lma = pset->lma_val;
 
-	      if (! bfd_set_section_alignment
-		  (obfd, padd->section,
-		   bfd_section_alignment (obfd, padd->section)))
+	      if (!bfd_set_section_alignment
+		  (padd->section, bfd_section_alignment (padd->section)))
 		{
 		  bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
 		  return FALSE;
@@ -2776,7 +2775,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	    }
 
 	  osec = pupdate->section->output_section;
-	  if (! bfd_set_section_size (obfd, osec, pupdate->size))
+	  if (!bfd_set_section_size (osec, pupdate->size))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, osec, NULL);
 	      return FALSE;
@@ -2793,7 +2792,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	{
 	  bfd_size_type size;
 	  
-	  size = bfd_get_section_size (osec);
+	  size = bfd_section_size (osec);
 	  if (size == 0)
 	    {
 	      bfd_nonfatal_message (NULL, ibfd, osec, _("warning: note section is empty"));
@@ -2820,7 +2819,8 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	      else
 		{
 		  if (osec->output_section == NULL
-		      || ! bfd_set_section_size (obfd, osec->output_section, merged_size))
+		      || !bfd_set_section_size (osec->output_section,
+						merged_size))
 		    {
 		      bfd_nonfatal_message (NULL, obfd, osec, _("warning: failed to set merged notes size"));
 		      free (merged_notes);
@@ -2848,14 +2848,14 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	      continue;
 	    }
 
-	  if ((bfd_get_section_flags (ibfd, osec) & SEC_HAS_CONTENTS) == 0)
+	  if ((bfd_section_flags (osec) & SEC_HAS_CONTENTS) == 0)
 	    {
 	      bfd_nonfatal_message (NULL, ibfd, osec,
 				    _("can't dump section - it has no contents"));
 	      continue;
 	    }
 
-	  bfd_size_type size = bfd_get_section_size (osec);
+	  bfd_size_type size = bfd_section_size (osec);
 	  if (size == 0)
 	    {
 	      bfd_nonfatal_message (NULL, ibfd, osec,
@@ -2948,7 +2948,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 					   + highest_section->size,
 					   /* FIXME: We ought to be using
 					      COFF_PAGE_SIZE here or maybe
-					      bfd_get_section_alignment() (if it
+					      bfd_section_alignment() (if it
 					      was set) but since this is for PE
 					      and we know the required alignment
 					      it is easier just to hard code it.  */
@@ -2957,7 +2957,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 		/* Umm, not sure what to do in this case.  */
 		debuglink_vma = 0x1000;
 
-	      bfd_set_section_vma (obfd, gnu_debuglink_section, debuglink_vma);
+	      bfd_set_section_vma (gnu_debuglink_section, debuglink_vma);
 	    }
 	}
     }
@@ -2991,18 +2991,18 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	      bfd_size_type size;
 	      bfd_vma gap_start, gap_stop;
 
-	      flags = bfd_get_section_flags (obfd, osections[i]);
+	      flags = bfd_section_flags (osections[i]);
 	      if ((flags & SEC_HAS_CONTENTS) == 0
 		  || (flags & SEC_LOAD) == 0)
 		continue;
 
-	      size = bfd_section_size (obfd, osections[i]);
-	      gap_start = bfd_section_lma (obfd, osections[i]) + size;
-	      gap_stop = bfd_section_lma (obfd, osections[i + 1]);
+	      size = bfd_section_size (osections[i]);
+	      gap_start = bfd_section_lma (osections[i]) + size;
+	      gap_stop = bfd_section_lma (osections[i + 1]);
 	      if (gap_start < gap_stop)
 		{
-		  if (! bfd_set_section_size (obfd, osections[i],
-					      size + (gap_stop - gap_start)))
+		  if (!bfd_set_section_size (osections[i],
+					     size + (gap_stop - gap_start)))
 		    {
 		      bfd_nonfatal_message (NULL, obfd, osections[i],
 					    _("Can't fill gap after section"));
@@ -3021,12 +3021,11 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	  bfd_vma lma;
 	  bfd_size_type size;
 
-	  lma = bfd_section_lma (obfd, osections[c - 1]);
-	  size = bfd_section_size (obfd, osections[c - 1]);
+	  lma = bfd_section_lma (osections[c - 1]);
+	  size = bfd_section_size (osections[c - 1]);
 	  if (lma + size < pad_to)
 	    {
-	      if (! bfd_set_section_size (obfd, osections[c - 1],
-					  pad_to - lma))
+	      if (!bfd_set_section_size (osections[c - 1], pad_to - lma))
 		{
 		  bfd_nonfatal_message (NULL, obfd, osections[c - 1],
 					_("can't add padding"));
@@ -3204,7 +3203,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 	      file_ptr off;
 
 	      left = gaps[i];
-	      off = bfd_section_size (obfd, osections[i]) - left;
+	      off = bfd_section_size (osections[i]) - left;
 
 	      while (left > 0)
 		{
@@ -3779,13 +3778,13 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
     return;
 
   /* Get the, possibly new, name of the output section.  */
-  name = bfd_section_name (ibfd, isection);
-  flags = bfd_get_section_flags (ibfd, isection);
+  name = bfd_section_name (isection);
+  flags = bfd_section_flags (isection);
   name = find_section_rename (name, &flags);
 
   /* Prefix sections.  */
   if ((prefix_alloc_sections_string)
-      && (bfd_get_section_flags (ibfd, isection) & SEC_ALLOC))
+      && (bfd_section_flags (isection) & SEC_ALLOC))
     prefix = prefix_alloc_sections_string;
   else if (prefix_sections_string)
     prefix = prefix_sections_string;
@@ -3802,7 +3801,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
 
   make_nobits = FALSE;
 
-  p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+  p = find_section_list (bfd_section_name (isection), FALSE,
 			 SECTION_CONTEXT_SET_FLAGS);
   if (p != NULL)
     flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC));
@@ -3834,20 +3833,20 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   if (make_nobits)
     elf_section_type (osection) = SHT_NOBITS;
 
-  size = bfd_section_size (ibfd, isection);
+  size = bfd_section_size (isection);
   size = bfd_convert_section_size (ibfd, isection, obfd, size);
   if (copy_byte >= 0)
     size = (size + interleave - 1) / interleave * copy_width;
   else if (extract_symbol)
     size = 0;
-  if (! bfd_set_section_size (obfd, osection, size))
+  if (!bfd_set_section_size (osection, size))
     {
       err = _("failed to set size");
       goto loser;
     }
 
-  vma = bfd_section_vma (ibfd, isection);
-  p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+  vma = bfd_section_vma (isection);
+  p = find_section_list (bfd_section_name (isection), FALSE,
 			 SECTION_CONTEXT_ALTER_VMA | SECTION_CONTEXT_SET_VMA);
   if (p != NULL)
     {
@@ -3859,14 +3858,14 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   else
     vma += change_section_address;
 
-  if (! bfd_set_section_vma (obfd, osection, vma))
+  if (!bfd_set_section_vma (osection, vma))
     {
       err = _("failed to set vma");
       goto loser;
     }
 
   lma = isection->lma;
-  p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+  p = find_section_list (bfd_section_name (isection), FALSE,
 			 SECTION_CONTEXT_ALTER_LMA | SECTION_CONTEXT_SET_LMA);
   if (p != NULL)
     {
@@ -3880,18 +3879,16 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
 
   osection->lma = lma;
 
-  p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+  p = find_section_list (bfd_section_name (isection), FALSE,
 			 SECTION_CONTEXT_SET_ALIGNMENT);
   if (p != NULL)
     alignment = p->alignment;
   else
-    alignment = bfd_section_alignment (ibfd, isection);
+    alignment = bfd_section_alignment (isection);
   
   /* FIXME: This is probably not enough.  If we change the LMA we
      may have to recompute the header for the file as well.  */
-  if (!bfd_set_section_alignment (obfd,
-				  osection,
-				  alignment))
+  if (!bfd_set_section_alignment (osection, alignment))
     {
       err = _("failed to set alignment");
       goto loser;
@@ -3965,12 +3962,12 @@ skip_section (bfd *ibfd, sec_ptr isection, bfd_boolean skip_copy)
   if (skip_copy && is_merged_note_section (ibfd, isection))
     return TRUE;
 
-  flags = bfd_get_section_flags (ibfd, isection);
+  flags = bfd_section_flags (isection);
   if ((flags & SEC_GROUP) != 0)
     return TRUE;
 
   osection = isection->output_section;
-  size = bfd_get_section_size (isection);
+  size = bfd_section_size (isection);
 
   if (size == 0 || osection == 0)
     return TRUE;
@@ -3995,7 +3992,7 @@ handle_remove_relocations_option (const char *section_pattern)
 static bfd_boolean
 discard_relocations (bfd *ibfd ATTRIBUTE_UNUSED, asection *isection)
 {
-  return (find_section_list (bfd_section_name (ibfd, isection), FALSE,
+  return (find_section_list (bfd_section_name (isection), FALSE,
 			     SECTION_CONTEXT_REMOVE_RELOCS) != NULL);
 }
 
@@ -4140,10 +4137,10 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
      ELF classes of input and output aren't the same.  We can't use
      the output section size since --interleave will shrink the output
      section.   Size will be updated if the section is converted.   */
-  size = bfd_get_section_size (isection);
+  size = bfd_section_size (isection);
 
-  if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS
-      && bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS)
+  if (bfd_section_flags (isection) & SEC_HAS_CONTENTS
+      && bfd_section_flags (osection) & SEC_HAS_CONTENTS)
     {
       bfd_byte *memhunk = NULL;
 
@@ -4180,7 +4177,7 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
 	  else
 	    /* User must pad the section up in order to do this.  */
 	    fatal (_("cannot reverse bytes: length of section %s must be evenly divisible by %d"),
-		   bfd_section_name (ibfd, isection), reverse_bytes);
+		   bfd_section_name (isection), reverse_bytes);
 	}
 
       if (copy_byte >= 0)
@@ -4223,7 +4220,7 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
 	}
       free (memhunk);
     }
-  else if ((p = find_section_list (bfd_get_section_name (ibfd, isection),
+  else if ((p = find_section_list (bfd_section_name (isection),
 				   FALSE, SECTION_CONTEXT_SET_FLAGS)) != NULL
 	   && (p->flags & SEC_HAS_CONTENTS) != 0)
     {
@@ -4294,9 +4291,9 @@ compare_section_lma (const void *arg1, const void *arg2)
     return -1;
 
   /* Sort sections with the same LMA by size.  */
-  if (bfd_get_section_size (*sec1) > bfd_get_section_size (*sec2))
+  if (bfd_section_size (*sec1) > bfd_section_size (*sec2))
     return 1;
-  else if (bfd_get_section_size (*sec1) < bfd_get_section_size (*sec2))
+  else if (bfd_section_size (*sec1) < bfd_section_size (*sec2))
     return -1;
 
   return 0;
@@ -4378,10 +4375,10 @@ write_debugging_info (bfd *obfd, void *dhandle,
       stabstrsec = bfd_make_section_with_flags (obfd, ".stabstr", flags);
       if (stabsec == NULL
 	  || stabstrsec == NULL
-	  || ! bfd_set_section_size (obfd, stabsec, symsize)
-	  || ! bfd_set_section_size (obfd, stabstrsec, stringsize)
-	  || ! bfd_set_section_alignment (obfd, stabsec, 2)
-	  || ! bfd_set_section_alignment (obfd, stabstrsec, 0))
+	  || !bfd_set_section_size (stabsec, symsize)
+	  || !bfd_set_section_size (stabstrsec, stringsize)
+	  || !bfd_set_section_alignment (stabsec, 2)
+	  || !bfd_set_section_alignment (stabstrsec, 0))
 	{
 	  bfd_nonfatal_message (NULL, obfd, NULL,
 				_("can't create debugging section"));
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 4a7c8f9a74..96727a0f51 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -545,13 +545,13 @@ dump_section_header (bfd *abfd, asection *section, void *data)
     return;
 
   printf ("%3d %-*s %08lx  ", section->index, longest_section_name,
-	  sanitize_string (bfd_get_section_name (abfd, section)),
-	  (unsigned long) bfd_section_size (abfd, section) / opb);
-  bfd_printf_vma (abfd, bfd_get_section_vma (abfd, section));
+	  sanitize_string (bfd_section_name (section)),
+	  (unsigned long) bfd_section_size (section) / opb);
+  bfd_printf_vma (abfd, bfd_section_vma (section));
   printf ("  ");
   bfd_printf_vma (abfd, section->lma);
   printf ("  %08lx  2**%u", (unsigned long) section->filepos,
-	  bfd_get_section_alignment (abfd, section));
+	  bfd_section_alignment (section));
   if (! wide_output)
     printf ("\n                ");
   printf ("  ");
@@ -631,7 +631,8 @@ dump_section_header (bfd *abfd, asection *section, void *data)
    DATA which contains the string length of the longest section name.  */
 
 static void
-find_longest_section_name (bfd *abfd, asection *section, void *data)
+find_longest_section_name (bfd *abfd ATTRIBUTE_UNUSED,
+			   asection *section, void *data)
 {
   int *longest_so_far = (int *) data;
   const char *name;
@@ -645,7 +646,7 @@ find_longest_section_name (bfd *abfd, asection *section, void *data)
   if (! process_section_p (section))
     return;
 
-  name = bfd_get_section_name (abfd, section);
+  name = bfd_section_name (section);
   len = (int) strlen (name);
   if (len > *longest_so_far)
     *longest_so_far = len;
@@ -1034,8 +1035,8 @@ sym_ok (bfd_boolean               want_section,
 	 debug info file, whilst the section we want is in a normal file.
 	 So the section pointers will be different, but the section names
 	 will be the same.  */
-      if (strcmp (bfd_section_name (abfd, sorted_syms[place]->section),
-		  bfd_section_name (abfd, sec)) != 0)
+      if (strcmp (bfd_section_name (sorted_syms[place]->section),
+		  bfd_section_name (sec)) != 0)
 	return FALSE;
     }
 
@@ -1141,9 +1142,9 @@ find_symbol_for_address (bfd_vma vma,
      Also give the target a chance to reject symbols.  */
   want_section = (aux->require_sec
 		  || ((abfd->flags & HAS_RELOC) != 0
-		      && vma >= bfd_get_section_vma (abfd, sec)
-		      && vma < (bfd_get_section_vma (abfd, sec)
-				+ bfd_section_size (abfd, sec) / opb)));
+		      && vma >= bfd_section_vma (sec)
+		      && vma < (bfd_section_vma (sec)
+				+ bfd_section_size (sec) / opb)));
   
   if (! sym_ok (want_section, abfd, thisplace, sec, inf))
     {
@@ -1267,8 +1268,8 @@ objdump_print_addr_with_sym (bfd *abfd, asection *sec, asymbol *sym,
       bfd_vma secaddr;
 
       (*inf->fprintf_func) (inf->stream, " <%s",
-			    sanitize_string (bfd_get_section_name (abfd, sec)));
-      secaddr = bfd_get_section_vma (abfd, sec);
+			    sanitize_string (bfd_section_name (sec)));
+      secaddr = bfd_section_vma (sec);
       if (vma < secaddr)
 	{
 	  (*inf->fprintf_func) (inf->stream, "-0x");
@@ -2235,7 +2236,7 @@ disassemble_bytes (struct disassemble_info * inf,
 		      asection *sym_sec;
 
 		      sym_sec = bfd_asymbol_section (*q->sym_ptr_ptr);
-		      sym_name = bfd_get_section_name (aux->abfd, sym_sec);
+		      sym_name = bfd_section_name (sym_sec);
 		      if (sym_name == NULL || *sym_name == '\0')
 			sym_name = "*unknown*";
 		      printf ("%s", sanitize_string (sym_name));
@@ -2308,7 +2309,7 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
   if (! process_section_p (section))
     return;
 
-  datasize = bfd_get_section_size (section);
+  datasize = bfd_section_size (section);
   if (datasize == 0)
     return;
 
@@ -2538,7 +2539,7 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
       else
 	{
 #define is_valid_next_sym(SYM) \
-  (strcmp (bfd_section_name (abfd, (SYM)->section), bfd_section_name (abfd, section)) == 0 \
+  (strcmp (bfd_section_name ((SYM)->section), bfd_section_name (section)) == 0 \
    && (bfd_asymbol_value (SYM) > bfd_asymbol_value (sym)) \
    && pinfo->symbol_is_valid (SYM, pinfo))
 
@@ -2750,9 +2751,9 @@ load_specific_debug_section (enum dwarf_section_display_enum debug,
   section->filename = bfd_get_filename (abfd);
   section->reloc_info = NULL;
   section->num_relocs = 0;
-  section->address = bfd_get_section_vma (abfd, sec);
+  section->address = bfd_section_vma (sec);
   section->user_data = sec;
-  section->size = bfd_get_section_size (sec);
+  section->size = bfd_section_size (sec);
   /* PR 24360: On 32-bit hosts sizeof (size_t) < sizeof (bfd_size_type). */
   alloced = amt = section->size + 1;
   if (alloced != amt || alloced == 0)
@@ -2925,7 +2926,7 @@ static void
 dump_dwarf_section (bfd *abfd, asection *section,
 		    void *arg ATTRIBUTE_UNUSED)
 {
-  const char *name = bfd_get_section_name (abfd, section);
+  const char *name = bfd_section_name (section);
   const char *match;
   int i;
 
@@ -3050,7 +3051,7 @@ read_section_stabs (bfd *abfd, const char *sect_name, bfd_size_type *size_ptr,
       return NULL;
     }
 
-  *size_ptr = bfd_section_size (abfd, stabsect);
+  *size_ptr = bfd_section_size (stabsect);
   if (entsize_ptr)
     *entsize_ptr = stabsect->entsize;
 
@@ -3459,7 +3460,7 @@ dump_section (bfd *abfd, asection *section, void *dummy ATTRIBUTE_UNUSED)
   if (! process_section_p (section))
     return;
 
-  if ((datasize = bfd_section_size (abfd, section)) == 0)
+  if ((datasize = bfd_section_size (section)) == 0)
     return;
 
   /* Compute the address range to display.  */
diff --git a/binutils/od-elf32_avr.c b/binutils/od-elf32_avr.c
index aaa97bb581..4a607d20ee 100644
--- a/binutils/od-elf32_avr.c
+++ b/binutils/od-elf32_avr.c
@@ -85,7 +85,7 @@ elf32_avr_get_note_section_contents (bfd *abfd, bfd_size_type *size)
   if ((section = bfd_get_section_by_name (abfd, ".note.gnu.avr.deviceinfo")) == NULL)
     return NULL;
 
-  *size = bfd_get_section_size (section);
+  *size = bfd_section_size (section);
   char *contents = (char *) xmalloc (*size);
   bfd_get_section_contents (abfd, section, contents, 0, *size);
 
@@ -162,17 +162,17 @@ elf32_avr_get_memory_usage (bfd *abfd,
   asection *section;
 
   if ((section = bfd_get_section_by_name (abfd, ".data")) != NULL)
-    avr_datasize = bfd_section_size (abfd, section);
+    avr_datasize = bfd_section_size (section);
   if ((section = bfd_get_section_by_name (abfd, ".text")) != NULL)
-    avr_textsize = bfd_section_size (abfd, section);
+    avr_textsize = bfd_section_size (section);
   if ((section = bfd_get_section_by_name (abfd, ".bss")) != NULL)
-    avr_bsssize = bfd_section_size (abfd, section);
+    avr_bsssize = bfd_section_size (section);
   if ((section = bfd_get_section_by_name (abfd, ".bootloader")) != NULL)
-    bootloadersize = bfd_section_size (abfd, section);
+    bootloadersize = bfd_section_size (section);
   if ((section = bfd_get_section_by_name (abfd, ".noinit")) != NULL)
-    noinitsize = bfd_section_size (abfd, section);
+    noinitsize = bfd_section_size (section);
   if ((section = bfd_get_section_by_name (abfd, ".eeprom")) != NULL)
-    eepromsize = bfd_section_size (abfd, section);
+    eepromsize = bfd_section_size (section);
 
   *text_usage = avr_textsize + avr_datasize + bootloadersize;
   *data_usage = avr_datasize + avr_bsssize + noinitsize;
@@ -255,12 +255,12 @@ elf32_avr_dump_avr_prop (bfd *abfd)
   for (i = 0; i < r_list->record_count; ++i)
     {
       printf ("   %d %s @ %s + %#08lx (%#08lx)\n",
-              i,
-              avr_elf32_property_record_name (&r_list->records [i]),
-              r_list->records [i].section->name,
-              r_list->records [i].offset,
-              (bfd_get_section_vma (abfd, r_list->records [i].section)
-               + r_list->records [i].offset));
+	      i,
+	      avr_elf32_property_record_name (&r_list->records [i]),
+	      r_list->records [i].section->name,
+	      r_list->records [i].offset,
+	      (bfd_section_vma (r_list->records [i].section)
+	       + r_list->records [i].offset));
       switch (r_list->records [i].type)
         {
         case RECORD_ORG:
diff --git a/binutils/od-macho.c b/binutils/od-macho.c
index 6dc8c4d385..ada86b5236 100644
--- a/binutils/od-macho.c
+++ b/binutils/od-macho.c
@@ -2259,7 +2259,7 @@ dump_section_content (bfd *abfd,
 		asection *bfdsec = sec->bfdsection;
 		unsigned char *content;
 
-		size = bfd_get_section_size (bfdsec);
+		size = bfd_section_size (bfdsec);
 		content = (unsigned char *) xmalloc (size);
 		bfd_get_section_contents (abfd, bfdsec, content, 0, size);
 
diff --git a/binutils/od-xcoff.c b/binutils/od-xcoff.c
index 1f79985002..e5566bc9a7 100644
--- a/binutils/od-xcoff.c
+++ b/binutils/od-xcoff.c
@@ -763,7 +763,7 @@ dump_xcoff32_symbols (bfd *abfd, struct xcoff_dump *data)
     {
       bfd_size_type size;
 
-      size = bfd_get_section_size (debugsec);
+      size = bfd_section_size (debugsec);
       debug = (char *) xmalloc (size);
       bfd_get_section_contents (abfd, debugsec, debug, 0, size);
     }
@@ -1051,7 +1051,7 @@ dump_xcoff32_loader (bfd *abfd)
       printf (_("no .loader section in file\n"));
       return;
     }
-  size = bfd_get_section_size (loader);
+  size = bfd_section_size (loader);
   if (size < sizeof (*lhdr))
     {
       printf (_("section .loader is too short\n"));
@@ -1198,7 +1198,7 @@ dump_xcoff32_except (bfd *abfd, struct xcoff_dump *data)
       printf (_("no .except section in file\n"));
       return;
     }
-  size = bfd_get_section_size (sec);
+  size = bfd_section_size (sec);
   excp_data = (bfd_byte *) xmalloc (size);
   bfd_get_section_contents (abfd, sec, excp_data, 0, size);
   exceptab = (struct external_exceptab *)excp_data;
@@ -1241,7 +1241,7 @@ dump_xcoff32_typchk (bfd *abfd)
       printf (_("no .typchk section in file\n"));
       return;
     }
-  size = bfd_get_section_size (sec);
+  size = bfd_section_size (sec);
   data = (bfd_byte *) xmalloc (size);
   bfd_get_section_contents (abfd, sec, data, 0, size);
 
@@ -1449,9 +1449,9 @@ dump_xcoff32_traceback (bfd *abfd, struct xcoff_dump *data)
   text_sec = bfd_get_section_by_name (abfd, ".text");
   if (text_sec == NULL)
     return;
-  text_vma = bfd_get_section_vma (abfd, text_sec);
+  text_vma = bfd_section_vma (text_sec);
 
-  text_size = bfd_get_section_size (text_sec);
+  text_size = bfd_section_size (text_sec);
   text = (char *) xmalloc (text_size);
   bfd_get_section_contents (abfd, text_sec, text, 0, text_size);
 
diff --git a/binutils/prdbg.c b/binutils/prdbg.c
index d44f5c4fcc..40cf54b8fe 100644
--- a/binutils/prdbg.c
+++ b/binutils/prdbg.c
@@ -1930,14 +1930,14 @@ find_address_in_section (bfd *abfd, asection *section, void *data)
   if (found)
     return;
 
-  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+  if ((bfd_section_flags (section) & SEC_ALLOC) == 0)
     return;
 
-  vma = bfd_get_section_vma (abfd, section);
+  vma = bfd_section_vma (section);
   if (pc < vma)
     return;
 
-  size = bfd_get_section_size (section);
+  size = bfd_section_size (section);
   if (pc >= vma + size)
     return;
 
diff --git a/binutils/rdcoff.c b/binutils/rdcoff.c
index cbb5db1b94..006f13b3aa 100644
--- a/binutils/rdcoff.c
+++ b/binutils/rdcoff.c
@@ -816,7 +816,7 @@ parse_coff (bfd *abfd, asymbol **syms, long symcount, void *dhandle)
 		  else
 		    base = auxent.x_sym.x_misc.x_lnsz.x_lnno - 1;
 
-		  addr = bfd_get_section_vma (abfd, bfd_asymbol_section (sym));
+		  addr = bfd_section_vma (bfd_asymbol_section (sym));
 
 		  ++linenos;
 
diff --git a/binutils/rddbg.c b/binutils/rddbg.c
index 92052783ba..eb8ffcbc02 100644
--- a/binutils/rddbg.c
+++ b/binutils/rddbg.c
@@ -121,7 +121,7 @@ read_section_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
 	  bfd_byte *stab;
 	  bfd_size_type stroff, next_stroff;
 
-	  stabsize = bfd_section_size (abfd, sec);
+	  stabsize = bfd_section_size (sec);
 	  stabs = (bfd_byte *) xmalloc (stabsize);
 	  if (! bfd_get_section_contents (abfd, sec, stabs, 0, stabsize))
 	    {
@@ -133,7 +133,7 @@ read_section_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
 	      return FALSE;
 	    }
 
-	  strsize = bfd_section_size (abfd, strsec);
+	  strsize = bfd_section_size (strsec);
 	  strings = (bfd_byte *) xmalloc (strsize + 1);
 	  if (! bfd_get_section_contents (abfd, strsec, strings, 0, strsize))
 	    {
diff --git a/binutils/rescoff.c b/binutils/rescoff.c
index 815f0a1733..9a0fcda2ac 100644
--- a/binutils/rescoff.c
+++ b/binutils/rescoff.c
@@ -141,7 +141,7 @@ read_coff_rsrc (const char *filename, const char *target)
     }
 
   set_windres_bfd (&wrbfd, abfd, sec, WR_KIND_BFD);
-  size = bfd_section_size (abfd, sec);
+  size = bfd_section_size (sec);
   /* PR 17512: file: 1b25ba5d
      The call to get_file_size here may be expensive
      but there is no other way to determine if the section size
@@ -155,8 +155,8 @@ read_coff_rsrc (const char *filename, const char *target)
   flaginfo.filename = filename;
   flaginfo.data = data;
   flaginfo.data_end = data + size;
-  flaginfo.secaddr = (bfd_get_section_vma (abfd, sec)
-		   - pe_data (abfd)->pe_opthdr.ImageBase);
+  flaginfo.secaddr = (bfd_section_vma (sec)
+		      - pe_data (abfd)->pe_opthdr.ImageBase);
 
   /* Now just read in the top level resource directory.  Note that we
      don't free data, since we create resource entries that point into
@@ -547,7 +547,7 @@ write_coff_file (const char *filename, const char *target,
 	    + cwi.dataentsize
 	    + cwi.resources.length);
 
-  if (! bfd_set_section_size (abfd, sec, length))
+  if (!bfd_set_section_size (sec, length))
     bfd_fatal ("bfd_set_section_size");
 
   bfd_set_reloc (abfd, sec, cwi.relocs, cwi.reloc_count);
diff --git a/binutils/resres.c b/binutils/resres.c
index e9444bda0e..161ea354fe 100644
--- a/binutils/resres.c
+++ b/binutils/resres.c
@@ -142,7 +142,7 @@ write_res_file (const char *fn,const rc_res_directory *resdir)
   sec_length = write_res_directory ((windres_bfd *) NULL, 0x20UL, resdir,
 				    (const rc_res_id *) NULL,
 				    (const rc_res_id *) NULL, &language, 1);
-  if (! bfd_set_section_size (abfd, sec, (sec_length + 3) & ~3))
+  if (!bfd_set_section_size (sec, (sec_length + 3) & ~3))
     bfd_fatal ("bfd_set_section_size");
   if ((sec_length & 3) != 0)
     set_windres_bfd_content (&wrbfd, sign, sec_length, 4-(sec_length & 3));
diff --git a/binutils/size.c b/binutils/size.c
index 479a464887..b147221e91 100644
--- a/binutils/size.c
+++ b/binutils/size.c
@@ -478,11 +478,11 @@ berkeley_or_gnu_sum (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
   flagword flags;
   bfd_size_type size;
 
-  flags = bfd_get_section_flags (abfd, sec);
+  flags = bfd_section_flags (sec);
   if ((flags & SEC_ALLOC) == 0)
     return;
 
-  size = bfd_get_section_size (sec);
+  size = bfd_section_size (sec);
   if ((flags & SEC_CODE) != 0
       || (selected_output_format == FORMAT_BERKLEY
 	  && (flags & SEC_READONLY) != 0))
@@ -557,21 +557,21 @@ static void
 sysv_internal_sizer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
 		     void *ignore ATTRIBUTE_UNUSED)
 {
-  bfd_size_type size = bfd_section_size (file, sec);
+  bfd_size_type size = bfd_section_size (sec);
 
   if (   ! bfd_is_abs_section (sec)
       && ! bfd_is_com_section (sec)
       && ! bfd_is_und_section (sec))
     {
-      int namelen = strlen (bfd_section_name (file, sec));
+      int namelen = strlen (bfd_section_name (sec));
 
       if (namelen > svi_namelen)
 	svi_namelen = namelen;
 
       svi_total += size;
 
-      if (bfd_section_vma (file, sec) > svi_maxvma)
-	svi_maxvma = bfd_section_vma (file, sec);
+      if (bfd_section_vma (sec) > svi_maxvma)
+	svi_maxvma = bfd_section_vma (sec);
     }
 }
 
@@ -589,7 +589,7 @@ static void
 sysv_internal_printer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
 		       void *ignore ATTRIBUTE_UNUSED)
 {
-  bfd_size_type size = bfd_section_size (file, sec);
+  bfd_size_type size = bfd_section_size (sec);
 
   if (   ! bfd_is_abs_section (sec)
       && ! bfd_is_com_section (sec)
@@ -597,9 +597,9 @@ sysv_internal_printer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
     {
       svi_total += size;
 
-      sysv_one_line (bfd_section_name (file, sec),
+      sysv_one_line (bfd_section_name (sec),
 		     size,
-		     bfd_section_vma (file, sec));
+		     bfd_section_vma (sec));
     }
 }
 
diff --git a/binutils/srconv.c b/binutils/srconv.c
index 39c1a4f4e7..a421f642e0 100644
--- a/binutils/srconv.c
+++ b/binutils/srconv.c
@@ -419,14 +419,14 @@ wr_ob (struct coff_ofile *p ATTRIBUTE_UNUSED, struct coff_section *section)
   unsigned char stuff[200];
 
   i = 0;
-  while (i < bfd_get_section_size (section->bfd_section))
+  while (i < bfd_section_size (section->bfd_section))
     {
       struct IT_ob ob;
       int todo = 200;		/* Copy in 200 byte lumps.  */
 
       ob.spare = 0;
-      if (i + todo > bfd_get_section_size (section->bfd_section))
-	todo = bfd_get_section_size (section->bfd_section) - i;
+      if (i + todo > bfd_section_size (section->bfd_section))
+	todo = bfd_section_size (section->bfd_section) - i;
 
       if (first)
 	{
diff --git a/binutils/strings.c b/binutils/strings.c
index ea48f92feb..8150c1181d 100644
--- a/binutils/strings.c
+++ b/binutils/strings.c
@@ -332,7 +332,7 @@ strings_a_section (bfd *abfd, asection *sect, const char *filename,
   if ((sect->flags & DATA_FLAGS) != DATA_FLAGS)
     return;
 
-  sectsize = bfd_get_section_size (sect);
+  sectsize = bfd_section_size (sect);
   if (sectsize == 0)
     return;
 
diff --git a/binutils/windmc.c b/binutils/windmc.c
index eaf4d6e4e1..10bd6144c6 100644
--- a/binutils/windmc.c
+++ b/binutils/windmc.c
@@ -698,7 +698,7 @@ windmc_write_bin (const char *filename, mc_node_lang **nl, int elems)
       dta_off += mi[i].res_len;
     }
   sec_length = (dta_off + 3) & ~3;
-  if (! bfd_set_section_size (mc_bfd.abfd, mc_bfd.sec, sec_length))
+  if (!bfd_set_section_size (mc_bfd.sec, sec_length))
     bfd_fatal ("bfd_set_section_size");
   /* Make sure we write the complete block.  */
   set_windmc_bfd_content ("\0", sec_length - 1, 1);
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3d61530a9b..819585d9e3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,31 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* as.c, * as.h, * dw2gencfi.c, * dwarf2dbg.c, * ecoff.c,
+	* read.c, * stabs.c, * subsegs.c, * subsegs.h, * write.c,
+	* config/obj-coff-seh.c, * config/obj-coff.c, * config/obj-ecoff.c,
+	* config/obj-elf.c, * config/obj-macho.c, * config/obj-som.c,
+	* config/tc-aarch64.c, * config/tc-alpha.c, * config/tc-arc.c,
+	* config/tc-arm.c, * config/tc-avr.c, * config/tc-bfin.c,
+	* config/tc-bpf.c, * config/tc-d10v.c, * config/tc-d30v.c,
+	* config/tc-epiphany.c, * config/tc-fr30.c, * config/tc-frv.c,
+	* config/tc-h8300.c, * config/tc-hppa.c, * config/tc-i386.c,
+	* config/tc-ia64.c, * config/tc-ip2k.c, * config/tc-iq2000.c,
+	* config/tc-lm32.c, * config/tc-m32c.c, * config/tc-m32r.c,
+	* config/tc-m68hc11.c, * config/tc-mep.c, * config/tc-microblaze.c,
+	* config/tc-mips.c, * config/tc-mmix.c, * config/tc-mn10200.c,
+	* config/tc-mn10300.c, * config/tc-msp430.c, * config/tc-mt.c,
+	* config/tc-nds32.c, * config/tc-or1k.c, * config/tc-ppc.c,
+	* config/tc-pru.c, * config/tc-rl78.c, * config/tc-rx.c,
+	* config/tc-s12z.c, * config/tc-s390.c, * config/tc-score.c,
+	* config/tc-score7.c, * config/tc-sh.c, * config/tc-sparc.c,
+	* config/tc-spu.c, * config/tc-tic4x.c, * config/tc-tic54x.c,
+	* config/tc-tic6x.c, * config/tc-tilegx.c, * config/tc-tilepro.c,
+	* config/tc-v850.c, * config/tc-visium.c, * config/tc-wasm32.c,
+	* config/tc-xc16x.c, * config/tc-xgate.c, * config/tc-xstormy16.c,
+	* config/tc-xtensa.c, * config/tc-z8k.c: Update throughout for
+	bfd section macro and function changes.
+	* write.c (compress_debug): Use bfd_rename_section.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* symbols.c (S_IS_LOCAL): Update bfd_get_section to
diff --git a/gas/as.c b/gas/as.c
index c7bdf0cd88..d53db113e2 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -1147,13 +1147,13 @@ perform_an_assembly_pass (int argc, char ** argv)
   /* @@ FIXME -- we're setting the RELOC flag so that sections are assumed
      to have relocs, otherwise we don't find out in time.  */
   applicable = bfd_applicable_section_flags (stdoutput);
-  bfd_set_section_flags (stdoutput, text_section,
+  bfd_set_section_flags (text_section,
 			 applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC
 				       | SEC_CODE | SEC_READONLY));
-  bfd_set_section_flags (stdoutput, data_section,
+  bfd_set_section_flags (data_section,
 			 applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC
 				       | SEC_DATA));
-  bfd_set_section_flags (stdoutput, bss_section, applicable & SEC_ALLOC);
+  bfd_set_section_flags (bss_section, applicable & SEC_ALLOC);
   seg_info (bss_section)->bss = 1;
 #endif
   subseg_new (BFD_ABS_SECTION_NAME, 0);
@@ -1360,7 +1360,7 @@ main (int argc, char ** argv)
       segT gnustack;
 
       gnustack = subseg_new (".note.GNU-stack", 0);
-      bfd_set_section_flags (stdoutput, gnustack,
+      bfd_set_section_flags (gnustack,
 			     SEC_READONLY | (flag_execstack ? SEC_CODE : 0));
 
     }
diff --git a/gas/as.h b/gas/as.h
index 96b551eded..5b604a4534 100644
--- a/gas/as.h
+++ b/gas/as.h
@@ -226,7 +226,7 @@ COMMON subsegT now_subseg;
 /* Segment our instructions emit to.  */
 COMMON segT now_seg;
 
-#define segment_name(SEG)	bfd_get_section_name (stdoutput, SEG)
+#define segment_name(SEG)	bfd_section_name (SEG)
 
 extern segT reg_section, expr_section;
 /* Shouldn't these be eliminated someday?  */
diff --git a/gas/config/obj-coff-seh.c b/gas/config/obj-coff-seh.c
index 183be7925f..b24e435677 100644
--- a/gas/config/obj-coff-seh.c
+++ b/gas/config/obj-coff-seh.c
@@ -48,7 +48,7 @@ get_pxdata_name (segT seg, const char *base_name)
   const char *name,*dollar, *dot;
   char *sname;
 
-  name = bfd_get_section_name (stdoutput, seg);
+  name = bfd_section_name (seg);
 
   dollar = strchr (name, '$');
   dot = strchr (name + 1, '.');
@@ -95,16 +95,16 @@ make_pxdata_seg (segT cseg, char *name)
 
   r = subseg_new (name, 0);
   /* Check if code segment is marked as linked once.  */
-  flags = bfd_get_section_flags (stdoutput, cseg)
-    & (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
-       | SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE
-       | SEC_LINK_DUPLICATES_SAME_CONTENTS);
+  flags = (bfd_section_flags (cseg)
+	   & (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
+	      | SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE
+	      | SEC_LINK_DUPLICATES_SAME_CONTENTS));
 
   /* Add standard section flags.  */
   flags |= SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_DATA;
 
   /* Apply possibly linked once flags to new generated segment, too.  */
-  if (!bfd_set_section_flags (stdoutput, r, flags))
+  if (!bfd_set_section_flags (r, flags))
     as_bad (_("bfd_set_section_flags: %s"),
 	    bfd_errmsg (bfd_get_error ()));
 
@@ -161,8 +161,8 @@ seh_validate_seg (const char *directive)
   const char *cseg_name, *nseg_name;
   if (seh_ctx_cur->code_seg == now_seg)
     return 1;
-  cseg_name = bfd_get_section_name (stdoutput, seh_ctx_cur->code_seg);
-  nseg_name = bfd_get_section_name (stdoutput, now_seg);
+  cseg_name = bfd_section_name (seh_ctx_cur->code_seg);
+  nseg_name = bfd_section_name (now_seg);
   as_bad (_("%s used in segment '%s' instead of expected '%s'"),
   	  directive, nseg_name, cseg_name);
   ignore_rest_of_line ();
diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index c4e1d71ce4..d1dd0f0131 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -205,13 +205,12 @@ obj_coff_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP, addressT s
       char numbuff[20];
 
       sec = subseg_new (".drectve", 0);
-      oldflags = bfd_get_section_flags (stdoutput, sec);
+      oldflags = bfd_section_flags (sec);
       if (oldflags == SEC_NO_FLAGS)
 	{
-	  if (!bfd_set_section_flags (stdoutput, sec,
-		TC_COFF_SECTION_DEFAULT_ATTRIBUTES))
+	  if (!bfd_set_section_flags (sec, TC_COFF_SECTION_DEFAULT_ATTRIBUTES))
 	    as_warn (_("error setting flags for \"%s\": %s"),
-		bfd_section_name (stdoutput, sec),
+		bfd_section_name (sec),
 		bfd_errmsg (bfd_get_error ()));
 	}
 
@@ -554,7 +553,7 @@ obj_coff_ident (int ignore ATTRIBUTE_UNUSED)
        that shouldn't be loaded into memory, which requires linker
        changes...  For now, until proven otherwise, use .rdata.  */
     sec = subseg_new (".rdata$zzz", 0);
-    bfd_set_section_flags (stdoutput, sec,
+    bfd_set_section_flags (sec,
 			   ((SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_DATA)
 			    & bfd_applicable_section_flags (stdoutput)));
   }
@@ -774,8 +773,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNUSED)
 
   if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN
       || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL
-      || (streq (bfd_get_section_name (stdoutput,
-				       S_GET_SEGMENT (def_symbol_in_progress)),
+      || (streq (bfd_section_name (S_GET_SEGMENT (def_symbol_in_progress)),
 		 "*DEBUG*")
 	  && !SF_GET_TAG (def_symbol_in_progress))
       || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section
@@ -1480,7 +1478,7 @@ coff_adjust_section_syms (bfd *abfd ATTRIBUTE_UNUSED,
 	fixp = fixp->fx_next;
       }
   }
-  if (bfd_get_section_size (sec) == 0
+  if (bfd_section_size (sec) == 0
       && nrelocs == 0
       && nlnno == 0
       && sec != text_section
@@ -1657,7 +1655,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
   if (alignment >= 0)
     sec->alignment_power = alignment;
 
-  oldflags = bfd_get_section_flags (stdoutput, sec);
+  oldflags = bfd_section_flags (sec);
   if (oldflags == SEC_NO_FLAGS)
     {
       /* Set section flags for a new section just created by subseg_new.
@@ -1673,9 +1671,9 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
 	flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
 #endif
 
-      if (! bfd_set_section_flags (stdoutput, sec, flags))
+      if (!bfd_set_section_flags (sec, flags))
 	as_warn (_("error setting flags for \"%s\": %s"),
-		 bfd_section_name (stdoutput, sec),
+		 bfd_section_name (sec),
 		 bfd_errmsg (bfd_get_error ()));
     }
   else if (flags != SEC_NO_FLAGS)
@@ -1713,7 +1711,7 @@ coff_frob_section (segT sec)
      supposedly because standard COFF has no other way of encoding alignment
      for sections.  If your COFF flavor has a different way of encoding
      section alignment, then skip this step, as TICOFF does.  */
-  bfd_vma size = bfd_get_section_size (sec);
+  bfd_vma size = bfd_section_size (sec);
 #if !defined(TICOFF)
   bfd_vma align_power = (bfd_vma) sec->alignment_power + OCTETS_PER_BYTE_POWER;
   bfd_vma mask = ((bfd_vma) 1 << align_power) - 1;
@@ -1724,7 +1722,7 @@ coff_frob_section (segT sec)
       fragS *last;
 
       new_size = (size + mask) & ~mask;
-      bfd_set_section_size (stdoutput, sec, new_size);
+      bfd_set_section_size (sec, new_size);
 
       /* If the size had to be rounded up, add some padding in
          the last non-empty frag.  */
@@ -1751,7 +1749,7 @@ coff_frob_section (segT sec)
       unsigned char sclass = C_STAT;
 
 #ifdef OBJ_XCOFF
-      if (bfd_get_section_flags (stdoutput, sec) & SEC_DEBUGGING)
+      if (bfd_section_flags (sec) & SEC_DEBUGGING)
         sclass = C_DWARF;
 #endif
       S_SET_STORAGE_CLASS (secsym, sclass);
@@ -1772,9 +1770,9 @@ coff_frob_section (segT sec)
   strsec = sec;
   sec = subseg_get (STAB_SECTION_NAME, 0);
   /* size is already rounded up, since other section will be listed first */
-  size = bfd_get_section_size (strsec);
+  size = bfd_section_size (strsec);
 
-  n_entries = bfd_get_section_size (sec) / 12 - 1;
+  n_entries = bfd_section_size (sec) / 12 - 1;
 
   /* Find first non-empty frag.  It should be large enough.  */
   fragp = seg_info (sec)->frchainP->frch_root;
diff --git a/gas/config/obj-ecoff.c b/gas/config/obj-ecoff.c
index b62176fe73..a5616f388e 100644
--- a/gas/config/obj-ecoff.c
+++ b/gas/config/obj-ecoff.c
@@ -90,15 +90,15 @@ ecoff_frob_file_before_fix (void)
 	  }
       if (i == n_names)
 	{
-	  bfd_set_section_vma (stdoutput, sec, addr);
-	  addr += bfd_section_size (stdoutput, sec);
+	  bfd_set_section_vma (sec, addr);
+	  addr += bfd_section_size (sec);
 	}
     }
   for (i = 0; i < n_names; i++)
     if (secs[i])
       {
-	bfd_set_section_vma (stdoutput, secs[i], addr);
-	addr += bfd_section_size (stdoutput, secs[i]);
+	bfd_set_section_vma (secs[i], addr);
+	addr += bfd_section_size (secs[i]);
       }
   for (i = n_names - 1; i >= 0; i--)
     if (secs[i])
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index bdf3da8119..56293584a0 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -737,7 +737,7 @@ obj_elf_change_section (const char *name,
       if (type == SHT_NOBITS)
 	seg_info (sec)->bss = 1;
 
-      bfd_set_section_flags (stdoutput, sec, flags);
+      bfd_set_section_flags (sec, flags);
       if (flags & SEC_MERGE)
 	sec->entsize = entsize;
       elf_group_name (sec) = group_name;
@@ -1859,9 +1859,7 @@ obj_elf_version (int ignore ATTRIBUTE_UNUSED)
 
       /* Create the .note section.  */
       note_secp = subseg_new (".note", 0);
-      bfd_set_section_flags (stdoutput,
-			     note_secp,
-			     SEC_HAS_CONTENTS | SEC_READONLY);
+      bfd_set_section_flags (note_secp, SEC_HAS_CONTENTS | SEC_READONLY);
       record_alignment (note_secp, 2);
 
       /* Process the version string.  */
@@ -2140,9 +2138,8 @@ obj_elf_ident (int ignore ATTRIBUTE_UNUSED)
     {
       char *p;
       comment_section = subseg_new (".comment", 0);
-      bfd_set_section_flags (stdoutput, comment_section,
-			     SEC_READONLY | SEC_HAS_CONTENTS
-			     | SEC_MERGE | SEC_STRINGS);
+      bfd_set_section_flags (comment_section, (SEC_READONLY | SEC_HAS_CONTENTS
+					       | SEC_MERGE | SEC_STRINGS));
       comment_section->entsize = 1;
 #ifdef md_elf_section_change_hook
       md_elf_section_change_hook ();
@@ -2170,7 +2167,7 @@ obj_elf_init_stab_section (segT seg)
 
   /* Force the section to align to a longword boundary.  Without this,
      UnixWare ar crashes.  */
-  bfd_set_section_alignment (stdoutput, seg, 2);
+  bfd_set_section_alignment (seg, 2);
 
   /* Make space for this first symbol.  */
   p = frag_more (12);
@@ -2204,10 +2201,10 @@ adjust_stab_sections (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
   name = concat (sec->name, "str", NULL);
   strsec = bfd_get_section_by_name (abfd, name);
   if (strsec)
-    strsz = bfd_section_size (abfd, strsec);
+    strsz = bfd_section_size (strsec);
   else
     strsz = 0;
-  nsyms = bfd_section_size (abfd, sec) / 12 - 1;
+  nsyms = bfd_section_size (sec) / 12 - 1;
 
   p = seg_info (sec)->stabu.p;
   gas_assert (p != 0);
@@ -2490,8 +2487,8 @@ elf_adjust_symtab (void)
       sec_name = ".group";
       s = subseg_force_new (sec_name, 0);
       if (s == NULL
-	  || !bfd_set_section_flags (stdoutput, s, flags)
-	  || !bfd_set_section_alignment (stdoutput, s, 2))
+	  || !bfd_set_section_flags (s, flags)
+	  || !bfd_set_section_alignment (s, 2))
 	{
 	  as_fatal (_("can't create group: %s"),
 		    bfd_errmsg (bfd_get_error ()));
@@ -2598,7 +2595,7 @@ elf_frob_file_after_relocs (void)
 
       group = elf_sec_group (head);
       subseg_set (group, 0);
-      bfd_set_section_size (stdoutput, group, size);
+      bfd_set_section_size (group, size);
       group->contents = (unsigned char *) frag_more (size);
       frag_now->fr_fix = frag_now_fix_octets ();
       frag_wane (frag_now);
@@ -2656,8 +2653,8 @@ elf_frob_file_after_relocs (void)
 	 to force the ELF backend to allocate a file position, and then
 	 write out the data.  FIXME: Is this really the best way to do
 	 this?  */
-      bfd_set_section_size
-	(stdoutput, sec, bfd_ecoff_debug_size (stdoutput, &debug, debug_swap));
+      bfd_set_section_size (sec, bfd_ecoff_debug_size (stdoutput, &debug,
+						       debug_swap));
 
       /* Pass BUF to bfd_set_section_contents because this will
 	 eventually become a call to fwrite, and ISO C prohibits
diff --git a/gas/config/obj-macho.c b/gas/config/obj-macho.c
index 185949ee1f..07c7831945 100644
--- a/gas/config/obj-macho.c
+++ b/gas/config/obj-macho.c
@@ -227,7 +227,7 @@ obj_mach_o_make_or_get_sect (char * segname, char * sectname,
   /* Sub-segments don't exists as is on Mach-O.  */
   sec = subseg_new (name, 0);
 
-  oldflags = bfd_get_section_flags (stdoutput, sec);
+  oldflags = bfd_section_flags (sec);
   msect = bfd_mach_o_get_mach_o_section (sec);
 
   if (oldflags == SEC_NO_FLAGS)
@@ -245,9 +245,9 @@ obj_mach_o_make_or_get_sect (char * segname, char * sectname,
 	flags |= SEC_DEBUGGING;
 
       /* New, so just use the defaults or what's specified.  */
-      if (! bfd_set_section_flags (stdoutput, sec, flags))
+      if (!bfd_set_section_flags (sec, flags))
 	as_warn (_("failed to set flags for \"%s\": %s"),
-		 bfd_section_name (stdoutput, sec),
+		 bfd_section_name (sec),
 		 bfd_errmsg (bfd_get_error ()));
 
       strncpy (msect->segname, segname, BFD_MACH_O_SEGNAME_SIZE);
@@ -1697,7 +1697,7 @@ static void
 obj_mach_o_set_section_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *v_p)
 {
   bfd_mach_o_section *ms = bfd_mach_o_get_mach_o_section (sec);
-  unsigned bfd_align = bfd_get_section_alignment (abfd, sec);
+  unsigned bfd_align = bfd_section_alignment (sec);
   obj_mach_o_set_vma_data *p = (struct obj_mach_o_set_vma_data *)v_p;
   unsigned sectype = (ms->flags & BFD_MACH_O_SECTION_TYPE_MASK);
   unsigned zf;
@@ -1719,16 +1719,16 @@ obj_mach_o_set_section_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *v_p
 
   /* We know the section size now - so make a vma for the section just
      based on order.  */
-  ms->size = bfd_get_section_size (sec);
+  ms->size = bfd_section_size (sec);
 
   /* Make sure that the align agrees, and set to the largest value chosen.  */
   ms->align = ms->align > bfd_align ? ms->align : bfd_align;
-  bfd_set_section_alignment (abfd, sec, ms->align);
+  bfd_set_section_alignment (sec, ms->align);
 
   p->vma += (1 << ms->align) - 1;
   p->vma &= ~((1 << ms->align) - 1);
   ms->addr = p->vma;
-  bfd_set_section_vma (abfd, sec, p->vma);
+  bfd_set_section_vma (sec, p->vma);
   p->vma += ms->size;
 }
 
@@ -1752,7 +1752,7 @@ static void
 obj_mach_o_set_indirect_symbols (bfd *abfd, asection *sec,
 				 void *xxx ATTRIBUTE_UNUSED)
 {
-  bfd_vma sect_size = bfd_section_size (abfd, sec);
+  bfd_vma sect_size = bfd_section_size (sec);
   bfd_mach_o_section *ms = bfd_mach_o_get_mach_o_section (sec);
   unsigned lazy = 0;
 
diff --git a/gas/config/obj-som.c b/gas/config/obj-som.c
index edd49dc7f1..20213b8b32 100644
--- a/gas/config/obj-som.c
+++ b/gas/config/obj-som.c
@@ -224,14 +224,14 @@ obj_som_init_stab_section (segT seg)
      of the various stabs spaces/subspaces need to be "small".  We
      reserve range 72/73 which appear to work well.  */
   obj_set_section_attributes (space, 1, 1, 72, 2);
-  bfd_set_section_alignment (stdoutput, space, 2);
+  bfd_set_section_alignment (space, 2);
 
   /* Set the containing space for both stab sections to be $GDB_DEBUG$
      (just created above).  Also set some attributes which BFD does
      not understand.  In particular, access bits, sort keys, and load
      quadrant.  */
   obj_set_subsection_attributes (seg, space, 0x1f, 73, 0, 0, 0, 0);
-  bfd_set_section_alignment (stdoutput, seg, 2);
+  bfd_set_section_alignment (seg, 2);
 
   /* Make some space for the first special stab entry and zero the memory.
      It contains information about the length of this file's
@@ -254,7 +254,7 @@ obj_som_init_stab_section (segT seg)
      quadrant.  */
   seg = bfd_get_section_by_name (stdoutput, "$GDB_STRINGS$");
   obj_set_subsection_attributes (seg, space, 0x1f, 72, 0, 0, 0, 0);
-  bfd_set_section_alignment (stdoutput, seg, 2);
+  bfd_set_section_alignment (seg, 2);
 
   subseg_set (saved_seg, saved_subseg);
 }
@@ -273,10 +273,10 @@ adjust_stab_sections (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
 
   strsec = bfd_get_section_by_name (abfd, "$GDB_STRINGS$");
   if (strsec)
-    strsz = bfd_section_size (abfd, strsec);
+    strsz = bfd_section_size (strsec);
   else
     strsz = 0;
-  nsyms = bfd_section_size (abfd, sec) / 12 - 1;
+  nsyms = bfd_section_size (sec) / 12 - 1;
 
   p = seg_info (sec)->stabu.p;
   gas_assert (p != 0);
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 735ecd6073..522efebfe4 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -7363,7 +7363,7 @@ aarch64_init_frag (fragS * fragP, int max_chars)
 
   /* PR 21809: Do not set a mapping state for debug sections
      - it just confuses other tools.  */
-  if (bfd_get_section_flags (NULL, now_seg) & SEC_DEBUGGING)
+  if (bfd_section_flags (now_seg) & SEC_DEBUGGING)
     return;
 
   switch (fragP->fr_type)
diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c
index 7f80036157..70ceba02c1 100644
--- a/gas/config/tc-alpha.c
+++ b/gas/config/tc-alpha.c
@@ -1205,10 +1205,9 @@ create_literal_section (const char *name,
 
   *secp = new_sec = subseg_new (name, 0);
   subseg_set (current_section, current_subsec);
-  bfd_set_section_alignment (stdoutput, new_sec, 4);
-  bfd_set_section_flags (stdoutput, new_sec,
-			 SEC_RELOC | SEC_ALLOC | SEC_LOAD | SEC_READONLY
-			 | SEC_DATA);
+  bfd_set_section_alignment (new_sec, 4);
+  bfd_set_section_flags (new_sec, (SEC_RELOC | SEC_ALLOC | SEC_LOAD
+				   | SEC_READONLY | SEC_DATA));
 
   S_CLEAR_EXTERNAL (*symp = section_symbol (new_sec));
 }
@@ -3985,8 +3984,8 @@ s_alpha_stab (int n)
   if (alpha_flag_mdebug < 0)
     {
       segT sec = subseg_new (".mdebug", 0);
-      bfd_set_section_flags (stdoutput, sec, SEC_HAS_CONTENTS | SEC_READONLY);
-      bfd_set_section_alignment (stdoutput, sec, 3);
+      bfd_set_section_flags (sec, SEC_HAS_CONTENTS | SEC_READONLY);
+      bfd_set_section_alignment (sec, 3);
 
       ecoff_read_begin_hook ();
 
@@ -5301,7 +5300,7 @@ maybe_set_gp (asection *sec)
 
   if (!sec)
     return;
-  vma = bfd_get_section_vma (sec->owner, sec);
+  vma = bfd_section_vma (sec);
   if (vma && vma < alpha_gp_value)
     alpha_gp_value = vma;
 }
@@ -5515,8 +5514,8 @@ md_begin (void)
   if (ECOFF_DEBUGGING)
     {
       segT sec = subseg_new (".mdebug", (subsegT) 0);
-      bfd_set_section_flags (stdoutput, sec, SEC_HAS_CONTENTS | SEC_READONLY);
-      bfd_set_section_alignment (stdoutput, sec, 3);
+      bfd_set_section_flags (sec, SEC_HAS_CONTENTS | SEC_READONLY);
+      bfd_set_section_alignment (sec, 3);
     }
 #endif
 
@@ -5563,7 +5562,7 @@ md_assemble (char *str)
 valueT
 md_section_align (segT seg, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   valueT mask = ((valueT) 1 << align) - 1;
 
   return (size + mask) & ~mask;
diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
index c1d5ea3d47..c73906b51b 100644
--- a/gas/config/tc-arc.c
+++ b/gas/config/tc-arc.c
@@ -2706,7 +2706,7 @@ valueT
 md_section_align (segT segment,
 		  valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
 }
@@ -4529,8 +4529,7 @@ arc_set_ext_seg (void)
   if (!arcext_section)
     {
       arcext_section = subseg_new (".arcextmap", 0);
-      bfd_set_section_flags (stdoutput, arcext_section,
-			     SEC_READONLY | SEC_HAS_CONTENTS);
+      bfd_set_section_flags (arcext_section, SEC_READONLY | SEC_HAS_CONTENTS);
     }
   else
     subseg_set (arcext_section, 0);
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 32a15f65ec..b0f1507c36 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -22878,7 +22878,7 @@ arm_frob_label (symbolS * sym)
      out of the jump table, and chaos would ensue.  */
   if (label_is_thumb_function_name
       && (S_GET_NAME (sym)[0] != '.' || S_GET_NAME (sym)[1] != 'L')
-      && (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+      && (bfd_section_flags (now_seg) & SEC_CODE) != 0)
     {
       /* When the address of a Thumb function is taken the bottom
 	 bit of that address should be set.  This will allow
@@ -26491,7 +26491,7 @@ arm_init_frag (fragS * fragP, int max_chars)
 
   /* PR 21809: Do not set a mapping state for debug sections
      - it just confuses other tools.  */
-  if (bfd_get_section_flags (NULL, now_seg) & SEC_DEBUGGING)
+  if (bfd_section_flags (now_seg) & SEC_DEBUGGING)
     return;
 
   frag_thumb_mode = fragP->tc_frag_data.thumb_mode ^ MODE_RECORDED;
@@ -30019,9 +30019,8 @@ md_begin (void)
 
 	if (sec != NULL)
 	  {
-	    bfd_set_section_flags
-	      (stdoutput, sec, SEC_READONLY | SEC_DEBUGGING /* | SEC_HAS_CONTENTS */);
-	    bfd_set_section_size (stdoutput, sec, 0);
+	    bfd_set_section_flags (sec, SEC_READONLY | SEC_DEBUGGING);
+	    bfd_set_section_size (sec, 0);
 	    bfd_set_section_contents (stdoutput, sec, NULL, 0, 0);
 	  }
       }
diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c
index df0833c761..36262ad8c0 100644
--- a/gas/config/tc-avr.c
+++ b/gas/config/tc-avr.c
@@ -1429,7 +1429,7 @@ avr_operands (struct avr_opcodes_s *opcode, char **line)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & (-1UL << align));
 }
 
@@ -2229,7 +2229,7 @@ avr_create_property_section (void)
   sec = bfd_make_section (stdoutput, section_name);
   if (sec == NULL)
     as_fatal (_("Failed to create property section `%s'\n"), section_name);
-  bfd_set_section_flags (stdoutput, sec, flags);
+  bfd_set_section_flags (sec, flags);
   sec->output_section = sec;
   return sec;
 }
@@ -2404,7 +2404,7 @@ avr_create_and_fill_property_section (void)
     return;
 
   prop_sec = avr_create_property_section ();
-  bfd_set_section_size (stdoutput, prop_sec, sec_size);
+  bfd_set_section_size (prop_sec, sec_size);
 
   subseg_set (prop_sec, 0);
   frag_base = frag_more (sec_size);
diff --git a/gas/config/tc-bfin.c b/gas/config/tc-bfin.c
index 104ab6aec9..5f10cb7fb4 100644
--- a/gas/config/tc-bfin.c
+++ b/gas/config/tc-bfin.c
@@ -789,7 +789,7 @@ md_apply_fix (fixS *fixP, valueT *valueP, segT seg ATTRIBUTE_UNUSED)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int boundary = bfd_get_section_alignment (stdoutput, segment);
+  int boundary = bfd_section_alignment (segment);
   return ((size + (1 << boundary) - 1) & -(1 << boundary));
 }
 
diff --git a/gas/config/tc-bpf.c b/gas/config/tc-bpf.c
index d2da2feafb..7c3bf2e718 100644
--- a/gas/config/tc-bpf.c
+++ b/gas/config/tc-bpf.c
@@ -189,7 +189,7 @@ md_begin (void)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-d10v.c b/gas/config/tc-d10v.c
index 9f6c82e1f9..2eb679bb44 100644
--- a/gas/config/tc-d10v.c
+++ b/gas/config/tc-d10v.c
@@ -268,7 +268,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-d30v.c b/gas/config/tc-d30v.c
index 086215e306..a54945e1f3 100644
--- a/gas/config/tc-d30v.c
+++ b/gas/config/tc-d30v.c
@@ -302,7 +302,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
@@ -1490,7 +1490,7 @@ d30v_align (int n, char *pfill, symbolS *label)
   if (pfill == NULL)
     {
       if (n > 2
-	  && (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+	  && (bfd_section_flags (now_seg) & SEC_CODE) != 0)
 	{
 	  static char const nop[4] = { 0x00, 0xf0, 0x00, 0x00 };
 
diff --git a/gas/config/tc-epiphany.c b/gas/config/tc-epiphany.c
index 5429fa9fb5..753cb6e0bf 100644
--- a/gas/config/tc-epiphany.c
+++ b/gas/config/tc-epiphany.c
@@ -152,7 +152,7 @@ md_begin (void)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-fr30.c b/gas/config/tc-fr30.c
index 3703e29ccc..5767eeb616 100644
--- a/gas/config/tc-fr30.c
+++ b/gas/config/tc-fr30.c
@@ -154,7 +154,7 @@ md_operand (expressionS * expressionP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-frv.c b/gas/config/tc-frv.c
index 3112fce4f2..d8ff553294 100644
--- a/gas/config/tc-frv.c
+++ b/gas/config/tc-frv.c
@@ -1225,7 +1225,7 @@ md_operand (expressionS *expressionP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
@@ -1651,7 +1651,7 @@ frv_frob_file_section (bfd *abfd, asection *sec, void *ptr ATTRIBUTE_UNUSED)
   segment_info_type *seginfo = seg_info (sec);
   fixS *fixp;
   CGEN_CPU_DESC cd = gas_cgen_cpu_desc;
-  flagword flags = bfd_get_section_flags (abfd, sec);
+  flagword flags = bfd_section_flags (sec);
 
   /* Skip relocations in known sections (.ctors, .dtors, and .gcc_except_table)
      since we can fix those up by hand.  */
diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
index 5ddc889a4d..c79c6d4225 100644
--- a/gas/config/tc-h8300.c
+++ b/gas/config/tc-h8300.c
@@ -2225,7 +2225,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED,
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & (-1U << align));
 }
 
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 82c71ebbfc..fb6d82bc59 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -1608,7 +1608,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   int align2 = (1 << align) - 1;
 
   return (size + align2) & ~align2;
@@ -5962,7 +5962,7 @@ pa_build_unwind_subspace (struct call_info *call_info)
   char *name, *p;
   symbolS *symbolP;
 
-  if ((bfd_get_section_flags (stdoutput, now_seg)
+  if ((bfd_section_flags (now_seg)
        & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
       != (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
     return;
@@ -6006,10 +6006,9 @@ pa_build_unwind_subspace (struct call_info *call_info)
   if (seg == ASEC_NULL)
     {
       seg = subseg_new (UNWIND_SECTION_NAME, 0);
-      bfd_set_section_flags (stdoutput, seg,
-			     SEC_READONLY | SEC_HAS_CONTENTS
-			     | SEC_LOAD | SEC_RELOC | SEC_ALLOC | SEC_DATA);
-      bfd_set_section_alignment (stdoutput, seg, 2);
+      bfd_set_section_flags (seg, (SEC_READONLY | SEC_HAS_CONTENTS | SEC_LOAD
+				   | SEC_RELOC | SEC_ALLOC | SEC_DATA));
+      bfd_set_section_alignment (seg, 2);
     }
 
   subseg_set (seg, 0);
@@ -7533,14 +7532,13 @@ pa_subspace (int create_new)
 	seg_info (section)->bss = 1;
 
       /* Now set the flags.  */
-      bfd_set_section_flags (stdoutput, section, applicable);
+      bfd_set_section_flags (section, applicable);
 
       /* Record any alignment request for this section.  */
       record_alignment (section, exact_log2 (alignment));
 
       /* Set the starting offset for this section.  */
-      bfd_set_section_vma (stdoutput, section,
-			   pa_subspace_start (space, quadrant));
+      bfd_set_section_vma (section, pa_subspace_start (space, quadrant));
 
       /* Now that all the flags are set, update an existing subspace,
 	 or create a new one.  */
@@ -7614,7 +7612,7 @@ pa_spaces_begin (void)
 	{
 	  text_section = segment;
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & (SEC_ALLOC | SEC_LOAD
 					       | SEC_RELOC | SEC_CODE
 					       | SEC_READONLY
@@ -7624,7 +7622,7 @@ pa_spaces_begin (void)
 	{
 	  data_section = segment;
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & (SEC_ALLOC | SEC_LOAD
 					       | SEC_RELOC
 					       | SEC_HAS_CONTENTS));
@@ -7634,13 +7632,13 @@ pa_spaces_begin (void)
 	{
 	  bss_section = segment;
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & SEC_ALLOC);
 	}
       else if (!strcmp (pa_def_subspaces[i].name, "$LIT$"))
 	{
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & (SEC_ALLOC | SEC_LOAD
 					       | SEC_RELOC
 					       | SEC_READONLY
@@ -7649,7 +7647,7 @@ pa_spaces_begin (void)
       else if (!strcmp (pa_def_subspaces[i].name, "$MILLICODE$"))
 	{
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & (SEC_ALLOC | SEC_LOAD
 					       | SEC_RELOC
 					       | SEC_READONLY
@@ -7658,7 +7656,7 @@ pa_spaces_begin (void)
       else if (!strcmp (pa_def_subspaces[i].name, "$UNWIND$"))
 	{
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, segment,
+	  bfd_set_section_flags (segment,
 				 applicable & (SEC_ALLOC | SEC_LOAD
 					       | SEC_RELOC
 					       | SEC_READONLY
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 2710dcec72..fec69c1397 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -8105,7 +8105,7 @@ x86_cleanup (void)
 
   /* Create the .note.gnu.property section.  */
   sec = subseg_new (NOTE_GNU_PROPERTY_SECTION_NAME, 0);
-  bfd_set_section_flags (stdoutput, sec,
+  bfd_set_section_flags (sec,
 			 (SEC_ALLOC
 			  | SEC_LOAD
 			  | SEC_DATA
@@ -8123,7 +8123,7 @@ x86_cleanup (void)
       alignment = 2;
     }
 
-  bfd_set_section_alignment (stdoutput, sec, alignment);
+  bfd_set_section_alignment (sec, alignment);
   elf_section_type (sec) = SHT_NOTE;
 
   /* GNU_PROPERTY_X86_ISA_1_USED: 4-byte type + 4-byte data size
@@ -11939,7 +11939,7 @@ md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
 	 work.  */
       int align;
 
-      align = bfd_get_section_alignment (stdoutput, segment);
+      align = bfd_section_alignment (segment);
       size = ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
     }
 #endif
@@ -12382,8 +12382,7 @@ handle_large_common (int small ATTRIBUTE_UNUSED)
 	  /* The .lbss section is for local .largecomm symbols.  */
 	  lbss_section = subseg_new (".lbss", 0);
 	  applicable = bfd_applicable_section_flags (stdoutput);
-	  bfd_set_section_flags (stdoutput, lbss_section,
-				 applicable & SEC_ALLOC);
+	  bfd_set_section_flags (lbss_section, applicable & SEC_ALLOC);
 	  seg_info (lbss_section)->bss = 1;
 
 	  subseg_set (seg, subseg);
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 8f25e557e0..0c618e811e 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -1152,14 +1152,14 @@ obj_elf_vms_common (int ignore ATTRIBUTE_UNUSED)
 
   record_alignment (now_seg, log_align);
 
-  cur_size = bfd_section_size (stdoutput, now_seg);
+  cur_size = bfd_section_size (now_seg);
   if ((int) size > cur_size)
     {
       char *pfrag
         = frag_var (rs_fill, 1, 1, (relax_substateT)0, NULL,
                     (valueT)size - (valueT)cur_size, NULL);
       *pfrag = 0;
-      bfd_section_size (stdoutput, now_seg) = size;
+      bfd_set_section_size (now_seg, size);
     }
 
   /* Switch back to current segment.  */
@@ -3606,8 +3606,7 @@ start_unwind_section (const segT text_seg, int sec_index)
   else
     {
       set_section (sec_name);
-      bfd_set_section_flags (stdoutput, now_seg,
-			     SEC_LOAD | SEC_ALLOC | SEC_READONLY);
+      bfd_set_section_flags (now_seg, SEC_LOAD | SEC_ALLOC | SEC_READONLY);
     }
 
   elf_linked_to_section (now_seg) = text_seg;
@@ -7250,7 +7249,7 @@ md_begin (void)
   md.auto_align = 1;
   md.explicit_mode = md.default_explicit_mode;
 
-  bfd_set_section_alignment (stdoutput, text_section, 4);
+  bfd_set_section_alignment (text_section, 4);
 
   /* Make sure function pointers get initialized.  */
   target_big_endian = -1;
@@ -7778,7 +7777,7 @@ ia64_frob_label (struct symbol *sym)
       return;
     }
 
-  if (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE)
+  if (bfd_section_flags (now_seg) & SEC_CODE)
     {
       md.last_text_seg = now_seg;
       fix = XOBNEW (&notes, struct label_fix);
@@ -7818,7 +7817,7 @@ void
 ia64_flush_pending_output (void)
 {
   if (!md.keep_pending_output
-      && bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE)
+      && bfd_section_flags (now_seg) & SEC_CODE)
     {
       /* ??? This causes many unnecessary stop bits to be emitted.
 	 Unfortunately, it isn't clear if it is safe to remove this.  */
@@ -10989,7 +10988,7 @@ ia64_pcrel_from_section (fixS *fix, segT sec)
 {
   unsigned long off = fix->fx_frag->fr_address + fix->fx_where;
 
-  if (bfd_get_section_flags (stdoutput, sec) & SEC_CODE)
+  if (bfd_section_flags (sec) & SEC_CODE)
     off &= ~0xfUL;
 
   return off;
@@ -11946,9 +11945,7 @@ ia64_vms_note (void)
   /* Create the .note section.  */
 
   secp = subseg_new (".note", 0);
-  bfd_set_section_flags (stdoutput,
-			 secp,
-			 SEC_HAS_CONTENTS | SEC_READONLY);
+  bfd_set_section_flags (secp, SEC_HAS_CONTENTS | SEC_READONLY);
 
   /* Module header note (MHD).  */
   bname = xstrdup (lbasename (out_file_name));
@@ -11993,9 +11990,7 @@ ia64_vms_note (void)
   frag_align (3, 0, 0);
 
   secp = subseg_new (".vms_display_name_info", 0);
-  bfd_set_section_flags (stdoutput,
-			 secp,
-			 SEC_HAS_CONTENTS | SEC_READONLY);
+  bfd_set_section_flags (secp, SEC_HAS_CONTENTS | SEC_READONLY);
 
   /* This symbol should be passed on the command line and be variable
      according to language.  */
diff --git a/gas/config/tc-ip2k.c b/gas/config/tc-ip2k.c
index 0fcc0003d1..53b4d88f11 100644
--- a/gas/config/tc-ip2k.c
+++ b/gas/config/tc-ip2k.c
@@ -213,7 +213,7 @@ md_assemble (char * str)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c
index 3275d301f7..d2a0c59848 100644
--- a/gas/config/tc-iq2000.c
+++ b/gas/config/tc-iq2000.c
@@ -430,7 +430,7 @@ md_assemble (char * str)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
@@ -817,7 +817,7 @@ s_iq2000_end (int x ATTRIBUTE_UNUSED)
   else
     p = NULL;
 
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
@@ -916,7 +916,7 @@ s_iq2000_ent (int aent)
   if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-')
     get_number ();
 
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
diff --git a/gas/config/tc-lm32.c b/gas/config/tc-lm32.c
index a547ba9b5b..75a733a6f2 100644
--- a/gas/config/tc-lm32.c
+++ b/gas/config/tc-lm32.c
@@ -277,7 +277,7 @@ md_undefined_symbol (char * name ATTRIBUTE_UNUSED)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-m32c.c b/gas/config/tc-m32c.c
index 851d4c1971..3ea3e59974 100644
--- a/gas/config/tc-m32c.c
+++ b/gas/config/tc-m32c.c
@@ -392,7 +392,7 @@ md_operand (expressionS * exp)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-m32r.c b/gas/config/tc-m32r.c
index c20cb72ce1..75ee9d93de 100644
--- a/gas/config/tc-m32r.c
+++ b/gas/config/tc-m32r.c
@@ -713,7 +713,7 @@ md_begin (void)
 
   /* This is copied from perform_an_assembly_pass.  */
   applicable = bfd_applicable_section_flags (stdoutput);
-  bfd_set_section_flags (stdoutput, sbss_section, applicable & SEC_ALLOC);
+  bfd_set_section_flags (sbss_section, applicable & SEC_ALLOC);
 
   subseg_set (seg, subseg);
 
@@ -1448,7 +1448,7 @@ md_operand (expressionS *expressionP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-m68hc11.c b/gas/config/tc-m68hc11.c
index 11514963bc..1c36d5d98c 100644
--- a/gas/config/tc-m68hc11.c
+++ b/gas/config/tc-m68hc11.c
@@ -583,7 +583,7 @@ md_atof (int type, char *litP, int *sizeP)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-mep.c b/gas/config/tc-mep.c
index f53bb17022..c0d48e8354 100644
--- a/gas/config/tc-mep.c
+++ b/gas/config/tc-mep.c
@@ -1380,7 +1380,7 @@ md_assemble (char * str)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
@@ -1528,7 +1528,7 @@ md_estimate_size_before_relax (fragS * fragP, segT segment)
       || S_IS_WEAK (fragP->fr_symbol)
 #ifdef MEP_IVC2_SUPPORTED
       || (mep_cop == EF_MEP_COP_IVC2
-	  && bfd_get_section_flags (stdoutput, segment) & SEC_MEP_VLIW)
+	  && bfd_section_flags (segment) & SEC_MEP_VLIW)
 #endif /* MEP_IVC2_SUPPORTED */
       )
     {
@@ -1539,7 +1539,7 @@ md_estimate_size_before_relax (fragS * fragP, segT segment)
     }
 
   if (MEP_VLIW && ! MEP_VLIW64
-      && (bfd_get_section_flags (stdoutput, segment) & SEC_MEP_VLIW))
+      && (bfd_section_flags (segment) & SEC_MEP_VLIW))
     {
       /* Use 32 bit branches for vliw32 so the vliw word is not split.  */
       switch (fragP->fr_cgen.insn->base->num)
@@ -1572,7 +1572,7 @@ md_estimate_size_before_relax (fragS * fragP, segT segment)
 
 #ifdef MEP_IVC2_SUPPORTED
   if (mep_cop == EF_MEP_COP_IVC2
-      && bfd_get_section_flags (stdoutput, segment) & SEC_MEP_VLIW)
+      && bfd_section_flags (segment) & SEC_MEP_VLIW)
     return 0;
 #endif /* MEP_IVC2_SUPPORTED */
 
@@ -1587,7 +1587,7 @@ mep_relax_frag (segT segment, fragS *fragP, long stretch)
   long rv = relax_frag (segment, fragP, stretch);
 #ifdef MEP_IVC2_SUPPORTED
   if (mep_cop == EF_MEP_COP_IVC2
-      && bfd_get_section_flags (stdoutput, segment) & SEC_MEP_VLIW)
+      && bfd_section_flags (segment) & SEC_MEP_VLIW)
     return 0;
 #endif
   return rv;
@@ -1624,7 +1624,7 @@ md_convert_frag (bfd *abfd  ATTRIBUTE_UNUSED,
   int core_mode;
 
 #ifdef MEP_IVC2_SUPPORTED
-  if (bfd_get_section_flags (stdoutput, seg) & SEC_MEP_VLIW
+  if (bfd_section_flags (seg) & SEC_MEP_VLIW
       && mep_cop == EF_MEP_COP_IVC2)
     core_mode = 0;
   else
@@ -2110,7 +2110,7 @@ mep_vtext_section (void)
     {
       flagword applicable = bfd_applicable_section_flags (stdoutput);
       vtext_section = subseg_new (VTEXT_SECTION_NAME, 0);
-      bfd_set_section_flags (stdoutput, vtext_section,
+      bfd_set_section_flags (vtext_section,
 			     applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC
 					   | SEC_CODE | SEC_READONLY
 					   | SEC_MEP_VLIW));
diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
index c9ab452b3e..2f68d688ea 100644
--- a/gas/config/tc-microblaze.c
+++ b/gas/config/tc-microblaze.c
@@ -2011,8 +2011,7 @@ md_apply_fix (fixS *   fixP,
     {
       if (S_IS_WEAK (fixP->fx_addsy)
 	  || (symbol_used_in_reloc_p (fixP->fx_addsy)
-	      && (((bfd_get_section_flags (stdoutput,
-					   S_GET_SEGMENT (fixP->fx_addsy))
+	      && (((bfd_section_flags (S_GET_SEGMENT (fixP->fx_addsy))
 		    & SEC_LINK_ONCE) != 0)
 		  || !strncmp (segment_name (S_GET_SEGMENT (fixP->fx_addsy)),
 			       ".gnu.linkonce",
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index a386d11f6c..b2e49730c0 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -3859,9 +3859,9 @@ md_begin (void)
   if (strncmp (TARGET_OS, "elf", 3) != 0
       && strncmp (TARGET_OS, "vxworks", 7) != 0)
     {
-      (void) bfd_set_section_alignment (stdoutput, text_section, 4);
-      (void) bfd_set_section_alignment (stdoutput, data_section, 4);
-      (void) bfd_set_section_alignment (stdoutput, bss_section, 4);
+      bfd_set_section_alignment (text_section, 4);
+      bfd_set_section_alignment (data_section, 4);
+      bfd_set_section_alignment (bss_section, 4);
     }
 
   /* Create a .reginfo section for register masks and a .mdebug
@@ -3886,8 +3886,8 @@ md_begin (void)
       {
 	sec = subseg_new (".reginfo", (subsegT) 0);
 
-	bfd_set_section_flags (stdoutput, sec, flags);
-	bfd_set_section_alignment (stdoutput, sec, HAVE_NEWABI ? 3 : 2);
+	bfd_set_section_flags (sec, flags);
+	bfd_set_section_alignment (sec, HAVE_NEWABI ? 3 : 2);
 
 	mips_regmask_frag = frag_more (sizeof (Elf32_External_RegInfo));
       }
@@ -3896,8 +3896,8 @@ md_begin (void)
 	/* The 64-bit ABI uses a .MIPS.options section rather than
 	   .reginfo section.  */
 	sec = subseg_new (".MIPS.options", (subsegT) 0);
-	bfd_set_section_flags (stdoutput, sec, flags);
-	bfd_set_section_alignment (stdoutput, sec, 3);
+	bfd_set_section_flags (sec, flags);
+	bfd_set_section_alignment (sec, 3);
 
 	/* Set up the option header.  */
 	{
@@ -3918,25 +3918,23 @@ md_begin (void)
       }
 
     sec = subseg_new (".MIPS.abiflags", (subsegT) 0);
-    bfd_set_section_flags (stdoutput, sec,
+    bfd_set_section_flags (sec,
 			   SEC_READONLY | SEC_DATA | SEC_ALLOC | SEC_LOAD);
-    bfd_set_section_alignment (stdoutput, sec, 3);
+    bfd_set_section_alignment (sec, 3);
     mips_flags_frag = frag_more (sizeof (Elf_External_ABIFlags_v0));
 
     if (ECOFF_DEBUGGING)
       {
 	sec = subseg_new (".mdebug", (subsegT) 0);
-	(void) bfd_set_section_flags (stdoutput, sec,
-				      SEC_HAS_CONTENTS | SEC_READONLY);
-	(void) bfd_set_section_alignment (stdoutput, sec, 2);
+	bfd_set_section_flags (sec, SEC_HAS_CONTENTS | SEC_READONLY);
+	bfd_set_section_alignment (sec, 2);
       }
     else if (mips_flag_pdr)
       {
 	pdr_seg = subseg_new (".pdr", (subsegT) 0);
-	(void) bfd_set_section_flags (stdoutput, pdr_seg,
-				      SEC_READONLY | SEC_RELOC
-				      | SEC_DEBUGGING);
-	(void) bfd_set_section_alignment (stdoutput, pdr_seg, 2);
+	bfd_set_section_flags (pdr_seg,
+			       SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
+	bfd_set_section_alignment (pdr_seg, 2);
       }
 
     subseg_set (seg, subseg);
@@ -4468,7 +4466,7 @@ s_is_linkonce (symbolS *sym, segT from_seg)
 
   if (symseg != from_seg && !S_IS_LOCAL (sym))
     {
-      if ((bfd_get_section_flags (stdoutput, symseg) & SEC_LINK_ONCE))
+      if ((bfd_section_flags (symseg) & SEC_LINK_ONCE))
 	linkonce = TRUE;
       /* The GNU toolchain uses an extension for ELF: a section
 	 beginning with the magic string .gnu.linkonce is a
@@ -6180,7 +6178,7 @@ match_float_constant (struct mips_arg_info *arg, expressionS *imm,
     }
 
   new_seg = subseg_new (newname, (subsegT) 0);
-  bfd_set_section_flags (stdoutput, new_seg,
+  bfd_set_section_flags (new_seg,
 			 SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_DATA);
   frag_align (length == 4 ? 2 : 3, 0, 0);
   if (strncmp (TARGET_OS, "elf", 3) != 0)
@@ -16128,7 +16126,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
 	       && fixP->fx_done
 	       && fixP->fx_frag->fr_address >= text_section->vma
 	       && (fixP->fx_frag->fr_address
-		   < text_section->vma + bfd_get_section_size (text_section))
+		   < text_section->vma + bfd_section_size (text_section))
 	       && ((insn & 0xffff0000) == 0x10000000	 /* beq $0,$0 */
 		   || (insn & 0xffff0000) == 0x04010000	 /* bgez $0 */
 		   || (insn & 0xffff0000) == 0x04110000)) /* bgezal $0 */
@@ -16319,9 +16317,8 @@ s_change_sec (int sec)
     case 'r':
       seg = subseg_new (RDATA_SECTION_NAME,
 			(subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, (SEC_ALLOC | SEC_LOAD
-					      | SEC_READONLY | SEC_RELOC
-					      | SEC_DATA));
+      bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY
+				   | SEC_RELOC | SEC_DATA));
       if (strncmp (TARGET_OS, "elf", 3) != 0)
 	record_alignment (seg, 4);
       demand_empty_rest_of_line ();
@@ -16329,7 +16326,7 @@ s_change_sec (int sec)
 
     case 's':
       seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg,
+      bfd_set_section_flags (seg,
 			     SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA);
       if (strncmp (TARGET_OS, "elf", 3) != 0)
 	record_alignment (seg, 4);
@@ -16338,7 +16335,7 @@ s_change_sec (int sec)
 
     case 'B':
       seg = subseg_new (".sbss", (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, SEC_ALLOC);
+      bfd_set_section_flags (seg, SEC_ALLOC);
       if (strncmp (TARGET_OS, "elf", 3) != 0)
 	record_alignment (seg, 4);
       demand_empty_rest_of_line ();
@@ -17603,7 +17600,7 @@ tc_get_register (int frame)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   /* We don't need to align ELF sections to the full alignment.
      However, Irix 5 may prefer that we align them at least to a 16
@@ -19760,7 +19757,7 @@ s_mips_end (int x ATTRIBUTE_UNUSED)
   else
     p = NULL;
 
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) == 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) == 0)
     as_warn (_(".end not in text section"));
 
   if (!cur_proc_ptr)
@@ -19850,7 +19847,7 @@ s_mips_ent (int aent)
       || *input_line_pointer == '-')
     get_number ();
 
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) == 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) == 0)
     as_warn (_(".ent or .aent not in text section"));
 
   if (!aent && cur_proc_ptr)
diff --git a/gas/config/tc-mmix.c b/gas/config/tc-mmix.c
index 317805923d..1514b6d060 100644
--- a/gas/config/tc-mmix.c
+++ b/gas/config/tc-mmix.c
@@ -2130,9 +2130,8 @@ s_bspec (int unused ATTRIBUTE_UNUSED)
       if (sec == NULL)
 	as_fatal (_("can't create section %s"), newsecname);
 
-      if (!bfd_set_section_flags (stdoutput, sec,
-				  bfd_get_section_flags (stdoutput, sec)
-				  | SEC_READONLY))
+      if (!bfd_set_section_flags (sec,
+				  bfd_section_flags (sec) | SEC_READONLY))
 	as_fatal (_("can't set section flags for section %s"), newsecname);
     }
 
@@ -2638,7 +2637,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
      than just helping the user around this limitation here; hopefully the
      code using the local expression is around.  Putting the LOCAL
      semantics in a relocation still seems right; a section didn't do.  */
-  if (bfd_section_size (section->owner, section) == 0)
+  if (bfd_section_size (section) == 0)
     as_bad_where
       (fixP->fx_file, fixP->fx_line,
        fixP->fx_r_type == BFD_RELOC_MMIX_LOCAL
@@ -2708,7 +2707,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
 	 resolve the relocation here.  */
       if (addsy != NULL
 	  && (bfd_is_und_section (addsec)
-	      || strcmp (bfd_get_section_name (addsec->owner, addsec),
+	      || strcmp (bfd_section_name (addsec),
 			 MMIX_REG_CONTENTS_SECTION_NAME) == 0))
 	{
 	  code = fixP->fx_r_type;
@@ -2735,7 +2734,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
 
     case BFD_RELOC_MMIX_BASE_PLUS_OFFSET:
       if (addsy != NULL
-	  && strcmp (bfd_get_section_name (addsec->owner, addsec),
+	  && strcmp (bfd_section_name (addsec),
 		     MMIX_REG_CONTENTS_SECTION_NAME) == 0)
 	{
 	  /* This changed into a register; the relocation is for the
@@ -2838,7 +2837,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
     case BFD_RELOC_MMIX_REG:
       if (addsy != NULL
 	  && (bfd_is_und_section (addsec)
-	      || strcmp (bfd_get_section_name (addsec->owner, addsec),
+	      || strcmp (bfd_section_name (addsec),
 			 MMIX_REG_CONTENTS_SECTION_NAME) == 0))
 	{
 	  code = fixP->fx_r_type;
@@ -3794,7 +3793,7 @@ mmix_frob_file (void)
   if (real_reg_section != NULL)
     {
       /* FIXME: Pass error state gracefully.  */
-      if (bfd_get_section_flags (stdoutput, real_reg_section) & SEC_HAS_CONTENTS)
+      if (bfd_section_flags (real_reg_section) & SEC_HAS_CONTENTS)
 	as_fatal (_("register section has contents\n"));
 
       bfd_section_list_remove (stdoutput, real_reg_section);
@@ -3924,7 +3923,7 @@ mmix_md_elf_section_change_hook (void)
   if (doing_bspec)
     as_bad (_("section change from within a BSPEC/ESPEC pair is not supported"));
 
-  last_alignment = bfd_get_section_alignment (now_seg->owner, now_seg);
+  last_alignment = bfd_section_alignment (now_seg);
   want_unaligned = 0;
 }
 
diff --git a/gas/config/tc-mn10200.c b/gas/config/tc-mn10200.c
index 045016bcba..ebc011b1a6 100644
--- a/gas/config/tc-mn10200.c
+++ b/gas/config/tc-mn10200.c
@@ -675,7 +675,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c
index 15e6e27b24..1a41731379 100644
--- a/gas/config/tc-mn10300.c
+++ b/gas/config/tc-mn10300.c
@@ -900,7 +900,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
@@ -2616,7 +2616,7 @@ mn10300_handle_align (fragS *frag)
       && now_seg != bss_section
       /* Do not create relocs for the merging sections - such
 	 relocs will prevent the contents from being merged.  */
-      && (bfd_get_section_flags (now_seg->owner, now_seg) & SEC_MERGE) == 0)
+      && (bfd_section_flags (now_seg) & SEC_MERGE) == 0)
     /* Create a new fixup to record the alignment request.  The symbol is
        irrelevant but must be present so we use the absolute section symbol.
        The offset from the symbol is used to record the power-of-two alignment
diff --git a/gas/config/tc-msp430.c b/gas/config/tc-msp430.c
index 5821b1c811..56d2024349 100644
--- a/gas/config/tc-msp430.c
+++ b/gas/config/tc-msp430.c
@@ -4239,7 +4239,7 @@ md_assemble (char * str)
 valueT
 md_section_align (asection * seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-mt.c b/gas/config/tc-mt.c
index bd518547e3..5b938aa2a9 100644
--- a/gas/config/tc-mt.c
+++ b/gas/config/tc-mt.c
@@ -333,7 +333,7 @@ md_assemble (char * str)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-nds32.c b/gas/config/tc-nds32.c
index d01ca3d202..36ed58a453 100644
--- a/gas/config/tc-nds32.c
+++ b/gas/config/tc-nds32.c
@@ -3841,7 +3841,7 @@ do_nds32_seg (int i, subsegT sub)
       seg->s = subseg_new (seg->name, sub);
       if (OUTPUT_FLAVOR == bfd_target_elf_flavour)
 	{
-	  bfd_set_section_flags (stdoutput, seg->s, seg->flags);
+	  bfd_set_section_flags (seg->s, seg->flags);
 	  if ((seg->flags & SEC_LOAD) == 0)
 	    seg_info (seg->s)->bss = 1;
 	}
@@ -6609,7 +6609,7 @@ md_operand (expressionS *expressionP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & ((valueT) -1 << align));
 }
@@ -7569,7 +7569,7 @@ nds32_set_section_relocs (asection *sec, arelent ** relocs ATTRIBUTE_UNUSED,
 			  unsigned int n ATTRIBUTE_UNUSED)
 {
   bfd *abfd ATTRIBUTE_UNUSED = sec->owner;
-  if (bfd_get_section_flags (abfd, sec) & (flagword) SEC_RELOC)
+  if (bfd_section_flags (sec) & (flagword) SEC_RELOC)
     nds32_insertion_sort (sec->orelocation, sec->reloc_count,
 			  sizeof (arelent**), compar_relent);
 }
diff --git a/gas/config/tc-or1k.c b/gas/config/tc-or1k.c
index 28fa7c5010..e29d4dd77d 100644
--- a/gas/config/tc-or1k.c
+++ b/gas/config/tc-or1k.c
@@ -165,7 +165,7 @@ md_operand (expressionS * expressionP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 042c95b188..156f62c6fc 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1975,9 +1975,7 @@ ppc_cleanup (void)
 
     /* Create the .PPC.EMB.apuinfo section.  */
     apuinfo_secp = subseg_new (APUINFO_SECTION_NAME, 0);
-    bfd_set_section_flags (stdoutput,
-			   apuinfo_secp,
-			   SEC_HAS_CONTENTS | SEC_READONLY);
+    bfd_set_section_flags (apuinfo_secp, SEC_HAS_CONTENTS | SEC_READONLY);
 
     p = frag_more (4);
     md_number_to_chars (p, (valueT) 8, 4);
@@ -2703,7 +2701,7 @@ ppc_frob_file_before_adjust (void)
   toc = bfd_get_section_by_name (stdoutput, ".toc");
   if (toc != NULL
       && toc_reloc_types != has_large_toc_reloc
-      && bfd_section_size (stdoutput, toc) > 0x10000)
+      && bfd_section_size (toc) > 0x10000)
     as_warn (_("TOC section size exceeds 64k"));
 }
 
@@ -4681,14 +4679,14 @@ ppc_change_debug_section (unsigned int idx, subsegT subseg)
   const struct xcoff_dwsect_name *dw = &xcoff_dwsect_names[idx];
 
   sec = subseg_new (dw->name, subseg);
-  oldflags = bfd_get_section_flags (stdoutput, sec);
+  oldflags = bfd_section_flags (sec);
   if (oldflags == SEC_NO_FLAGS)
     {
       /* Just created section.  */
       gas_assert (dw_sections[idx].sect == NULL);
 
-      bfd_set_section_flags (stdoutput, sec, SEC_DEBUGGING);
-      bfd_set_section_alignment (stdoutput, sec, 0);
+      bfd_set_section_flags (sec, SEC_DEBUGGING);
+      bfd_set_section_alignment (sec, 0);
       dw_sections[idx].sect = sec;
     }
 
@@ -5804,11 +5802,10 @@ ppc_pdata (int ignore ATTRIBUTE_UNUSED)
     {
       pdata_section = subseg_new (".pdata", 0);
 
-      bfd_set_section_flags (stdoutput, pdata_section,
-			     (SEC_ALLOC | SEC_LOAD | SEC_RELOC
-			      | SEC_READONLY | SEC_DATA ));
+      bfd_set_section_flags (pdata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
+					     | SEC_READONLY | SEC_DATA));
 
-      bfd_set_section_alignment (stdoutput, pdata_section, 2);
+      bfd_set_section_alignment (pdata_section, 2);
     }
   else
     {
@@ -5837,11 +5834,10 @@ ppc_ydata (int ignore ATTRIBUTE_UNUSED)
   if (ydata_section == 0)
     {
       ydata_section = subseg_new (".ydata", 0);
-      bfd_set_section_flags (stdoutput, ydata_section,
-			     (SEC_ALLOC | SEC_LOAD | SEC_RELOC
-			      | SEC_READONLY | SEC_DATA ));
+      bfd_set_section_flags (ydata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
+					     | SEC_READONLY | SEC_DATA ));
 
-      bfd_set_section_alignment (stdoutput, ydata_section, 3);
+      bfd_set_section_alignment (ydata_section, 3);
     }
   else
     {
@@ -5874,11 +5870,10 @@ ppc_reldata (int ignore ATTRIBUTE_UNUSED)
     {
       reldata_section = subseg_new (".reldata", 0);
 
-      bfd_set_section_flags (stdoutput, reldata_section,
-			     (SEC_ALLOC | SEC_LOAD | SEC_RELOC
-			      | SEC_DATA));
+      bfd_set_section_flags (reldata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
+					       | SEC_DATA));
 
-      bfd_set_section_alignment (stdoutput, reldata_section, 2);
+      bfd_set_section_alignment (reldata_section, 2);
     }
   else
     {
@@ -5903,11 +5898,10 @@ ppc_rdata (int ignore ATTRIBUTE_UNUSED)
   if (rdata_section == 0)
     {
       rdata_section = subseg_new (".rdata", 0);
-      bfd_set_section_flags (stdoutput, rdata_section,
-			     (SEC_ALLOC | SEC_LOAD | SEC_RELOC
-			      | SEC_READONLY | SEC_DATA ));
+      bfd_set_section_flags (rdata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
+					     | SEC_READONLY | SEC_DATA ));
 
-      bfd_set_section_alignment (stdoutput, rdata_section, 2);
+      bfd_set_section_alignment (rdata_section, 2);
     }
   else
     {
@@ -6261,13 +6255,13 @@ ppc_pe_section (int ignore ATTRIBUTE_UNUSED)
 
   if (flags != SEC_NO_FLAGS)
     {
-      if (! bfd_set_section_flags (stdoutput, sec, flags))
+      if (!bfd_set_section_flags (sec, flags))
 	as_bad (_("error setting flags for \"%s\": %s"),
-		bfd_section_name (stdoutput, sec),
+		bfd_section_name (sec),
 		bfd_errmsg (bfd_get_error ()));
     }
 
-  bfd_set_section_alignment (stdoutput, sec, align);
+  bfd_set_section_alignment (sec, align);
 }
 
 static void
@@ -6298,11 +6292,10 @@ ppc_pe_tocd (int ignore ATTRIBUTE_UNUSED)
     {
       tocdata_section = subseg_new (".tocd", 0);
       /* FIXME: section flags won't work.  */
-      bfd_set_section_flags (stdoutput, tocdata_section,
-			     (SEC_ALLOC | SEC_LOAD | SEC_RELOC
-			      | SEC_READONLY | SEC_DATA));
+      bfd_set_section_flags (tocdata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
+					       | SEC_READONLY | SEC_DATA));
 
-      bfd_set_section_alignment (stdoutput, tocdata_section, 2);
+      bfd_set_section_alignment (tocdata_section, 2);
     }
   else
     {
@@ -6573,8 +6566,7 @@ ppc_frob_symbol (symbolS *sym)
 	  /* This is a csect symbol.  x_scnlen is the size of the
 	     csect.  */
 	  if (symbol_get_tc (sym)->next == (symbolS *) NULL)
-	    a->x_csect.x_scnlen.l = (bfd_section_size (stdoutput,
-						       S_GET_SEGMENT (sym))
+	    a->x_csect.x_scnlen.l = (bfd_section_size (S_GET_SEGMENT (sym))
 				     - S_GET_VALUE (sym));
 	  else
 	    {
@@ -6622,8 +6614,7 @@ ppc_frob_symbol (symbolS *sym)
 	      || symbol_get_tc (next)->symbol_class != XMC_TC)
 	    {
 	      if (ppc_after_toc_frag == (fragS *) NULL)
-		a->x_csect.x_scnlen.l = (bfd_section_size (stdoutput,
-							   data_section)
+		a->x_csect.x_scnlen.l = (bfd_section_size (data_section)
 					 - S_GET_VALUE (sym));
 	      else
 		a->x_csect.x_scnlen.l = (ppc_after_toc_frag->fr_address
@@ -6787,12 +6778,12 @@ ppc_frob_section (asection *sec)
   static bfd_vma vma = 0;
 
   /* Dwarf sections start at 0.  */
-  if (bfd_get_section_flags (NULL, sec) & SEC_DEBUGGING)
+  if (bfd_section_flags (sec) & SEC_DEBUGGING)
     return;
 
   vma = md_section_align (sec, vma);
-  bfd_set_section_vma (stdoutput, sec, vma);
-  vma += bfd_section_size (stdoutput, sec);
+  bfd_set_section_vma (sec, vma);
+  vma += bfd_section_size (sec);
 }
 
 #endif /* OBJ_XCOFF */
@@ -6823,7 +6814,7 @@ md_section_align (asection *seg ATTRIBUTE_UNUSED, valueT addr)
 #ifdef OBJ_ELF
   return addr;
 #else
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   return ((addr + (1 << align) - 1) & -(1 << align));
 #endif
@@ -6886,7 +6877,7 @@ ppc_fix_adjustable (fixS *fix)
     return 0;
 
   /* Always adjust symbols in debugging sections.  */
-  if (bfd_get_section_flags (stdoutput, symseg) & SEC_DEBUGGING)
+  if (bfd_section_flags (symseg) & SEC_DEBUGGING)
     return 1;
 
   if (ppc_toc_csect != (symbolS *) NULL
@@ -7927,9 +7918,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg)
 #else
       /* We want to use the offset within the toc, not the actual VMA
 	 of the symbol.  */
-      fixP->fx_addnumber =
-	- bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy))
-	- S_GET_VALUE (ppc_toc_csect);
+      fixP->fx_addnumber = (- bfd_section_vma (S_GET_SEGMENT (fixP->fx_addsy))
+			    - S_GET_VALUE (ppc_toc_csect));
       /* Set *valP to avoid errors.  */
       *valP = value;
 #endif
diff --git a/gas/config/tc-pru.c b/gas/config/tc-pru.c
index 12ed8cc834..2e2058c1de 100644
--- a/gas/config/tc-pru.c
+++ b/gas/config/tc-pru.c
@@ -1745,7 +1745,7 @@ md_assemble (char *op_str)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & (-((valueT) 1 << align)));
 }
 
diff --git a/gas/config/tc-rl78.c b/gas/config/tc-rl78.c
index 878c03f97e..9160cc027f 100644
--- a/gas/config/tc-rl78.c
+++ b/gas/config/tc-rl78.c
@@ -1520,6 +1520,6 @@ md_apply_fix (struct fix * f ATTRIBUTE_UNUSED,
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-rx.c b/gas/config/tc-rx.c
index 6b19f2f397..5d2e69b8b3 100644
--- a/gas/config/tc-rx.c
+++ b/gas/config/tc-rx.c
@@ -509,7 +509,7 @@ parse_rx_section (char * name)
       obj_elf_change_section (name, type, 0, attr, 0, NULL, FALSE, FALSE);
     }
 
-  bfd_set_section_alignment (stdoutput, now_seg, align);
+  bfd_set_section_alignment (now_seg, align);
 }
 
 static void
@@ -1290,7 +1290,7 @@ md_operand (expressionS * exp ATTRIBUTE_UNUSED)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-s12z.c b/gas/config/tc-s12z.c
index 67e88d277a..be4d4fb095 100644
--- a/gas/config/tc-s12z.c
+++ b/gas/config/tc-s12z.c
@@ -187,7 +187,7 @@ md_atof (int type, char *litP, int *sizeP)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c
index f74497aa85..a4dae4fb16 100644
--- a/gas/config/tc-s390.c
+++ b/gas/config/tc-s390.c
@@ -2084,7 +2084,7 @@ md_atof (int type, char *litp, int *sizep)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-score.c b/gas/config/tc-score.c
index 648e0d22eb..1393a18820 100644
--- a/gas/config/tc-score.c
+++ b/gas/config/tc-score.c
@@ -5300,7 +5300,7 @@ s3_pic_need_relax (symbolS *sym, asection *segtype)
   linkonce = FALSE;
   if (symsec != segtype && ! S_IS_LOCAL (sym))
     {
-      if ((bfd_get_section_flags (stdoutput, symsec) & SEC_LINK_ONCE) != 0)
+      if ((bfd_section_flags (symsec) & SEC_LINK_ONCE) != 0)
 	linkonce = TRUE;
 
       /* The GNU toolchain uses an extension for ELF: a section
@@ -5546,7 +5546,7 @@ static void
 s3_score_s_section (int ignore)
 {
   obj_elf_section (ignore);
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     record_alignment (now_seg, 2);
 
 }
@@ -5569,14 +5569,14 @@ s3_s_change_sec (int sec)
     {
     case 'r':
       seg = subseg_new (s3_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA));
+      bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA));
       if (strcmp (TARGET_OS, "elf") != 0)
         record_alignment (seg, 4);
       demand_empty_rest_of_line ();
       break;
     case 's':
       seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA);
+      bfd_set_section_flags (seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA);
       if (strcmp (TARGET_OS, "elf") != 0)
         record_alignment (seg, 4);
       demand_empty_rest_of_line ();
@@ -5686,7 +5686,7 @@ s3_s_score_ent (int aent)
     s3_get_number ();
 
 #ifdef BFD_ASSEMBLER
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
@@ -5795,7 +5795,7 @@ s3_s_score_end (int x ATTRIBUTE_UNUSED)
     p = NULL;
 
 #ifdef BFD_ASSEMBLER
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
@@ -6128,15 +6128,16 @@ s3_s_score_lcomm (int bytes_p)
   if (OUTPUT_FLAVOR == bfd_target_ecoff_flavour || OUTPUT_FLAVOR == bfd_target_elf_flavour)
     {
       /* For Score and Alpha ECOFF or ELF, small objects are put in .sbss.  */
-      if ((unsigned)temp <= bfd_get_gp_size (stdoutput))
-        {
-          bss_seg = subseg_new (".sbss", 1);
-          seg_info (bss_seg)->bss = 1;
+      if ((unsigned) temp <= bfd_get_gp_size (stdoutput))
+	{
+	  bss_seg = subseg_new (".sbss", 1);
+	  seg_info (bss_seg)->bss = 1;
 #ifdef BFD_ASSEMBLER
-          if (!bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC))
-            as_warn (_("error setting flags for \".sbss\": %s"), bfd_errmsg (bfd_get_error ()));
+	  if (!bfd_set_section_flags (bss_seg, SEC_ALLOC))
+	    as_warn (_("error setting flags for \".sbss\": %s"),
+		     bfd_errmsg (bfd_get_error ()));
 #endif
-        }
+	}
     }
 #endif
 
@@ -6538,8 +6539,8 @@ s3_begin (void)
   seg = now_seg;
   subseg = now_subseg;
   s3_pdr_seg = subseg_new (".pdr", (subsegT) 0);
-  (void)bfd_set_section_flags (stdoutput, s3_pdr_seg, SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
-  (void)bfd_set_section_alignment (stdoutput, s3_pdr_seg, 2);
+  bfd_set_section_flags (s3_pdr_seg, SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
+  bfd_set_section_alignment (s3_pdr_seg, 2);
   subseg_set (seg, subseg);
 
   if (s3_USE_GLOBAL_POINTER_OPT)
@@ -7076,7 +7077,7 @@ s3_pcrel_from (fixS * fixP)
 static valueT
 s3_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-score7.c b/gas/config/tc-score7.c
index 90cd5e3962..a615e149c9 100644
--- a/gas/config/tc-score7.c
+++ b/gas/config/tc-score7.c
@@ -5188,7 +5188,7 @@ s7_pic_need_relax (symbolS *sym, asection *segtype)
   linkonce = FALSE;
   if (symsec != segtype && ! S_IS_LOCAL (sym))
     {
-      if ((bfd_get_section_flags (stdoutput, symsec) & SEC_LINK_ONCE) != 0)
+      if ((bfd_section_flags (symsec) & SEC_LINK_ONCE) != 0)
 	linkonce = TRUE;
 
       /* The GNU toolchain uses an extension for ELF: a section
@@ -5399,7 +5399,7 @@ static void
 s7_s_section (int ignore)
 {
   obj_elf_section (ignore);
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     record_alignment (now_seg, 2);
 
 }
@@ -5422,14 +5422,14 @@ s7_s_change_sec (int sec)
     {
     case 'r':
       seg = subseg_new (s7_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA));
+      bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA));
       if (strcmp (TARGET_OS, "elf") != 0)
         record_alignment (seg, 4);
       demand_empty_rest_of_line ();
       break;
     case 's':
       seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
-      bfd_set_section_flags (stdoutput, seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA);
+      bfd_set_section_flags (seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA);
       if (strcmp (TARGET_OS, "elf") != 0)
         record_alignment (seg, 4);
       demand_empty_rest_of_line ();
@@ -5540,7 +5540,7 @@ s7_s_score_ent (int aent)
     s7_get_number ();
 
 #ifdef BFD_ASSEMBLER
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
@@ -5650,7 +5650,7 @@ s7_s_score_end (int x ATTRIBUTE_UNUSED)
     p = NULL;
 
 #ifdef BFD_ASSEMBLER
-  if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+  if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
     maybe_text = 1;
   else
     maybe_text = 0;
@@ -5993,7 +5993,7 @@ s7_s_score_lcomm (int bytes_p)
           bss_seg = subseg_new (".sbss", 1);
           seg_info (bss_seg)->bss = 1;
 #ifdef BFD_ASSEMBLER
-          if (!bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC))
+          if (!bfd_set_section_flags (bss_seg, SEC_ALLOC))
             as_warn (_("error setting flags for \".sbss\": %s"), bfd_errmsg (bfd_get_error ()));
 #endif
         }
@@ -6152,8 +6152,8 @@ s7_begin (void)
   seg = now_seg;
   subseg = now_subseg;
   s7_pdr_seg = subseg_new (".pdr", (subsegT) 0);
-  (void) bfd_set_section_flags (stdoutput, s7_pdr_seg, SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
-  (void) bfd_set_section_alignment (stdoutput, s7_pdr_seg, 2);
+  bfd_set_section_flags (s7_pdr_seg, SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
+  bfd_set_section_alignment (s7_pdr_seg, 2);
   subseg_set (seg, subseg);
 
   if (s7_USE_GLOBAL_POINTER_OPT)
@@ -6628,7 +6628,7 @@ s7_pcrel_from (fixS * fixP)
 static valueT
 s7_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c
index c9d47df9f6..c57f066134 100644
--- a/gas/config/tc-sh.c
+++ b/gas/config/tc-sh.c
@@ -3162,8 +3162,8 @@ md_section_align (segT seg ATTRIBUTE_UNUSED, valueT size)
 #ifdef OBJ_ELF
   return size;
 #else /* ! OBJ_ELF */
-  return ((size + (1 << bfd_get_section_alignment (stdoutput, seg)) - 1)
-	  & -(1 << bfd_get_section_alignment (stdoutput, seg)));
+  return ((size + (1 << bfd_section_alignment (seg)) - 1)
+	  & -(1 << bfd_section_alignment (seg)));
 #endif /* ! OBJ_ELF */
 }
 
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 347db08173..4f7d675f60 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -4001,7 +4001,7 @@ tc_gen_reloc (asection *section, fixS *fixp)
     }
 
   /* Nothing is aligned in DWARF debugging sections.  */
-  if (bfd_get_section_flags (stdoutput, section) & SEC_DEBUGGING)
+  if (bfd_section_flags (section) & SEC_DEBUGGING)
     switch (code)
       {
       case BFD_RELOC_16: code = BFD_RELOC_SPARC_UA16; break;
diff --git a/gas/config/tc-spu.c b/gas/config/tc-spu.c
index d3e3d8aebc..bdb22e72ba 100644
--- a/gas/config/tc-spu.c
+++ b/gas/config/tc-spu.c
@@ -904,7 +904,7 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
 valueT
 md_section_align (segT seg, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   valueT mask = ((valueT) 1 << align) - 1;
 
   return (size + mask) & ~mask;
diff --git a/gas/config/tc-tic4x.c b/gas/config/tc-tic4x.c
index f20d93b5b1..b5588b9c46 100644
--- a/gas/config/tc-tic4x.c
+++ b/gas/config/tc-tic4x.c
@@ -1001,9 +1001,9 @@ tic4x_sect (int x ATTRIBUTE_UNUSED)
       symbol_set_frag (line_label, frag_now);
     }
 
-  if (bfd_get_section_flags (stdoutput, seg) == SEC_NO_FLAGS)
+  if (bfd_section_flags (seg) == SEC_NO_FLAGS)
     {
-      if (!bfd_set_section_flags (stdoutput, seg, SEC_DATA))
+      if (!bfd_set_section_flags (seg, SEC_DATA))
 	as_warn (_("Error setting flags for \"%s\": %s"), name,
 		 bfd_errmsg (bfd_get_error ()));
     }
@@ -1104,7 +1104,7 @@ tic4x_usect (int x ATTRIBUTE_UNUSED)
       S_SET_VALUE (line_label, frag_now_fix ());
     }
   seg_info (seg)->bss = 1;	/* Uninitialised data.  */
-  if (!bfd_set_section_flags (stdoutput, seg, SEC_ALLOC))
+  if (!bfd_set_section_flags (seg, SEC_ALLOC))
     as_warn (_("Error setting flags for \"%s\": %s"), name,
 	     bfd_errmsg (bfd_get_error ()));
   tic4x_seg_alloc (name, seg, size, line_label);
diff --git a/gas/config/tc-tic54x.c b/gas/config/tc-tic54x.c
index 3e1d32a02e..72c8cf3967 100644
--- a/gas/config/tc-tic54x.c
+++ b/gas/config/tc-tic54x.c
@@ -1391,7 +1391,7 @@ tic54x_usect (int x ATTRIBUTE_UNUSED)
     blocking_flag = alignment_flag = 0;
 
   seg = subseg_new (name, 0);
-  flags = bfd_get_section_flags (stdoutput, seg) | SEC_ALLOC;
+  flags = bfd_section_flags (seg) | SEC_ALLOC;
 
   if (alignment_flag)
     {
@@ -1420,7 +1420,7 @@ tic54x_usect (int x ATTRIBUTE_UNUSED)
   if (blocking_flag)
     flags |= SEC_TIC54X_BLOCK;
 
-  if (!bfd_set_section_flags (stdoutput, seg, flags))
+  if (!bfd_set_section_flags (seg, flags))
     as_warn (_("Error setting flags for \"%s\": %s"), name,
 	     bfd_errmsg (bfd_get_error ()));
 
@@ -3977,12 +3977,12 @@ static void
 emit_insn (tic54x_insn *insn)
 {
   int i;
-  flagword oldflags = bfd_get_section_flags (stdoutput, now_seg);
+  flagword oldflags = bfd_section_flags (now_seg);
   flagword flags = oldflags | SEC_CODE;
 
-  if (! bfd_set_section_flags (stdoutput, now_seg, flags))
+  if (!bfd_set_section_flags (now_seg, flags))
         as_warn (_("error setting flags for \"%s\": %s"),
-                 bfd_section_name (stdoutput, now_seg),
+                 bfd_section_name (now_seg),
                  bfd_errmsg (bfd_get_error ()));
 
   for (i = 0; i < insn->words; i++)
diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c
index 108c2d4259..0433d9e409 100644
--- a/gas/config/tc-tic6x.c
+++ b/gas/config/tc-tic6x.c
@@ -781,7 +781,7 @@ md_begin (void)
 
   /* This is copied from perform_an_assembly_pass.  */
   applicable = bfd_applicable_section_flags (stdoutput);
-  bfd_set_section_flags (stdoutput, sbss_section, applicable & SEC_ALLOC);
+  bfd_set_section_flags (sbss_section, applicable & SEC_ALLOC);
 
   subseg_set (seg, subseg);
 
@@ -4483,7 +4483,7 @@ md_section_align (segT segment ATTRIBUTE_UNUSED,
 {
   /* Round up section sizes to ensure that text sections consist of
      whole fetch packets.  */
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
 }
 
diff --git a/gas/config/tc-tilegx.c b/gas/config/tc-tilegx.c
index e840e5dc85..788a9f3b46 100644
--- a/gas/config/tc-tilegx.c
+++ b/gas/config/tc-tilegx.c
@@ -262,7 +262,7 @@ md_begin (void)
     as_warn (_("Could not set architecture and machine"));
 
   /* Guarantee text section is aligned.  */
-  bfd_set_section_alignment (stdoutput, text_section,
+  bfd_set_section_alignment (text_section,
                              TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES);
 
   require_canonical_reg_names = 1;
@@ -948,8 +948,8 @@ tilegx_flush_bundle (void)
 
   /* If the section seems to have no alignment set yet, go ahead and
      make it large enough to hold code.  */
-  if (bfd_get_section_alignment (stdoutput, now_seg) == 0)
-    bfd_set_section_alignment (stdoutput, now_seg,
+  if (bfd_section_alignment (now_seg) == 0)
+    bfd_set_section_alignment (now_seg,
                                TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES);
 
   for (j = 0; j < current_bundle_index; j++)
diff --git a/gas/config/tc-tilepro.c b/gas/config/tc-tilepro.c
index 146e270f7d..1c98a93358 100644
--- a/gas/config/tc-tilepro.c
+++ b/gas/config/tc-tilepro.c
@@ -207,7 +207,7 @@ md_begin (void)
   int i;
 
   /* Guarantee text section is aligned.  */
-  bfd_set_section_alignment (stdoutput, text_section,
+  bfd_set_section_alignment (text_section,
                              TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES);
 
   require_canonical_reg_names = 1;
@@ -838,8 +838,8 @@ tilepro_flush_bundle (void)
 
   /* If the section seems to have no alignment set yet, go ahead and
      make it large enough to hold code.  */
-  if (bfd_get_section_alignment (stdoutput, now_seg) == 0)
-    bfd_set_section_alignment (stdoutput, now_seg,
+  if (bfd_section_alignment (now_seg) == 0)
+    bfd_set_section_alignment (now_seg,
                                TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES);
 
   for (j = 0; j < current_bundle_index; j++)
diff --git a/gas/config/tc-v850.c b/gas/config/tc-v850.c
index 12d5846487..dfb43cbc16 100644
--- a/gas/config/tc-v850.c
+++ b/gas/config/tc-v850.c
@@ -229,7 +229,7 @@ do_v850_seg (int i, subsegT sub)
   else
     {
       seg->s = subseg_new (seg->name, sub);
-      bfd_set_section_flags (stdoutput, seg->s, seg->flags);
+      bfd_set_section_flags (seg->s, seg->flags);
       if ((seg->flags & SEC_LOAD) == 0)
 	seg_info (seg->s)->bss = 1;
     }
@@ -1878,7 +1878,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
@@ -3740,8 +3740,8 @@ v850_md_end (void)
   enum v850_notes id;
 
   note_sec = subseg_new (V850_NOTE_SECNAME, 0);
-  bfd_set_section_flags (stdoutput, note_sec, SEC_HAS_CONTENTS | SEC_READONLY | SEC_MERGE);
-  bfd_set_section_alignment (stdoutput, note_sec, 2);
+  bfd_set_section_flags (note_sec, SEC_HAS_CONTENTS | SEC_READONLY | SEC_MERGE);
+  bfd_set_section_alignment (note_sec, 2);
 
   /* Provide default values for all of the notes.  */
   for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
diff --git a/gas/config/tc-visium.c b/gas/config/tc-visium.c
index 6886311230..fbf59c9e01 100644
--- a/gas/config/tc-visium.c
+++ b/gas/config/tc-visium.c
@@ -222,7 +222,7 @@ visium_rdata (int xxx)
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
 
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-wasm32.c b/gas/config/tc-wasm32.c
index c57611c5a7..3dc42f91df 100644
--- a/gas/config/tc-wasm32.c
+++ b/gas/config/tc-wasm32.c
@@ -177,7 +177,7 @@ md_begin (void)
 valueT
 md_section_align (asection * seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-xc16x.c b/gas/config/tc-xc16x.c
index 00bdb8316e..23b9e687c8 100644
--- a/gas/config/tc-xc16x.c
+++ b/gas/config/tc-xc16x.c
@@ -234,7 +234,7 @@ md_atof (int type, char *litP, int *sizeP)
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
   return ((size + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-xgate.c b/gas/config/tc-xgate.c
index b3c124398c..4f92c24d0d 100644
--- a/gas/config/tc-xgate.c
+++ b/gas/config/tc-xgate.c
@@ -466,7 +466,7 @@ md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
 valueT
 md_section_align (asection * seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
diff --git a/gas/config/tc-xstormy16.c b/gas/config/tc-xstormy16.c
index fb874c58f9..1c708b6362 100644
--- a/gas/config/tc-xstormy16.c
+++ b/gas/config/tc-xstormy16.c
@@ -277,7 +277,7 @@ xstormy16_cgen_record_fixup_exp (fragS *              frag,
 valueT
 md_section_align (segT segment, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, segment);
+  int align = bfd_section_alignment (segment);
 
   return ((size + (1 << align) - 1) & -(1 << align));
 }
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index 320e7afca5..c68128e289 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -4115,7 +4115,7 @@ get_is_linkonce_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec)
 {
   flagword flags, link_once_flags;
 
-  flags = bfd_get_section_flags (abfd, sec);
+  flags = bfd_section_flags (sec);
   link_once_flags = (flags & SEC_LINK_ONCE);
 
   /* Flags might not be set yet.  */
@@ -4980,7 +4980,7 @@ xtensa_mark_frags_for_org (void)
       segment_info_type *seginfo;
       fragS *fragP;
       flagword flags;
-      flags = bfd_get_section_flags (stdoutput, sec);
+      flags = bfd_section_flags (sec);
       if (flags & SEC_DEBUGGING)
 	continue;
       if (!(flags & SEC_ALLOC))
@@ -5025,7 +5025,7 @@ xtensa_find_unmarked_state_frags (void)
       segment_info_type *seginfo;
       fragS *fragP;
       flagword flags;
-      flags = bfd_get_section_flags (stdoutput, sec);
+      flags = bfd_section_flags (sec);
       if (flags & SEC_DEBUGGING)
 	continue;
       if (!(flags & SEC_ALLOC))
@@ -5073,7 +5073,7 @@ xtensa_find_unaligned_branch_targets (bfd *abfd ATTRIBUTE_UNUSED,
 				      asection *sec,
 				      void *unused ATTRIBUTE_UNUSED)
 {
-  flagword flags = bfd_get_section_flags (abfd, sec);
+  flagword flags = bfd_section_flags (sec);
   segment_info_type *seginfo = seg_info (sec);
   fragS *frag = seginfo->frchainP->frch_root;
 
@@ -5112,7 +5112,7 @@ xtensa_find_unaligned_loops (bfd *abfd ATTRIBUTE_UNUSED,
 			     asection *sec,
 			     void *unused ATTRIBUTE_UNUSED)
 {
-  flagword flags = bfd_get_section_flags (abfd, sec);
+  flagword flags = bfd_section_flags (sec);
   segment_info_type *seginfo = seg_info (sec);
   fragS *frag = seginfo->frchainP->frch_root;
   xtensa_isa isa = xtensa_default_isa;
@@ -8941,7 +8941,7 @@ xtensa_add_config_info (void)
   int sz;
 
   info_sec = subseg_new (".xtensa.info", 0);
-  bfd_set_section_flags (stdoutput, info_sec, SEC_HAS_CONTENTS | SEC_READONLY);
+  bfd_set_section_flags (info_sec, SEC_HAS_CONTENTS | SEC_READONLY);
 
   data = XNEWVEC (char, 100);
   sprintf (data, "USE_ABSOLUTE_LITERALS=%d\nABI=%d\n",
@@ -11682,8 +11682,8 @@ cache_literal_section (bfd_boolean use_abs_literals)
 
       elf_group_name (seg) = group_name;
 
-      bfd_set_section_flags (stdoutput, seg, flags);
-      bfd_set_section_alignment (stdoutput, seg, 2);
+      bfd_set_section_flags (seg, flags);
+      bfd_set_section_alignment (seg, 2);
     }
 
   *pcached = seg;
@@ -11814,7 +11814,7 @@ xtensa_create_property_segments (frag_predicate property_function,
 	    num_recs++;
 
 	  rec_size = num_recs * 8;
-	  bfd_set_section_size (stdoutput, sec, rec_size);
+	  bfd_set_section_size (sec, rec_size);
 
 	  if (num_recs)
 	    {
@@ -11911,7 +11911,7 @@ xtensa_create_xproperty_segments (frag_flags_fn flag_fn,
 	    num_recs++;
 
 	  rec_size = num_recs * (8 + 4);
-	  bfd_set_section_size (stdoutput, sec, rec_size);
+	  bfd_set_section_size (sec, rec_size);
 	  /* elf_section_data (sec)->this_hdr.sh_entsize = 12; */
 
 	  if (num_recs)
@@ -11955,7 +11955,7 @@ xtensa_create_xproperty_segments (frag_flags_fn flag_fn,
 static bfd_boolean
 exclude_section_from_property_tables (segT sec)
 {
-  flagword flags = bfd_get_section_flags (stdoutput, sec);
+  flagword flags = bfd_section_flags (sec);
 
   /* Sections that don't contribute to the memory footprint are excluded.  */
   if ((flags & SEC_DEBUGGING)
diff --git a/gas/config/tc-z8k.c b/gas/config/tc-z8k.c
index 9cb41a3cc9..68e1b761cd 100644
--- a/gas/config/tc-z8k.c
+++ b/gas/config/tc-z8k.c
@@ -1385,7 +1385,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
 valueT
 md_section_align (segT seg, valueT size)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
+  int align = bfd_section_alignment (seg);
   valueT mask = ((valueT) 1 << align) - 1;
 
   return (size + mask) & ~mask;
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index f30734d384..388123fd24 100644
--- a/gas/dw2gencfi.c
+++ b/gas/dw2gencfi.c
@@ -232,7 +232,7 @@ get_debugseg_name (segT seg, const char *base_name)
   if (!seg)
     return concat (base_name, NULL);
 
-  name = bfd_get_section_name (stdoutput, seg);
+  name = bfd_section_name (seg);
 
   if (name == NULL || *name == 0)
     return concat (base_name, NULL);
@@ -281,7 +281,7 @@ is_now_linkonce_segment (void)
   if (compact_eh)
     return now_seg;
 
-  if ((bfd_get_section_flags (stdoutput, now_seg)
+  if ((bfd_section_flags (now_seg)
        & (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
 	  | SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE
 	  | SEC_LINK_DUPLICATES_SAME_CONTENTS)) != 0)
@@ -306,16 +306,16 @@ make_debug_seg (segT cseg, char *name, int sflags)
   if (!cseg)
     flags = 0;
   else
-    flags = bfd_get_section_flags (stdoutput, cseg)
-      & (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
-	 | SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE
-	 | SEC_LINK_DUPLICATES_SAME_CONTENTS);
+    flags = (bfd_section_flags (cseg)
+	     & (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
+		| SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE
+		| SEC_LINK_DUPLICATES_SAME_CONTENTS));
 
   /* Add standard section flags.  */
   flags |= sflags;
 
   /* Apply possibly linked once flags to new generated segment, too.  */
-  if (!bfd_set_section_flags (stdoutput, r, flags))
+  if (!bfd_set_section_flags (r, flags))
     as_bad (_("bfd_set_section_flags: %s"),
 	    bfd_errmsg (bfd_get_error ()));
 
@@ -1359,7 +1359,7 @@ get_cfi_seg (segT cseg, const char *base, flagword flags, int align)
   else
     {
       cseg = subseg_new (base, 0);
-      bfd_set_section_flags (stdoutput, cseg, flags);
+      bfd_set_section_flags (cseg, flags);
     }
   record_alignment (cseg, align);
   return cseg;
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 5f804f1541..90b47b02fc 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -657,7 +657,7 @@ dwarf2_emit_label (symbolS *label)
     return;
   if (S_GET_SEGMENT (label) != now_seg)
     return;
-  if (!(bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE))
+  if (!(bfd_section_flags (now_seg) & SEC_CODE))
     return;
   if (files_in_use == 0 && debug_type != DEBUG_DWARF2)
     return;
@@ -1594,7 +1594,7 @@ process_entries (segT seg, struct line_entry *e)
 	 that all of the sub-sections are merged into a proper
 	 .debug_line section before a debugger sees them.  */
 
-      sec_name = bfd_get_section_name (stdoutput, seg);
+      sec_name = bfd_section_name (seg);
       if (strcmp (sec_name, ".text") != 0)
 	{
 	  name = concat (".debug_line", sec_name, (char *) NULL);
@@ -2238,7 +2238,7 @@ dwarf2_finish (void)
 
   /* Create and switch to the line number section.  */
   line_seg = subseg_new (".debug_line", 0);
-  bfd_set_section_flags (stdoutput, line_seg, SEC_READONLY | SEC_DEBUGGING);
+  bfd_set_section_flags (line_seg, SEC_READONLY | SEC_DEBUGGING);
 
   /* For each subsection, chain the debug entries together.  */
   for (s = all_segs; s; s = s->next)
@@ -2284,15 +2284,11 @@ dwarf2_finish (void)
       aranges_seg = subseg_new (".debug_aranges", 0);
       str_seg = subseg_new (".debug_str", 0);
 
-      bfd_set_section_flags (stdoutput, info_seg,
-			     SEC_READONLY | SEC_DEBUGGING);
-      bfd_set_section_flags (stdoutput, abbrev_seg,
-			     SEC_READONLY | SEC_DEBUGGING);
-      bfd_set_section_flags (stdoutput, aranges_seg,
-			     SEC_READONLY | SEC_DEBUGGING);
-      bfd_set_section_flags (stdoutput, str_seg,
-			     (SEC_READONLY | SEC_DEBUGGING
-			      | SEC_MERGE | SEC_STRINGS));
+      bfd_set_section_flags (info_seg, SEC_READONLY | SEC_DEBUGGING);
+      bfd_set_section_flags (abbrev_seg, SEC_READONLY | SEC_DEBUGGING);
+      bfd_set_section_flags (aranges_seg, SEC_READONLY | SEC_DEBUGGING);
+      bfd_set_section_flags (str_seg, (SEC_READONLY | SEC_DEBUGGING
+				       | SEC_MERGE | SEC_STRINGS));
       str_seg->entsize = 1;
 
       record_alignment (aranges_seg, ffs (2 * sizeof_address) - 1);
@@ -2302,8 +2298,7 @@ dwarf2_finish (void)
       else
 	{
 	  ranges_seg = subseg_new (".debug_ranges", 0);
-	  bfd_set_section_flags (stdoutput, ranges_seg,
-				 SEC_READONLY | SEC_DEBUGGING);
+	  bfd_set_section_flags (ranges_seg, SEC_READONLY | SEC_DEBUGGING);
 	  record_alignment (ranges_seg, ffs (2 * sizeof_address) - 1);
 	  out_debug_ranges (ranges_seg);
 	}
diff --git a/gas/ecoff.c b/gas/ecoff.c
index 09e8f0e6cf..bacc89fe3a 100644
--- a/gas/ecoff.c
+++ b/gas/ecoff.c
@@ -3700,8 +3700,7 @@ ecoff_build_lineno (const struct ecoff_debug_swap *backend,
       && first_proc_ptr != (proc_t *) NULL
       && local_first_lineno != (lineno_list_t *) NULL
       && ((S_GET_VALUE (first_proc_ptr->sym->as_sym)
-	   + bfd_get_section_vma (stdoutput,
-				  S_GET_SEGMENT (first_proc_ptr->sym->as_sym)))
+	   + bfd_section_vma (S_GET_SEGMENT (first_proc_ptr->sym->as_sym)))
 	  != 0))
     {
       first.file = local_first_lineno->file;
@@ -3981,8 +3980,7 @@ ecoff_build_symbols (const struct ecoff_debug_swap *backend,
 		      else
 			sym_ptr->ecoff_sym.asym.value =
 			  (S_GET_VALUE (as_sym)
-			   + bfd_get_section_vma (stdoutput,
-						  S_GET_SEGMENT (as_sym))
+			   + bfd_section_vma (S_GET_SEGMENT (as_sym))
 			   + sym_ptr->addend);
 
 		      sym_ptr->ecoff_sym.weakext = S_IS_WEAK (as_sym);
@@ -4310,8 +4308,7 @@ ecoff_build_procs (const struct ecoff_debug_swap *backend,
 
 		  adr_sym = proc_ptr->sym->as_sym;
 		  adr = (S_GET_VALUE (adr_sym)
-			 + bfd_get_section_vma (stdoutput,
-						S_GET_SEGMENT (adr_sym)));
+			 + bfd_section_vma (S_GET_SEGMENT (adr_sym)));
 		  if (first)
 		    {
 		      /* This code used to force the adr of the very
diff --git a/gas/read.c b/gas/read.c
index 58d79b2787..e53dd0232d 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -742,7 +742,7 @@ assemble_one (char *line)
 static bfd_boolean
 in_bss (void)
 {
-  flagword flags = bfd_get_section_flags (stdoutput, now_seg);
+  flagword flags = bfd_section_flags (now_seg);
 
   return (flags & SEC_ALLOC) && !(flags & (SEC_LOAD | SEC_HAS_CONTENTS));
 }
@@ -2419,7 +2419,7 @@ s_linkonce (int ignore ATTRIBUTE_UNUSED)
     if ((bfd_applicable_section_flags (stdoutput) & SEC_LINK_ONCE) == 0)
       as_warn (_(".linkonce is not supported for this object file format"));
 
-    flags = bfd_get_section_flags (stdoutput, now_seg);
+    flags = bfd_section_flags (now_seg);
     flags |= SEC_LINK_ONCE;
     switch (type)
       {
@@ -2438,7 +2438,7 @@ s_linkonce (int ignore ATTRIBUTE_UNUSED)
 	flags |= SEC_LINK_DUPLICATES_SAME_CONTENTS;
 	break;
       }
-    if (!bfd_set_section_flags (stdoutput, now_seg, flags))
+    if (!bfd_set_section_flags (now_seg, flags))
       as_bad (_("bfd_set_section_flags: %s"),
 	      bfd_errmsg (bfd_get_error ()));
   }
@@ -2464,7 +2464,7 @@ bss_alloc (symbolS *symbolP, addressT size, unsigned int align)
 	{
 	  bss_seg = subseg_new (".sbss", 1);
 	  seg_info (bss_seg)->bss = 1;
-	  if (!bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC))
+	  if (!bfd_set_section_flags (bss_seg, SEC_ALLOC))
 	    as_warn (_("error setting flags for \".sbss\": %s"),
 		     bfd_errmsg (bfd_get_error ()));
 	}
@@ -2957,9 +2957,9 @@ s_mri_sect (char *type ATTRIBUTE_UNUSED)
 	  flags = SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_READONLY | SEC_ROM;
 	if (flags != SEC_NO_FLAGS)
 	  {
-	    if (!bfd_set_section_flags (stdoutput, seg, flags))
+	    if (!bfd_set_section_flags (seg, flags))
 	      as_warn (_("error setting flags for \"%s\": %s"),
-		       bfd_section_name (stdoutput, seg),
+		       bfd_section_name (seg),
 		       bfd_errmsg (bfd_get_error ()));
 	  }
       }
diff --git a/gas/stabs.c b/gas/stabs.c
index 64811c1bb1..0217c422ec 100644
--- a/gas/stabs.c
+++ b/gas/stabs.c
@@ -109,7 +109,7 @@ get_stab_string_offset (const char *string, const char *stabstr_secname,
       p = frag_more (1);
       *p = 0;
       retval = seg_info (seg)->stabu.stab_string_size = 1;
-      bfd_set_section_flags (stdoutput, seg, SEC_READONLY | SEC_DEBUGGING);
+      bfd_set_section_flags (seg, SEC_READONLY | SEC_DEBUGGING);
     }
 
   if (length > 0)
@@ -336,7 +336,7 @@ s_stab_generic (int what,
 
       if (! seg_info (seg)->hadone)
 	{
-	  bfd_set_section_flags (stdoutput, seg,
+	  bfd_set_section_flags (seg,
 				 SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
 #ifdef INIT_STAB_SECTION
 	  INIT_STAB_SECTION (seg);
diff --git a/gas/subsegs.c b/gas/subsegs.c
index a66af2d3f6..d438a10c69 100644
--- a/gas/subsegs.c
+++ b/gas/subsegs.c
@@ -65,7 +65,7 @@ subseg_change (segT seg, int subseg)
     {
       seginfo = XCNEW (segment_info_type);
       seginfo->bfd_section = seg;
-      bfd_set_section_userdata (stdoutput, seg, seginfo);
+      bfd_set_section_userdata (seg, seginfo);
     }
 }
 \f
@@ -146,9 +146,7 @@ subseg_get (const char *segname, int force_new)
 {
   segT secptr;
   segment_info_type *seginfo;
-  const char *now_seg_name = (now_seg
-			      ? bfd_get_section_name (stdoutput, now_seg)
-			      : 0);
+  const char *now_seg_name = now_seg ? bfd_section_name (now_seg) : 0;
 
   if (!force_new
       && now_seg_name
@@ -167,7 +165,7 @@ subseg_get (const char *segname, int force_new)
       secptr->output_section = secptr;
       seginfo = XCNEW (segment_info_type);
       seginfo->bfd_section = secptr;
-      bfd_set_section_userdata (stdoutput, secptr, seginfo);
+      bfd_set_section_userdata (secptr, seginfo);
     }
   return secptr;
 }
@@ -260,7 +258,7 @@ section_symbol (segT sec)
 int
 subseg_text_p (segT sec)
 {
-  return (bfd_get_section_flags (stdoutput, sec) & SEC_CODE) != 0;
+  return (bfd_section_flags (sec) & SEC_CODE) != 0;
 }
 
 /* Return non zero if SEC has at least one byte of data.  It is
diff --git a/gas/subsegs.h b/gas/subsegs.h
index d853f453ae..2a956026fe 100644
--- a/gas/subsegs.h
+++ b/gas/subsegs.h
@@ -112,7 +112,7 @@ typedef struct segment_info_struct {
 
 
 #define seg_info(sec) \
-  ((segment_info_type *) bfd_get_section_userdata (stdoutput, sec))
+  ((segment_info_type *) bfd_section_userdata (sec))
 
 extern symbolS *section_symbol (segT);
 
diff --git a/gas/write.c b/gas/write.c
index e9a17e4468..9b5ae6ff32 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -359,8 +359,8 @@ record_alignment (/* Segment to which alignment pertains.  */
   if (seg == absolute_section)
     return;
 
-  if (align > bfd_get_section_alignment (stdoutput, seg))
-    bfd_set_section_alignment (stdoutput, seg, align);
+  if (align > bfd_section_alignment (seg))
+    bfd_set_section_alignment (seg, align);
 }
 
 int
@@ -369,7 +369,7 @@ get_recorded_alignment (segT seg)
   if (seg == absolute_section)
     return 0;
 
-  return bfd_get_section_alignment (stdoutput, seg);
+  return bfd_section_alignment (seg);
 }
 
 /* Reset the section indices after removing the gas created sections.  */
@@ -555,7 +555,7 @@ relax_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *xxx)
 }
 
 static void
-size_seg (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
+size_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *xxx ATTRIBUTE_UNUSED)
 {
   flagword flags;
   fragS *fragp;
@@ -580,8 +580,8 @@ size_seg (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
   else
     size = 0;
 
-  flags = bfd_get_section_flags (abfd, sec);
-  if (size == 0 && bfd_get_section_size (sec) != 0 &&
+  flags = bfd_section_flags (sec);
+  if (size == 0 && bfd_section_size (sec) != 0 &&
     (flags & SEC_HAS_CONTENTS) != 0)
     return;
 
@@ -589,7 +589,7 @@ size_seg (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     flags |= SEC_HAS_CONTENTS;
 
   flags &= ~SEC_RELOC;
-  x = bfd_set_section_flags (abfd, sec, flags);
+  x = bfd_set_section_flags (sec, flags);
   gas_assert (x);
 
   /* If permitted, allow the backend to pad out the section
@@ -598,7 +598,7 @@ size_seg (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
     newsize = size;
   else
     newsize = md_section_align (sec, size);
-  x = bfd_set_section_size (abfd, sec, newsize);
+  x = bfd_set_section_size (sec, newsize);
   gas_assert (x);
 
   /* If the size had to be rounded up, add some padding in the last
@@ -1215,7 +1215,8 @@ get_frag_for_reloc (fragS *last_frag,
 }
 
 static void
-write_relocs (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
+write_relocs (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
+	      void *xxx ATTRIBUTE_UNUSED)
 {
   segment_info_type *seginfo = seg_info (sec);
   unsigned int n;
@@ -1345,9 +1346,9 @@ write_relocs (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
 
   if (n)
     {
-      flagword flags = bfd_get_section_flags (abfd, sec);
+      flagword flags = bfd_section_flags (sec);
       flags |= SEC_RELOC;
-      bfd_set_section_flags (abfd, sec, flags);
+      bfd_set_section_flags (sec, flags);
       bfd_set_reloc (stdoutput, sec, relocs, n);
     }
 
@@ -1433,7 +1434,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
   char *header;
   struct z_stream_s *strm;
   int x;
-  flagword flags = bfd_get_section_flags (abfd, sec);
+  flagword flags = bfd_section_flags (sec);
   unsigned int header_size, compression_header_size;
 
   if (seginfo == NULL
@@ -1441,7 +1442,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
       || (flags & (SEC_ALLOC | SEC_HAS_CONTENTS)) == SEC_ALLOC)
     return;
 
-  section_name = bfd_get_section_name (stdoutput, sec);
+  section_name = bfd_section_name (sec);
   if (strncmp (section_name, ".debug_", 7) != 0)
     return;
 
@@ -1565,12 +1566,12 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
 
   /* Update the section size and its name.  */
   bfd_update_compression_header (abfd, (bfd_byte *) header, sec);
-  x = bfd_set_section_size (abfd, sec, compressed_size);
+  x = bfd_set_section_size (sec, compressed_size);
   gas_assert (x);
   if (!compression_header_size)
     {
       compressed_name = concat (".z", section_name + 1, (char *) NULL);
-      bfd_section_name (stdoutput, sec) = compressed_name;
+      bfd_rename_section (sec, compressed_name);
     }
 }
 
@@ -1599,7 +1600,7 @@ write_contents (bfd *abfd ATTRIBUTE_UNUSED,
 
   /* Write out the frags.  */
   if (seginfo == NULL
-      || !(bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS))
+      || !(bfd_section_flags (sec) & SEC_HAS_CONTENTS))
     return;
 
   for (f = seginfo->frchainP->frch_root;
@@ -1815,7 +1816,7 @@ subsegs_finish_section (asection *s)
 	do_not_pad_sections_to_alignment = 1;
 
       alignment = SUB_SEGMENT_ALIGN (now_seg, frchainP);
-      if ((bfd_get_section_flags (now_seg->owner, now_seg) & SEC_MERGE)
+      if ((bfd_section_flags (now_seg) & SEC_MERGE)
 	  && now_seg->entsize)
 	{
 	  unsigned int entsize = now_seg->entsize;
@@ -1875,7 +1876,7 @@ create_obj_attrs_section (void)
   s = subseg_new (name, 0);
   elf_section_type (s)
     = get_elf_backend_data (stdoutput)->obj_attrs_section_type;
-  bfd_set_section_flags (stdoutput, s, SEC_READONLY | SEC_DATA);
+  bfd_set_section_flags (s, SEC_READONLY | SEC_DATA);
   frag_now_fix ();
   p = frag_more (size);
   bfd_elf_set_obj_attr_contents (stdoutput, (bfd_byte *)p, size);
@@ -1959,9 +1960,8 @@ maybe_generate_build_notes (void)
   /* Create a GNU Build Attribute section.  */
   sec = subseg_new (GNU_BUILD_ATTRS_SECTION_NAME, FALSE);
   elf_section_type (sec) = SHT_NOTE;
-  bfd_set_section_flags (stdoutput, sec,
-			 SEC_READONLY | SEC_HAS_CONTENTS | SEC_DATA);
-  bfd_set_section_alignment (stdoutput, sec, 2);
+  bfd_set_section_flags (sec, SEC_READONLY | SEC_HAS_CONTENTS | SEC_DATA);
+  bfd_set_section_alignment (sec, 2);
 
   /* Work out the size of the notes that we will create,
      and the relocation we should use.  */
@@ -2041,7 +2041,7 @@ maybe_generate_build_notes (void)
 
 	/* ...and another one to install the end address.  */
 	create_note_reloc (sec, sym, total_size, desc2_offset, desc_reloc,
-			   bfd_get_section_size (bsym->section),
+			   bfd_section_size (bsym->section),
 			   note);
 
 	total_size += note_size;
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 47549ad0b9..7057e37e8d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,26 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* aarch64-linux-tdep.c, * arm-tdep.c, * auto-load.c,
+	* coff-pe-read.c, * coffread.c, * corelow.c, * dbxread.c,
+	* dicos-tdep.c, * dwarf2-frame.c, * dwarf2read.c, * elfread.c,
+	* exec.c, * fbsd-tdep.c, * gcore.c, * gdb_bfd.c, * gdb_bfd.h,
+	* hppa-tdep.c, * i386-cygwin-tdep.c, * i386-fbsd-tdep.c,
+	* i386-linux-tdep.c, * jit.c, * linux-tdep.c, * machoread.c,
+	* maint.c, * mdebugread.c, * minidebug.c, * mips-linux-tdep.c,
+	* mips-sde-tdep.c, * mips-tdep.c, * mipsread.c, * nto-tdep.c,
+	* objfiles.c, * objfiles.h, * osabi.c, * ppc-linux-tdep.c,
+	* ppc64-tdep.c, * record-btrace.c, * record-full.c, * remote.c,
+	* rs6000-aix-tdep.c, * rs6000-tdep.c, * s390-linux-tdep.c,
+	* s390-tdep.c, * solib-aix.c, * solib-dsbt.c, * solib-frv.c,
+	* solib-spu.c, * solib-svr4.c, * solib-target.c,
+	* spu-linux-nat.c, * spu-tdep.c, * symfile-mem.c, * symfile.c,
+	* symmisc.c, * symtab.c, * target.c, * windows-nat.c,
+	* xcoffread.c, * cli/cli-dump.c, * compile/compile-object-load.c,
+	* mi/mi-interp.c: Update throughout for bfd section macro and
+	function changes.
+	* gcore (gcore_create_callback): Use bfd_set_section_lma.
+	* spu-tdep.c (spu_overlay_new_objfile): Likewise.
+
 2019-09-18  Tom Tromey  <tom@tromey.com>
 
 	* NEWS: Add entry.
diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
index 831e62fb86..a375c3b137 100644
--- a/gdb/aarch64-linux-tdep.c
+++ b/gdb/aarch64-linux-tdep.c
@@ -452,7 +452,7 @@ aarch64_linux_core_read_vq (struct gdbarch *gdbarch, bfd *abfd)
       return 0;
     }
 
-  size_t size = bfd_section_size (abfd, sve_section);
+  size_t size = bfd_section_size (sve_section);
 
   /* Check extended state size.  */
   if (size < SVE_HEADER_SIZE)
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 5c494c8ed2..e17550fed7 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -2009,12 +2009,11 @@ arm_obj_section_from_vma (struct objfile *objfile, bfd_vma vma)
   struct obj_section *osect;
 
   ALL_OBJFILE_OSECTIONS (objfile, osect)
-    if (bfd_get_section_flags (objfile->obfd,
-			       osect->the_bfd_section) & SEC_ALLOC)
+    if (bfd_section_flags (osect->the_bfd_section) & SEC_ALLOC)
       {
 	bfd_vma start, size;
-	start = bfd_get_section_vma (objfile->obfd, osect->the_bfd_section);
-	size = bfd_get_section_size (osect->the_bfd_section);
+	start = bfd_section_vma (osect->the_bfd_section);
+	size = bfd_section_size (osect->the_bfd_section);
 
 	if (start <= vma && vma < start + size)
 	  return osect;
@@ -2054,8 +2053,8 @@ arm_exidx_new_objfile (struct objfile *objfile)
   gdb::byte_vector exidx_data;
   if (exidx)
     {
-      exidx_vma = bfd_section_vma (objfile->obfd, exidx);
-      exidx_data.resize (bfd_get_section_size (exidx));
+      exidx_vma = bfd_section_vma (exidx);
+      exidx_data.resize (bfd_section_size (exidx));
 
       if (!bfd_get_section_contents (objfile->obfd, exidx,
 				     exidx_data.data (), 0,
@@ -2067,8 +2066,8 @@ arm_exidx_new_objfile (struct objfile *objfile)
   gdb::byte_vector extab_data;
   if (extab)
     {
-      extab_vma = bfd_section_vma (objfile->obfd, extab);
-      extab_data.resize (bfd_get_section_size (extab));
+      extab_vma = bfd_section_vma (extab);
+      extab_data.resize (bfd_section_size (extab));
 
       if (!bfd_get_section_contents (objfile->obfd, extab,
 				     extab_data.data (), 0,
@@ -2100,7 +2099,7 @@ arm_exidx_new_objfile (struct objfile *objfile)
       sec = arm_obj_section_from_vma (objfile, idx);
       if (sec == NULL)
 	continue;
-      idx -= bfd_get_section_vma (objfile->obfd, sec->the_bfd_section);
+      idx -= bfd_section_vma (sec->the_bfd_section);
 
       /* Determine address of exception table entry.  */
       if (val == 1)
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 9798ab1a06..136d53ffe1 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -1116,7 +1116,7 @@ auto_load_section_scripts (struct objfile *objfile, const char *section_name)
 
   scripts_sect = bfd_get_section_by_name (abfd, section_name);
   if (scripts_sect == NULL
-      || (bfd_get_section_flags (abfd, scripts_sect) & SEC_HAS_CONTENTS) == 0)
+      || (bfd_section_flags (scripts_sect) & SEC_HAS_CONTENTS) == 0)
     return;
 
   if (!bfd_get_full_section_contents (abfd, scripts_sect, &data))
@@ -1128,7 +1128,7 @@ auto_load_section_scripts (struct objfile *objfile, const char *section_name)
 
       char *p = (char *) data;
       source_section_scripts (objfile, section_name, p,
-			      p + bfd_get_section_size (scripts_sect));
+			      p + bfd_section_size (scripts_sect));
     }
 }
 
diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c
index 143d02ab88..74e0057d4a 100644
--- a/gdb/cli/cli-dump.c
+++ b/gdb/cli/cli-dump.c
@@ -163,12 +163,10 @@ dump_bfd_file (const char *filename, const char *mode,
 
   gdb_bfd_ref_ptr obfd (bfd_openw_or_error (filename, target, mode));
   osection = bfd_make_section_anyway (obfd.get (), ".newsec");
-  bfd_set_section_size (obfd.get (), osection, len);
-  bfd_set_section_vma (obfd.get (), osection, vaddr);
-  bfd_set_section_alignment (obfd.get (), osection, 0);
-  bfd_set_section_flags (obfd.get (), osection, (SEC_HAS_CONTENTS
-						 | SEC_ALLOC
-						 | SEC_LOAD));
+  bfd_set_section_size (osection, len);
+  bfd_set_section_vma (osection, vaddr);
+  bfd_set_section_alignment (osection, 0);
+  bfd_set_section_flags (osection, (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD));
   osection->entsize = 0;
   if (!bfd_set_section_contents (obfd.get (), osection, buf, 0, len))
     warning (_("writing dump file '%s' (%s)"), filename,
@@ -403,15 +401,15 @@ static void
 restore_section_callback (bfd *ibfd, asection *isec, void *args)
 {
   struct callback_data *data = (struct callback_data *) args;
-  bfd_vma sec_start  = bfd_section_vma (ibfd, isec);
-  bfd_size_type size = bfd_section_size (ibfd, isec);
+  bfd_vma sec_start  = bfd_section_vma (isec);
+  bfd_size_type size = bfd_section_size (isec);
   bfd_vma sec_end    = sec_start + size;
   bfd_size_type sec_offset = 0;
   bfd_size_type sec_load_count = size;
   int ret;
 
   /* Ignore non-loadable sections, eg. from elf files.  */
-  if (!(bfd_get_section_flags (ibfd, isec) & SEC_LOAD))
+  if (!(bfd_section_flags (isec) & SEC_LOAD))
     return;
 
   /* Does the section overlap with the desired restore range? */
@@ -420,7 +418,7 @@ restore_section_callback (bfd *ibfd, asection *isec, void *args)
     {
       /* No, no useable data in this section.  */
       printf_filtered (_("skipping section %s...\n"), 
-		       bfd_section_name (ibfd, isec));
+		       bfd_section_name (isec));
       return;
     }
 
@@ -441,7 +439,7 @@ restore_section_callback (bfd *ibfd, asection *isec, void *args)
 	   bfd_errmsg (bfd_get_error ()));
 
   printf_filtered ("Restoring section %s (0x%lx to 0x%lx)",
-		   bfd_section_name (ibfd, isec), 
+		   bfd_section_name (isec), 
 		   (unsigned long) sec_start, 
 		   (unsigned long) sec_end);
 
diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c
index 9f7384bc14..fe74d26cab 100644
--- a/gdb/coff-pe-read.c
+++ b/gdb/coff-pe-read.c
@@ -136,7 +136,7 @@ get_section_vmas (bfd *abfd, asection *sectp, void *context)
          bfd_get_section_vma() within memory.  Store the offset.  */
 
       sections[sectix].vma_offset
-	= bfd_get_section_vma (abfd, sectp) - sections[sectix].rva_start;
+	= bfd_section_vma (sectp) - sections[sectix].rva_start;
     }
 }
 \f
diff --git a/gdb/coffread.c b/gdb/coffread.c
index a70461271e..c44b69069e 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -222,15 +222,15 @@ coff_locate_sections (bfd *abfd, asection *sectp, void *csip)
   const char *name;
 
   csi = (struct coff_symfile_info *) csip;
-  name = bfd_get_section_name (abfd, sectp);
+  name = bfd_section_name (sectp);
   if (strcmp (name, ".text") == 0)
     {
-      csi->textaddr = bfd_section_vma (abfd, sectp);
-      csi->textsize += bfd_section_size (abfd, sectp);
+      csi->textaddr = bfd_section_vma (sectp);
+      csi->textsize += bfd_section_size (sectp);
     }
   else if (startswith (name, ".text"))
     {
-      csi->textsize += bfd_section_size (abfd, sectp);
+      csi->textsize += bfd_section_size (sectp);
     }
   else if (strcmp (name, ".stabstr") == 0)
     {
@@ -307,7 +307,7 @@ cs_section_address (struct coff_symbol *cs, bfd *abfd)
   args.resultp = &sect;
   bfd_map_over_sections (abfd, find_targ_sec, &args);
   if (sect != NULL)
-    addr = bfd_get_section_vma (abfd, sect);
+    addr = bfd_section_vma (sect);
   return addr;
 }
 
@@ -692,7 +692,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
          bfd_get_section_contents?  */
       bfd_seek (abfd, abfd->where, 0);
 
-      stabstrsize = bfd_section_size (abfd, info->stabstrsect);
+      stabstrsize = bfd_section_size (info->stabstrsect);
 
       coffstab_build_psymtabs (objfile,
 			       info->textaddr, info->textsize,
diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c
index 3a765a345b..a30c557303 100644
--- a/gdb/compile/compile-object-load.c
+++ b/gdb/compile/compile-object-load.c
@@ -99,30 +99,30 @@ setup_sections (bfd *abfd, asection *sect, void *data_voidp)
       if (sect->output_section == NULL)
 	sect->output_section = sect;
 
-      if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+      if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
 	return;
 
       /* Make the memory always readable.  */
       prot = GDB_MMAP_PROT_READ;
-      if ((bfd_get_section_flags (abfd, sect) & SEC_READONLY) == 0)
+      if ((bfd_section_flags (sect) & SEC_READONLY) == 0)
 	prot |= GDB_MMAP_PROT_WRITE;
-      if ((bfd_get_section_flags (abfd, sect) & SEC_CODE) != 0)
+      if ((bfd_section_flags (sect) & SEC_CODE) != 0)
 	prot |= GDB_MMAP_PROT_EXEC;
 
       if (compile_debug)
 	fprintf_unfiltered (gdb_stdlog,
 			    "module \"%s\" section \"%s\" size %s prot %u\n",
 			    bfd_get_filename (abfd),
-			    bfd_get_section_name (abfd, sect),
+			    bfd_section_name (sect),
 			    paddress (target_gdbarch (),
-				      bfd_get_section_size (sect)),
+				      bfd_section_size (sect)),
 			    prot);
     }
   else
     prot = -1;
 
   if (sect == NULL
-      || (data->last_prot != prot && bfd_get_section_size (sect) != 0))
+      || (data->last_prot != prot && bfd_section_size (sect) != 0))
     {
       CORE_ADDR addr;
       asection *sect_iter;
@@ -150,9 +150,8 @@ setup_sections (bfd *abfd, asection *sect, void *data_voidp)
 
       for (sect_iter = data->last_section_first; sect_iter != sect;
 	   sect_iter = sect_iter->next)
-	if ((bfd_get_section_flags (abfd, sect_iter) & SEC_ALLOC) != 0)
-	  bfd_set_section_vma (abfd, sect_iter,
-			       addr + bfd_get_section_vma (abfd, sect_iter));
+	if ((bfd_section_flags (sect_iter) & SEC_ALLOC) != 0)
+	  bfd_set_section_vma (sect_iter, addr + bfd_section_vma (sect_iter));
 
       data->last_size = 0;
       data->last_section_first = sect;
@@ -163,14 +162,14 @@ setup_sections (bfd *abfd, asection *sect, void *data_voidp)
   if (sect == NULL)
     return;
 
-  alignment = ((CORE_ADDR) 1) << bfd_get_section_alignment (abfd, sect);
+  alignment = ((CORE_ADDR) 1) << bfd_section_alignment (sect);
   data->last_max_alignment = std::max (data->last_max_alignment, alignment);
 
   data->last_size = (data->last_size + alignment - 1) & -alignment;
 
-  bfd_set_section_vma (abfd, sect, data->last_size);
+  bfd_set_section_vma (sect, data->last_size);
 
-  data->last_size += bfd_get_section_size (sect);
+  data->last_size += bfd_section_size (sect);
   data->last_size = (data->last_size + alignment - 1) & -alignment;
 }
 
@@ -197,7 +196,7 @@ link_callbacks_warning (struct bfd_link_info *link_info, const char *xwarning,
 			bfd_vma address)
 {
   warning (_("Compiled module \"%s\" section \"%s\": warning: %s"),
-	   bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
+	   bfd_get_filename (abfd), bfd_section_name (section),
 	   xwarning);
 }
 
@@ -210,7 +209,7 @@ link_callbacks_undefined_symbol (struct bfd_link_info *link_info,
 {
   warning (_("Cannot resolve relocation to \"%s\" "
 	     "from compiled module \"%s\" section \"%s\"."),
-	   name, bfd_get_filename (abfd), bfd_get_section_name (abfd, section));
+	   name, bfd_get_filename (abfd), bfd_section_name (section));
 }
 
 /* Helper for link_callbacks callbacks vector.  */
@@ -233,7 +232,7 @@ link_callbacks_reloc_dangerous (struct bfd_link_info *link_info,
 {
   warning (_("Compiled module \"%s\" section \"%s\": dangerous "
 	     "relocation: %s\n"),
-	   bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
+	   bfd_get_filename (abfd), bfd_section_name (section),
 	   message);
 }
 
@@ -246,7 +245,7 @@ link_callbacks_unattached_reloc (struct bfd_link_info *link_info,
 {
   warning (_("Compiled module \"%s\" section \"%s\": unattached "
 	     "relocation: %s\n"),
-	   bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
+	   bfd_get_filename (abfd), bfd_section_name (section),
 	   name);
 }
 
@@ -324,11 +323,11 @@ copy_sections (bfd *abfd, asection *sect, void *data)
   struct bfd_link_order link_order;
   CORE_ADDR inferior_addr;
 
-  if ((bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD))
+  if ((bfd_section_flags (sect) & (SEC_ALLOC | SEC_LOAD))
       != (SEC_ALLOC | SEC_LOAD))
     return;
 
-  if (bfd_get_section_size (sect) == 0)
+  if (bfd_section_size (sect) == 0)
     return;
 
   /* Mostly a copy of bfd_simple_get_relocated_section_contents which GDB
@@ -349,11 +348,11 @@ copy_sections (bfd *abfd, asection *sect, void *data)
   link_order.next = NULL;
   link_order.type = bfd_indirect_link_order;
   link_order.offset = 0;
-  link_order.size = bfd_get_section_size (sect);
+  link_order.size = bfd_section_size (sect);
   link_order.u.indirect.section = sect;
 
   gdb::unique_xmalloc_ptr<gdb_byte> sect_data
-    ((bfd_byte *) xmalloc (bfd_get_section_size (sect)));
+    ((bfd_byte *) xmalloc (bfd_section_size (sect)));
 
   sect_data_got = bfd_get_relocated_section_contents (abfd, &link_info,
 						      &link_order,
@@ -362,19 +361,19 @@ copy_sections (bfd *abfd, asection *sect, void *data)
 
   if (sect_data_got == NULL)
     error (_("Cannot map compiled module \"%s\" section \"%s\": %s"),
-	   bfd_get_filename (abfd), bfd_get_section_name (abfd, sect),
+	   bfd_get_filename (abfd), bfd_section_name (sect),
 	   bfd_errmsg (bfd_get_error ()));
   gdb_assert (sect_data_got == sect_data.get ());
 
-  inferior_addr = bfd_get_section_vma (abfd, sect);
+  inferior_addr = bfd_section_vma (sect);
   if (0 != target_write_memory (inferior_addr, sect_data.get (),
-				bfd_get_section_size (sect)))
+				bfd_section_size (sect)))
     error (_("Cannot write compiled module \"%s\" section \"%s\" "
 	     "to inferior memory range %s-%s."),
-	   bfd_get_filename (abfd), bfd_get_section_name (abfd, sect),
+	   bfd_get_filename (abfd), bfd_section_name (sect),
 	   paddress (target_gdbarch (), inferior_addr),
 	   paddress (target_gdbarch (),
-		     inferior_addr + bfd_get_section_size (sect)));
+		     inferior_addr + bfd_section_size (sect)));
 }
 
 /* Fetch the type of COMPILE_I_EXPR_PTR_TYPE and COMPILE_I_EXPR_VAL
diff --git a/gdb/corelow.c b/gdb/corelow.c
index 5e9634e9d7..b30b91b522 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -289,10 +289,10 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
   bool fake_pid_p = false;
   struct inferior *inf;
 
-  if (!startswith (bfd_section_name (abfd, asect), ".reg/"))
+  if (!startswith (bfd_section_name (asect), ".reg/"))
     return;
 
-  core_tid = atoi (bfd_section_name (abfd, asect) + 5);
+  core_tid = atoi (bfd_section_name (asect) + 5);
 
   pid = bfd_core_file_pid (core_bfd);
   if (pid == 0)
@@ -584,7 +584,7 @@ core_target::get_core_register_section (struct regcache *regcache,
       return;
     }
 
-  size = bfd_section_size (core_bfd, section);
+  size = bfd_section_size (section);
   if (size < section_min_size)
     {
       warning (_("Section `%s' in core file too small."),
@@ -614,8 +614,7 @@ core_target::get_core_register_section (struct regcache *regcache,
 
   gdb_assert (m_core_vec != nullptr);
   m_core_vec->core_read_registers (regcache, contents, size, which,
-				   ((CORE_ADDR)
-				    bfd_section_vma (core_bfd, section)));
+				   (CORE_ADDR) bfd_section_vma (section));
 }
 
 /* Data passed to gdbarch_iterate_over_regset_sections's callback.  */
@@ -727,7 +726,7 @@ add_to_spuid_list (bfd *abfd, asection *asect, void *list_p)
     = bfd_big_endian (abfd) ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
   int fd, pos = 0;
 
-  sscanf (bfd_section_name (abfd, asect), "SPU/%d/regs%n", &fd, &pos);
+  sscanf (bfd_section_name (asect), "SPU/%d/regs%n", &fd, &pos);
   if (pos == 0)
     return;
 
@@ -768,7 +767,7 @@ core_target::xfer_partial (enum target_object object, const char *annex,
 	  if (section == NULL)
 	    return TARGET_XFER_E_IO;
 
-	  size = bfd_section_size (core_bfd, section);
+	  size = bfd_section_size (section);
 	  if (offset >= size)
 	    return TARGET_XFER_EOF;
 	  size -= offset;
@@ -803,7 +802,7 @@ core_target::xfer_partial (enum target_object object, const char *annex,
 	  if (section == NULL)
 	    return TARGET_XFER_E_IO;
 
-	  size = bfd_section_size (core_bfd, section);
+	  size = bfd_section_size (section);
 	  if (offset >= size)
 	    return TARGET_XFER_EOF;
 	  size -= offset;
@@ -883,7 +882,7 @@ core_target::xfer_partial (enum target_object object, const char *annex,
 	  if (section == NULL)
 	    return TARGET_XFER_E_IO;
 
-	  size = bfd_section_size (core_bfd, section);
+	  size = bfd_section_size (section);
 	  if (offset >= size)
 	    return TARGET_XFER_EOF;
 	  size -= offset;
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index dc0b2c727b..564c5d3a41 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -207,10 +207,10 @@ find_text_range (bfd * sym_bfd, struct objfile *objfile)
   CORE_ADDR end = 0;
 
   for (sec = sym_bfd->sections; sec; sec = sec->next)
-    if (bfd_get_section_flags (sym_bfd, sec) & SEC_CODE)
+    if (bfd_section_flags (sec) & SEC_CODE)
       {
-	CORE_ADDR sec_start = bfd_section_vma (sym_bfd, sec);
-	CORE_ADDR sec_end = sec_start + bfd_section_size (sym_bfd, sec);
+	CORE_ADDR sec_start = bfd_section_vma (sec);
+	CORE_ADDR sec_end = sec_start + bfd_section_size (sec);
 
 	if (found_any)
 	  {
@@ -607,8 +607,8 @@ dbx_symfile_init (struct objfile *objfile)
   text_sect = bfd_get_section_by_name (sym_bfd, ".text");
   if (!text_sect)
     error (_("Can't find .text section in symbol file"));
-  DBX_TEXT_ADDR (objfile) = bfd_section_vma (sym_bfd, text_sect);
-  DBX_TEXT_SIZE (objfile) = bfd_section_size (sym_bfd, text_sect);
+  DBX_TEXT_ADDR (objfile) = bfd_section_vma (text_sect);
+  DBX_TEXT_SIZE (objfile) = bfd_section_size (text_sect);
 
   DBX_SYMBOL_SIZE (objfile) = obj_symbol_entry_size (sym_bfd);
   DBX_SYMCOUNT (objfile) = bfd_get_symcount (sym_bfd);
@@ -781,7 +781,7 @@ fill_symbuf (bfd *sym_bfd)
 
 	  if (bfd_seek (sym_bfd, filepos, SEEK_SET) != 0)
 	    perror_with_name (bfd_get_filename (sym_bfd));
-	  symbuf_left = bfd_section_size (sym_bfd, (*symbuf_sections)[sect_idx]);
+	  symbuf_left = bfd_section_size ((*symbuf_sections)[sect_idx]);
 	  symbol_table_offset = filepos - symbuf_read;
 	  ++sect_idx;
 	}
@@ -2980,7 +2980,7 @@ coffstab_build_psymtabs (struct objfile *objfile,
     = make_scoped_restore (&symbuf_sections);
   if (stabsects.size () == 1)
     {
-      stabsize = bfd_section_size (sym_bfd, stabsects[0]);
+      stabsize = bfd_section_size (stabsects[0]);
       DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile);
       DBX_SYMTAB_OFFSET (objfile) = stabsects[0]->filepos;
     }
@@ -2989,7 +2989,7 @@ coffstab_build_psymtabs (struct objfile *objfile,
       DBX_SYMCOUNT (objfile) = 0;
       for (asection *section : stabsects)
 	{
-	  stabsize = bfd_section_size (sym_bfd, section);
+	  stabsize = bfd_section_size (section);
 	  DBX_SYMCOUNT (objfile) += stabsize / DBX_SYMBOL_SIZE (objfile);
 	}
 
@@ -2997,7 +2997,7 @@ coffstab_build_psymtabs (struct objfile *objfile,
 
       sect_idx = 1;
       symbuf_sections = &stabsects;
-      symbuf_left = bfd_section_size (sym_bfd, stabsects[0]);
+      symbuf_left = bfd_section_size (stabsects[0]);
       symbuf_read = 0;
     }
 
@@ -3040,7 +3040,7 @@ elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
 #define	ELF_STABS_SYMBOL_SIZE	12	/* XXX FIXME XXX */
   DBX_SYMBOL_SIZE (objfile) = ELF_STABS_SYMBOL_SIZE;
   DBX_SYMCOUNT (objfile)
-    = bfd_section_size (objfile->obfd, stabsect) / DBX_SYMBOL_SIZE (objfile);
+    = bfd_section_size (stabsect) / DBX_SYMBOL_SIZE (objfile);
   DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
   DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos;
   DBX_STAB_SECTION (objfile) = stabsect;
@@ -3067,7 +3067,7 @@ elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect,
   processing_acc_compilation = 1;
 
   symbuf_read = 0;
-  symbuf_left = bfd_section_size (objfile->obfd, stabsect);
+  symbuf_left = bfd_section_size (stabsect);
 
   scoped_restore restore_stabs_data = make_scoped_restore (&stabs_data);
   gdb::unique_xmalloc_ptr<gdb_byte> data_holder;
@@ -3128,13 +3128,13 @@ stabsect_build_psymtabs (struct objfile *objfile, char *stab_name,
   text_sect = bfd_get_section_by_name (sym_bfd, text_name);
   if (!text_sect)
     error (_("Can't find %s section in symbol file"), text_name);
-  DBX_TEXT_ADDR (objfile) = bfd_section_vma (sym_bfd, text_sect);
-  DBX_TEXT_SIZE (objfile) = bfd_section_size (sym_bfd, text_sect);
+  DBX_TEXT_ADDR (objfile) = bfd_section_vma (text_sect);
+  DBX_TEXT_SIZE (objfile) = bfd_section_size (text_sect);
 
   DBX_SYMBOL_SIZE (objfile) = sizeof (struct external_nlist);
-  DBX_SYMCOUNT (objfile) = bfd_section_size (sym_bfd, stabsect)
+  DBX_SYMCOUNT (objfile) = bfd_section_size (stabsect)
     / DBX_SYMBOL_SIZE (objfile);
-  DBX_STRINGTAB_SIZE (objfile) = bfd_section_size (sym_bfd, stabstrsect);
+  DBX_STRINGTAB_SIZE (objfile) = bfd_section_size (stabstrsect);
   DBX_SYMTAB_OFFSET (objfile) = stabsect->filepos;	/* XXX - FIXME: POKING
 							   INSIDE BFD DATA
 							   STRUCTURES */
diff --git a/gdb/dicos-tdep.c b/gdb/dicos-tdep.c
index 954428a110..3ef9114b10 100644
--- a/gdb/dicos-tdep.c
+++ b/gdb/dicos-tdep.c
@@ -70,7 +70,7 @@ dicos_load_module_p (bfd *abfd, int header_size)
   if (!section)
     return 0;
 
-  if (bfd_section_size (abfd, section) != header_size)
+  if (bfd_section_size (section) != header_size)
     return 0;
 
   /* Dicos LMs always have a "Dicos_loadModuleInfo" symbol
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index e18b35e7db..34b8cbcb76 100644
--- a/gdb/dwarf2-frame.c
+++ b/gdb/dwarf2-frame.c
@@ -1565,7 +1565,7 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
       base = 0;
       break;
     case DW_EH_PE_pcrel:
-      base = bfd_get_section_vma (unit->abfd, unit->dwarf_frame_section);
+      base = bfd_section_vma (unit->dwarf_frame_section);
       base += (buf - unit->dwarf_frame_buffer);
       break;
     case DW_EH_PE_datarel:
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index ea9904c416..5e71ded203 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -2280,7 +2280,7 @@ get_section_name (const struct dwarf2_section_info *section)
   asection *sectp = get_section_bfd_section (section);
 
   gdb_assert (sectp != NULL);
-  return bfd_section_name (get_section_bfd_owner (section), sectp);
+  return bfd_section_name (sectp);
 }
 
 /* Return the name of the file SECTION is in.  */
@@ -2315,7 +2315,7 @@ get_section_flags (const struct dwarf2_section_info *section)
   asection *sectp = get_section_bfd_section (section);
 
   gdb_assert (sectp != NULL);
-  return bfd_get_section_flags (sectp->owner, sectp);
+  return bfd_section_flags (sectp);
 }
 
 /* When loading sections, we look either for uncompressed section or for
@@ -2340,7 +2340,7 @@ void
 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
 				     const dwarf2_debug_sections &names)
 {
-  flagword aflag = bfd_get_section_flags (abfd, sectp);
+  flagword aflag = bfd_section_flags (sectp);
 
   if ((aflag & SEC_HAS_CONTENTS) == 0)
     {
@@ -2348,72 +2348,72 @@ dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
   else if (section_is_p (sectp->name, &names.info))
     {
       this->info.s.section = sectp;
-      this->info.size = bfd_get_section_size (sectp);
+      this->info.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.abbrev))
     {
       this->abbrev.s.section = sectp;
-      this->abbrev.size = bfd_get_section_size (sectp);
+      this->abbrev.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.line))
     {
       this->line.s.section = sectp;
-      this->line.size = bfd_get_section_size (sectp);
+      this->line.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.loc))
     {
       this->loc.s.section = sectp;
-      this->loc.size = bfd_get_section_size (sectp);
+      this->loc.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.loclists))
     {
       this->loclists.s.section = sectp;
-      this->loclists.size = bfd_get_section_size (sectp);
+      this->loclists.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.macinfo))
     {
       this->macinfo.s.section = sectp;
-      this->macinfo.size = bfd_get_section_size (sectp);
+      this->macinfo.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.macro))
     {
       this->macro.s.section = sectp;
-      this->macro.size = bfd_get_section_size (sectp);
+      this->macro.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.str))
     {
       this->str.s.section = sectp;
-      this->str.size = bfd_get_section_size (sectp);
+      this->str.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.line_str))
     {
       this->line_str.s.section = sectp;
-      this->line_str.size = bfd_get_section_size (sectp);
+      this->line_str.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.addr))
     {
       this->addr.s.section = sectp;
-      this->addr.size = bfd_get_section_size (sectp);
+      this->addr.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.frame))
     {
       this->frame.s.section = sectp;
-      this->frame.size = bfd_get_section_size (sectp);
+      this->frame.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.eh_frame))
     {
       this->eh_frame.s.section = sectp;
-      this->eh_frame.size = bfd_get_section_size (sectp);
+      this->eh_frame.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.ranges))
     {
       this->ranges.s.section = sectp;
-      this->ranges.size = bfd_get_section_size (sectp);
+      this->ranges.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.rnglists))
     {
       this->rnglists.s.section = sectp;
-      this->rnglists.size = bfd_get_section_size (sectp);
+      this->rnglists.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.types))
     {
@@ -2421,28 +2421,28 @@ dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
 
       memset (&type_section, 0, sizeof (type_section));
       type_section.s.section = sectp;
-      type_section.size = bfd_get_section_size (sectp);
+      type_section.size = bfd_section_size (sectp);
 
       this->types.push_back (type_section);
     }
   else if (section_is_p (sectp->name, &names.gdb_index))
     {
       this->gdb_index.s.section = sectp;
-      this->gdb_index.size = bfd_get_section_size (sectp);
+      this->gdb_index.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.debug_names))
     {
       this->debug_names.s.section = sectp;
-      this->debug_names.size = bfd_get_section_size (sectp);
+      this->debug_names.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names.debug_aranges))
     {
       this->debug_aranges.s.section = sectp;
-      this->debug_aranges.size = bfd_get_section_size (sectp);
+      this->debug_aranges.size = bfd_section_size (sectp);
     }
 
-  if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
-      && bfd_section_vma (abfd, sectp) == 0)
+  if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
+      && bfd_section_vma (sectp) == 0)
     this->has_section_at_zero = true;
 }
 
@@ -2531,7 +2531,7 @@ dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
     {
       error (_("Dwarf Error: Can't read DWARF data"
 	       " in section %s [in module %s]"),
-	     bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
+	     bfd_section_name (sectp), bfd_get_filename (abfd));
     }
 }
 
@@ -2603,37 +2603,37 @@ locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
     {
       dwz_file->abbrev.s.section = sectp;
-      dwz_file->abbrev.size = bfd_get_section_size (sectp);
+      dwz_file->abbrev.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
     {
       dwz_file->info.s.section = sectp;
-      dwz_file->info.size = bfd_get_section_size (sectp);
+      dwz_file->info.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
     {
       dwz_file->str.s.section = sectp;
-      dwz_file->str.size = bfd_get_section_size (sectp);
+      dwz_file->str.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
     {
       dwz_file->line.s.section = sectp;
-      dwz_file->line.size = bfd_get_section_size (sectp);
+      dwz_file->line.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
     {
       dwz_file->macro.s.section = sectp;
-      dwz_file->macro.size = bfd_get_section_size (sectp);
+      dwz_file->macro.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
     {
       dwz_file->gdb_index.s.section = sectp;
-      dwz_file->gdb_index.size = bfd_get_section_size (sectp);
+      dwz_file->gdb_index.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
     {
       dwz_file->debug_names.s.section = sectp;
-      dwz_file->debug_names.size = bfd_get_section_size (sectp);
+      dwz_file->debug_names.size = bfd_section_size (sectp);
     }
 }
 
@@ -12311,7 +12311,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->abbrev.s.section != NULL)
 	return 0;
       sections->abbrev.s.section = sectp;
-      sections->abbrev.size = bfd_get_section_size (sectp);
+      sections->abbrev.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->info_dwo)
 	   || section_is_p (sectp->name, &names->types_dwo))
@@ -12320,7 +12320,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->info_or_types.s.section != NULL)
 	return 0;
       sections->info_or_types.s.section = sectp;
-      sections->info_or_types.size = bfd_get_section_size (sectp);
+      sections->info_or_types.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->line_dwo))
     {
@@ -12328,7 +12328,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->line.s.section != NULL)
 	return 0;
       sections->line.s.section = sectp;
-      sections->line.size = bfd_get_section_size (sectp);
+      sections->line.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->loc_dwo))
     {
@@ -12336,7 +12336,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->loc.s.section != NULL)
 	return 0;
       sections->loc.s.section = sectp;
-      sections->loc.size = bfd_get_section_size (sectp);
+      sections->loc.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macinfo_dwo))
     {
@@ -12344,7 +12344,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->macinfo.s.section != NULL)
 	return 0;
       sections->macinfo.s.section = sectp;
-      sections->macinfo.size = bfd_get_section_size (sectp);
+      sections->macinfo.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macro_dwo))
     {
@@ -12352,7 +12352,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->macro.s.section != NULL)
 	return 0;
       sections->macro.s.section = sectp;
-      sections->macro.size = bfd_get_section_size (sectp);
+      sections->macro.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
     {
@@ -12360,7 +12360,7 @@ locate_v1_virtual_dwo_sections (asection *sectp,
       if (sections->str_offsets.s.section != NULL)
 	return 0;
       sections->str_offsets.s.section = sectp;
-      sections->str_offsets.size = bfd_get_section_size (sectp);
+      sections->str_offsets.size = bfd_section_size (sectp);
     }
   else
     {
@@ -12558,11 +12558,11 @@ create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
      bounds of the real section.  This is a pretty-rare event, so just
      flag an error (easier) instead of a warning and trying to cope.  */
   if (sectp == NULL
-      || offset + size > bfd_get_section_size (sectp))
+      || offset + size > bfd_section_size (sectp))
     {
       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
 	       " in section %s [in module %s]"),
-	     sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
+	     sectp ? bfd_section_name (sectp) : "<unknown>",
 	     objfile_name (dwarf2_per_objfile->objfile));
     }
 
@@ -12933,42 +12933,42 @@ dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
   if (section_is_p (sectp->name, &names->abbrev_dwo))
     {
       dwo_sections->abbrev.s.section = sectp;
-      dwo_sections->abbrev.size = bfd_get_section_size (sectp);
+      dwo_sections->abbrev.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->info_dwo))
     {
       dwo_sections->info.s.section = sectp;
-      dwo_sections->info.size = bfd_get_section_size (sectp);
+      dwo_sections->info.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->line_dwo))
     {
       dwo_sections->line.s.section = sectp;
-      dwo_sections->line.size = bfd_get_section_size (sectp);
+      dwo_sections->line.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->loc_dwo))
     {
       dwo_sections->loc.s.section = sectp;
-      dwo_sections->loc.size = bfd_get_section_size (sectp);
+      dwo_sections->loc.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macinfo_dwo))
     {
       dwo_sections->macinfo.s.section = sectp;
-      dwo_sections->macinfo.size = bfd_get_section_size (sectp);
+      dwo_sections->macinfo.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macro_dwo))
     {
       dwo_sections->macro.s.section = sectp;
-      dwo_sections->macro.size = bfd_get_section_size (sectp);
+      dwo_sections->macro.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->str_dwo))
     {
       dwo_sections->str.s.section = sectp;
-      dwo_sections->str.size = bfd_get_section_size (sectp);
+      dwo_sections->str.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
     {
       dwo_sections->str_offsets.s.section = sectp;
-      dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
+      dwo_sections->str_offsets.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->types_dwo))
     {
@@ -12976,7 +12976,7 @@ dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
 
       memset (&type_section, 0, sizeof (type_section));
       type_section.s.section = sectp;
-      type_section.size = bfd_get_section_size (sectp);
+      type_section.size = bfd_section_size (sectp);
       dwo_sections->types.push_back (type_section);
     }
 }
@@ -13040,17 +13040,17 @@ dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
   if (section_is_p (sectp->name, &names->str_dwo))
     {
       dwp_file->sections.str.s.section = sectp;
-      dwp_file->sections.str.size = bfd_get_section_size (sectp);
+      dwp_file->sections.str.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->cu_index))
     {
       dwp_file->sections.cu_index.s.section = sectp;
-      dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
+      dwp_file->sections.cu_index.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->tu_index))
     {
       dwp_file->sections.tu_index.s.section = sectp;
-      dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
+      dwp_file->sections.tu_index.size = bfd_section_size (sectp);
     }
 }
 
@@ -13075,42 +13075,42 @@ dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
   if (section_is_p (sectp->name, &names->abbrev_dwo))
     {
       dwp_file->sections.abbrev.s.section = sectp;
-      dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
+      dwp_file->sections.abbrev.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->info_dwo))
     {
       dwp_file->sections.info.s.section = sectp;
-      dwp_file->sections.info.size = bfd_get_section_size (sectp);
+      dwp_file->sections.info.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->line_dwo))
     {
       dwp_file->sections.line.s.section = sectp;
-      dwp_file->sections.line.size = bfd_get_section_size (sectp);
+      dwp_file->sections.line.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->loc_dwo))
     {
       dwp_file->sections.loc.s.section = sectp;
-      dwp_file->sections.loc.size = bfd_get_section_size (sectp);
+      dwp_file->sections.loc.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macinfo_dwo))
     {
       dwp_file->sections.macinfo.s.section = sectp;
-      dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
+      dwp_file->sections.macinfo.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->macro_dwo))
     {
       dwp_file->sections.macro.s.section = sectp;
-      dwp_file->sections.macro.size = bfd_get_section_size (sectp);
+      dwp_file->sections.macro.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
     {
       dwp_file->sections.str_offsets.s.section = sectp;
-      dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
+      dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
     }
   else if (section_is_p (sectp->name, &names->types_dwo))
     {
       dwp_file->sections.types.s.section = sectp;
-      dwp_file->sections.types.size = bfd_get_section_size (sectp);
+      dwp_file->sections.types.size = bfd_section_size (sectp);
     }
 }
 
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 630550b80d..901710f283 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -125,7 +125,7 @@ elf_symfile_segments (bfd *abfd)
     {
       int j;
 
-      if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+      if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
 	continue;
 
       Elf_Internal_Shdr *this_hdr = &elf_section_data (sect)->this_hdr;
@@ -146,10 +146,10 @@ elf_symfile_segments (bfd *abfd)
 	 RealView) use SHT_NOBITS for uninitialized data.  Since it is
 	 uninitialized, it doesn't need a program header.  Such
 	 binaries are not relocatable.  */
-      if (bfd_get_section_size (sect) > 0 && j == num_segments
-	  && (bfd_get_section_flags (abfd, sect) & SEC_LOAD) != 0)
+      if (bfd_section_size (sect) > 0 && j == num_segments
+	  && (bfd_section_flags (sect) & SEC_LOAD) != 0)
 	warning (_("Loadable section \"%s\" outside of ELF segments"),
-		 bfd_section_name (abfd, sect));
+		 bfd_section_name (sect));
     }
 
   return data;
@@ -289,12 +289,12 @@ elf_symtab_read (minimal_symbol_reader &reader,
 	     covers the stub's address.  */
 	  for (sect = abfd->sections; sect != NULL; sect = sect->next)
 	    {
-	      if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+	      if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
 		continue;
 
-	      if (symaddr >= bfd_get_section_vma (abfd, sect)
-		  && symaddr < bfd_get_section_vma (abfd, sect)
-			       + bfd_get_section_size (sect))
+	      if (symaddr >= bfd_section_vma (sect)
+		  && symaddr < bfd_section_vma (sect)
+			       + bfd_section_size (sect))
 		break;
 	    }
 	  if (!sect)
@@ -591,9 +591,9 @@ elf_rel_plt_read (minimal_symbol_reader &reader,
       if (section == NULL)
 	return false;
 
-      return (bfd_get_section_vma (obfd, section) <= address
-	      && (address < bfd_get_section_vma (obfd, section)
-		  + bfd_get_section_size (section)));
+      return (bfd_section_vma (section) <= address
+	      && (address < bfd_section_vma (section)
+		  + bfd_section_size (section)));
     };
 
   reloc_count = relplt->size / elf_section_data (relplt)->this_hdr.sh_entsize;
@@ -1236,7 +1236,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 	elfstab_build_psymtabs (objfile,
 				ei.stabsect,
 				str_sect->filepos,
-				bfd_section_size (abfd, str_sect));
+				bfd_section_size (str_sect));
     }
 
   if (dwarf2_has_info (objfile, NULL))
diff --git a/gdb/exec.c b/gdb/exec.c
index 4e4cacffda..6bdf9abb3e 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -454,14 +454,14 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect,
      encountered on sparc-solaris 2.10 a shared library with an empty .bss
      section to which a symbol named "_end" was attached.  The address
      of this symbol still needs to be relocated.  */
-  aflag = bfd_get_section_flags (abfd, asect);
+  aflag = bfd_section_flags (asect);
   if (!(aflag & SEC_ALLOC))
     return;
 
   (*table_pp)->owner = NULL;
   (*table_pp)->the_bfd_section = asect;
-  (*table_pp)->addr = bfd_section_vma (abfd, asect);
-  (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (abfd, asect);
+  (*table_pp)->addr = bfd_section_vma (asect);
+  (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (asect);
   (*table_pp)++;
 }
 
@@ -571,7 +571,7 @@ add_target_sections_of_objfile (struct objfile *objfile)
   /* Compute the number of sections to add.  */
   ALL_OBJFILE_OSECTIONS (objfile, osect)
     {
-      if (bfd_get_section_size (osect->the_bfd_section) == 0)
+      if (bfd_section_size (osect->the_bfd_section) == 0)
 	continue;
       count++;
     }
@@ -585,7 +585,7 @@ add_target_sections_of_objfile (struct objfile *objfile)
 
   ALL_OBJFILE_OSECTIONS (objfile, osect)
     {
-      if (bfd_get_section_size (osect->the_bfd_section) == 0)
+      if (bfd_section_size (osect->the_bfd_section) == 0)
 	continue;
 
       gdb_assert (ts < table->sections + space + count);
@@ -665,7 +665,7 @@ exec_read_partial_read_only (gdb_byte *readbuf, ULONGEST offset,
 	    continue;
 
 	  vma = s->vma;
-	  size = bfd_get_section_size (s);
+	  size = bfd_section_size (s);
 	  if (vma <= offset && offset < (vma + size))
 	    {
 	      ULONGEST amt;
@@ -705,9 +705,7 @@ section_table_available_memory (CORE_ADDR memaddr, ULONGEST len,
 
   for (target_section *p = sections; p < sections_end; p++)
     {
-      if ((bfd_get_section_flags (p->the_bfd_section->owner,
-				  p->the_bfd_section)
-	   & SEC_READONLY) == 0)
+      if ((bfd_section_flags (p->the_bfd_section) & SEC_READONLY) == 0)
 	continue;
 
       /* Copy the meta-data, adjusted.  */
@@ -894,17 +892,16 @@ print_section_info (struct target_section_table *t, bfd *abfd)
       for (p = t->sections; p < t->sections_end; p++)
 	{
 	  struct bfd_section *psect = p->the_bfd_section;
-	  bfd *pbfd = psect->owner;
 
-	  if ((bfd_get_section_flags (pbfd, psect) & (SEC_ALLOC | SEC_LOAD))
+	  if ((bfd_section_flags (psect) & (SEC_ALLOC | SEC_LOAD))
 	      != (SEC_ALLOC | SEC_LOAD))
 	    continue;
 
-	  if (bfd_get_section_vma (pbfd, psect) <= abfd->start_address
-	      && abfd->start_address < (bfd_get_section_vma (pbfd, psect)
-					+ bfd_get_section_size (psect)))
+	  if (bfd_section_vma (psect) <= abfd->start_address
+	      && abfd->start_address < (bfd_section_vma (psect)
+					+ bfd_section_size (psect)))
 	    {
-	      displacement = p->addr - bfd_get_section_vma (pbfd, psect);
+	      displacement = p->addr - bfd_section_vma (psect);
 	      break;
 	    }
 	}
@@ -935,7 +932,7 @@ print_section_info (struct target_section_table *t, bfd *abfd)
       if (info_verbose)
 	printf_filtered (" @ %s",
 			 hex_string_custom (psect->filepos, 8));
-      printf_filtered (" is %s", bfd_section_name (pbfd, psect));
+      printf_filtered (" is %s", bfd_section_name (psect));
       if (pbfd != abfd)
 	printf_filtered (" in %s", bfd_get_filename (pbfd));
       printf_filtered ("\n");
@@ -975,9 +972,8 @@ set_section_command (const char *args, int from_tty)
   table = current_target_sections;
   for (p = table->sections; p < table->sections_end; p++)
     {
-      if (!strncmp (secname, bfd_section_name (p->bfd,
-					       p->the_bfd_section), seclen)
-	  && bfd_section_name (p->bfd, p->the_bfd_section)[seclen] == '\0')
+      if (!strncmp (secname, bfd_section_name (p->the_bfd_section), seclen)
+	  && bfd_section_name (p->the_bfd_section)[seclen] == '\0')
 	{
 	  offset = secaddr - p->addr;
 	  p->addr += offset;
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index e81c6c99bf..9422e3c1a7 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -502,10 +502,10 @@ fbsd_core_thread_name (struct gdbarch *gdbarch, struct thread_info *thr)
       thread_section_name section_name (".thrmisc", thr->ptid);
 
       section = bfd_get_section_by_name (core_bfd, section_name.c_str ());
-      if (section != NULL && bfd_section_size (core_bfd, section) > 0)
+      if (section != NULL && bfd_section_size (section) > 0)
 	{
 	  /* Truncate the name if it is longer than "buf".  */
-	  size = bfd_section_size (core_bfd, section);
+	  size = bfd_section_size (section);
 	  if (size > sizeof buf - 1)
 	    size = sizeof buf - 1;
 	  if (bfd_get_section_contents (core_bfd, section, buf, (file_ptr) 0,
@@ -1058,7 +1058,7 @@ fbsd_core_info_proc_files (struct gdbarch *gdbarch)
       return;
     }
 
-  size_t note_size = bfd_get_section_size (section);
+  size_t note_size = bfd_section_size (section);
   if (note_size < 4)
     error (_("malformed core note - too short for header"));
 
@@ -1191,7 +1191,7 @@ fbsd_core_info_proc_mappings (struct gdbarch *gdbarch)
       return;
     }
 
-  note_size = bfd_get_section_size (section);
+  note_size = bfd_section_size (section);
   if (note_size < 4)
     error (_("malformed core note - too short for header"));
 
@@ -1239,7 +1239,7 @@ fbsd_core_vnode_path (struct gdbarch *gdbarch, int fd)
   if (section == NULL)
     return nullptr;
 
-  note_size = bfd_get_section_size (section);
+  note_size = bfd_section_size (section);
   if (note_size < 4)
     error (_("malformed core note - too short for header"));
 
@@ -1344,7 +1344,7 @@ fbsd_core_info_proc_status (struct gdbarch *gdbarch)
    * structure size, then it must be long enough to access the last
    * field used (ki_rusage_ch.ru_majflt) which is the size of a long.
    */
-  note_size = bfd_get_section_size (section);
+  note_size = bfd_section_size (section);
   if (note_size < (4 + kp->ki_rusage_ch + kp->ru_majflt
 		   + long_bit / TARGET_CHAR_BIT))
     error (_("malformed core note - too short"));
diff --git a/gdb/gcore.c b/gdb/gcore.c
index eb108feb79..f283ed4580 100644
--- a/gdb/gcore.c
+++ b/gdb/gcore.c
@@ -95,9 +95,9 @@ write_gcore_file_1 (bfd *obfd)
     error (_("Failed to create 'note' section for corefile: %s"),
 	   bfd_errmsg (bfd_get_error ()));
 
-  bfd_set_section_vma (obfd, note_sec, 0);
-  bfd_set_section_alignment (obfd, note_sec, 0);
-  bfd_set_section_size (obfd, note_sec, note_size);
+  bfd_set_section_vma (note_sec, 0);
+  bfd_set_section_alignment (note_sec, 0);
+  bfd_set_section_size (note_sec, note_size);
 
   /* Now create the memory/load sections.  */
   if (gcore_memory_sections (obfd) == 0)
@@ -332,11 +332,11 @@ derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top)
 
   for (sec = abfd->sections; sec; sec = sec->next)
     {
-      if (bfd_get_section_flags (abfd, sec) & SEC_DATA
-	  || strcmp (".bss", bfd_section_name (abfd, sec)) == 0)
+      if (bfd_section_flags (sec) & SEC_DATA
+	  || strcmp (".bss", bfd_section_name (sec)) == 0)
 	{
-	  sec_vaddr = bfd_get_section_vma (abfd, sec);
-	  sec_size = bfd_get_section_size (sec);
+	  sec_vaddr = bfd_section_vma (sec);
+	  sec_size = bfd_section_size (sec);
 	  if (sec_vaddr + sec_size > top_of_data_memory)
 	    top_of_data_memory = sec_vaddr + sec_size;
 	}
@@ -365,17 +365,17 @@ make_output_phdrs (bfd *obfd, asection *osec, void *ignored)
   int p_type = 0;
 
   /* FIXME: these constants may only be applicable for ELF.  */
-  if (startswith (bfd_section_name (obfd, osec), "load"))
+  if (startswith (bfd_section_name (osec), "load"))
     p_type = PT_LOAD;
-  else if (startswith (bfd_section_name (obfd, osec), "note"))
+  else if (startswith (bfd_section_name (osec), "note"))
     p_type = PT_NOTE;
   else
     p_type = PT_NULL;
 
   p_flags |= PF_R;	/* Segment is readable.  */
-  if (!(bfd_get_section_flags (obfd, osec) & SEC_READONLY))
+  if (!(bfd_section_flags (osec) & SEC_READONLY))
     p_flags |= PF_W;	/* Segment is writable.  */
-  if (bfd_get_section_flags (obfd, osec) & SEC_CODE)
+  if (bfd_section_flags (osec) & SEC_CODE)
     p_flags |= PF_X;	/* Segment is executable.  */
 
   bfd_record_phdr (obfd, p_type, 1, p_flags, 0, 0, 0, 0, 1, &osec);
@@ -417,8 +417,7 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size, int read,
 	  {
 	    bfd *abfd = objfile->obfd;
 	    asection *asec = objsec->the_bfd_section;
-	    bfd_vma align = (bfd_vma) 1 << bfd_get_section_alignment (abfd,
-								      asec);
+	    bfd_vma align = (bfd_vma) 1 << bfd_section_alignment (asec);
 	    bfd_vma start = obj_section_addr (objsec) & -align;
 	    bfd_vma end = (obj_section_endaddr (objsec) + align - 1) & -align;
 
@@ -464,9 +463,9 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size, int read,
 			plongest (size), paddress (target_gdbarch (), vaddr));
     }
 
-  bfd_set_section_size (obfd, osec, size);
-  bfd_set_section_vma (obfd, osec, vaddr);
-  bfd_section_lma (obfd, osec) = 0; /* ??? bfd_set_section_lma?  */
+  bfd_set_section_size (osec, size);
+  bfd_set_section_vma (osec, vaddr);
+  bfd_set_section_lma (osec, 0);
   return 0;
 }
 
@@ -482,9 +481,8 @@ objfile_find_memory_regions (struct target_ops *self,
   for (objfile *objfile : current_program_space->objfiles ())
     ALL_OBJFILE_OSECTIONS (objfile, objsec)
       {
-	bfd *ibfd = objfile->obfd;
 	asection *isec = objsec->the_bfd_section;
-	flagword flags = bfd_get_section_flags (ibfd, isec);
+	flagword flags = bfd_section_flags (isec);
 
 	/* Separate debug info files are irrelevant for gcore.  */
 	if (objfile->separate_debug_objfile_backlink != NULL)
@@ -492,7 +490,7 @@ objfile_find_memory_regions (struct target_ops *self,
 
 	if ((flags & SEC_ALLOC) || (flags & SEC_LOAD))
 	  {
-	    int size = bfd_section_size (ibfd, isec);
+	    int size = bfd_section_size (isec);
 	    int ret;
 
 	    ret = (*func) (obj_section_addr (objsec), size, 
@@ -530,15 +528,15 @@ objfile_find_memory_regions (struct target_ops *self,
 static void
 gcore_copy_callback (bfd *obfd, asection *osec, void *ignored)
 {
-  bfd_size_type size, total_size = bfd_section_size (obfd, osec);
+  bfd_size_type size, total_size = bfd_section_size (osec);
   file_ptr offset = 0;
 
   /* Read-only sections are marked; we don't have to copy their contents.  */
-  if ((bfd_get_section_flags (obfd, osec) & SEC_LOAD) == 0)
+  if ((bfd_section_flags (osec) & SEC_LOAD) == 0)
     return;
 
   /* Only interested in "load" sections.  */
-  if (!startswith (bfd_section_name (obfd, osec), "load"))
+  if (!startswith (bfd_section_name (osec), "load"))
     return;
 
   size = std::min (total_size, (bfd_size_type) MAX_COPY_BYTES);
@@ -549,13 +547,13 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored)
       if (size > total_size)
 	size = total_size;
 
-      if (target_read_memory (bfd_section_vma (obfd, osec) + offset,
+      if (target_read_memory (bfd_section_vma (osec) + offset,
 			      memhunk.data (), size) != 0)
 	{
 	  warning (_("Memory read failed for corefile "
 		     "section, %s bytes at %s."),
 		   plongest (size),
-		   paddress (target_gdbarch (), bfd_section_vma (obfd, osec)));
+		   paddress (target_gdbarch (), bfd_section_vma (osec)));
 	  break;
 	}
       if (!bfd_set_section_contents (obfd, osec, memhunk.data (),
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index a17460a8a0..8a67d5e97d 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -480,7 +480,7 @@ static void
 free_one_bfd_section (bfd *abfd, asection *sectp, void *ignore)
 {
   struct gdb_bfd_section_data *sect
-    = (struct gdb_bfd_section_data *) bfd_get_section_userdata (abfd, sectp);
+    = (struct gdb_bfd_section_data *) bfd_section_userdata (sectp);
 
   if (sect != NULL && sect->data != NULL)
     {
@@ -626,14 +626,13 @@ get_section_descriptor (asection *section)
 {
   struct gdb_bfd_section_data *result;
 
-  result = ((struct gdb_bfd_section_data *)
-	    bfd_get_section_userdata (section->owner, section));
+  result = (struct gdb_bfd_section_data *) bfd_section_userdata (section);
 
   if (result == NULL)
     {
       result = ((struct gdb_bfd_section_data *)
 		bfd_zalloc (section->owner, sizeof (*result)));
-      bfd_set_section_userdata (section->owner, section, result);
+      bfd_set_section_userdata (section, result);
     }
 
   return result;
@@ -671,9 +670,9 @@ gdb_bfd_map_section (asection *sectp, bfd_size_type *size)
       /* Only try to mmap sections which are large enough: we don't want
 	 to waste space due to fragmentation.  */
 
-      if (bfd_get_section_size (sectp) > 4 * pagesize)
+      if (bfd_section_size (sectp) > 4 * pagesize)
 	{
-	  descriptor->size = bfd_get_section_size (sectp);
+	  descriptor->size = bfd_section_size (sectp);
 	  descriptor->data = bfd_mmap (abfd, 0, descriptor->size, PROT_READ,
 				       MAP_PRIVATE, sectp->filepos,
 				       &descriptor->map_addr,
@@ -697,14 +696,14 @@ gdb_bfd_map_section (asection *sectp, bfd_size_type *size)
   /* Handle compressed sections, or ordinary uncompressed sections in
      the no-mmap case.  */
 
-  descriptor->size = bfd_get_section_size (sectp);
+  descriptor->size = bfd_section_size (sectp);
   descriptor->data = NULL;
 
   data = NULL;
   if (!bfd_get_full_section_contents (abfd, sectp, &data))
     {
       warning (_("Can't read data for section '%s' in file '%s'"),
-	       bfd_get_section_name (abfd, sectp),
+	       bfd_section_name (sectp),
 	       bfd_get_filename (abfd));
       /* Set size to 0 to prevent further attempts to read the invalid
 	 section.  */
diff --git a/gdb/gdb_bfd.h b/gdb/gdb_bfd.h
index aa67fc0a14..674880d07f 100644
--- a/gdb/gdb_bfd.h
+++ b/gdb/gdb_bfd.h
@@ -106,7 +106,7 @@ void gdb_bfd_record_inclusion (bfd *includer, bfd *includee);
 
 /* Try to read or map the contents of the section SECT.  If successful, the
    section data is returned and *SIZE is set to the size of the section data;
-   this may not be the same as the size according to bfd_get_section_size if the
+   this may not be the same as the size according to bfd_section_size if the
    section was compressed.  The returned section data is associated with the BFD
    and will be destroyed when the BFD is destroyed.  There is no other way to
    free it; for temporary uses of section data, see bfd_malloc_and_get_section.
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index b1f71883ec..249d5c91bd 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -380,7 +380,7 @@ read_unwind_info (struct objfile *objfile)
       if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
 	  || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
 	{
-	  unwind_size = bfd_section_size (objfile->obfd, unwind_sec);
+	  unwind_size = bfd_section_size (unwind_sec);
 	  unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
 
 	  total_entries += unwind_entries;
@@ -393,7 +393,7 @@ read_unwind_info (struct objfile *objfile)
 
   if (stub_unwind_sec)
     {
-      stub_unwind_size = bfd_section_size (objfile->obfd, stub_unwind_sec);
+      stub_unwind_size = bfd_section_size (stub_unwind_sec);
       stub_entries = stub_unwind_size / STUB_UNWIND_ENTRY_SIZE;
     }
   else
@@ -421,7 +421,7 @@ read_unwind_info (struct objfile *objfile)
       if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
 	  || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
 	{
-	  unwind_size = bfd_section_size (objfile->obfd, unwind_sec);
+	  unwind_size = bfd_section_size (unwind_sec);
 	  unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
 
 	  internalize_unwinds (objfile, &ui->table[index], unwind_sec,
diff --git a/gdb/i386-cygwin-tdep.c b/gdb/i386-cygwin-tdep.c
index 0e3ba82b76..25c3cfcbb9 100644
--- a/gdb/i386-cygwin-tdep.c
+++ b/gdb/i386-cygwin-tdep.c
@@ -110,14 +110,14 @@ core_process_module_section (bfd *abfd, asection *sect, void *obj)
   if (!startswith (sect->name, ".module"))
     return;
 
-  buf = (gdb_byte *) xmalloc (bfd_get_section_size (sect) + 1);
+  buf = (gdb_byte *) xmalloc (bfd_section_size (sect) + 1);
   if (!buf)
     {
       printf_unfiltered ("memory allocation failed for %s\n", sect->name);
       goto out;
     }
   if (!bfd_get_section_contents (abfd, sect,
-				 buf, 0, bfd_get_section_size (sect)))
+				 buf, 0, bfd_section_size (sect)))
     goto out;
 
 
@@ -130,7 +130,7 @@ core_process_module_section (bfd *abfd, asection *sect, void *obj)
   module_name_size =
     extract_unsigned_integer (buf + 8, 4, byte_order);
 
-  if (12 + module_name_size > bfd_get_section_size (sect))
+  if (12 + module_name_size > bfd_section_size (sect))
     goto out;
   module_name = (char *) buf + 12;
 
@@ -240,7 +240,7 @@ i386_cygwin_osabi_sniffer (bfd *abfd)
     {
       asection *section = bfd_get_section_by_name (abfd, ".reg");
       if (section
-	  && bfd_section_size (abfd, section) == I386_WINDOWS_SIZEOF_GREGSET)
+	  && bfd_section_size (section) == I386_WINDOWS_SIZEOF_GREGSET)
 	return GDB_OSABI_CYGWIN;
     }
 
diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
index 3848bf890d..04d0a641b7 100644
--- a/gdb/i386-fbsd-tdep.c
+++ b/gdb/i386-fbsd-tdep.c
@@ -233,7 +233,7 @@ i386fbsd_core_read_xcr0 (bfd *abfd)
 
   if (xstate)
     {
-      size_t size = bfd_section_size (abfd, xstate);
+      size_t size = bfd_section_size (xstate);
 
       /* Check extended state size.  */
       if (size < X86_XSTATE_AVX_SIZE)
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 760d00008f..c41013984e 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -646,7 +646,7 @@ i386_linux_core_read_xcr0 (bfd *abfd)
 
   if (xstate)
     {
-      size_t size = bfd_section_size (abfd, xstate);
+      size_t size = bfd_section_size (xstate);
 
       /* Check extended state size.  */
       if (size < X86_XSTATE_AVX_SIZE)
diff --git a/gdb/jit.c b/gdb/jit.c
index 4722d6c6ce..af01b4d6c4 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -910,12 +910,12 @@ JITed symbol file is not an object file, ignoring it.\n"));
      addresses that we care about.  */
   section_addr_info sai;
   for (sec = nbfd->sections; sec != NULL; sec = sec->next)
-    if ((bfd_get_section_flags (nbfd.get (), sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
+    if ((bfd_section_flags (sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
       {
         /* We assume that these virtual addresses are absolute, and do not
            treat them as offsets.  */
-	sai.emplace_back (bfd_get_section_vma (nbfd.get (), sec),
-			  bfd_get_section_name (nbfd.get (), sec),
+	sai.emplace_back (bfd_section_vma (sec),
+			  bfd_section_name (sec),
 			  sec->index);
       }
 
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index ff888a9067..63a9bd32df 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1046,7 +1046,7 @@ linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args)
 
   addr_size_bits = gdbarch_addr_bit (core_gdbarch);
   addr_size = addr_size_bits / 8;
-  note_size = bfd_get_section_size (section);
+  note_size = bfd_section_size (section);
 
   if (note_size < 2 * addr_size)
     error (_("malformed core note - too short for header"));
diff --git a/gdb/machoread.c b/gdb/machoread.c
index d7471e9572..1795982a3e 100644
--- a/gdb/machoread.c
+++ b/gdb/machoread.c
@@ -575,7 +575,7 @@ macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
                          sec->name, sym->name,
                          paddress (arch, res));
                     }
-                  bfd_set_section_vma (abfd.get (), sec, res);
+                  bfd_set_section_vma (sec, res);
                   sections_rebased[sec->index] = 1;
                 }
             }
@@ -854,8 +854,7 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
             {
               if (strcmp (asect->name, dsect->name) != 0)
                 break;
-              bfd_set_section_size (dsym_bfd.get (), dsect,
-                                    bfd_get_section_size (asect));
+              bfd_set_section_size (dsect, bfd_section_size (asect));
             }
 
 	  /* Add the dsym file as a separate file.  */
diff --git a/gdb/maint.c b/gdb/maint.c
index b8eb93827c..ec9f4abb26 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -335,8 +335,8 @@ print_bfd_section_info (bfd *abfd,
 			asection *asect,
 			void *datum)
 {
-  flagword flags = bfd_get_section_flags (abfd, asect);
-  const char *name = bfd_section_name (abfd, asect);
+  flagword flags = bfd_section_flags (asect);
+  const char *name = bfd_section_name (asect);
   maint_print_section_data *print_data = (maint_print_section_data *) datum;
   const char *arg = print_data->arg;
 
@@ -348,8 +348,8 @@ print_bfd_section_info (bfd *abfd,
       int addr_size = gdbarch_addr_bit (gdbarch) / 8;
       CORE_ADDR addr, endaddr;
 
-      addr = bfd_section_vma (abfd, asect);
-      endaddr = addr + bfd_section_size (abfd, asect);
+      addr = bfd_section_vma (asect);
+      endaddr = addr + bfd_section_size (asect);
       print_section_index (abfd, asect, print_data->index_digits);
       maint_print_section_info (name, flags, addr, endaddr,
 				asect->filepos, addr_size);
@@ -366,8 +366,8 @@ print_objfile_section_info (bfd *abfd,
 			    struct obj_section *asect,
 			    maint_print_section_data *print_data)
 {
-  flagword flags = bfd_get_section_flags (abfd, asect->the_bfd_section);
-  const char *name = bfd_section_name (abfd, asect->the_bfd_section);
+  flagword flags = bfd_section_flags (asect->the_bfd_section);
+  const char *name = bfd_section_name (asect->the_bfd_section);
   const char *string = print_data->arg;
 
   if (string == NULL || *string == '\0'
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index dffef8fd1a..0956fbdb67 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -2338,7 +2338,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
      the text section (and fh->adr) really starts at zero.  */
   text_sect = bfd_get_section_by_name (cur_bfd, ".text");
   if (text_sect != NULL
-      && (bfd_get_section_flags (cur_bfd, text_sect) & SEC_RELOC))
+      && (bfd_section_flags (text_sect) & SEC_RELOC))
     relocatable = 1;
 
   extern_tab = XOBNEWVEC (&objfile->objfile_obstack, EXTR, hdr->iextMax);
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index 9033a61950..7659e28038 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -1179,8 +1179,7 @@ mi_memory_changed (struct inferior *inferior, CORE_ADDR memaddr,
       sec = find_pc_section (memaddr);
       if (sec != NULL && sec->objfile != NULL)
 	{
-	  flagword flags = bfd_get_section_flags (sec->objfile->obfd,
-						  sec->the_bfd_section);
+	  flagword flags = bfd_section_flags (sec->the_bfd_section);
 
 	  if (flags & SEC_CODE)
 	    mi_uiout->field_string ("type", "code");
diff --git a/gdb/minidebug.c b/gdb/minidebug.c
index 6c67b4e04b..2a60741dfa 100644
--- a/gdb/minidebug.c
+++ b/gdb/minidebug.c
@@ -87,7 +87,7 @@ lzma_open (struct bfd *nbfd, void *open_closure)
   struct gdb_lzma_stream *lstream;
   size_t pos;
 
-  size = bfd_get_section_size (section);
+  size = bfd_section_size (section);
   offset = section->filepos + size - LZMA_STREAM_HEADER_SIZE;
   if (size < LZMA_STREAM_HEADER_SIZE
       || bfd_seek (section->owner, offset, SEEK_SET) != 0
diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c
index 08d027917d..eab284da13 100644
--- a/gdb/mips-linux-tdep.c
+++ b/gdb/mips-linux-tdep.c
@@ -562,7 +562,7 @@ mips_linux_core_read_description (struct gdbarch *gdbarch,
   if (! section)
     return NULL;
 
-  switch (bfd_section_size (abfd, section))
+  switch (bfd_section_size (section))
     {
     case sizeof (mips_elf_gregset_t):
       return mips_tdesc_gp32;
diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
index cf1ce37873..791a5991ad 100644
--- a/gdb/mips-sde-tdep.c
+++ b/gdb/mips-sde-tdep.c
@@ -208,7 +208,7 @@ mips_sde_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
   enum gdb_osabi *os_ident_ptr = (enum gdb_osabi *) obj;
   const char *name;
 
-  name = bfd_get_section_name (abfd, sect);
+  name = bfd_section_name (sect);
 
   /* The presence of a section with a ".sde" prefix is indicative
      of an SDE binary.  */
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 37a1b2a0b8..6870db8202 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -7975,7 +7975,7 @@ static void
 mips_find_abi_section (bfd *abfd, asection *sect, void *obj)
 {
   enum mips_abi *abip = (enum mips_abi *) obj;
-  const char *name = bfd_get_section_name (abfd, sect);
+  const char *name = bfd_section_name (sect);
 
   if (*abip != MIPS_ABI_UNKNOWN)
     return;
@@ -8003,7 +8003,7 @@ static void
 mips_find_long_section (bfd *abfd, asection *sect, void *obj)
 {
   int *lbp = (int *) obj;
-  const char *name = bfd_get_section_name (abfd, sect);
+  const char *name = bfd_section_name (sect);
 
   if (startswith (name, ".gcc_compiled_long32"))
     *lbp = 32;
diff --git a/gdb/mipsread.c b/gdb/mipsread.c
index b25abe5a48..b5f7f6cde4 100644
--- a/gdb/mipsread.c
+++ b/gdb/mipsread.c
@@ -200,10 +200,10 @@ read_alphacoff_dynamic_symtab (minimal_symbol_reader &reader,
       || si.dyninfo_sect == NULL || si.got_sect == NULL)
     return;
 
-  gdb::byte_vector sym_sec (bfd_get_section_size (si.sym_sect));
-  gdb::byte_vector str_sec (bfd_get_section_size (si.str_sect));
-  gdb::byte_vector dyninfo_sec (bfd_get_section_size (si.dyninfo_sect));
-  gdb::byte_vector got_sec (bfd_get_section_size (si.got_sect));
+  gdb::byte_vector sym_sec (bfd_section_size (si.sym_sect));
+  gdb::byte_vector str_sec (bfd_section_size (si.str_sect));
+  gdb::byte_vector dyninfo_sec (bfd_section_size (si.dyninfo_sect));
+  gdb::byte_vector got_sec (bfd_section_size (si.got_sect));
 
   if (!bfd_get_section_contents (abfd, si.sym_sect, sym_sec.data (),
 				 (file_ptr) 0, sym_sec.size ()))
diff --git a/gdb/nto-tdep.c b/gdb/nto-tdep.c
index 0c610d2841..41b4e25737 100644
--- a/gdb/nto-tdep.c
+++ b/gdb/nto-tdep.c
@@ -319,8 +319,8 @@ nto_sniff_abi_note_section (bfd *abfd, asection *sect, void *obj)
   const char *name;
   const unsigned sizeof_Elf_Nhdr = 12;
 
-  sectname = bfd_get_section_name (abfd, sect);
-  sectsize = bfd_section_size (abfd, sect);
+  sectname = bfd_section_name (sect);
+  sectsize = bfd_section_size (sect);
 
   if (sectsize > 128)
     sectsize = 128;
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 7cbcbbd01b..90c4650bd4 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -271,7 +271,7 @@ add_to_objfile_sections_full (struct bfd *abfd, struct bfd_section *asect,
     {
       flagword aflag;
 
-      aflag = bfd_get_section_flags (abfd, asect);
+      aflag = bfd_section_flags (asect);
       if (!(aflag & SEC_ALLOC))
 	return;
     }
@@ -1119,15 +1119,15 @@ static int
 insert_section_p (const struct bfd *abfd,
 		  const struct bfd_section *section)
 {
-  const bfd_vma lma = bfd_section_lma (abfd, section);
+  const bfd_vma lma = bfd_section_lma (section);
 
-  if (overlay_debugging && lma != 0 && lma != bfd_section_vma (abfd, section)
+  if (overlay_debugging && lma != 0 && lma != bfd_section_vma (section)
       && (bfd_get_file_flags (abfd) & BFD_IN_MEMORY) == 0)
     /* This is an overlay section.  IN_MEMORY check is needed to avoid
        discarding sections from the "system supplied DSO" (aka vdso)
        on some Linux systems (e.g. Fedora 11).  */
     return 0;
-  if ((bfd_get_section_flags (abfd, section) & SEC_THREAD_LOCAL) != 0)
+  if ((bfd_section_flags (section) & SEC_THREAD_LOCAL) != 0)
     /* This is a TLS section.  */
     return 0;
 
@@ -1220,10 +1220,10 @@ filter_overlapping_sections (struct obj_section **map, int map_size)
 			   " (A) section `%s' from `%s' [%s, %s)\n"
 			   " (B) section `%s' from `%s' [%s, %s).\n"
 			   "Will ignore section B"),
-			 bfd_section_name (abfd1, bfds1), objfile_name (objf1),
+			 bfd_section_name (bfds1), objfile_name (objf1),
 			 paddress (gdbarch, sect1_addr),
 			 paddress (gdbarch, sect1_endaddr),
-			 bfd_section_name (abfd2, bfds2), objfile_name (objf2),
+			 bfd_section_name (bfds2), objfile_name (objf2),
 			 paddress (gdbarch, sect2_addr),
 			 paddress (gdbarch, sect2_endaddr));
 	    }
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 239aba2c2a..68d36d408e 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -143,14 +143,14 @@ struct obj_section
 
 /* The memory address of section S (vma + offset).  */
 #define obj_section_addr(s)				      		\
-  (bfd_get_section_vma ((s)->objfile->obfd, s->the_bfd_section)		\
+  (bfd_section_vma (s->the_bfd_section)					\
    + obj_section_offset (s))
 
 /* The one-passed-the-end memory address of section S
    (vma + size + offset).  */
 #define obj_section_endaddr(s)						\
-  (bfd_get_section_vma ((s)->objfile->obfd, s->the_bfd_section)		\
-   + bfd_get_section_size ((s)->the_bfd_section)			\
+  (bfd_section_vma (s->the_bfd_section)					\
+   + bfd_section_size ((s)->the_bfd_section)				\
    + obj_section_offset (s))
 
 /* The "objstats" structure provides a place for gdb to record some
diff --git a/gdb/osabi.c b/gdb/osabi.c
index 5d4bbcdff8..cdf72a7664 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -416,7 +416,7 @@ check_note (bfd *abfd, asection *sect, char *note, unsigned int *sectsize,
   gdb_assert (notesz <= MAX_NOTESZ);
 
   /* Check whether SECT is big enough to comtain the complete note.  */
-  if (notesz > bfd_section_size (abfd, sect))
+  if (notesz > bfd_section_size (sect))
     return 0;
 
   /* Check the note name.  */
@@ -445,8 +445,8 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, void *obj)
   unsigned int sectsize;
   char *note;
 
-  name = bfd_get_section_name (abfd, sect);
-  sectsize = bfd_section_size (abfd, sect);
+  name = bfd_section_name (sect);
+  sectsize = bfd_section_size (sect);
 
   /* Limit the amount of data to read.  */
   if (sectsize > MAX_NOTESZ)
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index 82277a03f8..c6181c9dd4 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -1558,7 +1558,7 @@ ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
 static int
 ppc_linux_spu_section (bfd *abfd, asection *asect, void *user_data)
 {
-  return startswith (bfd_section_name (abfd, asect), "SPU/");
+  return startswith (bfd_section_name (asect), "SPU/");
 }
 
 static const struct target_desc *
@@ -1580,7 +1580,7 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch,
   if (! section)
     return NULL;
 
-  switch (bfd_section_size (abfd, section))
+  switch (bfd_section_size (section))
     {
     case 48 * 4:
       features.wordsize = 4;
diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c
index b29d04c135..6a7aabf877 100644
--- a/gdb/ppc64-tdep.c
+++ b/gdb/ppc64-tdep.c
@@ -593,8 +593,8 @@ ppc64_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
 				      s->the_bfd_section,
 				      &buf, addr - s->addr, 8);
       if (res != 0)
-	return extract_unsigned_integer (buf, 8, byte_order)
-		- bfd_section_vma (s->bfd, s->the_bfd_section) + s->addr;
+	return (extract_unsigned_integer (buf, 8, byte_order)
+		- bfd_section_vma (s->the_bfd_section) + s->addr);
    }
 
   return addr;
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index d402d8733d..b55459e4ad 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -1435,8 +1435,7 @@ record_btrace_target::xfer_partial (enum target_object object,
 	    if (section != NULL)
 	      {
 		/* Check if the section we found is readonly.  */
-		if ((bfd_get_section_flags (section->the_bfd_section->owner,
-					    section->the_bfd_section)
+		if ((bfd_section_flags (section->the_bfd_section)
 		     & SEC_READONLY) != 0)
 		  {
 		    /* Truncate the request to fit into this section.  */
diff --git a/gdb/record-full.c b/gdb/record-full.c
index c1d124f519..0c6cb62163 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -2350,9 +2350,9 @@ record_full_restore (void)
 			osec ? "succeeded" : "failed");
   if (osec == NULL)
     return;
-  osec_size = bfd_section_size (core_bfd, osec);
+  osec_size = bfd_section_size (osec);
   if (record_debug)
-    fprintf_unfiltered (gdb_stdlog, "%s", bfd_section_name (core_bfd, osec));
+    fprintf_unfiltered (gdb_stdlog, "%s", bfd_section_name (osec));
 
   /* Check the magic code.  */
   bfdcore_read (core_bfd, osec, &magic, sizeof (magic), &bfd_offset);
@@ -2599,10 +2599,9 @@ record_full_base_target::save_record (const char *recfilename)
     error (_("Failed to create 'precord' section for corefile %s: %s"),
 	   recfilename,
            bfd_errmsg (bfd_get_error ()));
-  bfd_set_section_size (obfd.get (), osec, save_size);
-  bfd_set_section_vma (obfd.get (), osec, 0);
-  bfd_set_section_alignment (obfd.get (), osec, 0);
-  bfd_section_lma (obfd.get (), osec) = 0;
+  bfd_set_section_size (osec, save_size);
+  bfd_set_section_vma (osec, 0);
+  bfd_set_section_alignment (osec, 0);
 
   /* Save corefile state.  */
   write_gcore_file (obfd.get ());
diff --git a/gdb/remote.c b/gdb/remote.c
index e39366d8b2..980864e070 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -8749,9 +8749,7 @@ remote_target::remote_xfer_live_readonly_partial (gdb_byte *readbuf,
 
   secp = target_section_by_addr (this, memaddr);
   if (secp != NULL
-      && (bfd_get_section_flags (secp->the_bfd_section->owner,
-				 secp->the_bfd_section)
-	  & SEC_READONLY))
+      && (bfd_section_flags (secp->the_bfd_section) & SEC_READONLY))
     {
       struct target_section *p;
       ULONGEST memend = memaddr + len;
@@ -10656,11 +10654,11 @@ compare_sections_command (const char *args, int from_tty)
       if (read_only && (s->flags & SEC_READONLY) == 0)
 	continue;		/* Skip writeable sections */
 
-      size = bfd_get_section_size (s);
+      size = bfd_section_size (s);
       if (size == 0)
 	continue;		/* Skip zero-length section.  */
 
-      sectname = bfd_get_section_name (exec_bfd, s);
+      sectname = bfd_section_name (s);
       if (args && strcmp (args, sectname) != 0)
 	continue;		/* Not the section selected by user.  */
 
@@ -13059,7 +13057,6 @@ void
 remote_target::trace_set_readonly_regions ()
 {
   asection *s;
-  bfd *abfd = NULL;
   bfd_size_type size;
   bfd_vma vma;
   int anysecs = 0;
@@ -13083,8 +13080,8 @@ remote_target::trace_set_readonly_regions ()
 	continue;
 
       anysecs = 1;
-      vma = bfd_get_section_vma (abfd, s);
-      size = bfd_get_section_size (s);
+      vma = bfd_section_vma (s);
+      size = bfd_section_size (s);
       sprintf_vma (tmp1, vma);
       sprintf_vma (tmp2, vma + size);
       sec_length = 1 + strlen (tmp1) + 1 + strlen (tmp2);
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
index 4964f591a5..f2ff255736 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -1110,7 +1110,7 @@ rs6000_aix_core_xfer_shared_libraries_aix (struct gdbarch *gdbarch,
   if (ldinfo_sec == NULL)
     error (_("cannot find .ldinfo section from core file: %s"),
 	   bfd_errmsg (bfd_get_error ()));
-  ldinfo_size = bfd_get_section_size (ldinfo_sec);
+  ldinfo_size = bfd_section_size (ldinfo_sec);
 
   gdb::byte_vector ldinfo_buf (ldinfo_size);
 
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 328b41cc59..47a232f6c6 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -3866,7 +3866,7 @@ bfd_uses_spe_extensions (bfd *abfd)
   if (!sect)
     return 0;
 
-  size = bfd_get_section_size (sect);
+  size = bfd_section_size (sect);
   contents = (gdb_byte *) xmalloc (size);
   if (!bfd_get_section_contents (abfd, sect, contents, 0, size))
     {
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index 02ae28b4ea..ab3889ba45 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -346,7 +346,7 @@ s390_core_read_description (struct gdbarch *gdbarch,
   te = (hwcap & HWCAP_S390_TE);
   gs = (hwcap & HWCAP_S390_GS);
 
-  switch (bfd_section_size (abfd, section))
+  switch (bfd_section_size (section))
     {
     case s390_sizeof_gregset:
       if (high_gprs)
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index 871efc59bc..463c0a0bd7 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -697,9 +697,7 @@ s390_load (struct s390_prologue_data *data,
       struct target_section *secp;
       secp = target_section_by_addr (current_top_target (), addr.k);
       if (secp != NULL
-	  && (bfd_get_section_flags (secp->the_bfd_section->owner,
-				     secp->the_bfd_section)
-	      & SEC_READONLY))
+	  && (bfd_section_flags (secp->the_bfd_section) & SEC_READONLY))
 	return pv_constant (read_memory_integer (addr.k, size,
 						 data->byte_order));
     }
diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
index 1a25a0d4a9..8308190d90 100644
--- a/gdb/solib-aix.c
+++ b/gdb/solib-aix.c
@@ -303,15 +303,13 @@ solib_aix_bss_data_overlap (bfd *abfd)
      section after the .data section (the problem has only been
      observed when using the GNU linker, and the default linker
      script always places the .data and .bss sections in that order).  */
-  if (bfd_section_vma (abfd, bss_sect)
-      < bfd_section_vma (abfd, data_sect))
+  if (bfd_section_vma (bss_sect) < bfd_section_vma (data_sect))
     return 0;
 
-  if (bfd_section_vma (abfd, bss_sect)
-      < bfd_section_vma (abfd, data_sect) + bfd_get_section_size (data_sect))
-    return ((bfd_section_vma (abfd, data_sect)
-	     + bfd_get_section_size (data_sect))
-	    - bfd_section_vma (abfd, bss_sect));
+  if (bfd_section_vma (bss_sect)
+      < bfd_section_vma (data_sect) + bfd_section_size (data_sect))
+    return (bfd_section_vma (data_sect) + bfd_section_size (data_sect)
+	    - bfd_section_vma (bss_sect));
 
   return 0;
 }
@@ -324,7 +322,7 @@ solib_aix_relocate_section_addresses (struct so_list *so,
 {
   struct bfd_section *bfd_sect = sec->the_bfd_section;
   bfd *abfd = bfd_sect->owner;
-  const char *section_name = bfd_section_name (abfd, bfd_sect);
+  const char *section_name = bfd_section_name (bfd_sect);
   lm_info_aix *info = (lm_info_aix *) so->lm_info;
 
   if (strcmp (section_name, ".text") == 0)
@@ -355,17 +353,17 @@ solib_aix_relocate_section_addresses (struct so_list *so,
       CORE_ADDR data_offset = 0;
 
       if (data_sect != NULL)
-	data_offset = info->data_addr - bfd_section_vma (abfd, data_sect);
+	data_offset = info->data_addr - bfd_section_vma (data_sect);
 
-      sec->addr = bfd_section_vma (abfd, bfd_sect) + data_offset;
+      sec->addr = bfd_section_vma (bfd_sect) + data_offset;
       sec->addr += solib_aix_bss_data_overlap (abfd);
-      sec->endaddr = sec->addr + bfd_section_size (abfd, bfd_sect);
+      sec->endaddr = sec->addr + bfd_section_size (bfd_sect);
     }
   else
     {
       /* All other sections should not be relocated.  */
-      sec->addr = bfd_section_vma (abfd, bfd_sect);
-      sec->endaddr = sec->addr + bfd_section_size (abfd, bfd_sect);
+      sec->addr = bfd_section_vma (bfd_sect);
+      sec->endaddr = sec->addr + bfd_section_size (bfd_sect);
     }
 }
 
@@ -414,7 +412,7 @@ solib_aix_get_section_offsets (struct objfile *objfile,
 	= objfile->sections[objfile->sect_index_text].the_bfd_section;
 
       offsets->offsets[objfile->sect_index_text]
-	= info->text_addr + sect->filepos - bfd_section_vma (abfd, sect);
+	= info->text_addr + sect->filepos - bfd_section_vma (sect);
     }
 
   /* .data */
@@ -425,7 +423,7 @@ solib_aix_get_section_offsets (struct objfile *objfile,
 	= objfile->sections[objfile->sect_index_data].the_bfd_section;
 
       offsets->offsets[objfile->sect_index_data]
-	= info->data_addr - bfd_section_vma (abfd, sect);
+	= info->data_addr - bfd_section_vma (sect);
     }
 
   /* .bss
@@ -661,8 +659,7 @@ data_obj_section_from_objfile (struct objfile *objfile)
   struct obj_section *osect;
 
   ALL_OBJFILE_OSECTIONS (objfile, osect)
-    if (strcmp (bfd_section_name (objfile->obfd, osect->the_bfd_section),
-		".data") == 0)
+    if (strcmp (bfd_section_name (osect->the_bfd_section), ".data") == 0)
       return osect;
 
   return NULL;
diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c
index 59b195f491..70d6f2e314 100644
--- a/gdb/solib-dsbt.c
+++ b/gdb/solib-dsbt.c
@@ -438,12 +438,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr)
 	 such fallback to the file VMA address without the possibility of
 	 having the section relocated to its actual in-memory address.  */
 
-      dyn_addr = bfd_section_vma (abfd, sect);
+      dyn_addr = bfd_section_vma (sect);
     }
 
   /* Read in .dynamic from the BFD.  We will get the actual value
      from memory later.  */
-  sect_size = bfd_section_size (abfd, sect);
+  sect_size = bfd_section_size (sect);
   buf = bufstart = (gdb_byte *) alloca (sect_size);
   if (!bfd_get_section_contents (abfd, sect,
 				 buf, 0, sect_size))
@@ -807,7 +807,7 @@ enable_break (void)
 
       /* Read the contents of the .interp section into a local buffer;
 	 the contents specify the dynamic linker this program uses.  */
-      interp_sect_size = bfd_section_size (exec_bfd, interp_sect);
+      interp_sect_size = bfd_section_size (interp_sect);
       buf = (char *) alloca (interp_sect_size);
       bfd_get_section_contents (exec_bfd, interp_sect,
 				buf, 0, interp_sect_size);
@@ -839,24 +839,20 @@ enable_break (void)
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".text");
       if (interp_sect)
 	{
-	  info->interp_text_sect_low
-	    = bfd_section_vma (tmp_bfd.get (), interp_sect);
+	  info->interp_text_sect_low = bfd_section_vma (interp_sect);
 	  info->interp_text_sect_low
 	    += displacement_from_map (ldm, info->interp_text_sect_low);
 	  info->interp_text_sect_high
-	    = info->interp_text_sect_low
-	    + bfd_section_size (tmp_bfd.get (), interp_sect);
+	    = info->interp_text_sect_low + bfd_section_size (interp_sect);
 	}
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".plt");
       if (interp_sect)
 	{
-	  info->interp_plt_sect_low =
-	    bfd_section_vma (tmp_bfd.get (), interp_sect);
+	  info->interp_plt_sect_low = bfd_section_vma (interp_sect);
 	  info->interp_plt_sect_low
 	    += displacement_from_map (ldm, info->interp_plt_sect_low);
-	  info->interp_plt_sect_high =
-	    info->interp_plt_sect_low + bfd_section_size (tmp_bfd.get (),
-							  interp_sect);
+	  info->interp_plt_sect_high
+	    = info->interp_plt_sect_low + bfd_section_size (interp_sect);
 	}
 
       addr = gdb_bfd_lookup_symbol (tmp_bfd.get (), cmp_name,
diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c
index fdd4b34530..08fa576867 100644
--- a/gdb/solib-frv.c
+++ b/gdb/solib-frv.c
@@ -546,7 +546,7 @@ enable_break2 (void)
 
       /* Read the contents of the .interp section into a local buffer;
          the contents specify the dynamic linker this program uses.  */
-      interp_sect_size = bfd_section_size (exec_bfd, interp_sect);
+      interp_sect_size = bfd_section_size (interp_sect);
       buf = (char *) alloca (interp_sect_size);
       bfd_get_section_contents (exec_bfd, interp_sect,
 				buf, 0, interp_sect_size);
@@ -603,24 +603,20 @@ enable_break2 (void)
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".text");
       if (interp_sect)
 	{
-	  interp_text_sect_low
-	    = bfd_section_vma (tmp_bfd.get (), interp_sect);
+	  interp_text_sect_low = bfd_section_vma (interp_sect);
 	  interp_text_sect_low
 	    += displacement_from_map (ldm, interp_text_sect_low);
 	  interp_text_sect_high
-	    = interp_text_sect_low + bfd_section_size (tmp_bfd.get (),
-						       interp_sect);
+	    = interp_text_sect_low + bfd_section_size (interp_sect);
 	}
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".plt");
       if (interp_sect)
 	{
-	  interp_plt_sect_low =
-	    bfd_section_vma (tmp_bfd.get (), interp_sect);
+	  interp_plt_sect_low = bfd_section_vma (interp_sect);
 	  interp_plt_sect_low
 	    += displacement_from_map (ldm, interp_plt_sect_low);
 	  interp_plt_sect_high =
-	    interp_plt_sect_low + bfd_section_size (tmp_bfd.get (),
-						    interp_sect);
+	    interp_plt_sect_low + bfd_section_size (interp_sect);
 	}
 
       addr = gdb_bfd_lookup_symbol (tmp_bfd.get (), cmp_name, "_dl_debug_addr");
diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c
index c5e0acaf02..49e470adb6 100644
--- a/gdb/solib-spu.c
+++ b/gdb/solib-spu.c
@@ -364,7 +364,7 @@ spu_bfd_open (const char *pathname)
   spu_name = bfd_get_section_by_name (abfd.get (), ".note.spu_name");
   if (spu_name)
     {
-      int sect_size = bfd_section_size (abfd.get (), spu_name);
+      int sect_size = bfd_section_size (spu_name);
 
       if (sect_size > 20)
 	{
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index ffae26bfc5..e04fde942d 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -234,7 +234,7 @@ lm_addr_check (const struct so_list *so, bfd *abfd)
       if (dyninfo_sect == NULL)
 	goto set_addr;
 
-      dynaddr = bfd_section_vma (abfd, dyninfo_sect);
+      dynaddr = bfd_section_vma (dyninfo_sect);
 
       if (dynaddr + l_addr != l_dynaddr)
 	{
@@ -559,7 +559,7 @@ find_program_interpreter (void)
      interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
      if (interp_sect != NULL)
       {
-	int sect_size = bfd_section_size (exec_bfd, interp_sect);
+	int sect_size = bfd_section_size (interp_sect);
 
 	gdb::byte_vector buf (sect_size);
 	bfd_get_section_contents (exec_bfd, interp_sect, buf.data (), 0,
@@ -618,12 +618,12 @@ scan_dyntag (const int desired_dyntag, bfd *abfd, CORE_ADDR *ptr,
 	 such fallback to the file VMA address without the possibility of
 	 having the section relocated to its actual in-memory address.  */
 
-      dyn_addr = bfd_section_vma (abfd, sect);
+      dyn_addr = bfd_section_vma (sect);
     }
 
   /* Read in .dynamic from the BFD.  We will get the actual value
      from memory later.  */
-  sect_size = bfd_section_size (abfd, sect);
+  sect_size = bfd_section_size (sect);
   buf = bufstart = (gdb_byte *) alloca (sect_size);
   if (!bfd_get_section_contents (abfd, sect,
 				 buf, 0, sect_size))
@@ -2255,20 +2255,18 @@ enable_break (struct svr4_info *info, int from_tty)
 	  interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
 	  if (interp_sect)
 	    {
-	      info->interp_text_sect_low =
-		bfd_section_vma (tmp_bfd, interp_sect) + load_addr;
-	      info->interp_text_sect_high =
-		info->interp_text_sect_low
-		+ bfd_section_size (tmp_bfd, interp_sect);
+	      info->interp_text_sect_low
+		= bfd_section_vma (interp_sect) + load_addr;
+	      info->interp_text_sect_high
+		= info->interp_text_sect_low + bfd_section_size (interp_sect);
 	    }
 	  interp_sect = bfd_get_section_by_name (tmp_bfd, ".plt");
 	  if (interp_sect)
 	    {
-	      info->interp_plt_sect_low =
-		bfd_section_vma (tmp_bfd, interp_sect) + load_addr;
-	      info->interp_plt_sect_high =
-		info->interp_plt_sect_low
-		+ bfd_section_size (tmp_bfd, interp_sect);
+	      info->interp_plt_sect_low
+		= bfd_section_vma (interp_sect) + load_addr;
+	      info->interp_plt_sect_high
+		= info->interp_plt_sect_low + bfd_section_size (interp_sect);
 	    }
 
 	  svr4_create_solib_event_breakpoints (info, target_gdbarch (), sym_addr);
@@ -2392,20 +2390,18 @@ enable_break (struct svr4_info *info, int from_tty)
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".text");
       if (interp_sect)
 	{
-	  info->interp_text_sect_low =
-	    bfd_section_vma (tmp_bfd.get (), interp_sect) + load_addr;
-	  info->interp_text_sect_high =
-	    info->interp_text_sect_low
-	    + bfd_section_size (tmp_bfd.get (), interp_sect);
+	  info->interp_text_sect_low
+	    = bfd_section_vma (interp_sect) + load_addr;
+	  info->interp_text_sect_high
+	    = info->interp_text_sect_low + bfd_section_size (interp_sect);
 	}
       interp_sect = bfd_get_section_by_name (tmp_bfd.get (), ".plt");
       if (interp_sect)
 	{
-	  info->interp_plt_sect_low =
-	    bfd_section_vma (tmp_bfd.get (), interp_sect) + load_addr;
-	  info->interp_plt_sect_high =
-	    info->interp_plt_sect_low
-	    + bfd_section_size (tmp_bfd.get (), interp_sect);
+	  info->interp_plt_sect_low
+	    = bfd_section_vma (interp_sect) + load_addr;
+	  info->interp_plt_sect_high
+	    = info->interp_plt_sect_low + bfd_section_size (interp_sect);
 	}
 
       /* Now try to set a breakpoint in the dynamic linker.  */
@@ -2733,7 +2729,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
 		      gdb_byte *buf_filesz_p = (gdb_byte *) &phdrp->p_filesz;
 		      CORE_ADDR filesz;
 
-		      content2 = (bfd_get_section_flags (exec_bfd, plt2_asect)
+		      content2 = (bfd_section_flags (plt2_asect)
 				  & SEC_HAS_CONTENTS) != 0;
 
 		      filesz = extract_unsigned_integer (buf_filesz_p, 4,
@@ -2742,9 +2738,9 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
 		      /* PLT2_ASECT is from on-disk file (exec_bfd) while
 			 FILESZ is from the in-memory image.  */
 		      if (content2)
-			filesz += bfd_get_section_size (plt2_asect);
+			filesz += bfd_section_size (plt2_asect);
 		      else
-			filesz -= bfd_get_section_size (plt2_asect);
+			filesz -= bfd_section_size (plt2_asect);
 
 		      store_unsigned_integer (buf_filesz_p, 4, byte_order,
 					      filesz);
@@ -2867,7 +2863,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
 		      gdb_byte *buf_filesz_p = (gdb_byte *) &phdrp->p_filesz;
 		      CORE_ADDR filesz;
 
-		      content2 = (bfd_get_section_flags (exec_bfd, plt2_asect)
+		      content2 = (bfd_section_flags (plt2_asect)
 				  & SEC_HAS_CONTENTS) != 0;
 
 		      filesz = extract_unsigned_integer (buf_filesz_p, 8,
@@ -2876,9 +2872,9 @@ svr4_exec_displacement (CORE_ADDR *displacementp)
 		      /* PLT2_ASECT is from on-disk file (exec_bfd) while
 			 FILESZ is from the in-memory image.  */
 		      if (content2)
-			filesz += bfd_get_section_size (plt2_asect);
+			filesz += bfd_section_size (plt2_asect);
 		      else
-			filesz -= bfd_get_section_size (plt2_asect);
+			filesz -= bfd_section_size (plt2_asect);
 
 		      store_unsigned_integer (buf_filesz_p, 8, byte_order,
 					      filesz);
@@ -2972,8 +2968,7 @@ svr4_relocate_main_executable (void)
 
       for (asect = exec_bfd->sections; asect != NULL; asect = asect->next)
 	exec_set_section_address (bfd_get_filename (exec_bfd), asect->index,
-				  (bfd_section_vma (exec_bfd, asect)
-				   + displacement));
+				  bfd_section_vma (asect) + displacement);
     }
 }
 
diff --git a/gdb/solib-target.c b/gdb/solib-target.c
index 1ccbc27b2b..3fd180850c 100644
--- a/gdb/solib-target.c
+++ b/gdb/solib-target.c
@@ -323,7 +323,7 @@ solib_target_relocate_section_addresses (struct so_list *so,
 	  for (i = 0, sect = so->abfd->sections;
 	       sect != NULL;
 	       i++, sect = sect->next)
-	    if ((bfd_get_section_flags (so->abfd, sect) & SEC_ALLOC))
+	    if ((bfd_section_flags (sect) & SEC_ALLOC))
 	      num_alloc_sections++;
 
 	  if (num_alloc_sections != li->section_bases.size ())
@@ -341,14 +341,14 @@ Could not relocate shared library \"%s\": wrong number of ALLOC sections"),
 		   sect != NULL;
 		   i++, sect = sect->next)
 		{
-		  if (!(bfd_get_section_flags (so->abfd, sect) & SEC_ALLOC))
+		  if (!(bfd_section_flags (sect) & SEC_ALLOC))
 		    continue;
-		  if (bfd_section_size (so->abfd, sect) > 0)
+		  if (bfd_section_size (sect) > 0)
 		    {
 		      CORE_ADDR low, high;
 
 		      low = li->section_bases[i];
-		      high = low + bfd_section_size (so->abfd, sect) - 1;
+		      high = low + bfd_section_size (sect) - 1;
 
 		      if (low < so->addr_low)
 			so->addr_low = low;
diff --git a/gdb/spu-linux-nat.c b/gdb/spu-linux-nat.c
index 9dbb633734..635366b4f1 100644
--- a/gdb/spu-linux-nat.c
+++ b/gdb/spu-linux-nat.c
@@ -363,7 +363,7 @@ spu_bfd_open (ULONGEST addr)
   spu_name = bfd_get_section_by_name (nbfd.get (), ".note.spu_name");
   if (spu_name)
     {
-      int sect_size = bfd_section_size (nbfd.get (), spu_name);
+      int sect_size = bfd_section_size (spu_name);
       if (sect_size > 20)
 	{
 	  char *buf = (char *)alloca (sect_size - 20 + 1);
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
index d01f3af300..5360efb12f 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
@@ -1833,7 +1833,7 @@ spu_get_overlay_table (struct objfile *objfile)
 	continue;
 
       ALL_OBJFILE_OSECTIONS (objfile, osect)
-	if (vma == bfd_section_vma (objfile->obfd, osect->the_bfd_section)
+	if (vma == bfd_section_vma (osect->the_bfd_section)
 	    && pos == osect->the_bfd_section->filepos)
 	  {
 	    int ndx = osect - objfile->sections;
@@ -1921,9 +1921,9 @@ spu_overlay_new_objfile (struct objfile *objfile)
       int ndx = osect - objfile->sections;
 
       if (ovly_table[ndx].mapped_ptr == 0)
-	bfd_section_lma (obfd, bsect) = bfd_section_vma (obfd, bsect);
+	bfd_set_section_lma (bsect, bfd_section_vma (bsect));
       else
-	bfd_section_lma (obfd, bsect) = SPU_OVERLAY_LMA + bsect->filepos;
+	bfd_set_section_lma (bsect, SPU_OVERLAY_LMA + bsect->filepos);
     }
 }
 
diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c
index 05542c1391..82fb17ed16 100644
--- a/gdb/symfile-mem.c
+++ b/gdb/symfile-mem.c
@@ -111,9 +111,9 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
 
   section_addr_info sai;
   for (sec = nbfd->sections; sec != NULL; sec = sec->next)
-    if ((bfd_get_section_flags (nbfd, sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
-      sai.emplace_back (bfd_get_section_vma (nbfd, sec) + loadbase,
-			bfd_get_section_name (nbfd, sec),
+    if ((bfd_section_flags (sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
+      sai.emplace_back (bfd_section_vma (sec) + loadbase,
+			bfd_section_name (sec),
 			sec->index);
 
   if (from_tty)
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 5252c727aa..b914b05a17 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -200,15 +200,14 @@ find_lowest_section (bfd *abfd, asection *sect, void *obj)
 {
   asection **lowest = (asection **) obj;
 
-  if (0 == (bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD)))
+  if (0 == (bfd_section_flags (sect) & (SEC_ALLOC | SEC_LOAD)))
     return;
   if (!*lowest)
     *lowest = sect;		/* First loadable section */
-  else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
+  else if (bfd_section_vma (*lowest) > bfd_section_vma (sect))
     *lowest = sect;		/* A lower loadable section */
-  else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
-	   && (bfd_section_size (abfd, (*lowest))
-	       <= bfd_section_size (abfd, sect)))
+  else if (bfd_section_vma (*lowest) == bfd_section_vma (sect)
+	   && (bfd_section_size (*lowest) <= bfd_section_size (sect)))
     *lowest = sect;
 }
 
@@ -228,10 +227,10 @@ build_section_addr_info_from_section_table (const struct target_section *start,
       struct bfd_section *asect = stp->the_bfd_section;
       bfd *abfd = asect->owner;
 
-      if (bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)
+      if (bfd_section_flags (asect) & (SEC_ALLOC | SEC_LOAD)
 	  && sap.size () < end - start)
 	sap.emplace_back (stp->addr,
-			  bfd_section_name (abfd, asect),
+			  bfd_section_name (asect),
 			  gdb_bfd_section_index (abfd, asect));
     }
 
@@ -247,9 +246,9 @@ build_section_addr_info_from_bfd (bfd *abfd)
 
   section_addr_info sap;
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
-    if (bfd_get_section_flags (abfd, sec) & (SEC_ALLOC | SEC_LOAD))
-      sap.emplace_back (bfd_get_section_vma (abfd, sec),
-			bfd_get_section_name (abfd, sec),
+    if (bfd_section_flags (sec) & (SEC_ALLOC | SEC_LOAD))
+      sap.emplace_back (bfd_section_vma (sec),
+			bfd_section_name (sec),
 			gdb_bfd_section_index (abfd, sec));
 
   return sap;
@@ -353,10 +352,10 @@ place_section (bfd *abfd, asection *sect, void *obj)
   struct place_section_arg *arg = (struct place_section_arg *) obj;
   CORE_ADDR *offsets = arg->offsets->offsets, start_addr;
   int done;
-  ULONGEST align = ((ULONGEST) 1) << bfd_get_section_alignment (abfd, sect);
+  ULONGEST align = ((ULONGEST) 1) << bfd_section_alignment (sect);
 
   /* We are only interested in allocated sections.  */
-  if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+  if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
     return;
 
   /* If the user specified an offset, honor it.  */
@@ -380,7 +379,7 @@ place_section (bfd *abfd, asection *sect, void *obj)
 	  continue;
 
 	/* We can only conflict with allocated sections.  */
-	if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
+	if ((bfd_section_flags (cur_sec) & SEC_ALLOC) == 0)
 	  continue;
 
 	/* If the section offset is 0, either the section has not been placed
@@ -390,10 +389,10 @@ place_section (bfd *abfd, asection *sect, void *obj)
 	  continue;
 
 	/* If this section would overlap us, then we must move up.  */
-	if (start_addr + bfd_get_section_size (sect) > offsets[indx]
-	    && start_addr < offsets[indx] + bfd_get_section_size (cur_sec))
+	if (start_addr + bfd_section_size (sect) > offsets[indx]
+	    && start_addr < offsets[indx] + bfd_section_size (cur_sec))
 	  {
-	    start_addr = offsets[indx] + bfd_get_section_size (cur_sec);
+	    start_addr = offsets[indx] + bfd_section_size (cur_sec);
 	    start_addr = (start_addr + align - 1) & -align;
 	    done = 0;
 	    break;
@@ -405,7 +404,7 @@ place_section (bfd *abfd, asection *sect, void *obj)
   while (!done);
 
   offsets[gdb_bfd_section_index (abfd, sect)] = start_addr;
-  arg->lowest = start_addr + bfd_get_section_size (sect);
+  arg->lowest = start_addr + bfd_section_size (sect);
 }
 
 /* Store section_addr_info as prepared (made relative and with SECTINDEX
@@ -510,7 +509,7 @@ addr_info_make_relative (section_addr_info *addrs, bfd *abfd)
       lower_offset = 0;
     }
   else
-    lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect);
+    lower_offset = bfd_section_vma (lower_sect);
 
   /* Create ADDRS_TO_ABFD_ADDRS array to map the sections in ADDRS to sections
      in ABFD.  Section names are not unique - there can be multiple sections of
@@ -658,7 +657,7 @@ default_symfile_offsets (struct objfile *objfile,
       for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
 	/* We do not expect this to happen; just skip this step if the
 	   relocatable file has a section with an assigned VMA.  */
-	if (bfd_section_vma (abfd, cur_sec) != 0)
+	if (bfd_section_vma (cur_sec) != 0)
 	  break;
 
       if (cur_sec == NULL)
@@ -700,10 +699,10 @@ default_symfile_offsets (struct objfile *objfile,
 	  for (cur_sec = abfd->sections; cur_sec != NULL;
 	       cur_sec = cur_sec->next)
 	    {
-	      if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
+	      if ((bfd_section_flags (cur_sec) & SEC_ALLOC) == 0)
 		continue;
 
-	      bfd_set_section_vma (abfd, cur_sec, offsets[cur_sec->index]);
+	      bfd_set_section_vma (cur_sec, offsets[cur_sec->index]);
 	      exec_set_section_address (bfd_get_filename (abfd),
 					cur_sec->index,
 					offsets[cur_sec->index]);
@@ -740,7 +739,7 @@ default_symfile_segments (bfd *abfd)
   /* Make sure there is at least one loadable section in the file.  */
   for (sect = abfd->sections; sect != NULL; sect = sect->next)
     {
-      if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+      if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
 	continue;
 
       break;
@@ -748,8 +747,8 @@ default_symfile_segments (bfd *abfd)
   if (sect == NULL)
     return NULL;
 
-  low = bfd_get_section_vma (abfd, sect);
-  high = low + bfd_get_section_size (sect);
+  low = bfd_section_vma (sect);
+  high = low + bfd_section_size (sect);
 
   data = XCNEW (struct symfile_segment_data);
   data->num_segments = 1;
@@ -763,14 +762,14 @@ default_symfile_segments (bfd *abfd)
     {
       CORE_ADDR vma;
 
-      if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
+      if ((bfd_section_flags (sect) & SEC_ALLOC) == 0)
 	continue;
 
-      vma = bfd_get_section_vma (abfd, sect);
+      vma = bfd_section_vma (sect);
       if (vma < low)
 	low = vma;
-      if (vma + bfd_get_section_size (sect) > high)
-	high = vma + bfd_get_section_size (sect);
+      if (vma + bfd_section_size (sect) > high)
+	high = vma + bfd_section_size (sect);
 
       data->segment_info[i] = 1;
     }
@@ -872,9 +871,9 @@ init_entry_point_info (struct objfile *objfile)
 	{
 	  struct bfd_section *sect = osect->the_bfd_section;
 
-	  if (entry_point >= bfd_get_section_vma (objfile->obfd, sect)
-	      && entry_point < (bfd_get_section_vma (objfile->obfd, sect)
-				+ bfd_get_section_size (sect)))
+	  if (entry_point >= bfd_section_vma (sect)
+	      && entry_point < (bfd_section_vma (sect)
+				+ bfd_section_size (sect)))
 	    {
 	      ei->the_bfd_section_index
 		= gdb_bfd_section_index (objfile->obfd, sect);
@@ -1878,7 +1877,7 @@ add_section_size_callback (bfd *abfd, asection *asec, void *data)
 {
   bfd_size_type *sum = (bfd_size_type *) data;
 
-  *sum += bfd_get_section_size (asec);
+  *sum += bfd_section_size (asec);
 }
 
 /* Opaque data for load_progress.  */
@@ -2001,16 +2000,16 @@ static void
 load_section_callback (bfd *abfd, asection *asec, void *data)
 {
   struct load_section_data *args = (struct load_section_data *) data;
-  bfd_size_type size = bfd_get_section_size (asec);
-  const char *sect_name = bfd_get_section_name (abfd, asec);
+  bfd_size_type size = bfd_section_size (asec);
+  const char *sect_name = bfd_section_name (asec);
 
-  if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
+  if ((bfd_section_flags (asec) & SEC_LOAD) == 0)
     return;
 
   if (size == 0)
     return;
 
-  ULONGEST begin = bfd_section_lma (abfd, asec) + args->load_offset;
+  ULONGEST begin = bfd_section_lma (asec) + args->load_offset;
   ULONGEST end = begin + size;
   gdb_byte *buffer = (gdb_byte *) xmalloc (size);
   bfd_get_section_contents (abfd, asec, buffer, 0, size);
@@ -2988,9 +2987,8 @@ section_is_overlay (struct obj_section *section)
     {
       asection *bfd_section = section->the_bfd_section;
 
-      if (bfd_section_lma (abfd, bfd_section) != 0
-	  && bfd_section_lma (abfd, bfd_section)
-	     != bfd_section_vma (abfd, bfd_section))
+      if (bfd_section_lma (bfd_section) != 0
+	  && bfd_section_lma (bfd_section) != bfd_section_vma (bfd_section))
 	return 1;
     }
 
@@ -3061,15 +3059,14 @@ pc_in_unmapped_range (CORE_ADDR pc, struct obj_section *section)
 {
   if (section_is_overlay (section))
     {
-      bfd *abfd = section->objfile->obfd;
       asection *bfd_section = section->the_bfd_section;
 
       /* We assume the LMA is relocated by the same offset as the VMA.  */
-      bfd_vma size = bfd_get_section_size (bfd_section);
+      bfd_vma size = bfd_section_size (bfd_section);
       CORE_ADDR offset = obj_section_offset (section);
 
-      if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
-	  && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
+      if (bfd_section_lma (bfd_section) + offset <= pc
+	  && pc < bfd_section_lma (bfd_section) + offset + size)
 	return 1;
     }
 
@@ -3117,8 +3114,8 @@ overlay_unmapped_address (CORE_ADDR pc, struct obj_section *section)
     {
       asection *bfd_section = section->the_bfd_section;
 
-      return pc + bfd_section_lma (abfd, bfd_section)
-		- bfd_section_vma (abfd, bfd_section);
+      return (pc + bfd_section_lma (bfd_section)
+	      - bfd_section_vma (bfd_section));
     }
 
   return pc;
@@ -3135,8 +3132,8 @@ overlay_mapped_address (CORE_ADDR pc, struct obj_section *section)
     {
       asection *bfd_section = section->the_bfd_section;
 
-      return pc + bfd_section_vma (abfd, bfd_section)
-		- bfd_section_lma (abfd, bfd_section);
+      return (pc + bfd_section_vma (bfd_section)
+	      - bfd_section_lma (bfd_section));
     }
 
   return pc;
@@ -3241,10 +3238,10 @@ list_overlays_command (const char *args, int from_tty)
 	      bfd_vma lma, vma;
 	      int size;
 
-	      vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
-	      lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
-	      size = bfd_get_section_size (osect->the_bfd_section);
-	      name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
+	      vma = bfd_section_vma (osect->the_bfd_section);
+	      lma = bfd_section_lma (osect->the_bfd_section);
+	      size = bfd_section_size (osect->the_bfd_section);
+	      name = bfd_section_name (osect->the_bfd_section);
 
 	      printf_filtered ("Section %s, loaded at ", name);
 	      fputs_filtered (paddress (gdbarch, lma), gdb_stdout);
@@ -3282,8 +3279,7 @@ map_overlay_command (const char *args, int from_tty)
   /* First, find a section matching the user supplied argument.  */
   for (objfile *obj_file : current_program_space->objfiles ())
     ALL_OBJFILE_OSECTIONS (obj_file, sec)
-      if (!strcmp (bfd_section_name (obj_file->obfd, sec->the_bfd_section),
-		   args))
+      if (!strcmp (bfd_section_name (sec->the_bfd_section), args))
 	{
 	  /* Now, check to see if the section is an overlay.  */
 	  if (!section_is_overlay (sec))
@@ -3301,8 +3297,7 @@ map_overlay_command (const char *args, int from_tty)
 		{
 		  if (info_verbose)
 		    printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
-				       bfd_section_name (obj_file->obfd,
-							 sec2->the_bfd_section));
+				       bfd_section_name (sec2->the_bfd_section));
 		  sec2->ovly_mapped = 0; /* sec2 overlaps sec: unmap sec2.  */
 		}
 	  return;
@@ -3330,7 +3325,7 @@ unmap_overlay_command (const char *args, int from_tty)
   /* First, find a section matching the user supplied argument.  */
   for (objfile *objfile : current_program_space->objfiles ())
     ALL_OBJFILE_OSECTIONS (objfile, sec)
-      if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
+      if (!strcmp (bfd_section_name (sec->the_bfd_section), args))
 	{
 	  if (!sec->ovly_mapped)
 	    error (_("Section %s is not mapped"), args);
@@ -3539,14 +3534,14 @@ simple_overlay_update_1 (struct obj_section *osect)
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
   for (i = 0; i < cache_novlys; i++)
-    if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
-	&& cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
+    if (cache_ovly_table[i][VMA] == bfd_section_vma (bsect)
+	&& cache_ovly_table[i][LMA] == bfd_section_lma (bsect))
       {
 	read_target_long_array (cache_ovly_table_base + i * word_size,
 				(unsigned int *) cache_ovly_table[i],
 				4, word_size, byte_order);
-	if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
-	    && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
+	if (cache_ovly_table[i][VMA] == bfd_section_vma (bsect)
+	    && cache_ovly_table[i][LMA] == bfd_section_lma (bsect))
 	  {
 	    osect->ovly_mapped = cache_ovly_table[i][MAPPED];
 	    return 1;
@@ -3607,8 +3602,8 @@ simple_overlay_update (struct obj_section *osect)
 	  asection *bsect = osect->the_bfd_section;
 
 	  for (i = 0; i < cache_novlys; i++)
-	    if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
-		&& cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
+	    if (cache_ovly_table[i][VMA] == bfd_section_vma (bsect)
+		&& cache_ovly_table[i][LMA] == bfd_section_lma (bsect))
 	      { /* obj_section matches i'th entry in ovly_table.  */
 		osect->ovly_mapped = cache_ovly_table[i][MAPPED];
 		break;		/* finished with inner for loop: break out.  */
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 7666de390c..4699fd0920 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -244,8 +244,7 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
 	{
 	  if (section->the_bfd_section != NULL)
 	    fprintf_filtered (outfile, " section %s",
-			      bfd_section_name (objfile->obfd,
-						section->the_bfd_section));
+			      bfd_section_name (section->the_bfd_section));
 	  else
 	    fprintf_filtered (outfile, " spurious section %ld",
 			      (long) (section - objfile->sections));
@@ -525,8 +524,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 		      outfile);
       if (section)
 	fprintf_filtered (outfile, " section %s\n",
-			  bfd_section_name (section->the_bfd_section->owner,
-					    section->the_bfd_section));
+			  bfd_section_name (section->the_bfd_section));
       else
 	fprintf_filtered (outfile, "\n");
       return;
@@ -596,8 +594,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 			  outfile);
 	  if (section)
 	    fprintf_filtered (outfile, " section %s",
-			      bfd_section_name (section->the_bfd_section->owner,
-						section->the_bfd_section));
+			      bfd_section_name (section->the_bfd_section));
 	  break;
 
 	case LOC_REGISTER:
@@ -638,8 +635,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 			  outfile);
 	  if (section)
 	    fprintf_filtered (outfile, " section %s",
-			      bfd_section_name (section->the_bfd_section->owner,
-						section->the_bfd_section));
+			      bfd_section_name (section->the_bfd_section));
 	  break;
 
 	case LOC_BLOCK:
@@ -655,8 +651,7 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 			  outfile);
 	  if (section)
 	    fprintf_filtered (outfile, " section %s",
-			      bfd_section_name (section->the_bfd_section->owner,
-						section->the_bfd_section));
+			      bfd_section_name (section->the_bfd_section));
 	  break;
 
 	case LOC_COMPUTED:
diff --git a/gdb/symtab.c b/gdb/symtab.c
index e2edad4fb1..35eab08cb3 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1033,20 +1033,17 @@ matching_obj_sections (struct obj_section *obj_first,
      have the same size, address, and name.  We can't compare section indexes,
      which would be more reliable, because some sections may have been
      stripped.  */
-  if (bfd_get_section_size (first) != bfd_get_section_size (second))
+  if (bfd_section_size (first) != bfd_section_size (second))
     return 0;
 
   /* In-memory addresses may start at a different offset, relativize them.  */
-  if (bfd_get_section_vma (first->owner, first)
-      - bfd_get_start_address (first->owner)
-      != bfd_get_section_vma (second->owner, second)
-	 - bfd_get_start_address (second->owner))
+  if (bfd_section_vma (first) - bfd_get_start_address (first->owner)
+      != bfd_section_vma (second) - bfd_get_start_address (second->owner))
     return 0;
 
-  if (bfd_get_section_name (first->owner, first) == NULL
-      || bfd_get_section_name (second->owner, second) == NULL
-      || strcmp (bfd_get_section_name (first->owner, first),
-		 bfd_get_section_name (second->owner, second)) != 0)
+  if (bfd_section_name (first) == NULL
+      || bfd_section_name (second) == NULL
+      || strcmp (bfd_section_name (first), bfd_section_name (second)) != 0)
     return 0;
 
   /* Otherwise check that they are in corresponding objfiles.  */
diff --git a/gdb/target.c b/gdb/target.c
index 599e22a724..78bdfeb49a 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -1042,9 +1042,7 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
 
       secp = target_section_by_addr (ops, memaddr);
       if (secp != NULL
-	  && (bfd_get_section_flags (secp->the_bfd_section->owner,
-				     secp->the_bfd_section)
-	      & SEC_READONLY))
+	  && (bfd_section_flags (secp->the_bfd_section) & SEC_READONLY))
 	{
 	  table = target_get_section_table (ops);
 	  return section_table_xfer_memory_partial (readbuf, writebuf,
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index c4fde913af..26030e0a92 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -794,8 +794,7 @@ windows_make_so (const char *name, LPVOID load_addr)
 	 file header and the section alignment.  */
       cygwin_load_start = (CORE_ADDR) (uintptr_t) ((char *)
 						   load_addr + 0x1000);
-      cygwin_load_end = cygwin_load_start + bfd_section_size (abfd.get (),
-							      text);
+      cygwin_load_end = cygwin_load_start + bfd_section_size (text);
     }
 #endif
 
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index a17031a110..2fa2706653 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -267,9 +267,9 @@ find_targ_sec (bfd *abfd, asection *sect, void *obj)
   if (sect->target_index == args->targ_index)
     {
       /* This is the section.  Figure out what SECT_OFF_* code it is.  */
-      if (bfd_get_section_flags (abfd, sect) & SEC_CODE)
+      if (bfd_section_flags (sect) & SEC_CODE)
 	*args->resultp = SECT_OFF_TEXT (objfile);
-      else if (bfd_get_section_flags (abfd, sect) & SEC_LOAD)
+      else if (bfd_section_flags (sect) & SEC_LOAD)
 	*args->resultp = SECT_OFF_DATA (objfile);
       else
 	*args->resultp = gdb_bfd_section_index (abfd, sect);
@@ -2354,7 +2354,7 @@ scan_xcoff_symtab (minimal_symbol_reader &reader,
 		       section.  */
 		    bfd_sect = secnum_to_bfd_section (symbol.n_scnum, objfile);
 		    if (bfd_sect)
-		      toc_offset -= bfd_section_vma (objfile->obfd, bfd_sect);
+		      toc_offset -= bfd_section_vma (bfd_sect);
 		    break;
 
 		  case XMC_TC:
@@ -2952,7 +2952,7 @@ xcoff_initial_scan (struct objfile *objfile, symfile_add_flags symfile_flags)
 	  secp = bfd_get_section_by_name (abfd, ".debug");
 	  if (secp)
 	    {
-	      length = bfd_section_size (abfd, secp);
+	      length = bfd_section_size (secp);
 	      if (length)
 		{
 		  debugsec
@@ -3029,8 +3029,7 @@ xcoff_symfile_offsets (struct objfile *objfile,
   if (objfile->num_sections == 0)
     return; /* Is that even possible?  Better safe than sorry.  */
 
-  first_section_name
-    = bfd_section_name (objfile->obfd, objfile->sections[0].the_bfd_section);
+  first_section_name = bfd_section_name (objfile->sections[0].the_bfd_section);
 
   if (objfile->sect_index_text == 0
       && strcmp (first_section_name, ".text") != 0)
@@ -3089,7 +3088,7 @@ xcoff_get_core_n_import_files (bfd *abfd)
   if (sect == NULL)
     return -1;  /* Not a core file.  */
 
-  for (offset = 0; offset < bfd_get_section_size (sect);)
+  for (offset = 0; offset < bfd_section_size (sect);)
     {
       int next;
 
diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index a2ebab5e04..84285aa30d 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* corefile.c, * symtab.c: Update throughout for bfd section
+	macro and function changes.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* Makefile.in: Re-generate.
diff --git a/gprof/corefile.c b/gprof/corefile.c
index 3f350f5f6b..ba6fd9c54f 100644
--- a/gprof/corefile.c
+++ b/gprof/corefile.c
@@ -271,17 +271,17 @@ core_init (const char * aout_name)
 void
 core_get_text_space (bfd *cbfd)
 {
-  core_text_space = malloc (bfd_get_section_size (core_text_sect));
+  core_text_space = malloc (bfd_section_size (core_text_sect));
 
   if (!core_text_space)
     {
       fprintf (stderr, _("%s: ran out room for %lu bytes of text space\n"),
-	       whoami, (unsigned long) bfd_get_section_size (core_text_sect));
+	       whoami, (unsigned long) bfd_section_size (core_text_sect));
       done (1);
     }
 
   if (!bfd_get_section_contents (cbfd, core_text_sect, core_text_space,
-				 0, bfd_get_section_size (core_text_sect)))
+				 0, bfd_section_size (core_text_sect)))
     {
       bfd_perror ("bfd_get_section_contents");
       free (core_text_space);
@@ -675,7 +675,7 @@ core_create_function_syms (void)
       sym_sec = core_syms[i]->section;
       symtab.limit->addr = core_syms[i]->value;
       if (sym_sec)
-	symtab.limit->addr += bfd_get_section_vma (sym_sec->owner, sym_sec);
+	symtab.limit->addr += bfd_section_vma (sym_sec);
 
       if (found)
 	{
@@ -734,8 +734,8 @@ core_create_function_syms (void)
 	 section containing the symbol, if available.  */
       min_vma = MIN (symtab.limit->addr, min_vma);
       if (sym_sec)
-	max_vma = MAX (bfd_get_section_vma (sym_sec->owner, sym_sec)
-		       + bfd_section_size (sym_sec->owner, sym_sec) - 1,
+	max_vma = MAX (bfd_section_vma (sym_sec)
+		       + bfd_section_size (sym_sec) - 1,
 		       max_vma);
       else
 	max_vma = MAX (symtab.limit->addr, max_vma);
@@ -787,7 +787,7 @@ core_create_line_syms (void)
   ltab.len = 0;
   prev_line_num = 0;
 
-  vma_high = core_text_sect->vma + bfd_get_section_size (core_text_sect);
+  vma_high = core_text_sect->vma + bfd_section_size (core_text_sect);
   for (vma = core_text_sect->vma; vma < vma_high; vma += min_insn_size)
     {
       unsigned int len;
diff --git a/gprof/symtab.c b/gprof/symtab.c
index 70eb41573b..eb63aa926a 100644
--- a/gprof/symtab.c
+++ b/gprof/symtab.c
@@ -149,7 +149,7 @@ symtab_finalize (Sym_Table *tab)
 
   if (tab->len > 0 && dst[-1].end_addr == 0)
     dst[-1].end_addr
-      = core_text_sect->vma + bfd_get_section_size (core_text_sect) - 1;
+      = core_text_sect->vma + bfd_section_size (core_text_sect) - 1;
 
   DBG (AOUTDEBUG | IDDEBUG,
        printf ("[symtab_finalize]: removed %d duplicate entries\n",
diff --git a/ld/ChangeLog b/ld/ChangeLog
index e8f9ed7365..2abb558b9c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* ldcref.c, * ldctor.c, * ldelf.c, * ldlang.c, * pe-dll.c,
+	* emultempl/aarch64elf.em, * emultempl/aix.em,
+	* emultempl/armcoff.em, * emultempl/armelf.em,
+	* emultempl/cr16elf.em, * emultempl/cskyelf.em,
+	* emultempl/m68hc1xelf.em, * emultempl/m68kelf.em,
+	* emultempl/mipself.em, * emultempl/mmix-elfnmmo.em,
+	* emultempl/mmo.em, * emultempl/msp430.em,
+	* emultempl/nios2elf.em, * emultempl/pe.em, * emultempl/pep.em,
+	* emultempl/ppc64elf.em, * emultempl/xtensaelf.em: Update
+	throughout for bfd section macro and function changes.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* ldcref.c (check_reloc_refs): Update bfd_get_section to
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index 7ffb17e7a9..bd5c888782 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -178,7 +178,7 @@ elf${ELFSIZE}_aarch64_add_stub_section (const char *stub_sec_name,
 
   /* Long branch stubs contain a 64-bit address, so the section requires
      8 byte alignment.  */
-  bfd_set_section_alignment (stub_file->the_bfd, stub_sec, 3);
+  bfd_set_section_alignment (stub_sec, 3);
 
   output_section = input_section->output_section;
   os = lang_output_section_get (output_section);
diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
index 8151a9d5e9..1ce8376a52 100644
--- a/ld/emultempl/aix.em
+++ b/ld/emultempl/aix.em
@@ -895,7 +895,7 @@ gld${EMULATION_NAME}_before_allocation (void)
       if (is == NULL)
 	{
 	  einfo (_("%F%P: can't find %s in output section\n"),
-		 bfd_get_section_name (sec->owner, sec));
+		 bfd_section_name (sec));
 	}
 
       /* Now figure out where the section should go.  */
diff --git a/ld/emultempl/armcoff.em b/ld/emultempl/armcoff.em
index 20122aa03f..180e1faa27 100644
--- a/ld/emultempl/armcoff.em
+++ b/ld/emultempl/armcoff.em
@@ -176,8 +176,7 @@ gld${EMULATION_NAME}_finish (void)
 	  /* Special procesing is required for a Thumb entry symbol.  The
 	     bottom bit of its address must be set.  */
 	  val = (h->u.def.value
-		 + bfd_get_section_vma (link_info.output_bfd,
-					h->u.def.section->output_section)
+		 + bfd_section_vma (h->u.def.section->output_section)
 		 + h->u.def.section->output_offset);
 
 	  val |= 1;
diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
index bb32bbbda4..0cbfcc70b3 100644
--- a/ld/emultempl/armelf.em
+++ b/ld/emultempl/armelf.em
@@ -232,7 +232,7 @@ elf32_arm_add_stub_section (const char * stub_sec_name,
   if (stub_sec == NULL)
     goto err_ret;
 
-  bfd_set_section_alignment (stub_file->the_bfd, stub_sec, alignment_power);
+  bfd_set_section_alignment (stub_sec, alignment_power);
 
   os = lang_output_section_get (output_section);
 
@@ -478,8 +478,7 @@ gld${EMULATION_NAME}_finish (void)
       /* Special procesing is required for a Thumb entry symbol.  The
 	 bottom bit of its address must be set.  */
       val = (h->u.def.value
-	     + bfd_get_section_vma (link_info.output_bfd,
-				    h->u.def.section->output_section)
+	     + bfd_section_vma (h->u.def.section->output_section)
 	     + h->u.def.section->output_offset);
 
       val |= 1;
diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
index 197f0c6391..9cdd356e35 100644
--- a/ld/emultempl/cr16elf.em
+++ b/ld/emultempl/cr16elf.em
@@ -75,14 +75,12 @@ cr16_elf_after_open (void)
 
 	      relsec = bfd_make_section (abfd, ".emreloc");
 	      if (relsec == NULL
-		  || ! bfd_set_section_flags (abfd, relsec,
-					      (SEC_ALLOC
-					       | SEC_LOAD
-					       | SEC_HAS_CONTENTS
-					       | SEC_IN_MEMORY))
-		  || ! bfd_set_section_alignment (abfd, relsec, 2)
-		  || ! bfd_set_section_size (abfd, relsec,
-					     datasec->reloc_count * 8))
+		  || !bfd_set_section_flags (relsec, (SEC_ALLOC
+						      | SEC_LOAD
+						      | SEC_HAS_CONTENTS
+						      | SEC_IN_MEMORY))
+		  || !bfd_set_section_alignment (relsec, 2)
+		  || !bfd_set_section_size (relsec, datasec->reloc_count * 8))
 		einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
 	    }
 
@@ -99,11 +97,11 @@ cr16_elf_after_open (void)
 static void
 check_sections (bfd *abfd, asection *sec, void *datasec)
 {
-  if ((strncmp (bfd_get_section_name (abfd, sec), ".data.rel", 9) == 0)
+  if ((strncmp (bfd_section_name (sec), ".data.rel", 9) == 0)
       && sec != datasec
       && sec->reloc_count == 0 )
     einfo (_("%X%P: %pB: section %s has relocs; can not use --embedded-relocs\n"),
-	   abfd, bfd_get_section_name (abfd, sec));
+	   abfd, bfd_section_name (sec));
 }
 
 static void
diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
index 10d037c80d..9184808655 100644
--- a/ld/emultempl/cskyelf.em
+++ b/ld/emultempl/cskyelf.em
@@ -180,10 +180,10 @@ elf32_csky_add_stub_section (const char *stub_sec_name,
   if (stub_sec == NULL)
     goto err_ret;
 
-  bfd_set_section_alignment (stub_file->the_bfd, stub_sec, 3);
+  bfd_set_section_alignment (stub_sec, 3);
 
   output_section = input_section->output_section;
-  secname = bfd_get_section_name (output_section->owner, output_section);
+  secname = bfd_section_name (output_section);
   os = lang_output_section_find (secname);
 
   info.input_section = input_section;
diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em
index b55989e0e6..b63e4e92d9 100644
--- a/ld/emultempl/m68hc1xelf.em
+++ b/ld/emultempl/m68hc1xelf.em
@@ -212,10 +212,8 @@ hook_in_stub (struct hook_stub_info *info, lang_statement_union_type **lp)
 
 	case lang_input_section_enum:
 	  if (l->input_section.section == info->input_section
-	      || strcmp (bfd_get_section_name (l->input_section.section->owner,
-					       l->input_section.section),
-			 bfd_get_section_name (info->input_section->owner,
-					       info->input_section)) == 0)
+	      || strcmp (bfd_section_name (l->input_section.section),
+			 bfd_section_name (info->input_section)) == 0)
 	    {
 	      /* We've found our section.  Insert the stub immediately
 		 before its associated input section.  */
diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
index add8fd21dc..c8d9eea934 100644
--- a/ld/emultempl/m68kelf.em
+++ b/ld/emultempl/m68kelf.em
@@ -102,9 +102,8 @@ m68k_elf_after_open (void)
 						    | SEC_HAS_CONTENTS
 						    | SEC_IN_MEMORY));
 	      if (relsec == NULL
-		  || ! bfd_set_section_alignment (abfd, relsec, 2)
-		  || ! bfd_set_section_size (abfd, relsec,
-					     datasec->reloc_count * 12))
+		  || !bfd_set_section_alignment (relsec, 2)
+		  || !bfd_set_section_size (relsec, datasec->reloc_count * 12))
 		einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
 	    }
 
@@ -123,11 +122,11 @@ m68k_elf_after_open (void)
 static void
 check_sections (bfd *abfd, asection *sec, void *datasec)
 {
-  if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
+  if ((bfd_section_flags (sec) & SEC_DATA)
       && sec != datasec
       && sec->reloc_count != 0)
     einfo (_("%X%P: %pB: section %s has relocs; can not use --embedded-relocs\n"),
-	   abfd, bfd_get_section_name (abfd, sec));
+	   abfd, bfd_section_name (sec));
 }
 
 #endif /* SUPPORT_EMBEDDED_RELOCS */
diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em
index 108d33faf3..48944d5309 100644
--- a/ld/emultempl/mipself.em
+++ b/ld/emultempl/mipself.em
@@ -168,7 +168,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section,
   /* Set the flags.  */
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
 	   | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_KEEP);
-  if (!bfd_set_section_flags (stub_bfd, stub_sec, flags))
+  if (!bfd_set_section_flags (stub_sec, flags))
     goto err_ret;
 
   os = lang_output_section_get (output_section);
diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
index 736988b0cf..7cb4087a93 100644
--- a/ld/emultempl/mmix-elfnmmo.em
+++ b/ld/emultempl/mmix-elfnmmo.em
@@ -103,14 +103,14 @@ mmix_after_allocation (void)
     }
 
   /* Set vma to correspond to first such register number * 8.  */
-  bfd_set_section_vma (link_info.output_bfd, sec, (bfd_vma) regvma);
+  bfd_set_section_vma (sec, (bfd_vma) regvma);
 
   /* Simplify symbol output for the register section (without contents;
      created for register symbols) by setting the output offset to 0.
      This section is only present when there are register symbols.  */
   sec = bfd_get_section_by_name (link_info.output_bfd, MMIX_REG_SECTION_NAME);
   if (sec != NULL)
-    bfd_set_section_vma (sec->owner, sec, 0);
+    bfd_set_section_vma (sec, 0);
 
   if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info))
     {
diff --git a/ld/emultempl/mmo.em b/ld/emultempl/mmo.em
index 62ee144416..fff48942bc 100644
--- a/ld/emultempl/mmo.em
+++ b/ld/emultempl/mmo.em
@@ -192,10 +192,10 @@ mmo_place_orphan (asection *s,
    paper over the bug similarly.  */
 
 static void
-mmo_wipe_sec_reloc_flag (bfd *abfd, asection *sec, void *ptr ATTRIBUTE_UNUSED)
+mmo_wipe_sec_reloc_flag (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
+			 void *ptr ATTRIBUTE_UNUSED)
 {
-  bfd_set_section_flags (abfd, sec,
-			 bfd_get_section_flags (abfd, sec) & ~SEC_RELOC);
+  bfd_set_section_flags (sec, bfd_section_flags (sec) & ~SEC_RELOC);
 }
 
 /* Iterate with bfd_map_over_sections over mmo_wipe_sec_reloc_flag... */
diff --git a/ld/emultempl/msp430.em b/ld/emultempl/msp430.em
index 765a9ea288..8f25489528 100644
--- a/ld/emultempl/msp430.em
+++ b/ld/emultempl/msp430.em
@@ -382,10 +382,10 @@ change_output_section (lang_statement_union_type ** head,
 }
 
 static void
-add_region_prefix (bfd *abfd, asection *s,
-		   ATTRIBUTE_UNUSED void *unused)
+add_region_prefix (bfd *abfd ATTRIBUTE_UNUSED, asection *s,
+		   void *unused ATTRIBUTE_UNUSED)
 {
-  const char *curr_name = bfd_get_section_name (abfd, s);
+  const char *curr_name = bfd_section_name (s);
   int region = REGION_NONE;
 
   if (strncmp (curr_name, ".text", 5) == 0)
@@ -404,10 +404,10 @@ add_region_prefix (bfd *abfd, asection *s,
     case REGION_NONE:
       break;
     case REGION_UPPER:
-      bfd_rename_section (abfd, s, concat (".upper", curr_name, NULL));
+      bfd_rename_section (s, concat (".upper", curr_name, NULL));
       break;
     case REGION_LOWER:
-      bfd_rename_section (abfd, s, concat (".lower", curr_name, NULL));
+      bfd_rename_section (s, concat (".lower", curr_name, NULL));
       break;
     case REGION_EITHER:
       s->name = concat (".either", curr_name, NULL);
@@ -538,7 +538,8 @@ gld${EMULATION_NAME}_handle_option (int optc)
 }
 
 static void
-eval_upper_either_sections (bfd *abfd, asection *s, void *data)
+eval_upper_either_sections (bfd *abfd ATTRIBUTE_UNUSED,
+			    asection *s, void *data)
 {
   const char * base_sec_name;
   const char * curr_name;
@@ -560,7 +561,7 @@ eval_upper_either_sections (bfd *abfd, asection *s, void *data)
     return;
 
   base_sec_name = (const char *) data;
-  curr_name = bfd_get_section_name (abfd, s);
+  curr_name = bfd_section_name (s);
 
   /* Only concerned with .either input sections in the upper output section.  */
   either_name = concat (".either", base_sec_name, NULL);
@@ -620,7 +621,8 @@ eval_upper_either_sections (bfd *abfd, asection *s, void *data)
 }
 
 static void
-eval_lower_either_sections (bfd *abfd, asection *s, void *data)
+eval_lower_either_sections (bfd *abfd ATTRIBUTE_UNUSED,
+			    asection *s, void *data)
 {
   const char * base_sec_name;
   const char * curr_name;
@@ -640,7 +642,7 @@ eval_lower_either_sections (bfd *abfd, asection *s, void *data)
     return;
 
   base_sec_name = (const char *) data;
-  curr_name = bfd_get_section_name (abfd, s);
+  curr_name = bfd_section_name (s);
 
   /* Only concerned with .either input sections in the lower or "default"
      output section i.e. not in the upper output section.  */
diff --git a/ld/emultempl/nios2elf.em b/ld/emultempl/nios2elf.em
index 02eb06fb57..816da6ca72 100644
--- a/ld/emultempl/nios2elf.em
+++ b/ld/emultempl/nios2elf.em
@@ -181,7 +181,7 @@ nios2elf_add_stub_section (const char *stub_sec_name, asection *input_section,
     goto err_ret;
 
   output_section = input_section->output_section;
-  secname = bfd_get_section_name (output_section->owner, output_section);
+  secname = bfd_section_name (output_section);
   os = lang_output_section_find (secname);
 
   info.input_section = input_section;
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index 2e78f26ad8..70f771cebd 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -1920,8 +1920,7 @@ gld_${EMULATION_NAME}_finish (void)
 	  /* Special procesing is required for a Thumb entry symbol.  The
 	     bottom bit of its address must be set.  */
 	  val = (h->u.def.value
-		 + bfd_get_section_vma (link_info.output_bfd,
-					h->u.def.section->output_section)
+		 + bfd_section_vma (h->u.def.section->output_section)
 		 + h->u.def.section->output_offset);
 
 	  val |= 1;
@@ -2182,7 +2181,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
 
       ls = &(*pl)->input_section;
 
-      lname = bfd_get_section_name (ls->section->owner, ls->section);
+      lname = bfd_section_name (ls->section);
       if (strchr (lname, '\$') != NULL
 	  && (dollar == NULL || strcmp (orig_secname, lname) < 0))
 	break;
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 601ef11c20..6d150d211a 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -1979,7 +1979,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
 
       ls = &(*pl)->input_section;
 
-      lname = bfd_get_section_name (ls->section->owner, ls->section);
+      lname = bfd_section_name (ls->section);
       if (strchr (lname, '\$') != NULL
 	  && (dollar == NULL || strcmp (orig_secname, lname) < 0))
 	break;
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index 6df2a20cfc..ee71f256c6 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -421,12 +421,11 @@ ppc_add_stub_section (const char *stub_sec_name, asection *input_section)
   stub_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd,
 						 stub_sec_name, flags);
   if (stub_sec == NULL
-      || !bfd_set_section_alignment (stub_file->the_bfd, stub_sec,
-				     (params.plt_stub_align > 5
-				      ? params.plt_stub_align
-				      : params.plt_stub_align < -5
-				      ? -params.plt_stub_align
-				      : 5)))
+      || !bfd_set_section_alignment (stub_sec, (params.plt_stub_align > 5
+						? params.plt_stub_align
+						: params.plt_stub_align < -5
+						? -params.plt_stub_align
+						: 5)))
     goto err_ret;
 
   output_section = input_section->output_section;
diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
index c826363f5c..569df615ce 100644
--- a/ld/emultempl/xtensaelf.em
+++ b/ld/emultempl/xtensaelf.em
@@ -127,9 +127,9 @@ replace_insn_sec_with_prop_sec (bfd *abfd,
   /* Create a property table section for it.  */
   prop_sec_name = strdup (prop_sec_name);
   prop_sec = bfd_make_section_with_flags
-    (abfd, prop_sec_name, bfd_get_section_flags (abfd, insn_sec));
+    (abfd, prop_sec_name, bfd_section_flags (insn_sec));
   if (prop_sec == NULL
-      || ! bfd_set_section_alignment (abfd, prop_sec, 2))
+      || !bfd_set_section_alignment (prop_sec, 2))
     {
       *error_message = _("could not create new section");
       goto cleanup;
@@ -247,7 +247,7 @@ replace_instruction_table_sections (bfd *abfd, asection *sec)
   char *owned_prop_sec_name = NULL;
   const char *sec_name;
 
-  sec_name = bfd_get_section_name (abfd, sec);
+  sec_name = bfd_section_name (sec);
   if (strcmp (sec_name, INSN_SEC_BASE_NAME) == 0)
     {
       insn_sec_name = INSN_SEC_BASE_NAME;
@@ -1293,10 +1293,10 @@ static bfd_boolean
 is_inconsistent_linkonce_section (asection *sec)
 {
   bfd *abfd = sec->owner;
-  const char *sec_name = bfd_get_section_name (abfd, sec);
+  const char *sec_name = bfd_section_name (sec);
   const char *name;
 
-  if ((bfd_get_section_flags (abfd, sec) & SEC_LINK_ONCE) == 0
+  if ((bfd_section_flags (sec) & SEC_LINK_ONCE) == 0
       || strncmp (sec_name, ".gnu.linkonce.", linkonce_len) != 0)
     return FALSE;
 
diff --git a/ld/ldcref.c b/ld/ldcref.c
index fff852a89a..576cf7e388 100644
--- a/ld/ldcref.c
+++ b/ld/ldcref.c
@@ -574,7 +574,7 @@ check_nocrossref (struct cref_hash_entry *h, void *ignore ATTRIBUTE_UNUSED)
   defsec = hl->u.def.section->output_section;
   if (defsec == NULL)
     return TRUE;
-  defsecname = bfd_get_section_name (defsec->owner, defsec);
+  defsecname = bfd_section_name (defsec);
 
   for (ncrs = nocrossref_list; ncrs != NULL; ncrs = ncrs->next)
     for (ncr = ncrs->list; ncr != NULL; ncr = ncr->next)
@@ -658,10 +658,10 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
   arelent **p, **pend;
 
   outsec = sec->output_section;
-  outsecname = bfd_get_section_name (outsec->owner, outsec);
+  outsecname = bfd_section_name (outsec);
 
   outdefsec = info->defsec->output_section;
-  outdefsecname = bfd_get_section_name (outdefsec->owner, outdefsec);
+  outdefsecname = bfd_section_name (outdefsec);
 
   /* The section where the symbol is defined is permitted.  */
   if (strcmp (outsecname, outdefsecname) == 0)
diff --git a/ld/ldctor.c b/ld/ldctor.c
index 608ca6c1f3..a6a6aa9e1e 100644
--- a/ld/ldctor.c
+++ b/ld/ldctor.c
@@ -293,7 +293,7 @@ ldctor_build_sets (void)
 	      /* See PR 20911 for a reproducer.  */
 	      if (p->elements->section->owner == NULL)
 		einfo (_("%X%P: special section %s does not support reloc %s for set %s\n"),
-		       bfd_get_section_name (link_info.output_bfd, p->elements->section),
+		       bfd_section_name (p->elements->section),
 		       bfd_get_reloc_code_name (p->reloc),
 		       p->h->root.string);
 	      else
diff --git a/ld/ldelf.c b/ld/ldelf.c
index 3b0f3ada8c..8d4a2e58a1 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -1065,7 +1065,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
 
 	  for (s = abfd->sections; s && type < COMPACT_EH_HDR; s = s->next)
 	    {
-	      const char *name = bfd_get_section_name (abfd, s);
+	      const char *name = bfd_section_name (s);
 
 	      if (bfd_is_abs_section (s->output_section))
 		continue;
@@ -1112,7 +1112,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
 					   bed->dynamic_sec_flags
 					   | SEC_READONLY);
 	  if (s != NULL
-	      && bfd_set_section_alignment (elfbfd, s, 2))
+	      && bfd_set_section_alignment (s, 2))
 	    {
 	      htab->eh_info.hdr_sec = s;
 	      warn_eh_frame = FALSE;
@@ -1382,7 +1382,7 @@ ldelf_setup_build_id (bfd *ibfd)
   flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
   s = bfd_make_section_with_flags (ibfd, ".note.gnu.build-id", flags);
-  if (s != NULL && bfd_set_section_alignment (ibfd, s, 2))
+  if (s != NULL && bfd_set_section_alignment (s, 2))
     {
       struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
       t->o->build_id.after_write_object_contents = &write_build_id;
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 76e862a640..a3843623fb 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -319,7 +319,7 @@ walk_wild_section_general (lang_wild_statement_type *ptr,
 
 	  if (sec->spec.name != NULL)
 	    {
-	      const char *sname = bfd_get_section_name (file->the_bfd, s);
+	      const char *sname = bfd_section_name (s);
 
 	      skip = name_match (sec->spec.name, sname) != 0;
 	    }
@@ -452,10 +452,8 @@ compare_section (sort_type sort, asection *asec, asection *bsec)
       abort ();
 
     case by_init_priority:
-      ainit_priority
-	= get_init_priority (bfd_get_section_name (asec->owner, asec));
-      binit_priority
-	= get_init_priority (bfd_get_section_name (bsec->owner, bsec));
+      ainit_priority = get_init_priority (bfd_section_name (asec));
+      binit_priority = get_init_priority (bfd_section_name (bsec));
       if (ainit_priority == 0 || binit_priority == 0)
 	goto sort_by_name;
       ret = ainit_priority - binit_priority;
@@ -465,28 +463,24 @@ compare_section (sort_type sort, asection *asec, asection *bsec)
 	goto sort_by_name;
 
     case by_alignment_name:
-      ret = (bfd_section_alignment (bsec->owner, bsec)
-	     - bfd_section_alignment (asec->owner, asec));
+      ret = bfd_section_alignment (bsec) - bfd_section_alignment (asec);
       if (ret)
 	break;
       /* Fall through.  */
 
     case by_name:
 sort_by_name:
-      ret = strcmp (bfd_get_section_name (asec->owner, asec),
-		    bfd_get_section_name (bsec->owner, bsec));
+      ret = strcmp (bfd_section_name (asec), bfd_section_name (bsec));
       break;
 
     case by_name_alignment:
-      ret = strcmp (bfd_get_section_name (asec->owner, asec),
-		    bfd_get_section_name (bsec->owner, bsec));
+      ret = strcmp (bfd_section_name (asec), bfd_section_name (bsec));
       if (ret)
 	break;
       /* Fall through.  */
 
     case by_alignment:
-      ret = (bfd_section_alignment (bsec->owner, bsec)
-	     - bfd_section_alignment (asec->owner, asec));
+      ret = bfd_section_alignment (bsec) - bfd_section_alignment (asec);
       break;
     }
 
@@ -610,7 +604,7 @@ walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
 
   for (s = file->the_bfd->sections; s != NULL; s = s->next)
     {
-      const char *sname = bfd_get_section_name (file->the_bfd, s);
+      const char *sname = bfd_section_name (s);
       bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
 
       if (!skip)
@@ -647,7 +641,7 @@ walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
 	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
       else
 	{
-	  const char *sname = bfd_get_section_name (file->the_bfd, s);
+	  const char *sname = bfd_section_name (s);
 	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
 
 	  if (!skip)
@@ -682,7 +676,7 @@ walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
 	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
       else
 	{
-	  const char *sname = bfd_get_section_name (file->the_bfd, s);
+	  const char *sname = bfd_section_name (s);
 	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
 
 	  if (!skip)
@@ -734,7 +728,7 @@ walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
 	  walk_wild_consider_section (ptr, file, s, sec1, callback, data);
 	else
 	  {
-	    const char *sname = bfd_get_section_name (file->the_bfd, s);
+	    const char *sname = bfd_section_name (s);
 	    bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
 						   sname);
 
@@ -5314,9 +5308,8 @@ lang_size_sections_1
 			   " section %s\n"), os->name);
 
 		input = os->children.head->input_section.section;
-		bfd_set_section_vma (os->bfd_section->owner,
-				     os->bfd_section,
-				     bfd_section_vma (input->owner, input));
+		bfd_set_section_vma (os->bfd_section,
+				     bfd_section_vma (input));
 		if (!(os->bfd_section->flags & SEC_FIXED_SIZE))
 		  os->bfd_section->size = input->size;
 		break;
@@ -5371,13 +5364,11 @@ lang_size_sections_1
 			if (command_line.check_section_addresses)
 			  einfo (_("%F%P: error: no memory region specified"
 				   " for loadable section `%s'\n"),
-				 bfd_get_section_name (link_info.output_bfd,
-						       os->bfd_section));
+				 bfd_section_name (os->bfd_section));
 			else
 			  einfo (_("%P: warning: no memory region specified"
 				   " for loadable section `%s'\n"),
-				 bfd_get_section_name (link_info.output_bfd,
-						       os->bfd_section));
+				 bfd_section_name (os->bfd_section));
 		      }
 
 		    newdot = os->region->current;
@@ -5406,7 +5397,7 @@ lang_size_sections_1
 			     os->name, (unsigned long) dotdelta);
 		  }
 
-		bfd_set_section_vma (0, os->bfd_section, newdot);
+		bfd_set_section_vma (os->bfd_section, newdot);
 
 		os->bfd_section->output_offset = 0;
 	      }
@@ -6464,8 +6455,7 @@ lang_end (void)
       bfd_vma val;
 
       val = (h->u.def.value
-	     + bfd_get_section_vma (link_info.output_bfd,
-				    h->u.def.section->output_section)
+	     + bfd_section_vma (h->u.def.section->output_section)
 	     + h->u.def.section->output_offset);
       if (!bfd_set_start_address (link_info.output_bfd, val))
 	einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
@@ -6496,10 +6486,9 @@ lang_end (void)
 		einfo (_("%P: warning: cannot find entry symbol %s;"
 			 " defaulting to %V\n"),
 		       entry_symbol.name,
-		       bfd_get_section_vma (link_info.output_bfd, ts));
-	      if (!(bfd_set_start_address
-		    (link_info.output_bfd,
-		     bfd_get_section_vma (link_info.output_bfd, ts))))
+		       bfd_section_vma (ts));
+	      if (!bfd_set_start_address (link_info.output_bfd,
+					  bfd_section_vma (ts)))
 		einfo (_("%F%P: can't set start address\n"));
 	    }
 	  else
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 577b911da8..3cfbc39e5b 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1014,33 +1014,31 @@ build_filler_bfd (int include_edata)
     {
       edata_s = bfd_make_section_old_way (filler_bfd, ".edata");
       if (edata_s == NULL
-	  || !bfd_set_section_flags (filler_bfd, edata_s,
-				     (SEC_HAS_CONTENTS
-				      | SEC_ALLOC
-				      | SEC_LOAD
-				      | SEC_KEEP
-				      | SEC_IN_MEMORY)))
+	  || !bfd_set_section_flags (edata_s, (SEC_HAS_CONTENTS
+					       | SEC_ALLOC
+					       | SEC_LOAD
+					       | SEC_KEEP
+					       | SEC_IN_MEMORY)))
 	{
 	  einfo (_("%X%P: can not create .edata section: %E\n"));
 	  return;
 	}
-      bfd_set_section_size (filler_bfd, edata_s, edata_sz);
+      bfd_set_section_size (edata_s, edata_sz);
     }
 
   reloc_s = bfd_make_section_old_way (filler_bfd, ".reloc");
   if (reloc_s == NULL
-      || !bfd_set_section_flags (filler_bfd, reloc_s,
-				 (SEC_HAS_CONTENTS
-				  | SEC_ALLOC
-				  | SEC_LOAD
-				  | SEC_KEEP
-				  | SEC_IN_MEMORY)))
+      || !bfd_set_section_flags (reloc_s, (SEC_HAS_CONTENTS
+					   | SEC_ALLOC
+					   | SEC_LOAD
+					   | SEC_KEEP
+					   | SEC_IN_MEMORY)))
     {
       einfo (_("%X%P: can not create .reloc section: %E\n"));
       return;
     }
 
-  bfd_set_section_size (filler_bfd, reloc_s, 0);
+  bfd_set_section_size (reloc_s, 0);
 
   ldlang_add_file (filler_file);
 }
@@ -1303,7 +1301,7 @@ pe_walk_relocs (struct bfd_link_info *info,
 	{
 	  arelent **relocs;
 	  int relsize, nrelocs, i;
-	  int flags = bfd_get_section_flags (b, s);
+	  int flags = bfd_section_flags (s);
 
 	  /* Skip discarded linkonce sections.  */
 	  if (flags & SEC_LINK_ONCE
@@ -1947,8 +1945,8 @@ quick_section (bfd *abfd, const char *name, int flags, int align)
   asymbol *sym;
 
   sec = bfd_make_section_old_way (abfd, name);
-  bfd_set_section_flags (abfd, sec, flags | SEC_ALLOC | SEC_LOAD | SEC_KEEP);
-  bfd_set_section_alignment (abfd, sec, align);
+  bfd_set_section_flags (sec, flags | SEC_ALLOC | SEC_LOAD | SEC_KEEP);
+  bfd_set_section_alignment (sec, align);
   /* Remember to undo this before trying to link internally!  */
   sec->output_section = sec;
 
@@ -2072,7 +2070,7 @@ make_head (bfd *parent)
      pointer to the list points to the *end* of this section, which is
      the start of the list of sections from other objects.  */
 
-  bfd_set_section_size (abfd, id2, 20);
+  bfd_set_section_size (id2, 20);
   d2 = xmalloc (20);
   id2->contents = d2;
   memset (d2, 0, 20);
@@ -2084,16 +2082,16 @@ make_head (bfd *parent)
   save_relocs (id2);
 
   if (pe_use_nul_prefixed_import_tables)
-    bfd_set_section_size (abfd, id5, PE_IDATA5_SIZE);
+    bfd_set_section_size (id5, PE_IDATA5_SIZE);
   else
-    bfd_set_section_size (abfd, id5, 0);
+    bfd_set_section_size (id5, 0);
   d5 = xmalloc (PE_IDATA5_SIZE);
   id5->contents = d5;
   memset (d5, 0, PE_IDATA5_SIZE);
   if (pe_use_nul_prefixed_import_tables)
-    bfd_set_section_size (abfd, id4, PE_IDATA4_SIZE);
+    bfd_set_section_size (id4, PE_IDATA4_SIZE);
   else
-    bfd_set_section_size (abfd, id4, 0);
+    bfd_set_section_size (id4, 0);
   d4 = xmalloc (PE_IDATA4_SIZE);
   id4->contents = d4;
   memset (d4, 0, PE_IDATA4_SIZE);
@@ -2154,12 +2152,12 @@ make_tail (bfd *parent)
   id7 = quick_section (abfd, ".idata$7", SEC_HAS_CONTENTS, 2);
   quick_symbol (abfd, U (""), dll_symname, "_iname", id7, BSF_GLOBAL, 0);
 
-  bfd_set_section_size (abfd, id4, PE_IDATA4_SIZE);
+  bfd_set_section_size (id4, PE_IDATA4_SIZE);
   d4 = xmalloc (PE_IDATA4_SIZE);
   id4->contents = d4;
   memset (d4, 0, PE_IDATA4_SIZE);
 
-  bfd_set_section_size (abfd, id5, PE_IDATA5_SIZE);
+  bfd_set_section_size (id5, PE_IDATA5_SIZE);
   d5 = xmalloc (PE_IDATA5_SIZE);
   id5->contents = d5;
   memset (d5, 0, PE_IDATA5_SIZE);
@@ -2167,7 +2165,7 @@ make_tail (bfd *parent)
   len = strlen (dll_filename) + 1;
   if (len & 1)
     len++;
-  bfd_set_section_size (abfd, id7, len);
+  bfd_set_section_size (id7, len);
   d7 = xmalloc (len);
   id7->contents = d7;
   strcpy ((char *) d7, dll_filename);
@@ -2339,7 +2337,7 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
 
   if (include_jmp_stub)
     {
-      bfd_set_section_size (abfd, tx, jmp_byte_count);
+      bfd_set_section_size (tx, jmp_byte_count);
       td = xmalloc (jmp_byte_count);
       tx->contents = td;
       memcpy (td, jmp_bytes, jmp_byte_count);
@@ -2374,16 +2372,16 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
       save_relocs (tx);
     }
   else
-    bfd_set_section_size (abfd, tx, 0);
+    bfd_set_section_size (tx, 0);
 
-  bfd_set_section_size (abfd, id7, 4);
+  bfd_set_section_size (id7, 4);
   d7 = xmalloc (4);
   id7->contents = d7;
   memset (d7, 0, 4);
   quick_reloc (abfd, 0, BFD_RELOC_RVA, 5);
   save_relocs (id7);
 
-  bfd_set_section_size (abfd, id5, PE_IDATA5_SIZE);
+  bfd_set_section_size (id5, PE_IDATA5_SIZE);
   d5 = xmalloc (PE_IDATA5_SIZE);
   id5->contents = d5;
   memset (d5, 0, PE_IDATA5_SIZE);
@@ -2400,7 +2398,7 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
       save_relocs (id5);
     }
 
-  bfd_set_section_size (abfd, id4, PE_IDATA4_SIZE);
+  bfd_set_section_size (id4, PE_IDATA4_SIZE);
   d4 = xmalloc (PE_IDATA4_SIZE);
   id4->contents = d4;
   memset (d4, 0, PE_IDATA4_SIZE);
@@ -2420,7 +2418,7 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
   if (exp->flag_noname)
     {
       len = 0;
-      bfd_set_section_size (abfd, id6, 0);
+      bfd_set_section_size (id6, 0);
     }
   else
     {
@@ -2433,7 +2431,7 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
 	len = 2 + strlen (exp->name) + 1;
       if (len & 1)
 	len++;
-      bfd_set_section_size (abfd, id6, len);
+      bfd_set_section_size (id6, len);
       d6 = xmalloc (len);
       id6->contents = d6;
       memset (d6, 0, len);
@@ -2491,7 +2489,7 @@ make_singleton_name_thunk (const char *import, bfd *parent)
   quick_symbol (abfd, "__nm_", import, "", UNDSEC, BSF_GLOBAL, 0);
 
   /* We need space for the real thunk and for the null terminator.  */
-  bfd_set_section_size (abfd, id4, PE_IDATA4_SIZE * 2);
+  bfd_set_section_size (id4, PE_IDATA4_SIZE * 2);
   d4 = xmalloc (PE_IDATA4_SIZE * 2);
   id4->contents = d4;
   memset (d4, 0, PE_IDATA4_SIZE * 2);
@@ -2568,7 +2566,7 @@ make_import_fixup_entry (const char *name,
   quick_symbol (abfd, U (""), symname, "_iname", UNDSEC, BSF_GLOBAL, 0);
   quick_symbol (abfd, "", fixup_name, "", UNDSEC, BSF_GLOBAL, 0);
 
-  bfd_set_section_size (abfd, id2, 20);
+  bfd_set_section_size (id2, 20);
   d2 = xmalloc (20);
   id2->contents = d2;
   memset (d2, 0, 20);
@@ -2643,7 +2641,7 @@ make_runtime_pseudo_reloc (const char *name ATTRIBUTE_UNUSED,
 
       quick_symbol (abfd, "__imp_", name, "", UNDSEC, BSF_GLOBAL, 0);
 
-      bfd_set_section_size (abfd, rt_rel, size);
+      bfd_set_section_size (rt_rel, size);
       rt_rel_d = xmalloc (size);
       rt_rel->contents = rt_rel_d;
       memset (rt_rel_d, 0, size);
@@ -2660,7 +2658,7 @@ make_runtime_pseudo_reloc (const char *name ATTRIBUTE_UNUSED,
     }
   else
     {
-      bfd_set_section_size (abfd, rt_rel, 8);
+      bfd_set_section_size (rt_rel, 8);
       rt_rel_d = xmalloc (8);
       rt_rel->contents = rt_rel_d;
       memset (rt_rel_d, 0, 8);
@@ -2708,7 +2706,7 @@ pe_create_runtime_relocator_reference (bfd *parent)
   quick_symbol (abfd, "", U ("_pei386_runtime_relocator"), "", UNDSEC,
 		BSF_NO_FLAGS, 0);
 
-  bfd_set_section_size (abfd, extern_rt_rel, PE_IDATA5_SIZE);
+  bfd_set_section_size (extern_rt_rel, PE_IDATA5_SIZE);
   extern_rt_rel_d = xcalloc (1, PE_IDATA5_SIZE);
   extern_rt_rel->contents = extern_rt_rel_d;
 
@@ -3571,7 +3569,7 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_link_info *info)
   generate_reloc (abfd, info);
   if (reloc_sz > 0)
     {
-      bfd_set_section_size (filler_bfd, reloc_s, reloc_sz);
+      bfd_set_section_size (reloc_s, reloc_sz);
 
       /* Resize the sections.  */
       lang_reset_memory_regions ();
@@ -3603,7 +3601,7 @@ pe_exe_fill_sections (bfd *abfd, struct bfd_link_info *info)
   generate_reloc (abfd, info);
   if (reloc_sz > 0)
     {
-      bfd_set_section_size (filler_bfd, reloc_s, reloc_sz);
+      bfd_set_section_size (reloc_s, reloc_sz);
 
       /* Resize the sections.  */
       lang_reset_memory_regions ();
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index e56e2c0b86..8a82ed0565 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* ctf-open-bfd.c: Update throughout for bfd section macro changes.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff --git a/libctf/ctf-open-bfd.c b/libctf/ctf-open-bfd.c
index bb2d7e64de..6a0c15531e 100644
--- a/libctf/ctf-open-bfd.c
+++ b/libctf/ctf-open-bfd.c
@@ -100,7 +100,7 @@ ctf_bfdopen (struct bfd *abfd, int *errp)
 
   ctfsect.cts_name = _CTF_SECTION;
   ctfsect.cts_entsize = 1;
-  ctfsect.cts_size = bfd_section_size (abfd, ctf_asect);
+  ctfsect.cts_size = bfd_section_size (ctf_asect);
   ctfsect.cts_data = contents;
 
   if ((arc = ctf_bfdopen_ctfsect (abfd, &ctfsect, errp)) != NULL)
@@ -157,7 +157,7 @@ ctf_bfdopen_ctfsect (struct bfd *abfd _libctf_unused_,
 	    }
 	  strsect.cts_data = contents;
 	  strsect.cts_name = (char *) strsect.cts_data + strhdr->sh_name;
-	  strsect.cts_size = bfd_section_size (abfd, str_asect);
+	  strsect.cts_size = bfd_section_size (str_asect);
 	  strsect.cts_entsize = strhdr->sh_size;
 	  strsectp = &strsect;
 
@@ -170,7 +170,7 @@ ctf_bfdopen_ctfsect (struct bfd *abfd _libctf_unused_,
 
 	  symsect.cts_name = (char *) strsect.cts_data + symhdr->sh_name;
 	  symsect.cts_entsize = symhdr->sh_size;
-	  symsect.cts_size = bfd_section_size (abfd, sym_asect);
+	  symsect.cts_size = bfd_section_size (sym_asect);
 	  symsect.cts_data = contents;
 	  symsectp = &symsect;
 	}
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index d5b412275f..0d8abcd7ff 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* arc-ext.c: Update throughout for bfd section macro changes.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* Makefile.in: Re-generate.
diff --git a/opcodes/arc-ext.c b/opcodes/arc-ext.c
index bf578871d7..cfb13aa0e1 100644
--- a/opcodes/arc-ext.c
+++ b/opcodes/arc-ext.c
@@ -438,7 +438,7 @@ build_ARC_extmap (bfd *text_bfd)
 	  sizeof (".gnu.linkonce.arcextmap.") - 1)
 	|| !strcmp (sect->name,".arcextmap"))
       {
-	bfd_size_type  count  = bfd_get_section_size (sect);
+	bfd_size_type  count  = bfd_section_size (sect);
 	unsigned char* buffer = xmalloc (count);
 
 	if (buffer)
diff --git a/sim/ChangeLog b/sim/ChangeLog
index d16f2cfa57..191e2370a9 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* common/sim-load.c, * common/sim-utils.c, * cris/sim-if.c,
+	* erc32/func.c, * lm32/sim-if.c, * m32c/load.c, * m32c/trace.c,
+	* m68hc11/interp.c, * ppc/hw_htab.c, * ppc/hw_init.c,
+	* rl78/load.c, * rl78/trace.c, * rx/gdb-if.c, * rx/load.c,
+	* rx/trace.c: Update throughout for bfd section macro changes.
+
 2019-06-13  Stafford Horne  <shorne@gmail.com>
 
 	* or1k/cpu.c: Regenerate.
diff --git a/sim/common/sim-load.c b/sim/common/sim-load.c
index c198027824..ff06497d5c 100644
--- a/sim/common/sim-load.c
+++ b/sim/common/sim-load.c
@@ -101,7 +101,7 @@ sim_load_file (SIM_DESC sd, const char *myname, host_callback *callback,
 	{
 	  bfd_size_type size;
 
-	  size = bfd_get_section_size (s);
+	  size = bfd_section_size (s);
 	  if (size > 0)
 	    {
 	      unsigned char *buffer;
@@ -119,13 +119,13 @@ sim_load_file (SIM_DESC sd, const char *myname, host_callback *callback,
 		  return NULL;
 		}
 	      if (lma_p)
-		lma = bfd_section_lma (result_bfd, s);
+		lma = bfd_section_lma (s);
 	      else
-		lma = bfd_section_vma (result_bfd, s);
+		lma = bfd_section_vma (s);
 	      if (verbose_p)
 		{
 		  xprintf (callback, "Loading section %s, size 0x%lx %s ",
-			   bfd_get_section_name (result_bfd, s),
+			   bfd_section_name (s),
 			   (unsigned long) size,
 			   (lma_p ? "lma" : "vma"));
 		  xprintf_bfd_vma (callback, lma);
diff --git a/sim/common/sim-utils.c b/sim/common/sim-utils.c
index c94b2f77ac..e83a2e4d0c 100644
--- a/sim/common/sim-utils.c
+++ b/sim/common/sim-utils.c
@@ -263,11 +263,11 @@ sim_analyze_program (SIM_DESC sd, const char *prog_name, bfd *prog_bfd)
   STATE_START_ADDR (sd) = bfd_get_start_address (prog_bfd);
 
   for (s = prog_bfd->sections; s; s = s->next)
-    if (strcmp (bfd_get_section_name (prog_bfd, s), ".text") == 0)
+    if (strcmp (bfd_section_name (s), ".text") == 0)
       {
 	STATE_TEXT_SECTION (sd) = s;
-	STATE_TEXT_START (sd) = bfd_get_section_vma (prog_bfd, s);
-	STATE_TEXT_END (sd) = STATE_TEXT_START (sd) + bfd_section_size (prog_bfd, s);
+	STATE_TEXT_START (sd) = bfd_section_vma (s);
+	STATE_TEXT_END (sd) = STATE_TEXT_START (sd) + bfd_section_size (s);
 	break;
       }
 
diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
index 1a5d421caf..ebfb0e586b 100644
--- a/sim/cris/sim-if.c
+++ b/sim/cris/sim-if.c
@@ -315,17 +315,17 @@ cris_set_section_offset_iterator (bfd *abfd, asection *s, void *vp)
   SIM_DESC sd = p->sd;
   int offset = p->offset;
 
-  if ((bfd_get_section_flags (abfd, s) & SEC_ALLOC))
+  if ((bfd_section_flags (s) & SEC_ALLOC))
     {
-      bfd_vma vma = bfd_get_section_vma (abfd, s);
+      bfd_vma vma = bfd_section_vma (s);
       
-      bfd_set_section_vma (abfd, s, vma + offset);
+      bfd_set_section_vma (s, vma + offset);
     }
 
   /* This seems clumsy and inaccurate, but let's stick to doing it the
      same way as sim_analyze_program for consistency.  */
-  if (strcmp (bfd_get_section_name (abfd, s), ".text") == 0)
-    STATE_TEXT_START (sd) = bfd_get_section_vma (abfd, s);
+  if (strcmp (bfd_section_name (s), ".text") == 0)
+    STATE_TEXT_START (sd) = bfd_section_vma (s);
 }
 
 /* Adjust the start-address, LMA and VMA of a SD.  Must be called
@@ -360,10 +360,10 @@ get_progbounds_iterator (bfd *abfd ATTRIBUTE_UNUSED, asection *s, void *vp)
 {
   struct progbounds *pbp = (struct progbounds *) vp;
 
-  if ((bfd_get_section_flags (abfd, s) & SEC_ALLOC))
+  if ((bfd_section_flags (s) & SEC_ALLOC))
     {
-      bfd_size_type sec_size = bfd_get_section_size (s);
-      bfd_size_type sec_start = bfd_get_section_vma (abfd, s);
+      bfd_size_type sec_size = bfd_section_size (s);
+      bfd_size_type sec_start = bfd_section_vma (s);
       bfd_size_type sec_end = sec_start + sec_size;
 
       if (sec_end > pbp->endmem)
@@ -372,7 +372,7 @@ get_progbounds_iterator (bfd *abfd ATTRIBUTE_UNUSED, asection *s, void *vp)
       if (sec_start < pbp->startmem)
 	pbp->startmem = sec_start;
 
-      if ((bfd_get_section_flags (abfd, s) & SEC_LOAD))
+      if ((bfd_section_flags (s) & SEC_LOAD))
 	{
 	  if (sec_end > pbp->end_loadmem)
 	    pbp->end_loadmem = sec_end;
diff --git a/sim/erc32/func.c b/sim/erc32/func.c
index d6a51b1591..a0c85a0913 100644
--- a/sim/erc32/func.c
+++ b/sim/erc32/func.c
@@ -1051,14 +1051,14 @@ bfd_load (const char *fname)
     if (sis_verbose)
 	printf("loading %s:", fname);
     for (section = pbfd->sections; section; section = section->next) {
-	if (bfd_get_section_flags(pbfd, section) & SEC_ALLOC) {
+	if (bfd_section_flags (section) & SEC_ALLOC) {
 	    bfd_vma         section_address;
 	    unsigned long   section_size;
 	    const char     *section_name;
 
-	    section_name = bfd_get_section_name(pbfd, section);
+	    section_name = bfd_section_name (section);
 
-	    section_address = bfd_get_section_vma(pbfd, section);
+	    section_address = bfd_section_vma (section);
 	    /*
 	     * Adjust sections from a.out files, since they don't carry their
 	     * addresses with.
@@ -1084,14 +1084,14 @@ bfd_load (const char *fname)
 		}
 	    }
 
-	    section_size = bfd_section_size(pbfd, section);
+	    section_size = bfd_section_size (section);
 
 	    if (sis_verbose)
 		printf("\nsection %s at 0x%08lx (0x%lx bytes)",
 		       section_name, section_address, section_size);
 
 	    /* Text, data or lit */
-	    if (bfd_get_section_flags(pbfd, section) & SEC_LOAD) {
+	    if (bfd_section_flags (section) & SEC_LOAD) {
 		file_ptr        fptr;
 
 		fptr = 0;
diff --git a/sim/lm32/sim-if.c b/sim/lm32/sim-if.c
index 2698b2e28e..71312d3644 100644
--- a/sim/lm32/sim-if.c
+++ b/sim/lm32/sim-if.c
@@ -50,21 +50,18 @@ find_base (bfd *prog_bfd)
   found = 0;
   for (s = prog_bfd->sections; s; s = s->next)
     {
-      if ((strcmp (bfd_get_section_name (prog_bfd, s), ".boot") == 0)
-	  || (strcmp (bfd_get_section_name (prog_bfd, s), ".text") == 0)
-	  || (strcmp (bfd_get_section_name (prog_bfd, s), ".data") == 0)
-	  || (strcmp (bfd_get_section_name (prog_bfd, s), ".bss") == 0))
+      if ((strcmp (bfd_section_name (s), ".boot") == 0)
+	  || (strcmp (bfd_section_name (s), ".text") == 0)
+	  || (strcmp (bfd_section_name (s), ".data") == 0)
+	  || (strcmp (bfd_section_name (s), ".bss") == 0))
 	{
 	  if (!found)
 	    {
-	      base = bfd_get_section_vma (prog_bfd, s);
+	      base = bfd_section_vma (s);
 	      found = 1;
 	    }
 	  else
-	    base =
-	      bfd_get_section_vma (prog_bfd,
-				   s) < base ? bfd_get_section_vma (prog_bfd,
-								    s) : base;
+	    base = bfd_section_vma (s) < base ? bfd_section_vma (s) : base;
 	}
     }
   return base & ~(0xffffUL);
diff --git a/sim/m32c/load.c b/sim/m32c/load.c
index 3937fea088..c6a3b2dcaa 100644
--- a/sim/m32c/load.c
+++ b/sim/m32c/load.c
@@ -74,11 +74,11 @@ m32c_load (bfd * prog)
          remains as a reminder.  */
       if ((s->flags & SEC_ALLOC) && !(s->flags & SEC_READONLY))
 	{
-	  if (strcmp (bfd_get_section_name (prog, s), ".stack"))
+	  if (strcmp (bfd_section_name (s), ".stack"))
 	    {
 	      int secend =
-		bfd_get_section_size (s) + bfd_section_lma (prog, s);
-	      if (heaptop < secend && bfd_section_lma (prog, s) < 0x10000)
+		bfd_section_size (s) + bfd_section_lma (s);
+	      if (heaptop < secend && bfd_section_lma (s) < 0x10000)
 		{
 		  heaptop = heapbottom = secend;
 		}
@@ -91,14 +91,14 @@ m32c_load (bfd * prog)
 	  bfd_size_type size;
 	  bfd_vma base;
 
-	  size = bfd_get_section_size (s);
+	  size = bfd_section_size (s);
 	  if (size <= 0)
 	    continue;
 
-	  base = bfd_section_lma (prog, s);
+	  base = bfd_section_lma (s);
 	  if (verbose)
 	    fprintf (stderr, "[load a=%08x s=%08x %s]\n",
-		     (int) base, (int) size, bfd_get_section_name (prog, s));
+		     (int) base, (int) size, bfd_section_name (s));
 	  buf = (char *) malloc (size);
 	  bfd_get_section_contents (prog, s, buf, 0, size);
 	  mem_put_blk (base, buf, size);
diff --git a/sim/m32c/trace.c b/sim/m32c/trace.c
index e507c978b8..bc75d15e3c 100644
--- a/sim/m32c/trace.c
+++ b/sim/m32c/trace.c
@@ -231,7 +231,7 @@ sim_disasm_one (void)
 	  if (s->flags & SEC_CODE || code_section == 0)
 	    {
 	      code_section = s;
-	      code_base = bfd_section_lma (current_bfd, s);
+	      code_base = bfd_section_lma (s);
 	      break;
 	    }
 	}
diff --git a/sim/m68hc11/interp.c b/sim/m68hc11/interp.c
index 9e8ccab180..a5131d2a97 100644
--- a/sim/m68hc11/interp.c
+++ b/sim/m68hc11/interp.c
@@ -344,15 +344,15 @@ sim_prepare_for_program (SIM_DESC sd, bfd* abfd)
             {
               bfd_size_type size;
 
-              size = bfd_get_section_size (s);
+	      size = bfd_section_size (s);
               if (size > 0)
                 {
                   bfd_vma lma;
 
                   if (STATE_LOAD_AT_LMA_P (sd))
-                    lma = bfd_section_lma (abfd, s);
+		    lma = bfd_section_lma (s);
                   else
-                    lma = bfd_section_vma (abfd, s);
+		    lma = bfd_section_vma (s);
 
                   if (lma <= 0xFFFE && lma+size >= 0x10000)
                     cpu->cpu_use_elf_start = 0;
diff --git a/sim/ppc/hw_htab.c b/sim/ppc/hw_htab.c
index cf275ff702..e7b6371e1d 100644
--- a/sim/ppc/hw_htab.c
+++ b/sim/ppc/hw_htab.c
@@ -391,16 +391,16 @@ htab_sum_binary(bfd *abfd,
 		PTR data)
 {
   htab_binary_sizes *sizes = (htab_binary_sizes*)data;
-  unsigned_word size = bfd_get_section_size (sec);
-  unsigned_word vma = bfd_get_section_vma (abfd, sec);
-  unsigned_word ra = bfd_get_section_lma (abfd, sec);
+  unsigned_word size = bfd_section_size (sec);
+  unsigned_word vma = bfd_section_vma (sec);
+  unsigned_word ra = bfd_section_lma (sec);
 
   /* skip the section if no memory to allocate */
-  if (! (bfd_get_section_flags(abfd, sec) & SEC_ALLOC))
+  if (! (bfd_section_flags (sec) & SEC_ALLOC))
     return;
 
-  if ((bfd_get_section_flags (abfd, sec) & SEC_CODE)
-      || (bfd_get_section_flags (abfd, sec) & SEC_READONLY)) {
+  if ((bfd_section_flags (sec) & SEC_CODE)
+      || (bfd_section_flags (sec) & SEC_READONLY)) {
     if (sizes->text_bound < vma + size)
       sizes->text_bound = ALIGN_PAGE(vma + size);
     if (sizes->text_base > vma)
@@ -408,8 +408,8 @@ htab_sum_binary(bfd *abfd,
     if (sizes->text_ra > ra)
       sizes->text_ra = FLOOR_PAGE(ra);
   }
-  else if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
-	   || (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)) {
+  else if ((bfd_section_flags (sec) & SEC_DATA)
+	   || (bfd_section_flags (sec) & SEC_ALLOC)) {
     if (sizes->data_bound < vma + size)
       sizes->data_bound = ALIGN_PAGE(vma + size);
     if (sizes->data_base > vma)
@@ -432,41 +432,41 @@ htab_dma_binary(bfd *abfd,
   device *me = sizes->me;
 
   /* skip the section if no memory to allocate */
-  if (! (bfd_get_section_flags(abfd, sec) & SEC_ALLOC))
+  if (! (bfd_section_flags (sec) & SEC_ALLOC))
     return;
 
   /* check/ignore any sections of size zero */
-  section_size = bfd_get_section_size (sec);
+  section_size = bfd_section_size (sec);
   if (section_size == 0)
     return;
 
   /* if nothing to load, ignore this one */
-  if (! (bfd_get_section_flags(abfd, sec) & SEC_LOAD))
+  if (! (bfd_section_flags (sec) & SEC_LOAD))
     return;
 
   /* find where it is to go */
-  section_vma = bfd_get_section_vma(abfd, sec);
+  section_vma = bfd_section_vma (sec);
   section_ra = 0;
-  if ((bfd_get_section_flags (abfd, sec) & SEC_CODE)
-      || (bfd_get_section_flags (abfd, sec) & SEC_READONLY))
+  if ((bfd_section_flags (sec) & SEC_CODE)
+      || (bfd_section_flags (sec) & SEC_READONLY))
     section_ra = (section_vma - sizes->text_base + sizes->text_ra);
-  else if ((bfd_get_section_flags (abfd, sec) & SEC_DATA))
+  else if ((bfd_section_flags (sec) & SEC_DATA))
     section_ra = (section_vma - sizes->data_base + sizes->data_ra);
   else 
     return; /* just ignore it */
 
   DTRACE(htab,
 	 ("load - name=%-7s vma=0x%.8lx size=%6ld ra=0x%.8lx flags=%3lx(%s%s%s%s%s )\n",
-	  bfd_get_section_name(abfd, sec),
+	  bfd_section_name (sec),
 	  (long)section_vma,
 	  (long)section_size,
 	  (long)section_ra,
-	  (long)bfd_get_section_flags(abfd, sec),
-	  bfd_get_section_flags(abfd, sec) & SEC_LOAD ? " LOAD" : "",
-	  bfd_get_section_flags(abfd, sec) & SEC_CODE ? " CODE" : "",
-	  bfd_get_section_flags(abfd, sec) & SEC_DATA ? " DATA" : "",
-	  bfd_get_section_flags(abfd, sec) & SEC_ALLOC ? " ALLOC" : "",
-	  bfd_get_section_flags(abfd, sec) & SEC_READONLY ? " READONLY" : ""
+	  (long)bfd_section_flags (sec),
+	  bfd_section_flags (sec) & SEC_LOAD ? " LOAD" : "",
+	  bfd_section_flags (sec) & SEC_CODE ? " CODE" : "",
+	  bfd_section_flags (sec) & SEC_DATA ? " DATA" : "",
+	  bfd_section_flags (sec) & SEC_ALLOC ? " ALLOC" : "",
+	  bfd_section_flags (sec) & SEC_READONLY ? " READONLY" : ""
 	  ));
 
   /* dma in the sections data */
diff --git a/sim/ppc/hw_init.c b/sim/ppc/hw_init.c
index 0e7403bb6c..779c95c5a2 100644
--- a/sim/ppc/hw_init.c
+++ b/sim/ppc/hw_init.c
@@ -324,39 +324,39 @@ update_for_binary_section(bfd *abfd,
   device *me = (device*)obj;
 
   /* skip the section if no memory to allocate */
-  if (! (bfd_get_section_flags(abfd, the_section) & SEC_ALLOC))
+  if (! (bfd_section_flags (the_section) & SEC_ALLOC))
     return;
 
   /* check/ignore any sections of size zero */
-  section_size = bfd_get_section_size (the_section);
+  section_size = bfd_section_size (the_section);
   if (section_size == 0)
     return;
 
   /* find where it is to go */
-  section_vma = bfd_get_section_vma(abfd, the_section);
+  section_vma = bfd_section_vma (the_section);
 
   DTRACE(binary,
 	 ("name=%-7s, vma=0x%.8lx, size=%6ld, flags=%3lx(%s%s%s%s%s )\n",
-	  bfd_get_section_name(abfd, the_section),
+	  bfd_section_name (the_section),
 	  (long)section_vma,
 	  (long)section_size,
-	  (long)bfd_get_section_flags(abfd, the_section),
-	  bfd_get_section_flags(abfd, the_section) & SEC_LOAD ? " LOAD" : "",
-	  bfd_get_section_flags(abfd, the_section) & SEC_CODE ? " CODE" : "",
-	  bfd_get_section_flags(abfd, the_section) & SEC_DATA ? " DATA" : "",
-	  bfd_get_section_flags(abfd, the_section) & SEC_ALLOC ? " ALLOC" : "",
-	  bfd_get_section_flags(abfd, the_section) & SEC_READONLY ? " READONLY" : ""
+	  (long)bfd_section_flags (the_section),
+	  bfd_section_flags (the_section) & SEC_LOAD ? " LOAD" : "",
+	  bfd_section_flags (the_section) & SEC_CODE ? " CODE" : "",
+	  bfd_section_flags (the_section) & SEC_DATA ? " DATA" : "",
+	  bfd_section_flags (the_section) & SEC_ALLOC ? " ALLOC" : "",
+	  bfd_section_flags (the_section) & SEC_READONLY ? " READONLY" : ""
 	  ));
 
   /* If there is an .interp section, it means it needs a shared library interpreter.  */
-  if (strcmp(".interp", bfd_get_section_name(abfd, the_section)) == 0)
+  if (strcmp(".interp", bfd_section_name (the_section)) == 0)
     error("Shared libraries are not yet supported.\n");
 
   /* determine the devices access */
   access = access_read;
-  if (bfd_get_section_flags(abfd, the_section) & SEC_CODE)
+  if (bfd_section_flags (the_section) & SEC_CODE)
     access |= access_exec;
-  if (!(bfd_get_section_flags(abfd, the_section) & SEC_READONLY))
+  if (!(bfd_section_flags (the_section) & SEC_READONLY))
     access |= access_write;
 
   /* if claim specified, allocate region from the memory device */
@@ -386,7 +386,7 @@ update_for_binary_section(bfd *abfd,
 			  me);
 
   /* if a load dma in the required data */
-  if (bfd_get_section_flags(abfd, the_section) & SEC_LOAD) {
+  if (bfd_section_flags (the_section) & SEC_LOAD) {
     void *section_init = zalloc(section_size);
     if (!bfd_get_section_contents(abfd,
 				  the_section,
diff --git a/sim/rl78/load.c b/sim/rl78/load.c
index c8c8ab8951..34ae923bcb 100644
--- a/sim/rl78/load.c
+++ b/sim/rl78/load.c
@@ -56,7 +56,7 @@ find_section_name_by_offset (bfd *abfd, file_ptr filepos)
 
   for (s = abfd->sections; s; s = s->next)
     if (s->filepos == filepos)
-      return bfd_get_section_name (abfd, s);
+      return bfd_section_name (s);
 
   return "(unknown)";
 }
diff --git a/sim/rl78/trace.c b/sim/rl78/trace.c
index fd999a1513..1a97527377 100644
--- a/sim/rl78/trace.c
+++ b/sim/rl78/trace.c
@@ -224,7 +224,7 @@ sim_get_current_source_location (const char **  pfilename,
 	  if (s->flags & SEC_CODE || code_section == 0)
 	    {
 	      code_section = s;
-	      code_base = bfd_section_lma (current_bfd, s);
+	      code_base = bfd_section_lma (s);
 	      break;
 	    }
 	}
diff --git a/sim/rx/gdb-if.c b/sim/rx/gdb-if.c
index ef88146a5e..68e4b96ed6 100644
--- a/sim/rx/gdb-if.c
+++ b/sim/rx/gdb-if.c
@@ -164,14 +164,14 @@ build_swap_list (struct bfd *abfd)
 	  struct swap_list *sl;
 	  bfd_size_type size;
 
-	  size = bfd_get_section_size (s);
+	  size = bfd_section_size (s);
 	  if (size <= 0)
 	    continue;
 	  
 	  sl = malloc (sizeof (struct swap_list));
 	  assert (sl != NULL);
 	  sl->next = swap_list;
-	  sl->start = bfd_section_lma (abfd, s);
+	  sl->start = bfd_section_lma (s);
 	  sl->end = sl->start + size;
 	  swap_list = sl;
 	}
diff --git a/sim/rx/load.c b/sim/rx/load.c
index 65451ca821..a9b596bbc5 100644
--- a/sim/rx/load.c
+++ b/sim/rx/load.c
@@ -52,7 +52,7 @@ find_section_name_by_offset (bfd *abfd, file_ptr filepos)
 
   for (s = abfd->sections; s; s = s->next)
     if (s->filepos == filepos)
-      return bfd_get_section_name (abfd, s);
+      return bfd_section_name (s);
 
   return "(unknown)";
 }
diff --git a/sim/rx/trace.c b/sim/rx/trace.c
index ed65d19a8f..a4ea680bff 100644
--- a/sim/rx/trace.c
+++ b/sim/rx/trace.c
@@ -228,7 +228,7 @@ sim_get_current_source_location (const char **  pfilename,
 	  if (s->flags & SEC_CODE || code_section == 0)
 	    {
 	      code_section = s;
-	      code_base = bfd_section_lma (current_bfd, s);
+	      code_base = bfd_section_lma (s);
 	      break;
 	    }
 	}


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb] Catch exception when constructing the highlighter
@ 2019-09-19 18:20 gdb-buildbot
  2019-09-19 18:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-19 18:20 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f64e2f4045485f99b4ce6649fdab874dacccd5a6 ***

commit f64e2f4045485f99b4ce6649fdab874dacccd5a6
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 19 19:49:39 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 19 19:49:39 2019 +0200

    [gdb] Catch exception when constructing the highlighter
    
    Currently in source_cache::ensure we catch the exception that triggers when
    highlighter->highlight is called:
    ...
             try
               {
                 std::istringstream input (contents);
                 std::ostringstream output;
                 highlighter->highlight (input, output, lang_name, fullname);
    ...
    and the file used earlier in the construction of the highlighter:
    ...
                 highlighter = new srchilite::SourceHighlight ("esc.outlang");
    ...
    is missing.
    
    The fact that this exception triggers when highlighter->highlight is called is
    an implementation artefact of libsource-highlight.so though, and this could be
    different for older or newer versions.
    
    Make things more robust by also catching exceptions thrown during construction
    of the highlighter.  This makes the handling on master equivalent with what
    has been committed for 8.3.1.
    
    Tested on x86_64-linux.
    
    gdb/ChangeLog:
    
    2019-09-19  Tom de Vries  <tdevries@suse.de>
    
            PR gdb/25009
            * source-cache.c (source_cache::ensure): Catch exception thrown during
            construction of the highlighter.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7057e37e8d..39f917b186 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-19  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25009
+	* source-cache.c (source_cache::ensure): Catch exception thrown during
+	construction of the highlighter.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* aarch64-linux-tdep.c, * arm-tdep.c, * auto-load.c,
diff --git a/gdb/source-cache.c b/gdb/source-cache.c
index 7a52ce9458..1fe6da8132 100644
--- a/gdb/source-cache.c
+++ b/gdb/source-cache.c
@@ -190,14 +190,14 @@ source_cache::ensure (struct symtab *s)
 	     conditional compilation in source-cache.h.  */
 	  static srchilite::SourceHighlight *highlighter;
 
-	  if (highlighter == nullptr)
-	    {
-	      highlighter = new srchilite::SourceHighlight ("esc.outlang");
-	      highlighter->setStyleFile ("esc.style");
-	    }
-
 	  try
 	    {
+	      if (highlighter == nullptr)
+		{
+		  highlighter = new srchilite::SourceHighlight ("esc.outlang");
+		  highlighter->setStyleFile ("esc.style");
+		}
+
 	      std::istringstream input (contents);
 	      std::ostringstream output;
 	      highlighter->highlight (input, output, lang_name, fullname);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Don't use FOOBAR pattern in gdb_test
@ 2019-09-19 18:42 gdb-buildbot
  2019-09-19 23:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-19 18:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e452e88f54624ae55d534c4ae32e0c768cb4b59f ***

commit e452e88f54624ae55d534c4ae32e0c768cb4b59f
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Thu Sep 19 19:54:15 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Thu Sep 19 19:54:15 2019 +0200

    [gdb/testsuite] Don't use FOOBAR pattern in gdb_test
    
    If gdb_test is used with fewer than five arguments, then the question_string
    defaults to "^FOOBAR$":
    ...
        if [llength $args]==5 {
           set question_string [lindex $args 3]
           set response_string [lindex $args 4]
        } else {
           set question_string "^FOOBAR$"
        }
    ...
    
    This can however match "FOOBAR", so perhaps "\$FOOBAR^" would have been a
    better choice.
    
    Eliminate the FOOBAR pattern from gdb_test by instead of defining a default
    regexp, conditionally appending the regexp matching to a user_code variable.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-19  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdb.exp (gdb_test): Eliminate "^FOOBAR$" pattern.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d5a5309fdf..e86091eee3 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_test): Eliminate "^FOOBAR$" pattern.
+
 2019-09-19  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdbserver-support.exp (gdb_target_cmd): Fix argument passing.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index acbeb01376..3a1f053cf8 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1083,24 +1083,28 @@ proc gdb_test { args } {
     set command [lindex $args 0]
     set pattern [lindex $args 1]
 
-    if [llength $args]==5 {
-	set question_string [lindex $args 3]
-	set response_string [lindex $args 4]
-    } else {
-	set question_string "^FOOBAR$"
-    }
-
-    return [gdb_test_multiple $command $message {
+    set user_code {}
+    lappend user_code {
 	-re "\[\r\n\]*(?:$pattern)\[\r\n\]+$gdb_prompt $" {
 	    if ![string match "" $message] then {
 		pass "$message"
             }
         }
-	-re "(${question_string})$" {
-	    send_gdb "$response_string\n"
-	    exp_continue
+    }
+
+    if { [llength $args] == 5 } {
+	set question_string [lindex $args 3]
+	set response_string [lindex $args 4]
+	lappend user_code {
+	    -re "(${question_string})$" {
+		send_gdb "$response_string\n"
+		exp_continue
+	    }
 	}
-     }]
+     }
+
+    set user_code [join $user_code]
+    return [gdb_test_multiple $command $message $user_code]
 }
 
 # Return 1 if version MAJOR.MINOR is at least AT_LEAST_MAJOR.AT_LEAST_MINOR.


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Declare dwarf_always_disassemble in dwarf2read.h
@ 2019-09-20  0:39 gdb-buildbot
  2019-09-20  1:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  0:39 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e86f08d28f469b9400e91bbaf1b0a5e7f697732a ***

commit e86f08d28f469b9400e91bbaf1b0a5e7f697732a
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Thu Sep 19 13:26:55 2019 +0900
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Fri Sep 20 09:13:53 2019 +0900

    Declare dwarf_always_disassemble in dwarf2read.h
    
    And remove the declaration from dwarf2loc.c, for better typesafety.
    
    gdb/ChangeLog:
    
    2019-09-19  Christian Biesinger  <cbiesinger@google.com>
    
            * dwarf2loc.c: Remove extern declaration of dwarf_always_disassemble.
            * dwarf2read.h: Declare dwarf_always_disassemble.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 39f917b186..45e6e79fb8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* dwarf2loc.c: Remove extern declaration of dwarf_always_disassemble.
+	* dwarf2read.h: Declare dwarf_always_disassemble.
+
 2019-09-19  Tom de Vries  <tdevries@suse.de>
 
 	PR gdb/25009
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 29fccae594..c8ba0290a0 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -46,8 +46,6 @@
 #include "gdbsupport/underlying.h"
 #include "gdbsupport/byte-vector.h"
 
-extern bool dwarf_always_disassemble;
-
 static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
 						    struct frame_info *frame,
 						    const gdb_byte *data,
diff --git a/gdb/dwarf2read.h b/gdb/dwarf2read.h
index 8939f97af5..e9b946247b 100644
--- a/gdb/dwarf2read.h
+++ b/gdb/dwarf2read.h
@@ -33,6 +33,8 @@ extern struct cmd_list_element *show_dwarf_cmdlist;
 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
 DEF_VEC_P (dwarf2_per_cu_ptr);
 
+extern bool dwarf_always_disassemble;
+
 /* A descriptor for dwarf sections.
 
    S.ASECTION, SIZE are typically initialized when the objfile is first


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move arm_apcs_32 extern declaration to header
@ 2019-09-20  0:53 gdb-buildbot
  2019-09-20  2:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  0:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c7ae7675cf726c343a1db3e27e3e5665cb485271 ***

commit c7ae7675cf726c343a1db3e27e3e5665cb485271
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Thu Sep 19 13:33:35 2019 +0900
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Fri Sep 20 09:17:49 2019 +0900

    Move arm_apcs_32 extern declaration to header
    
    Instead of having several extern declarations for arm_apcs_32
    in a few .c files, declare it in arm-tdep.h. This file is already
    included from these .c files.
    
    gdb/ChangeLog:
    
    2019-09-19  Christian Biesinger  <cbiesinger@google.com>
    
            * arm-linux-nat.c: Remove extern declaration for arm_apcs_32.
            * arm-linux-tdep.c: Likewise.
            * arm-nbsd-nat.c: Likewise.
            * arm-tdep.h: Declare arm_apcs_32.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 45e6e79fb8..c7e724eb8b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-linux-nat.c: Remove extern declaration for arm_apcs_32.
+	* arm-linux-tdep.c: Likewise.
+	* arm-nbsd-nat.c: Likewise.
+	* arm-tdep.h: Declare arm_apcs_32.
+	* arm-tdep.c: Move documentation for arm_apcs_32 to arm-tdep.h.
+
 2019-09-19  Christian Biesinger  <cbiesinger@google.com>
 
 	* dwarf2loc.c: Remove extern declaration of dwarf_always_disassemble.
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index ef44e68d31..bef67c7ac7 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -66,8 +66,6 @@
 #define PTRACE_SETHBPREGS 30
 #endif
 
-extern bool arm_apcs_32;
-
 class arm_linux_nat_target final : public linux_nat_target
 {
 public:
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index 31ea4564db..54ea8511cb 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -56,7 +56,6 @@
 #include "user-regs.h"
 #include <ctype.h>
 #include "elf/common.h"
-extern bool arm_apcs_32;
 
 /* Under ARM GNU/Linux the traditional way of performing a breakpoint
    is to execute a particular software interrupt, rather than use a
diff --git a/gdb/arm-nbsd-nat.c b/gdb/arm-nbsd-nat.c
index 38a9e954b9..5160bfddf5 100644
--- a/gdb/arm-nbsd-nat.c
+++ b/gdb/arm-nbsd-nat.c
@@ -40,8 +40,6 @@ public:
 
 static arm_netbsd_nat_target the_arm_netbsd_nat_target;
 
-extern bool arm_apcs_32;
-
 static void
 arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
 {
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index e17550fed7..c247052148 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -294,7 +294,7 @@ static CORE_ADDR arm_analyze_prologue (struct gdbarch *gdbarch,
 
 #define DISPLACED_STEPPING_ARCH_VERSION		5
 
-/* Set to true if the 32-bit mode is in use.  */
+/* See arm-tdep.h.  */
 
 bool arm_apcs_32 = true;
 
diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h
index 6d1a91ca35..2cf3379d78 100644
--- a/gdb/arm-tdep.h
+++ b/gdb/arm-tdep.h
@@ -26,6 +26,10 @@ struct get_next_pcs;
 struct arm_get_next_pcs;
 struct gdb_get_next_pcs;
 
+/* Set to true if the 32-bit mode is in use.  */
+
+extern bool arm_apcs_32;
+
 #include "gdbarch.h"
 #include "arch/arm.h"
 #include "infrun.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move declaration of overload_resolution to value.h
@ 2019-09-20  1:12 gdb-buildbot
  2019-09-20  3:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  1:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e4153ae630fcc779ba414fdcea960394cb479e04 ***

commit e4153ae630fcc779ba414fdcea960394cb479e04
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Thu Sep 19 13:40:15 2019 +0900
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Fri Sep 20 09:19:15 2019 +0900

    Move declaration of overload_resolution to value.h
    
    The variable is defined in valops.c and has an extern decl in
    eval.c; move it to the header file.
    
    gdb/ChangeLog:
    
    2019-09-19  Christian Biesinger  <cbiesinger@google.com>
    
            * eval.c: Move declaration of overload_resolution to...
            * value.h: ...here.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c7e724eb8b..41a002498d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* eval.c: Move declaration of overload_resolution to...
+	* value.h: ...here.
+
 2019-09-19  Christian Biesinger  <cbiesinger@google.com>
 
 	* arm-linux-nat.c: Remove extern declaration for arm_apcs_32.
diff --git a/gdb/eval.c b/gdb/eval.c
index f8915b9957..70ba1f1e3f 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -42,9 +42,6 @@
 #include "typeprint.h"
 #include <ctype.h>
 
-/* This is defined in valops.c */
-extern bool overload_resolution;
-
 /* Prototypes for local functions.  */
 
 static struct value *evaluate_subexp_for_sizeof (struct expression *, int *,
diff --git a/gdb/value.h b/gdb/value.h
index 47bf672eb5..0d75eaa5b2 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -81,6 +81,8 @@ struct value_print_options;
   value_contents_eq for more info.
 */
 
+extern bool overload_resolution;
+
 /* The structure which defines the type of a value.  It should never
    be possible for a program lval value to survive over a call to the
    inferior (i.e. to be put into the history list or an internal


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64, error on unsupported dynamic relocation
@ 2019-09-20  7:59 gdb-buildbot
  2019-09-20  8:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  7:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e59a1001222d853f0517c7e974bb51589ba86710 ***

commit e59a1001222d853f0517c7e974bb51589ba86710
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Fri Sep 20 12:21:50 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Sep 20 12:51:19 2019 +0930

    PowerPC64, error on unsupported dynamic relocation
    
    This patch corrects the set of dynamic relocations recognised by gold
    as supported by glibc, and teaches ld.bfd to report an error similar
    to the gold error.  Note that ld --noinhibit-exec can be used to
    produce an output, supporting older ld with newer glibc if the set of
    supported glibc dynamic relocations changes.
    
    bfd/
            * elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
            (ppc64_elf_relocate_section): Error if emitting unsupported
            dynamic relocations.
    gold/
            * powerpc.cc (Target_powerpc::Scan::check_non_pic): Move REL24
            to 32-bit supported.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8fff6a6752..6fa38eef45 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
+	(ppc64_elf_relocate_section): Warn if emitting unsupported dynamic
+	relocations.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_get_section_name, bfd_get_section_vma),
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 14119dd259..ed8077586b 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -14148,6 +14148,66 @@ ppc64_elf_action_discarded (asection *sec)
   return _bfd_elf_default_action_discarded (sec);
 }
 
+/* These are the dynamic relocations supported by glibc.  */
+
+static bfd_boolean
+ppc64_glibc_dynamic_reloc (enum elf_ppc64_reloc_type r_type)
+{
+  switch (r_type)
+    {
+    case R_PPC64_RELATIVE:
+    case R_PPC64_NONE:
+    case R_PPC64_ADDR64:
+    case R_PPC64_GLOB_DAT:
+    case R_PPC64_IRELATIVE:
+    case R_PPC64_JMP_IREL:
+    case R_PPC64_JMP_SLOT:
+    case R_PPC64_DTPMOD64:
+    case R_PPC64_DTPREL64:
+    case R_PPC64_TPREL64:
+    case R_PPC64_TPREL16_LO_DS:
+    case R_PPC64_TPREL16_DS:
+    case R_PPC64_TPREL16:
+    case R_PPC64_TPREL16_LO:
+    case R_PPC64_TPREL16_HI:
+    case R_PPC64_TPREL16_HIGH:
+    case R_PPC64_TPREL16_HA:
+    case R_PPC64_TPREL16_HIGHA:
+    case R_PPC64_TPREL16_HIGHER:
+    case R_PPC64_TPREL16_HIGHEST:
+    case R_PPC64_TPREL16_HIGHERA:
+    case R_PPC64_TPREL16_HIGHESTA:
+    case R_PPC64_ADDR16_LO_DS:
+    case R_PPC64_ADDR16_LO:
+    case R_PPC64_ADDR16_HI:
+    case R_PPC64_ADDR16_HIGH:
+    case R_PPC64_ADDR16_HA:
+    case R_PPC64_ADDR16_HIGHA:
+    case R_PPC64_REL30:
+    case R_PPC64_COPY:
+    case R_PPC64_UADDR64:
+    case R_PPC64_UADDR32:
+    case R_PPC64_ADDR32:
+    case R_PPC64_ADDR24:
+    case R_PPC64_ADDR16:
+    case R_PPC64_UADDR16:
+    case R_PPC64_ADDR16_DS:
+    case R_PPC64_ADDR16_HIGHER:
+    case R_PPC64_ADDR16_HIGHEST:
+    case R_PPC64_ADDR16_HIGHERA:
+    case R_PPC64_ADDR16_HIGHESTA:
+    case R_PPC64_ADDR14:
+    case R_PPC64_ADDR14_BRTAKEN:
+    case R_PPC64_ADDR14_BRNTAKEN:
+    case R_PPC64_REL32:
+    case R_PPC64_REL64:
+      return TRUE;
+
+    default:
+      return FALSE;
+    }
+}
+
 /* The RELOCATE_SECTION function is called by the ELF backend linker
    to handle the relocations for a section.
 
@@ -14201,6 +14261,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
   bfd_boolean is_opd;
   /* Assume 'at' branch hints.  */
   bfd_boolean is_isa_v2 = TRUE;
+  bfd_boolean warned_dynamic = FALSE;
   bfd_vma d_offset = (bfd_big_endian (input_bfd) ? 2 : 0);
 
   /* Initialize howto table if needed.  */
@@ -16166,6 +16227,19 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 	      loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela);
 	      bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc);
 
+	      if (!warned_dynamic
+		  && !ppc64_glibc_dynamic_reloc (ELF64_R_TYPE (outrel.r_info)))
+		{
+		  info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%X%P: %pB: %s against %pT "
+		       "is not supported by glibc as a dynamic relocation\n"),
+		     input_bfd,
+		     ppc64_elf_howto_table[ELF64_R_TYPE (outrel.r_info)]->name,
+		     sym_name);
+		  warned_dynamic = TRUE;
+		}
+
 	      /* If this reloc is against an external symbol, it will
 		 be computed at runtime, so there's no need to do
 		 anything now.  However, for the sake of prelink ensure
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 9e45c0fb07..8ec7014b2a 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* powerpc.cc (Target_powerpc::Scan::check_non_pic): Move REL24
+	to 32-bit supported.
+
 2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* testsuite/Makefile.in: Re-generate.
diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index e69ce192e3..ad35095ccd 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -7355,7 +7355,6 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object,
     case elfcpp::R_POWERPC_ADDR14_BRTAKEN:
     case elfcpp::R_POWERPC_ADDR14_BRNTAKEN:
     case elfcpp::R_POWERPC_REL32:
-    case elfcpp::R_POWERPC_REL24:
     case elfcpp::R_POWERPC_TPREL16:
     case elfcpp::R_POWERPC_TPREL16_LO:
     case elfcpp::R_POWERPC_TPREL16_HI:
@@ -7404,6 +7403,7 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object,
 	{
 	  // These are the relocation types supported only on 32-bit.
 	  // ??? glibc ld.so doesn't need to support these.
+	case elfcpp::R_POWERPC_REL24:
 	case elfcpp::R_POWERPC_DTPREL16:
 	case elfcpp::R_POWERPC_DTPREL16_LO:
 	case elfcpp::R_POWERPC_DTPREL16_HI:


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] x86-64: fix handling of PUSH/POP of segment register
@ 2019-09-20  8:48 gdb-buildbot
  2019-09-20  9:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  8:48 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3f9aad111cea2f25877d0a6b404956769c14faee ***

commit 3f9aad111cea2f25877d0a6b404956769c14faee
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Sep 20 10:18:15 2019 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Sep 20 10:18:15 2019 +0200

    x86-64: fix handling of PUSH/POP of segment register
    
    Commit 21df382b91 ("x86: fold SReg{2,3}") went too far: Folding 64-bit
    PUSH/POP templates into non-64-bit ones isn't correct, due to the
    different operand widths, and hence suffixes permitted. Restore the
    separate templates.
    
    Add tests of PUSH/POP with q suffix and %fs/%gs operands to the
    testsuite. While doing so also add PUSHF/POPF ones _without_ suffix.

diff --git a/gas/ChangeLog b/gas/ChangeLog
index b4234f09c0..bcd2f9af35 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2018-09-20  Jan Beulich  <jbeulich@suse.com>
+
+	PR gas/25012
+	* config/tc-i386.c (process_operands): Adjust handling of
+	PUSH/POP of segment registers.
+	* testsuite/gas/i386/x86-64-opcode.s: Add PUSHq/POPq case with
+	%fs/%gs operands. Add PUSHF/POPF case without suffix.
+	* testsuite/gas/i386/x86-64-opcode.d: Adjust expectations.
+
 2019-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>
 
 	* NEWS: Add SVE2 and TME entries.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index fec69c1397..349b36da5d 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -7010,14 +7010,14 @@ duplicate:
 	  if (flag_code != CODE_64BIT
 	      ? i.tm.base_opcode == POP_SEG_SHORT
 		&& i.op[0].regs->reg_num == 1
-	      : (i.tm.base_opcode | 1) == POP_SEG_SHORT
+	      : (i.tm.base_opcode | 1) == POP_SEG386_SHORT
 		&& i.op[0].regs->reg_num < 4)
 	    {
 	      as_bad (_("you can't `%s %s%s'"),
 		      i.tm.name, register_prefix, i.op[0].regs->reg_name);
 	      return 0;
 	    }
-	  if ( i.op[0].regs->reg_num > 3 )
+	  if ( i.op[0].regs->reg_num > 3 && i.tm.opcode_length == 1 )
 	    {
 	      i.tm.base_opcode ^= POP_SEG_SHORT ^ POP_SEG386_SHORT;
 	      i.tm.opcode_length = 2;
diff --git a/gas/testsuite/gas/i386/x86-64-opcode.d b/gas/testsuite/gas/i386/x86-64-opcode.d
index 35829f4f84..d8a1e44a45 100644
--- a/gas/testsuite/gas/i386/x86-64-opcode.d
+++ b/gas/testsuite/gas/i386/x86-64-opcode.d
@@ -255,13 +255,19 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:	41 8f 00             	popq   \(%r8\)
 [ 	]*[a-f0-9]+:	8f 00                	popq   \(%rax\)
 [ 	]*[a-f0-9]+:	0f a1                	popq   %fs
+[ 	]*[a-f0-9]+:	0f a1                	popq   %fs
+[ 	]*[a-f0-9]+:	0f a9                	popq   %gs
 [ 	]*[a-f0-9]+:	0f a9                	popq   %gs
 [ 	]*[a-f0-9]+:	9d                   	popfq  
+[ 	]*[a-f0-9]+:	9d                   	popfq  
 [ 	]*[a-f0-9]+:	41 ff 30             	pushq  \(%r8\)
 [ 	]*[a-f0-9]+:	ff 30                	pushq  \(%rax\)
 [ 	]*[a-f0-9]+:	0f a0                	pushq  %fs
+[ 	]*[a-f0-9]+:	0f a0                	pushq  %fs
+[ 	]*[a-f0-9]+:	0f a8                	pushq  %gs
 [ 	]*[a-f0-9]+:	0f a8                	pushq  %gs
 [ 	]*[a-f0-9]+:	9c                   	pushfq 
+[ 	]*[a-f0-9]+:	9c                   	pushfq 
 [ 	]*[a-f0-9]+:	0f 77                	emms   
 [ 	]*[a-f0-9]+:	0f 0e                	femms  
 [ 	]*[a-f0-9]+:	0f 08                	invd   
diff --git a/gas/testsuite/gas/i386/x86-64-opcode.s b/gas/testsuite/gas/i386/x86-64-opcode.s
index 8d4a6ed9b2..caee124d16 100644
--- a/gas/testsuite/gas/i386/x86-64-opcode.s
+++ b/gas/testsuite/gas/i386/x86-64-opcode.s
@@ -323,15 +323,21 @@
 	POPq (%r8)		      #	 --  --	 -- 41	 8F 00				 ; REX to access upper reg.
 	POPq (%rax)		      #	 --  --	 -- --	 8F 00
 	POP %fs			      #	 --  --	 -- --	 0F A1
+	POPq %fs		      #	 --  --	 -- --	 0F A1
 	POP %gs			      #	 --  --	 -- --	 0F A9
-	POPFQ			      #	 --  --	 -- --	 9D
+	POPq %gs		      #	 --  --	 -- --	 0F A9
+	POPF			      #	 --  --	 -- --	 9D
+	POPFq			      #	 --  --	 -- --	 9D
 
 	# PUSH
 	PUSHq (%r8)		      #	 --  --	 -- 41	 FF 30				 ; REX to access upper reg.
 	PUSHq (%rax)		      #	 --  --	 -- --	 FF 30
 	PUSH %fs		      #	 --  --	 -- --	 0F A0
+	PUSHq %fs		      #	 --  --	 -- --	 0F A0
 	PUSH %gs		      #	 --  --	 -- --	 0F A8
-	PUSHFQ			      #	 --  --	 -- --	 9C
+	PUSHq %gs		      #	 --  --	 -- --	 0F A8
+	PUSHF			      #	 --  --	 -- --	 9C
+	PUSHFq			      #	 --  --	 -- --	 9C
 
 
 
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 0d8abcd7ff..0043d4eb16 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,10 @@
+2018-09-20  Jan Beulich  <jbeulich@suse.com>
+
+	PR gas/25012
+	* i386-opc.tbl (push, pop): Re-instate distinct Cpu64 templates
+	with SReg operand.
+	* i386-tbl.h: Re-generate.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* arc-ext.c: Update throughout for bfd section macro changes.
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
index af2b600ba1..256ff04360 100644
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -116,22 +116,24 @@ push, 1, 0x50, None, 1, CpuNo64, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|N
 push, 1, 0xff, 0x6, 1, CpuNo64, Modrm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Reg32|Word|Dword|Unspecified|BaseIndex }
 push, 1, 0x6a, None, 1, Cpu186|CpuNo64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm8S }
 push, 1, 0x68, None, 1, Cpu186|CpuNo64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm16|Imm32 }
-push, 1, 0x6, None, 1, 0, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { SReg }
+push, 1, 0x6, None, 1, CpuNo64, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { SReg }
 // In 64bit mode, the operand size is implicitly 64bit.
 push, 1, 0x50, None, 1, Cpu64, ShortForm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Reg16|Reg64 }
 push, 1, 0xff, 0x6, 1, Cpu64, Modrm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Reg16|Reg64|Word|Qword|Unspecified|BaseIndex }
 push, 1, 0x6a, None, 1, Cpu64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Imm8S }
 push, 1, 0x68, None, 1, Cpu64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Imm16|Imm32S }
+push, 1, 0xfa0, None, 2, Cpu64, ShortForm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { SReg }
 
 pusha, 0, 0x60, None, 1, Cpu186|CpuNo64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
 
 // Pop instructions.
 pop, 1, 0x58, None, 1, CpuNo64, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Reg32 }
 pop, 1, 0x8f, 0x0, 1, CpuNo64, Modrm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Reg32|Word|Dword|Unspecified|BaseIndex }
-pop, 1, 0x7, None, 1, 0, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { SReg }
+pop, 1, 0x7, None, 1, CpuNo64, ShortForm|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { SReg }
 // In 64bit mode, the operand size is implicitly 64bit.
 pop, 1, 0x58, None, 1, Cpu64, ShortForm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Reg16|Reg64 }
 pop, 1, 0x8f, 0x0, 1, Cpu64, Modrm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Reg16|Reg64|Word|Qword|Unspecified|BaseIndex }
+pop, 1, 0xfa1, None, 2, Cpu64, ShortForm|DefaultSize|No_bSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { SReg }
 
 popa, 0, 0x61, None, 1, Cpu186|CpuNo64, DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
 
diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
index 307415e8ca..89c752e826 100644
--- a/opcodes/i386-tbl.h
+++ b/opcodes/i386-tbl.h
@@ -635,7 +635,7 @@ const insn_template i386_optab[] =
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+        0, 0, 0, 0, 0, 0, 0, 1, 0 } },
     { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1,
       1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -694,6 +694,19 @@ const insn_template i386_optab[] =
       0 },
     { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,
 	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } },
+  { "push", 1, 0xfa0, None, 2,
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 1, 0, 0 } },
+    { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0,
+      1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0 },
+    { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } },
   { "pusha", 0, 0x60, None, 1,
     { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -739,7 +752,7 @@ const insn_template i386_optab[] =
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+        0, 0, 0, 0, 0, 0, 0, 1, 0 } },
     { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1,
       1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -772,6 +785,19 @@ const insn_template i386_optab[] =
       0 },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,
 	  0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 } } } },
+  { "pop", 1, 0xfa1, None, 2,
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 1, 0, 0 } },
+    { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0,
+      1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0 },
+    { { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } },
   { "popa", 0, 0x61, None, 1,
     { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd macro conversion to inline functions
@ 2019-09-20  9:09 gdb-buildbot
  2019-09-20 10:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  9:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 00f93c449228e69f2161405b1f49b406e88785f0 ***

commit 00f93c449228e69f2161405b1f49b406e88785f0
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Sep 19 11:51:04 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Sep 20 18:04:02 2019 +0930

    bfd macro conversion to inline functions
    
    This converts some of the macros that access struct bfd fields to
    inline functions.
    
    bfd/
            * archive.c (bfd_generic_archive_p): Use bfd_set_thin_archive.
            * bfd-in.h (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
            (bfd_get_target, bfd_get_flavour, bfd_family_coff, bfd_big_endian),
            (bfd_little_endian, bfd_header_big_endian, bfd_header_little_endian),
            (bfd_get_file_flags, bfd_applicable_file_flags),
            (bfd_applicable_section_flags, bfd_has_map, bfd_is_thin_archive),
            (bfd_valid_reloc_types, bfd_usrdata, bfd_get_start_address),
            (bfd_get_symcount, bfd_get_outsymbols, bfd_count_sections),
            (bfd_get_dynamic_symcount, bfd_get_symbol_leading_char): Delete.
            * bfd/bfd.c (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
            (bfd_get_file_flags, bfd_get_start_address, bfd_get_symcount),
            (bfd_get_dynamic_symcount, bfd_get_outsymbols, bfd_count_sections),
            (bfd_has_map, bfd_is_thin_archive, bfd_set_thin_archive),
            (bfd_usrdata, bfd_set_usrdata): New inline functions.
            * targets.c (bfd_get_target, bfd_get_flavour),
            (bfd_applicable_file_flags, bfd_family_coff, bfd_big_endian),
            (bfd_little_endian, bfd_header_big_endian),
            (bfd_header_little_endian, bfd_applicable_section_flags),
            (bfd_get_symbol_leading_char): New inline functions.
            * bfd-in2.h: Regenerate.
    binutils/
            * ar.c (write_archive): Use bfd_set_thin_archive.
    gdb/
            * gdb_bfd.c (gdb_bfd_ref, gdb_bfd_unref): Use bfd_set_usrdata.
            * dwarf2read.c (dwarf2_read_gdb_index, dwarf2_read_debug_names),
            (read_indirect_string_from_dwz): Use bfd accessor.
            * dwarf2read.h (struct dwz_file <filename>): Likewise.
            * machoread.c (macho_symfile_read_all_oso): Likewise.
            * solib.c (solib_bfd_open): Likewise.
    ld/
            * ldelf.c (ldelf_after_open, ldelf_place_orphan
            * ldlang.c (walk_wild_file, lang_process): Use bfd_usrdata.
            (load_symbols, ldlang_add_file): Use bfd_set_usrdata.
            * ldmain.c (add_archive_element): Use bfd_usrdata.
            * ldlang.h (bfd_input_just_syms): New inline function.
            * emultempl/aarch64elf.em (build_section_lists): Use it.
            * 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/ppc64elf.em (build_section_lists): Likewise.
    sim/
            * ppc/emul_generic.c (emul_add_tree_options): Delete old bfd code.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6fa38eef45..1c700dbfff 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,26 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (bfd_generic_archive_p): Use bfd_set_thin_archive.
+	* bfd-in.h (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
+	(bfd_get_target, bfd_get_flavour, bfd_family_coff, bfd_big_endian),
+	(bfd_little_endian, bfd_header_big_endian, bfd_header_little_endian),
+	(bfd_get_file_flags, bfd_applicable_file_flags),
+	(bfd_applicable_section_flags, bfd_has_map, bfd_is_thin_archive),
+	(bfd_valid_reloc_types, bfd_usrdata, bfd_get_start_address),
+	(bfd_get_symcount, bfd_get_outsymbols, bfd_count_sections),
+	(bfd_get_dynamic_symcount, bfd_get_symbol_leading_char): Delete.
+	* bfd/bfd.c (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
+	(bfd_get_file_flags, bfd_get_start_address, bfd_get_symcount),
+	(bfd_get_dynamic_symcount, bfd_get_outsymbols, bfd_count_sections),
+	(bfd_has_map, bfd_is_thin_archive, bfd_set_thin_archive),
+	(bfd_usrdata, bfd_set_usrdata): New inline functions.
+	* targets.c (bfd_get_target, bfd_get_flavour),
+	(bfd_applicable_file_flags, bfd_family_coff, bfd_big_endian),
+	(bfd_little_endian, bfd_header_big_endian),
+	(bfd_header_little_endian, bfd_applicable_section_flags),
+	(bfd_get_symbol_leading_char): New inline functions.
+	* bfd-in2.h: Regenerate.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
diff --git a/bfd/archive.c b/bfd/archive.c
index dc0400d1cf..ccc09ad49f 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -856,7 +856,7 @@ bfd_generic_archive_p (bfd *abfd)
       return NULL;
     }
 
-  bfd_is_thin_archive (abfd) = (strncmp (armag, ARMAGT, SARMAG) == 0);
+  bfd_set_thin_archive (abfd, strncmp (armag, ARMAGT, SARMAG) == 0);
 
   if (strncmp (armag, ARMAG, SARMAG) != 0
       && ! bfd_is_thin_archive (abfd))
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index e55e3e90ba..34c1c3ad0e 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -509,38 +509,6 @@ extern int bfd_stat (bfd *, struct stat *);
 #endif
 extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
 
-#define bfd_get_filename(abfd) ((abfd)->filename)
-#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
-#define bfd_get_format(abfd) ((abfd)->format)
-#define bfd_get_target(abfd) ((abfd)->xvec->name)
-#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
-#define bfd_family_coff(abfd) \
-  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
-   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
-#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
-#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
-#define bfd_header_big_endian(abfd) \
-  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
-#define bfd_header_little_endian(abfd) \
-  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
-#define bfd_get_file_flags(abfd) ((abfd)->flags)
-#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
-#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
-#define bfd_has_map(abfd) ((abfd)->has_armap)
-#define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
-
-#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
-#define bfd_usrdata(abfd) ((abfd)->usrdata)
-
-#define bfd_get_start_address(abfd) ((abfd)->start_address)
-#define bfd_get_symcount(abfd) ((abfd)->symcount)
-#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
-#define bfd_count_sections(abfd) ((abfd)->section_count)
-
-#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
-
-#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
 extern bfd_boolean bfd_cache_close
   (bfd *abfd);
 /* NB: This declaration should match the autogenerated one in libbfd.h.  */
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 425f0c6709..4f158679b2 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -516,38 +516,6 @@ extern int bfd_stat (bfd *, struct stat *);
 #endif
 extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
 
-#define bfd_get_filename(abfd) ((abfd)->filename)
-#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
-#define bfd_get_format(abfd) ((abfd)->format)
-#define bfd_get_target(abfd) ((abfd)->xvec->name)
-#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
-#define bfd_family_coff(abfd) \
-  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
-   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
-#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
-#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
-#define bfd_header_big_endian(abfd) \
-  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
-#define bfd_header_little_endian(abfd) \
-  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
-#define bfd_get_file_flags(abfd) ((abfd)->flags)
-#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
-#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
-#define bfd_has_map(abfd) ((abfd)->has_armap)
-#define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
-
-#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
-#define bfd_usrdata(abfd) ((abfd)->usrdata)
-
-#define bfd_get_start_address(abfd) ((abfd)->start_address)
-#define bfd_get_symcount(abfd) ((abfd)->symcount)
-#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
-#define bfd_count_sections(abfd) ((abfd)->section_count)
-
-#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
-
-#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
 extern bfd_boolean bfd_cache_close
   (bfd *abfd);
 /* NB: This declaration should match the autogenerated one in libbfd.h.  */
@@ -7321,6 +7289,78 @@ struct bfd
   const struct bfd_build_id *build_id;
 };
 
+static inline const char *
+bfd_get_filename (const bfd *abfd)
+{
+  return abfd->filename;
+}
+
+static inline bfd_boolean
+bfd_get_cacheable (const bfd *abfd)
+{
+  return abfd->cacheable;
+}
+
+static inline enum bfd_format
+bfd_get_format (const bfd *abfd)
+{
+  return abfd->format;
+}
+
+static inline flagword
+bfd_get_file_flags (const bfd *abfd)
+{
+  return abfd->flags;
+}
+
+static inline bfd_vma
+bfd_get_start_address (const bfd *abfd)
+{
+  return abfd->start_address;
+}
+
+static inline unsigned int
+bfd_get_symcount (const bfd *abfd)
+{
+  return abfd->symcount;
+}
+
+static inline unsigned int
+bfd_get_dynamic_symcount (const bfd *abfd)
+{
+  return abfd->dynsymcount;
+}
+
+static inline struct bfd_symbol **
+bfd_get_outsymbols (const bfd *abfd)
+{
+  return abfd->outsymbols;
+}
+
+static inline unsigned int
+bfd_count_sections (const bfd *abfd)
+{
+  return abfd->section_count;
+}
+
+static inline bfd_boolean
+bfd_has_map (const bfd *abfd)
+{
+  return abfd->has_armap;
+}
+
+static inline bfd_boolean
+bfd_is_thin_archive (const bfd *abfd)
+{
+  return abfd->is_thin_archive;
+}
+
+static inline void *
+bfd_usrdata (const bfd *abfd)
+{
+  return abfd->usrdata;
+}
+
 /* See note beside bfd_set_section_userdata.  */
 static inline bfd_boolean
 bfd_set_cacheable (bfd * abfd, bfd_boolean val)
@@ -7329,6 +7369,18 @@ bfd_set_cacheable (bfd * abfd, bfd_boolean val)
   return TRUE;
 }
 
+static inline void
+bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
+{
+  abfd->is_thin_archive = val;
+}
+
+static inline void
+bfd_set_usrdata (bfd *abfd, void *val)
+{
+  abfd->usrdata = val;
+}
+
 
 typedef enum bfd_error
 {
@@ -8023,6 +8075,66 @@ typedef struct bfd_target
 
 } bfd_target;
 
+static inline const char *
+bfd_get_target (const bfd *abfd)
+{
+  return abfd->xvec->name;
+}
+
+static inline enum bfd_flavour
+bfd_get_flavour (const bfd *abfd)
+{
+  return abfd->xvec->flavour;
+}
+
+static inline flagword
+bfd_applicable_file_flags (const bfd *abfd)
+{
+  return abfd->xvec->object_flags;
+}
+
+static inline bfd_boolean
+bfd_family_coff (const bfd *abfd)
+{
+  return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
+          || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
+}
+
+static inline bfd_boolean
+bfd_big_endian (const bfd *abfd)
+{
+  return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
+}
+static inline bfd_boolean
+bfd_little_endian (const bfd *abfd)
+{
+  return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
+}
+
+static inline bfd_boolean
+bfd_header_big_endian (const bfd *abfd)
+{
+  return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
+}
+
+static inline bfd_boolean
+bfd_header_little_endian (const bfd *abfd)
+{
+  return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
+}
+
+static inline flagword
+bfd_applicable_section_flags (const bfd *abfd)
+{
+  return abfd->xvec->section_flags;
+}
+
+static inline char
+bfd_get_symbol_leading_char (const bfd *abfd)
+{
+  return abfd->xvec->symbol_leading_char;
+}
+
 bfd_boolean bfd_set_default_target (const char *name);
 
 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
diff --git a/bfd/bfd.c b/bfd/bfd.c
index 7029bf7b85..c11274c187 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -355,6 +355,78 @@ CODE_FRAGMENT
 .  const struct bfd_build_id *build_id;
 .};
 .
+.static inline const char *
+.bfd_get_filename (const bfd *abfd)
+.{
+.  return abfd->filename;
+.}
+.
+.static inline bfd_boolean
+.bfd_get_cacheable (const bfd *abfd)
+.{
+.  return abfd->cacheable;
+.}
+.
+.static inline enum bfd_format
+.bfd_get_format (const bfd *abfd)
+.{
+.  return abfd->format;
+.}
+.
+.static inline flagword
+.bfd_get_file_flags (const bfd *abfd)
+.{
+.  return abfd->flags;
+.}
+.
+.static inline bfd_vma
+.bfd_get_start_address (const bfd *abfd)
+.{
+.  return abfd->start_address;
+.}
+.
+.static inline unsigned int
+.bfd_get_symcount (const bfd *abfd)
+.{
+.  return abfd->symcount;
+.}
+.
+.static inline unsigned int
+.bfd_get_dynamic_symcount (const bfd *abfd)
+.{
+.  return abfd->dynsymcount;
+.}
+.
+.static inline struct bfd_symbol **
+.bfd_get_outsymbols (const bfd *abfd)
+.{
+.  return abfd->outsymbols;
+.}
+.
+.static inline unsigned int
+.bfd_count_sections (const bfd *abfd)
+.{
+.  return abfd->section_count;
+.}
+.
+.static inline bfd_boolean
+.bfd_has_map (const bfd *abfd)
+.{
+.  return abfd->has_armap;
+.}
+.
+.static inline bfd_boolean
+.bfd_is_thin_archive (const bfd *abfd)
+.{
+.  return abfd->is_thin_archive;
+.}
+.
+.static inline void *
+.bfd_usrdata (const bfd *abfd)
+.{
+.  return abfd->usrdata;
+.}
+.
 .{* See note beside bfd_set_section_userdata.  *}
 .static inline bfd_boolean
 .bfd_set_cacheable (bfd * abfd, bfd_boolean val)
@@ -363,6 +435,18 @@ CODE_FRAGMENT
 .  return TRUE;
 .}
 .
+.static inline void
+.bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
+.{
+.  abfd->is_thin_archive = val;
+.}
+.
+.static inline void
+.bfd_set_usrdata (bfd *abfd, void *val)
+.{
+.  abfd->usrdata = val;
+.}
+.
 */
 
 #include "sysdep.h"
diff --git a/bfd/targets.c b/bfd/targets.c
index b02dfc5484..116a5c34de 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -584,6 +584,66 @@ to find an alternative output format that is suitable.
 .
 .} bfd_target;
 .
+.static inline const char *
+.bfd_get_target (const bfd *abfd)
+.{
+.  return abfd->xvec->name;
+.}
+.
+.static inline enum bfd_flavour
+.bfd_get_flavour (const bfd *abfd)
+.{
+.  return abfd->xvec->flavour;
+.}
+.
+.static inline flagword
+.bfd_applicable_file_flags (const bfd *abfd)
+.{
+.  return abfd->xvec->object_flags;
+.}
+.
+.static inline bfd_boolean
+.bfd_family_coff (const bfd *abfd)
+.{
+.  return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
+.          || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
+.}
+.
+.static inline bfd_boolean
+.bfd_big_endian (const bfd *abfd)
+.{
+.  return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
+.}
+.static inline bfd_boolean
+.bfd_little_endian (const bfd *abfd)
+.{
+.  return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
+.}
+.
+.static inline bfd_boolean
+.bfd_header_big_endian (const bfd *abfd)
+.{
+.  return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
+.}
+.
+.static inline bfd_boolean
+.bfd_header_little_endian (const bfd *abfd)
+.{
+.  return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
+.}
+.
+.static inline flagword
+.bfd_applicable_section_flags (const bfd *abfd)
+.{
+.  return abfd->xvec->section_flags;
+.}
+.
+.static inline char
+.bfd_get_symbol_leading_char (const bfd *abfd)
+.{
+.  return abfd->xvec->symbol_leading_char;
+.}
+.
 */
 
 /* All known xvecs (even those that don't compile on all systems).
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 9d1aa848fb..21dc92dcae 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* ar.c (write_archive): Use bfd_set_thin_archive.
+
 2019-09-18  Tamar Christina  <tamar.christina@arm.com>
 
 	* testsuite/binutils-all/objdump.exp (objump -S): Update testcases.
diff --git a/binutils/ar.c b/binutils/ar.c
index 4e953c054d..6bac862bc7 100644
--- a/binutils/ar.c
+++ b/binutils/ar.c
@@ -1200,7 +1200,7 @@ write_archive (bfd *iarch)
     obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
 
   if (make_thin_archive || bfd_is_thin_archive (iarch))
-    bfd_is_thin_archive (obfd) = 1;
+    bfd_set_thin_archive (obfd, TRUE);
 
   if (!bfd_set_archive_head (obfd, contents_head))
     bfd_fatal (old_name);
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 41a002498d..5314b2746b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* gdb_bfd.c (gdb_bfd_ref, gdb_bfd_unref): Use bfd_set_usrdata.
+	* dwarf2read.c (dwarf2_read_gdb_index, dwarf2_read_debug_names),
+	(read_indirect_string_from_dwz): Use bfd accessor.
+	* dwarf2read.h (struct dwz_file <filename>): Likewise.
+	* machoread.c (macho_symfile_read_all_oso): Likewise.
+	* solib.c (solib_bfd_open): Likewise.
+
 2019-09-19  Christian Biesinger  <cbiesinger@google.com>
 
 	* eval.c: Move declaration of overload_resolution to...
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 5e71ded203..1052501c35 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -3584,14 +3584,14 @@ dwarf2_read_gdb_index
 	return 0;
 
       if (!read_gdb_index_from_buffer (objfile,
-				       bfd_get_filename (dwz->dwz_bfd), 1,
-				       dwz_index_content, &dwz_map,
+				       bfd_get_filename (dwz->dwz_bfd.get ()),
+				       1, dwz_index_content, &dwz_map,
 				       &dwz_list, &dwz_list_elements,
 				       &dwz_types_ignore,
 				       &dwz_types_elements_ignore))
 	{
 	  warning (_("could not read '.gdb_index' section from %s; skipping"),
-		   bfd_get_filename (dwz->dwz_bfd));
+		   bfd_get_filename (dwz->dwz_bfd.get ()));
 	  return 0;
 	}
     }
@@ -5596,11 +5596,11 @@ dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
   if (dwz != NULL)
     {
       if (!read_debug_names_from_section (objfile,
-					  bfd_get_filename (dwz->dwz_bfd),
+					  bfd_get_filename (dwz->dwz_bfd.get ()),
 					  &dwz->debug_names, dwz_map))
 	{
 	  warning (_("could not read '.debug_names' section from %s; skipping"),
-		   bfd_get_filename (dwz->dwz_bfd));
+		   bfd_get_filename (dwz->dwz_bfd.get ()));
 	  return false;
 	}
     }
@@ -19759,11 +19759,11 @@ read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
   if (dwz->str.buffer == NULL)
     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
 	     "section [in module %s]"),
-	   bfd_get_filename (dwz->dwz_bfd));
+	   bfd_get_filename (dwz->dwz_bfd.get ()));
   if (str_offset >= dwz->str.size)
     error (_("DW_FORM_GNU_strp_alt pointing outside of "
 	     ".debug_str section [in module %s]"),
-	   bfd_get_filename (dwz->dwz_bfd));
+	   bfd_get_filename (dwz->dwz_bfd.get ()));
   gdb_assert (HOST_CHAR_BIT == 8);
   if (dwz->str.buffer[str_offset] == '\0')
     return NULL;
diff --git a/gdb/dwarf2read.h b/gdb/dwarf2read.h
index e9b946247b..d5a02990d4 100644
--- a/gdb/dwarf2read.h
+++ b/gdb/dwarf2read.h
@@ -417,7 +417,7 @@ struct dwz_file
 
   const char *filename () const
   {
-    return bfd_get_filename (this->dwz_bfd);
+    return bfd_get_filename (this->dwz_bfd.get ());
   }
 
   /* A dwz file can only contain a few sections.  */
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index 8a67d5e97d..69618a27e1 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -546,7 +546,7 @@ gdb_bfd_ref (struct bfd *abfd)
   abfd->flags |= BFD_DECOMPRESS;
 
   gdata = new gdb_bfd_data (abfd);
-  bfd_usrdata (abfd) = gdata;
+  bfd_set_usrdata (abfd, gdata);
   bfd_alloc_data (abfd);
 
   /* This is the first we've seen it, so add it to the hash table.  */
@@ -608,7 +608,7 @@ gdb_bfd_unref (struct bfd *abfd)
 
   bfd_free_data (abfd);
   delete gdata;
-  bfd_usrdata (abfd) = NULL;  /* Paranoia.  */
+  bfd_set_usrdata (abfd, NULL);  /* Paranoia.  */
 
   htab_remove_elt (all_bfds, abfd);
 
diff --git a/gdb/machoread.c b/gdb/machoread.c
index 1795982a3e..a015d297c3 100644
--- a/gdb/machoread.c
+++ b/gdb/machoread.c
@@ -671,7 +671,7 @@ macho_symfile_read_all_oso (std::vector<oso_el> *oso_vector_ptr,
           /* Load all oso in this library.  */
 	  while (member_bfd != NULL)
 	    {
-	      const char *member_name = member_bfd->filename;
+	      const char *member_name = bfd_get_filename (member_bfd.get ());
               int member_len = strlen (member_name);
 
               /* If this member is referenced, add it as a symfile.  */
@@ -685,7 +685,7 @@ macho_symfile_read_all_oso (std::vector<oso_el> *oso_vector_ptr,
                                   member_len))
                     {
                       macho_add_oso_symfile (oso2, member_bfd,
-					     bfd_get_filename (member_bfd),
+					     bfd_get_filename (member_bfd.get ()),
                                              main_objfile, symfile_flags);
                       oso2->name = NULL;
                       break;
diff --git a/gdb/solib.c b/gdb/solib.c
index 86000f6d61..b9a61e265b 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -502,14 +502,14 @@ solib_bfd_open (const char *pathname)
   /* Check bfd format.  */
   if (!bfd_check_format (abfd.get (), bfd_object))
     error (_("`%s': not in executable format: %s"),
-	   bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ()));
+	   bfd_get_filename (abfd.get ()), bfd_errmsg (bfd_get_error ()));
 
   /* Check bfd arch.  */
   b = gdbarch_bfd_arch_info (target_gdbarch ());
   if (!b->compatible (b, bfd_get_arch_info (abfd.get ())))
     warning (_("`%s': Shared library architecture %s is not compatible "
-               "with target architecture %s."), bfd_get_filename (abfd),
-             bfd_get_arch_info (abfd.get ())->printable_name,
+	       "with target architecture %s."), bfd_get_filename (abfd.get ()),
+	     bfd_get_arch_info (abfd.get ())->printable_name,
 	     b->printable_name);
 
   return abfd;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 2abb558b9c..705a2b2de8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* ldelf.c (ldelf_after_open, ldelf_place_orphan
+	* ldlang.c (walk_wild_file, lang_process): Use bfd_usrdata.
+	(load_symbols, ldlang_add_file): Use bfd_set_usrdata.
+	* ldmain.c (add_archive_element): Use bfd_usrdata.
+	* ldlang.h (bfd_input_just_syms): New inline function.
+	* emultempl/aarch64elf.em (build_section_lists): Use it.
+	* 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/ppc64elf.em (build_section_lists): Likewise.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* ldcref.c, * ldctor.c, * ldelf.c, * ldlang.c, * pe-dll.c,
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index bd5c888782..208d169404 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -217,7 +217,7 @@ build_section_lists (lang_statement_union_type *statement)
     {
       asection *i = statement->input_section.section;
 
-      if (!((lang_input_statement_type *) i->owner->usrdata)->flags.just_syms
+      if (!bfd_input_just_syms (i->owner)
 	  && (i->flags & SEC_EXCLUDE) == 0
 	  && i->output_section != NULL
 	  && i->output_section->owner == link_info.output_bfd)
diff --git a/ld/emultempl/mmo.em b/ld/emultempl/mmo.em
index fff48942bc..85c5863953 100644
--- a/ld/emultempl/mmo.em
+++ b/ld/emultempl/mmo.em
@@ -116,9 +116,7 @@ mmo_place_orphan (asection *s,
 	    && (nexts->flags & SEC_EXCLUDE) == 0
 	    && ((nexts->flags ^ flags) & (SEC_LOAD | SEC_ALLOC)) == 0
 	    && (nexts->owner->flags & DYNAMIC) == 0
-	    && nexts->owner->usrdata != NULL
-	    && !(((lang_input_statement_type *) nexts->owner->usrdata)
-		 ->flags.just_syms))
+	    && !bfd_input_just_syms (nexts->owner))
 	  flags = (((flags ^ SEC_READONLY) | (nexts->flags ^ SEC_READONLY))
 		   ^ SEC_READONLY);
     }
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index 70f771cebd..150c98296f 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -2116,9 +2116,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
 		&& (nexts->flags & SEC_EXCLUDE) == 0
 		&& ((nexts->flags ^ flags) & (SEC_LOAD | SEC_ALLOC)) == 0
 		&& (nexts->owner->flags & DYNAMIC) == 0
-		&& nexts->owner->usrdata != NULL
-		&& !(((lang_input_statement_type *) nexts->owner->usrdata)
-		     ->flags.just_syms))
+		&& !bfd_input_just_syms (nexts->owner))
 	      flags = (((flags ^ SEC_READONLY)
 			| (nexts->flags ^ SEC_READONLY))
 		       ^ SEC_READONLY);
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 6d150d211a..ab2a989bc5 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -1914,9 +1914,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
 		&& (nexts->flags & SEC_EXCLUDE) == 0
 		&& ((nexts->flags ^ flags) & (SEC_LOAD | SEC_ALLOC)) == 0
 		&& (nexts->owner->flags & DYNAMIC) == 0
-		&& nexts->owner->usrdata != NULL
-		&& !(((lang_input_statement_type *) nexts->owner->usrdata)
-		     ->flags.just_syms))
+		&& !bfd_input_just_syms (nexts->owner))
 	      flags = (((flags ^ SEC_READONLY)
 			| (nexts->flags ^ SEC_READONLY))
 		       ^ SEC_READONLY);
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index ee71f256c6..aad56cfddd 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -489,7 +489,7 @@ build_section_lists (lang_statement_union_type *statement)
     {
       asection *i = statement->input_section.section;
 
-      if (!((lang_input_statement_type *) i->owner->usrdata)->flags.just_syms
+      if (!bfd_input_just_syms (i->owner)
 	  && (i->flags & SEC_EXCLUDE) == 0
 	  && i->output_section != NULL
 	  && i->output_section->owner == link_info.output_bfd)
diff --git a/ld/ldelf.c b/ld/ldelf.c
index 8d4a2e58a1..e43d33d432 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -1018,7 +1018,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
 	   abfd != (bfd *) NULL; abfd = abfd->link.next)
 	if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
 	    && bfd_count_sections (abfd) != 0
-	    && !((lang_input_statement_type *) abfd->usrdata)->flags.just_syms)
+	    && !bfd_input_just_syms (abfd))
 	  break;
 
       /* PR 10555: If there are no ELF input files do not try to
@@ -1060,7 +1060,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
 	{
 	  int type = 0;
 
-	  if (((lang_input_statement_type *) abfd->usrdata)->flags.just_syms)
+	  if (bfd_input_just_syms (abfd))
 	    continue;
 
 	  for (s = abfd->sections; s && type < COMPACT_EH_HDR; s = s->next)
@@ -2065,9 +2065,7 @@ ldelf_place_orphan (asection *s, const char *secname, int constraint)
 	    && (nexts->flags & SEC_EXCLUDE) == 0
 	    && ((nexts->flags ^ flags) & (SEC_LOAD | SEC_ALLOC)) == 0
 	    && (nexts->owner->flags & DYNAMIC) == 0
-	    && nexts->owner->usrdata != NULL
-	    && !(((lang_input_statement_type *) nexts->owner->usrdata)
-		 ->flags.just_syms)
+	    && !bfd_input_just_syms (nexts->owner)
 	    && _bfd_elf_match_sections_by_type (nexts->owner, nexts,
 						s->owner, s))
 	  flags = (((flags ^ SEC_READONLY)
diff --git a/ld/ldlang.c b/ld/ldlang.c
index a3843623fb..0ffcf34473 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -902,12 +902,8 @@ walk_wild_file (lang_wild_statement_type *s,
 	     archive which is included, BFD will call ldlang_add_file,
 	     which will set the usrdata field of the member to the
 	     lang_input_statement.  */
-	  if (member->usrdata != NULL)
-	    {
-	      walk_wild_section (s,
-				 (lang_input_statement_type *) member->usrdata,
-				 callback, data);
-	    }
+	  if (bfd_usrdata (member) != NULL)
+	    walk_wild_section (s, bfd_usrdata (member), callback, data);
 
 	  member = bfd_openr_next_archived_file (f->the_bfd, member);
 	}
@@ -3038,7 +3034,7 @@ load_symbols (lang_input_statement_type *entry,
     case bfd_archive:
       check_excluded_libs (entry->the_bfd);
 
-      entry->the_bfd->usrdata = entry;
+      bfd_set_usrdata (entry->the_bfd, entry);
       if (entry->flags.whole_archive)
 	{
 	  bfd *member = NULL;
@@ -6898,7 +6894,7 @@ ldlang_add_file (lang_input_statement_type *entry)
 
   *link_info.input_bfds_tail = entry->the_bfd;
   link_info.input_bfds_tail = &entry->the_bfd->link.next;
-  entry->the_bfd->usrdata = entry;
+  bfd_set_usrdata (entry->the_bfd, entry);
   bfd_set_gp_size (entry->the_bfd, g_switch_value);
 
   /* Look through the sections and check for any which should not be
@@ -7540,7 +7536,7 @@ lang_process (void)
 	      *iter = temp;
 	      if (my_arch != NULL)
 		{
-		  lang_input_statement_type *parent = my_arch->usrdata;
+		  lang_input_statement_type *parent = bfd_usrdata (my_arch);
 		  if (parent != NULL)
 		    parent->next = (lang_input_statement_type *)
 		      ((char *) iter
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 686e44f841..9fb10f80a7 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -331,6 +331,12 @@ typedef struct input_section_userdata_struct
 
 #define get_userdata(x) ((x)->userdata)
 
+static inline bfd_boolean
+bfd_input_just_syms (const bfd *abfd)
+{
+  lang_input_statement_type *is = bfd_usrdata (abfd);
+  return is != NULL && is->flags.just_syms;
+}
 
 typedef struct lang_wild_statement_struct lang_wild_statement_type;
 
diff --git a/ld/ldmain.c b/ld/ldmain.c
index e24194ef87..34c1922313 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -816,7 +816,7 @@ add_archive_element (struct bfd_link_info *info,
   input->local_sym_name = abfd->filename;
   input->the_bfd = abfd;
 
-  parent = abfd->my_archive->usrdata;
+  parent = bfd_usrdata (abfd->my_archive);
   if (parent != NULL && !parent->flags.reload)
     parent->next = input;
 
diff --git a/sim/ChangeLog b/sim/ChangeLog
index 191e2370a9..d4c7d166d2 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* ppc/emul_generic.c (emul_add_tree_options): Delete old bfd code.
+
 2019-09-18  Alan Modra  <amodra@gmail.com>
 
 	* common/sim-load.c, * common/sim-utils.c, * cris/sim-if.c,
diff --git a/sim/ppc/emul_generic.c b/sim/ppc/emul_generic.c
index dc0b2cf1e0..64c0219309 100644
--- a/sim/ppc/emul_generic.c
+++ b/sim/ppc/emul_generic.c
@@ -262,12 +262,7 @@ emul_add_tree_options(device *tree,
   if (tree_find_property(tree, "/options/little-endian?"))
     little_endian = tree_find_boolean_property(tree, "/options/little-endian?");
   else {
-#ifdef bfd_little_endian	/* new bfd */
     little_endian = (image != NULL && bfd_little_endian(image));
-#else
-    little_endian = (image != NULL &&
-		     !image->xvec->byteorder_big_p);
-#endif
     tree_parse(tree, "/options/little-endian? %s",
 	       little_endian ? "true" : "false");
   }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd macro conversion to inline functions, asymbol
@ 2019-09-20  9:27 gdb-buildbot
  2019-09-20 11:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  9:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT af30dc128be191dc6179763203035ff62c634284 ***

commit af30dc128be191dc6179763203035ff62c634284
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Sep 19 12:15:16 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Sep 20 18:04:02 2019 +0930

    bfd macro conversion to inline functions, asymbol
    
            * bfd-in.h (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
            (bfd_asymbol_bfd, bfd_asymbol_flavour, bfd_set_asymbol_name): Delete.
            * bfd.c (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
            (bfd_asymbol_bfd, bfd_set_asymbol_name): New inline functions.
            * targets.c (bfd_asymbol_flavour): Likewise.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1c700dbfff..5222063bf0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_asymbol_flavour, bfd_set_asymbol_name): Delete.
+	* bfd.c (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_set_asymbol_name): New inline functions.
+	* targets.c (bfd_asymbol_flavour): Likewise.
+	* bfd-in2.h: Regenerate.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* archive.c (bfd_generic_archive_p): Use bfd_set_thin_archive.
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 34c1c3ad0e..e9ada8d27f 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -237,19 +237,6 @@ typedef unsigned long symindex;
 
 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
 
-/* General purpose part of a symbol X;
-   target specific parts are in libcoff.h, libaout.h, etc.  */
-
-#define bfd_asymbol_section(sy) ((sy)->section)
-#define bfd_asymbol_value(sy) ((sy)->section->vma + (sy)->value)
-#define bfd_asymbol_name(sy) ((sy)->name)
-#define bfd_asymbol_bfd(sy) ((sy)->the_bfd)
-#define bfd_asymbol_flavour(sy)			\
-  (((sy)->flags & BSF_SYNTHETIC) != 0		\
-   ? bfd_target_unknown_flavour			\
-   : (sy)->the_bfd->xvec->flavour)
-#define bfd_set_asymbol_name(sy, n) do { (sy)->name = (n); } while (0)
-
 /* A canonical archive symbol.  */
 /* This is a type pun with struct ranlib on purpose!  */
 typedef struct carsym
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 4f158679b2..5ac3f41b7a 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -244,19 +244,6 @@ typedef unsigned long symindex;
 
 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
 
-/* General purpose part of a symbol X;
-   target specific parts are in libcoff.h, libaout.h, etc.  */
-
-#define bfd_asymbol_section(sy) ((sy)->section)
-#define bfd_asymbol_value(sy) ((sy)->section->vma + (sy)->value)
-#define bfd_asymbol_name(sy) ((sy)->name)
-#define bfd_asymbol_bfd(sy) ((sy)->the_bfd)
-#define bfd_asymbol_flavour(sy)			\
-  (((sy)->flags & BSF_SYNTHETIC) != 0		\
-   ? bfd_target_unknown_flavour			\
-   : (sy)->the_bfd->xvec->flavour)
-#define bfd_set_asymbol_name(sy, n) do { (sy)->name = (n); } while (0)
-
 /* A canonical archive symbol.  */
 /* This is a type pun with struct ranlib on purpose!  */
 typedef struct carsym
@@ -7381,6 +7368,36 @@ bfd_set_usrdata (bfd *abfd, void *val)
   abfd->usrdata = val;
 }
 
+static inline asection *
+bfd_asymbol_section (const asymbol *sy)
+{
+  return sy->section;
+}
+
+static inline bfd_vma
+bfd_asymbol_value (const asymbol *sy)
+{
+  return sy->section->vma + sy->value;
+}
+
+static inline const char *
+bfd_asymbol_name (const asymbol *sy)
+{
+  return sy->name;
+}
+
+static inline struct bfd *
+bfd_asymbol_bfd (const asymbol *sy)
+{
+  return sy->the_bfd;
+}
+
+static inline void
+bfd_set_asymbol_name (asymbol *sy, const char *name)
+{
+  sy->name = name;
+}
+
 
 typedef enum bfd_error
 {
@@ -8135,6 +8152,14 @@ bfd_get_symbol_leading_char (const bfd *abfd)
   return abfd->xvec->symbol_leading_char;
 }
 
+static inline enum bfd_flavour
+bfd_asymbol_flavour (const asymbol *sy)
+{
+  if ((sy->flags & BSF_SYNTHETIC) != 0)
+    return bfd_target_unknown_flavour;
+  return sy->the_bfd->xvec->flavour;
+}
+
 bfd_boolean bfd_set_default_target (const char *name);
 
 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
diff --git a/bfd/bfd.c b/bfd/bfd.c
index c11274c187..9270e118d3 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -447,6 +447,36 @@ CODE_FRAGMENT
 .  abfd->usrdata = val;
 .}
 .
+.static inline asection *
+.bfd_asymbol_section (const asymbol *sy)
+.{
+.  return sy->section;
+.}
+.
+.static inline bfd_vma
+.bfd_asymbol_value (const asymbol *sy)
+.{
+.  return sy->section->vma + sy->value;
+.}
+.
+.static inline const char *
+.bfd_asymbol_name (const asymbol *sy)
+.{
+.  return sy->name;
+.}
+.
+.static inline struct bfd *
+.bfd_asymbol_bfd (const asymbol *sy)
+.{
+.  return sy->the_bfd;
+.}
+.
+.static inline void
+.bfd_set_asymbol_name (asymbol *sy, const char *name)
+.{
+.  sy->name = name;
+.}
+.
 */
 
 #include "sysdep.h"
diff --git a/bfd/targets.c b/bfd/targets.c
index 116a5c34de..717657fba4 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -644,6 +644,14 @@ to find an alternative output format that is suitable.
 .  return abfd->xvec->symbol_leading_char;
 .}
 .
+.static inline enum bfd_flavour
+.bfd_asymbol_flavour (const asymbol *sy)
+.{
+.  if ((sy->flags & BSF_SYNTHETIC) != 0)
+.    return bfd_target_unknown_flavour;
+.  return sy->the_bfd->xvec->flavour;
+.}
+.
 */
 
 /* All known xvecs (even those that don't compile on all systems).


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd macro conversion to inline functions, section
@ 2019-09-20  9:43 gdb-buildbot
  2019-09-20 13:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20  9:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a48931cc2df9f87596d93b319236c73ef0fe0f4e ***

commit a48931cc2df9f87596d93b319236c73ef0fe0f4e
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Tue Sep 17 08:59:25 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Fri Sep 20 18:04:03 2019 +0930

    bfd macro conversion to inline functions, section
    
    This one exposed a bug in tic6x gas, found with inline function
    parameter type checking.  struct bfd_section and struct bfd_symbol
    both have a flags field, so bfd_is_com_section (symbol) compiled OK
    when bfd_is_com_section was a macro but didn't special case common
    symbols.
    
    bfd/
            * bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
            (bfd_section_lma, bfd_section_alignment, bfd_section_flags),
            (bfd_section_userdata, bfd_is_com_section, discarded_section),
            (bfd_get_section_limit_octets, bfd_get_section_limit): Delete macros.
            * bfd.c (bfd_get_section_limit_octets, bfd_get_section_limit),
            (bfd_section_list_remove, bfd_section_list_append),
            (bfd_section_list_prepend, bfd_section_list_insert_after),
            (bfd_section_list_insert_before, bfd_section_removed_from_list):
            New inline functions.
            * section.c (bfd_is_und_section, bfd_is_abs_section),
            (bfd_is_ind_section, bfd_is_const_section, bfd_section_list_remove),
            (bfd_section_list_append, bfd_section_list_prepend),
            (bfd_section_list_insert_after, bfd_section_list_insert_before),
            (bfd_section_removed_from_list): Delete macros.
            (bfd_section_name, bfd_section_size, bfd_section_vma),
            (bfd_section_lma, bfd_section_alignment, bfd_section_flags),
            (bfd_section_userdata, bfd_is_com_section, bfd_is_und_section),
            (bfd_is_abs_section, bfd_is_ind_section, bfd_is_const_section),
            (discarded_section): New inline functions.
            * bfd-in2.h: Regenerate.
    gas/
            * config/tc-tic6x.c (tc_gen_reloc): Correct common symbol check.
    ld/
            * emultempl/xtensaelf.em (xtensa_get_section_deps): Comment.
            Use bfd_section_userdata.
            (xtensa_set_section_deps): Use bfd_set_section_userdata.
            * ldlang.c (lang_output_section_get): Use bfd_section_userdata.
            (sort_def_symbol): Likewise, and bfd_set_section_userdata.
            (init_os): Use bfd_set_section_userdata.
            (print_all_symbols): Use bfd_section_userdata.
            * ldlang.h (get_userdata): Delete.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5222063bf0..080c628fee 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,26 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
+	(bfd_section_userdata, bfd_is_com_section, discarded_section),
+	(bfd_get_section_limit_octets, bfd_get_section_limit): Delete macros.
+	* bfd.c (bfd_get_section_limit_octets, bfd_get_section_limit),
+	(bfd_section_list_remove, bfd_section_list_append),
+	(bfd_section_list_prepend, bfd_section_list_insert_after),
+	(bfd_section_list_insert_before, bfd_section_removed_from_list):
+	New inline functions.
+	* section.c (bfd_is_und_section, bfd_is_abs_section),
+	(bfd_is_ind_section, bfd_is_const_section, bfd_section_list_remove),
+	(bfd_section_list_append, bfd_section_list_prepend),
+	(bfd_section_list_insert_after, bfd_section_list_insert_before),
+	(bfd_section_removed_from_list): Delete macros.
+	(bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
+	(bfd_section_userdata, bfd_is_com_section, bfd_is_und_section),
+	(bfd_is_abs_section, bfd_is_ind_section, bfd_is_const_section),
+	(discarded_section): New inline functions.
+	* bfd-in2.h: Regenerate.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index e9ada8d27f..969a965796 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -285,31 +285,6 @@ typedef struct bfd_section *sec_ptr;
   ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
-
-#define bfd_section_name(sec) ((sec)->name)
-#define bfd_section_size(sec) ((sec)->size)
-#define bfd_section_vma(sec) ((sec)->vma)
-#define bfd_section_lma(sec) ((sec)->lma)
-#define bfd_section_alignment(sec) ((sec)->alignment_power)
-#define bfd_section_flags(sec) ((sec)->flags)
-#define bfd_section_userdata(sec) ((sec)->userdata)
-
-#define bfd_is_com_section(sec) (((sec)->flags & SEC_IS_COMMON) != 0)
-
-#define bfd_get_section_limit_octets(bfd, sec)			\
-  ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
-   ? (sec)->rawsize : (sec)->size)
-
-/* Find the address one past the end of SEC.  */
-#define bfd_get_section_limit(bfd, sec) \
-  (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
-
-/* Return TRUE if input section SEC has been discarded.  */
-#define discarded_section(sec)				\
-  (!bfd_is_abs_section (sec)					\
-   && bfd_is_abs_section ((sec)->output_section)		\
-   && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE		\
-   && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
 \f
 typedef enum bfd_print_symbol
 {
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 5ac3f41b7a..44bce06191 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -292,31 +292,6 @@ typedef struct bfd_section *sec_ptr;
   ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
-
-#define bfd_section_name(sec) ((sec)->name)
-#define bfd_section_size(sec) ((sec)->size)
-#define bfd_section_vma(sec) ((sec)->vma)
-#define bfd_section_lma(sec) ((sec)->lma)
-#define bfd_section_alignment(sec) ((sec)->alignment_power)
-#define bfd_section_flags(sec) ((sec)->flags)
-#define bfd_section_userdata(sec) ((sec)->userdata)
-
-#define bfd_is_com_section(sec) (((sec)->flags & SEC_IS_COMMON) != 0)
-
-#define bfd_get_section_limit_octets(bfd, sec)			\
-  ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
-   ? (sec)->rawsize : (sec)->size)
-
-/* Find the address one past the end of SEC.  */
-#define bfd_get_section_limit(bfd, sec) \
-  (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
-
-/* Return TRUE if input section SEC has been discarded.  */
-#define discarded_section(sec)				\
-  (!bfd_is_abs_section (sec)					\
-   && bfd_is_abs_section ((sec)->output_section)		\
-   && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE		\
-   && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
 \f
 typedef enum bfd_print_symbol
 {
@@ -1686,6 +1661,53 @@ struct relax_table {
   int size;
 };
 
+static inline const char *
+bfd_section_name (const asection *sec)
+{
+  return sec->name;
+}
+
+static inline bfd_size_type
+bfd_section_size (const asection *sec)
+{
+  return sec->size;
+}
+
+static inline bfd_vma
+bfd_section_vma (const asection *sec)
+{
+  return sec->vma;
+}
+
+static inline bfd_vma
+bfd_section_lma (const asection *sec)
+{
+  return sec->lma;
+}
+
+static inline unsigned int
+bfd_section_alignment (const asection *sec)
+{
+  return sec->alignment_power;
+}
+
+static inline flagword
+bfd_section_flags (const asection *sec)
+{
+  return sec->flags;
+}
+
+static inline void *
+bfd_section_userdata (const asection *sec)
+{
+  return sec->userdata;
+}
+static inline bfd_boolean
+bfd_is_com_section (const asection *sec)
+{
+  return (sec->flags & SEC_IS_COMMON) != 0;
+}
+
 /* Note: the following are provided as inline functions rather than macros
    because not all callers use the return value.  A macro implementation
    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
@@ -1738,105 +1760,39 @@ extern asection _bfd_std_section[4];
 /* Pointer to the indirect section.  */
 #define bfd_ind_section_ptr (&_bfd_std_section[3])
 
-#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
-#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
-#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
+static inline bfd_boolean
+bfd_is_und_section (const asection *sec)
+{
+  return sec == bfd_und_section_ptr;
+}
 
-#define bfd_is_const_section(SEC)              \
- (   ((SEC) == bfd_abs_section_ptr)            \
-  || ((SEC) == bfd_und_section_ptr)            \
-  || ((SEC) == bfd_com_section_ptr)            \
-  || ((SEC) == bfd_ind_section_ptr))
+static inline bfd_boolean
+bfd_is_abs_section (const asection *sec)
+{
+  return sec == bfd_abs_section_ptr;
+}
 
-/* Macros to handle insertion and deletion of a bfd's sections.  These
-   only handle the list pointers, ie. do not adjust section_count,
-   target_index etc.  */
-#define bfd_section_list_remove(ABFD, S) \
-  do                                                   \
-    {                                                  \
-      asection *_s = S;                                \
-      asection *_next = _s->next;                      \
-      asection *_prev = _s->prev;                      \
-      if (_prev)                                       \
-        _prev->next = _next;                           \
-      else                                             \
-        (ABFD)->sections = _next;                      \
-      if (_next)                                       \
-        _next->prev = _prev;                           \
-      else                                             \
-        (ABFD)->section_last = _prev;                  \
-    }                                                  \
-  while (0)
-#define bfd_section_list_append(ABFD, S) \
-  do                                                   \
-    {                                                  \
-      asection *_s = S;                                \
-      bfd *_abfd = ABFD;                               \
-      _s->next = NULL;                                 \
-      if (_abfd->section_last)                         \
-        {                                              \
-          _s->prev = _abfd->section_last;              \
-          _abfd->section_last->next = _s;              \
-        }                                              \
-      else                                             \
-        {                                              \
-          _s->prev = NULL;                             \
-          _abfd->sections = _s;                        \
-        }                                              \
-      _abfd->section_last = _s;                        \
-    }                                                  \
-  while (0)
-#define bfd_section_list_prepend(ABFD, S) \
-  do                                                   \
-    {                                                  \
-      asection *_s = S;                                \
-      bfd *_abfd = ABFD;                               \
-      _s->prev = NULL;                                 \
-      if (_abfd->sections)                             \
-        {                                              \
-          _s->next = _abfd->sections;                  \
-          _abfd->sections->prev = _s;                  \
-        }                                              \
-      else                                             \
-        {                                              \
-          _s->next = NULL;                             \
-          _abfd->section_last = _s;                    \
-        }                                              \
-      _abfd->sections = _s;                            \
-    }                                                  \
-  while (0)
-#define bfd_section_list_insert_after(ABFD, A, S) \
-  do                                                   \
-    {                                                  \
-      asection *_a = A;                                \
-      asection *_s = S;                                \
-      asection *_next = _a->next;                      \
-      _s->next = _next;                                \
-      _s->prev = _a;                                   \
-      _a->next = _s;                                   \
-      if (_next)                                       \
-        _next->prev = _s;                              \
-      else                                             \
-        (ABFD)->section_last = _s;                     \
-    }                                                  \
-  while (0)
-#define bfd_section_list_insert_before(ABFD, B, S) \
-  do                                                   \
-    {                                                  \
-      asection *_b = B;                                \
-      asection *_s = S;                                \
-      asection *_prev = _b->prev;                      \
-      _s->prev = _prev;                                \
-      _s->next = _b;                                   \
-      _b->prev = _s;                                   \
-      if (_prev)                                       \
-        _prev->next = _s;                              \
-      else                                             \
-        (ABFD)->sections = _s;                         \
-    }                                                  \
-  while (0)
-#define bfd_section_removed_from_list(ABFD, S) \
-  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+static inline bfd_boolean
+bfd_is_ind_section (const asection *sec)
+{
+  return sec == bfd_ind_section_ptr;
+}
+
+static inline bfd_boolean
+bfd_is_const_section (const asection *sec)
+{
+  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+}
+
+/* Return TRUE if input section SEC has been discarded.  */
+static inline bfd_boolean
+discarded_section (const asection *sec)
+{
+  return (!bfd_is_abs_section (sec)
+          && bfd_is_abs_section (sec->output_section)
+          && sec->sec_info_type != SEC_INFO_TYPE_MERGE
+          && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
+}
 
 #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
   /* name, id,  index, next, prev, flags, user_set_vma,            */  \
@@ -7398,6 +7354,105 @@ bfd_set_asymbol_name (asymbol *sy, const char *name)
   sy->name = name;
 }
 
+static inline bfd_size_type
+bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
+{
+  if (abfd->direction != write_direction && sec->rawsize != 0)
+    return sec->rawsize;
+  return sec->size;
+}
+
+/* Find the address one past the end of SEC.  */
+static inline bfd_size_type
+bfd_get_section_limit (const bfd *abfd, const asection *sec)
+{
+  return bfd_get_section_limit_octets (abfd, sec) / bfd_octets_per_byte (abfd);
+}
+
+/* Functions to handle insertion and deletion of a bfd's sections.  These
+   only handle the list pointers, ie. do not adjust section_count,
+   target_index etc.  */
+static inline void
+bfd_section_list_remove (bfd *abfd, asection *s)
+{
+  asection *next = s->next;
+  asection *prev = s->prev;
+  if (prev)
+    prev->next = next;
+  else
+    abfd->sections = next;
+  if (next)
+    next->prev = prev;
+  else
+    abfd->section_last = prev;
+}
+
+static inline void
+bfd_section_list_append (bfd *abfd, asection *s)
+{
+  s->next = 0;
+  if (abfd->section_last)
+    {
+      s->prev = abfd->section_last;
+      abfd->section_last->next = s;
+    }
+  else
+    {
+      s->prev = 0;
+      abfd->sections = s;
+    }
+  abfd->section_last = s;
+}
+
+static inline void
+bfd_section_list_prepend (bfd *abfd, asection *s)
+{
+  s->prev = 0;
+  if (abfd->sections)
+    {
+      s->next = abfd->sections;
+      abfd->sections->prev = s;
+    }
+  else
+    {
+      s->next = 0;
+      abfd->section_last = s;
+    }
+  abfd->sections = s;
+}
+
+static inline void
+bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
+{
+  asection *next = a->next;
+  s->next = next;
+  s->prev = a;
+  a->next = s;
+  if (next)
+    next->prev = s;
+  else
+    abfd->section_last = s;
+}
+
+static inline void
+bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
+{
+  asection *prev = b->prev;
+  s->prev = prev;
+  s->next = b;
+  b->prev = s;
+  if (prev)
+    prev->next = s;
+  else
+    abfd->sections = s;
+}
+
+static inline bfd_boolean
+bfd_section_removed_from_list (const bfd *abfd, const asection *s)
+{
+  return s->next ? s->next->prev != s : abfd->section_last != s;
+}
+
 
 typedef enum bfd_error
 {
diff --git a/bfd/bfd.c b/bfd/bfd.c
index 9270e118d3..af2c192260 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -477,6 +477,105 @@ CODE_FRAGMENT
 .  sy->name = name;
 .}
 .
+.static inline bfd_size_type
+.bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
+.{
+.  if (abfd->direction != write_direction && sec->rawsize != 0)
+.    return sec->rawsize;
+.  return sec->size;
+.}
+.
+.{* Find the address one past the end of SEC.  *}
+.static inline bfd_size_type
+.bfd_get_section_limit (const bfd *abfd, const asection *sec)
+.{
+.  return bfd_get_section_limit_octets (abfd, sec) / bfd_octets_per_byte (abfd);
+.}
+.
+.{* Functions to handle insertion and deletion of a bfd's sections.  These
+.   only handle the list pointers, ie. do not adjust section_count,
+.   target_index etc.  *}
+.static inline void
+.bfd_section_list_remove (bfd *abfd, asection *s)
+.{
+.  asection *next = s->next;
+.  asection *prev = s->prev;
+.  if (prev)
+.    prev->next = next;
+.  else
+.    abfd->sections = next;
+.  if (next)
+.    next->prev = prev;
+.  else
+.    abfd->section_last = prev;
+.}
+.
+.static inline void
+.bfd_section_list_append (bfd *abfd, asection *s)
+.{
+.  s->next = 0;
+.  if (abfd->section_last)
+.    {
+.      s->prev = abfd->section_last;
+.      abfd->section_last->next = s;
+.    }
+.  else
+.    {
+.      s->prev = 0;
+.      abfd->sections = s;
+.    }
+.  abfd->section_last = s;
+.}
+.
+.static inline void
+.bfd_section_list_prepend (bfd *abfd, asection *s)
+.{
+.  s->prev = 0;
+.  if (abfd->sections)
+.    {
+.      s->next = abfd->sections;
+.      abfd->sections->prev = s;
+.    }
+.  else
+.    {
+.      s->next = 0;
+.      abfd->section_last = s;
+.    }
+.  abfd->sections = s;
+.}
+.
+.static inline void
+.bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
+.{
+.  asection *next = a->next;
+.  s->next = next;
+.  s->prev = a;
+.  a->next = s;
+.  if (next)
+.    next->prev = s;
+.  else
+.    abfd->section_last = s;
+.}
+.
+.static inline void
+.bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
+.{
+.  asection *prev = b->prev;
+.  s->prev = prev;
+.  s->next = b;
+.  b->prev = s;
+.  if (prev)
+.    prev->next = s;
+.  else
+.    abfd->sections = s;
+.}
+.
+.static inline bfd_boolean
+.bfd_section_removed_from_list (const bfd *abfd, const asection *s)
+.{
+.  return s->next ? s->next->prev != s : abfd->section_last != s;
+.}
+.
 */
 
 #include "sysdep.h"
diff --git a/bfd/section.c b/bfd/section.c
index 3a9cb26023..34e08aef57 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -549,6 +549,53 @@ CODE_FRAGMENT
 .  int size;
 .};
 .
+.static inline const char *
+.bfd_section_name (const asection *sec)
+.{
+.  return sec->name;
+.}
+.
+.static inline bfd_size_type
+.bfd_section_size (const asection *sec)
+.{
+.  return sec->size;
+.}
+.
+.static inline bfd_vma
+.bfd_section_vma (const asection *sec)
+.{
+.  return sec->vma;
+.}
+.
+.static inline bfd_vma
+.bfd_section_lma (const asection *sec)
+.{
+.  return sec->lma;
+.}
+.
+.static inline unsigned int
+.bfd_section_alignment (const asection *sec)
+.{
+.  return sec->alignment_power;
+.}
+.
+.static inline flagword
+.bfd_section_flags (const asection *sec)
+.{
+.  return sec->flags;
+.}
+.
+.static inline void *
+.bfd_section_userdata (const asection *sec)
+.{
+.  return sec->userdata;
+.}
+.static inline bfd_boolean
+.bfd_is_com_section (const asection *sec)
+.{
+.  return (sec->flags & SEC_IS_COMMON) != 0;
+.}
+.
 .{* Note: the following are provided as inline functions rather than macros
 .   because not all callers use the return value.  A macro implementation
 .   would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
@@ -601,105 +648,39 @@ CODE_FRAGMENT
 .{* Pointer to the indirect section.  *}
 .#define bfd_ind_section_ptr (&_bfd_std_section[3])
 .
-.#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
-.#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
-.#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
-.
-.#define bfd_is_const_section(SEC)		\
-. (   ((SEC) == bfd_abs_section_ptr)		\
-.  || ((SEC) == bfd_und_section_ptr)		\
-.  || ((SEC) == bfd_com_section_ptr)		\
-.  || ((SEC) == bfd_ind_section_ptr))
-.
-.{* Macros to handle insertion and deletion of a bfd's sections.  These
-.   only handle the list pointers, ie. do not adjust section_count,
-.   target_index etc.  *}
-.#define bfd_section_list_remove(ABFD, S) \
-.  do							\
-.    {							\
-.      asection *_s = S;				\
-.      asection *_next = _s->next;			\
-.      asection *_prev = _s->prev;			\
-.      if (_prev)					\
-.        _prev->next = _next;				\
-.      else						\
-.        (ABFD)->sections = _next;			\
-.      if (_next)					\
-.        _next->prev = _prev;				\
-.      else						\
-.        (ABFD)->section_last = _prev;			\
-.    }							\
-.  while (0)
-.#define bfd_section_list_append(ABFD, S) \
-.  do							\
-.    {							\
-.      asection *_s = S;				\
-.      bfd *_abfd = ABFD;				\
-.      _s->next = NULL;					\
-.      if (_abfd->section_last)				\
-.        {						\
-.          _s->prev = _abfd->section_last;		\
-.          _abfd->section_last->next = _s;		\
-.        }						\
-.      else						\
-.        {						\
-.          _s->prev = NULL;				\
-.          _abfd->sections = _s;			\
-.        }						\
-.      _abfd->section_last = _s;			\
-.    }							\
-.  while (0)
-.#define bfd_section_list_prepend(ABFD, S) \
-.  do							\
-.    {							\
-.      asection *_s = S;				\
-.      bfd *_abfd = ABFD;				\
-.      _s->prev = NULL;					\
-.      if (_abfd->sections)				\
-.        {						\
-.          _s->next = _abfd->sections;			\
-.          _abfd->sections->prev = _s;			\
-.        }						\
-.      else						\
-.        {						\
-.          _s->next = NULL;				\
-.          _abfd->section_last = _s;			\
-.        }						\
-.      _abfd->sections = _s;				\
-.    }							\
-.  while (0)
-.#define bfd_section_list_insert_after(ABFD, A, S) \
-.  do							\
-.    {							\
-.      asection *_a = A;				\
-.      asection *_s = S;				\
-.      asection *_next = _a->next;			\
-.      _s->next = _next;				\
-.      _s->prev = _a;					\
-.      _a->next = _s;					\
-.      if (_next)					\
-.        _next->prev = _s;				\
-.      else						\
-.        (ABFD)->section_last = _s;			\
-.    }							\
-.  while (0)
-.#define bfd_section_list_insert_before(ABFD, B, S) \
-.  do							\
-.    {							\
-.      asection *_b = B;				\
-.      asection *_s = S;				\
-.      asection *_prev = _b->prev;			\
-.      _s->prev = _prev;				\
-.      _s->next = _b;					\
-.      _b->prev = _s;					\
-.      if (_prev)					\
-.        _prev->next = _s;				\
-.      else						\
-.        (ABFD)->sections = _s;				\
-.    }							\
-.  while (0)
-.#define bfd_section_removed_from_list(ABFD, S) \
-.  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+.static inline bfd_boolean
+.bfd_is_und_section (const asection *sec)
+.{
+.  return sec == bfd_und_section_ptr;
+.}
+.
+.static inline bfd_boolean
+.bfd_is_abs_section (const asection *sec)
+.{
+.  return sec == bfd_abs_section_ptr;
+.}
+.
+.static inline bfd_boolean
+.bfd_is_ind_section (const asection *sec)
+.{
+.  return sec == bfd_ind_section_ptr;
+.}
+.
+.static inline bfd_boolean
+.bfd_is_const_section (const asection *sec)
+.{
+.  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+.}
+.
+.{* Return TRUE if input section SEC has been discarded.  *}
+.static inline bfd_boolean
+.discarded_section (const asection *sec)
+.{
+.  return (!bfd_is_abs_section (sec)
+.          && bfd_is_abs_section (sec->output_section)
+.          && sec->sec_info_type != SEC_INFO_TYPE_MERGE
+.          && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
+.}
 .
 .#define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)			\
 .  {* name, id,  index, next, prev, flags, user_set_vma,            *}	\
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bcd2f9af35..482ab08c29 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* config/tc-tic6x.c (tc_gen_reloc): Correct common symbol check.
+
 2018-09-20  Jan Beulich  <jbeulich@suse.com>
 
 	PR gas/25012
diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c
index 0433d9e409..cd12c82dce 100644
--- a/gas/config/tc-tic6x.c
+++ b/gas/config/tc-tic6x.c
@@ -4526,7 +4526,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
   if (reloc->howto->pcrel_offset && reloc->howto->partial_inplace)
     {
       reloc->addend += reloc->address;
-      if (!bfd_is_com_section (symbol))
+      if (!bfd_is_com_section (bfd_asymbol_section (symbol)))
 	reloc->addend -= symbol->value;
     }
   if (r_type == BFD_RELOC_C6000_PCR_H16
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 705a2b2de8..3f62dad9cc 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/xtensaelf.em (xtensa_get_section_deps): Comment.
+	Use bfd_section_userdata.
+	(xtensa_set_section_deps): Use bfd_set_section_userdata.
+	* ldlang.c (lang_output_section_get): Use bfd_section_userdata.
+	(sort_def_symbol): Likewise, and bfd_set_section_userdata.
+	(init_os): Use bfd_set_section_userdata.
+	(print_all_symbols): Use bfd_section_userdata.
+	* ldlang.h (get_userdata): Delete.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* ldelf.c (ldelf_after_open, ldelf_place_orphan
diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
index 569df615ce..0b11fdcd69 100644
--- a/ld/emultempl/xtensaelf.em
+++ b/ld/emultempl/xtensaelf.em
@@ -596,8 +596,12 @@ xtensa_get_section_deps (const reloc_deps_graph *deps ATTRIBUTE_UNUSED,
   /* We have a separate function for this so that
      we could in the future keep a completely independent
      structure that maps a section to its dependence edges.
-     For now, we place these in the sec->userdata field.  */
-  reloc_deps_section *sec_deps = sec->userdata;
+     For now, we place these in the sec->userdata field.
+     This doesn't clash with ldlang.c use of userdata for output
+     sections, and during map output for input sections, since the
+     xtensa use is only for input sections and only extant in
+     before_allocation.  */
+  reloc_deps_section *sec_deps = bfd_section_userdata (sec);
   return sec_deps;
 }
 
@@ -606,7 +610,7 @@ xtensa_set_section_deps (const reloc_deps_graph *deps ATTRIBUTE_UNUSED,
 			 asection *sec,
 			 reloc_deps_section *deps_section)
 {
-  sec->userdata = deps_section;
+  bfd_set_section_userdata (sec, deps_section);
 }
 
 
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 0ffcf34473..1a49f69d90 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -1414,7 +1414,7 @@ lang_memory_default (asection *section)
 lang_output_section_statement_type *
 lang_output_section_get (const asection *output_section)
 {
-  return get_userdata (output_section);
+  return bfd_section_userdata (output_section);
 }
 
 /* Find or create an output_section_statement with the given NAME.
@@ -2316,12 +2316,11 @@ sort_def_symbol (struct bfd_link_hash_entry *hash_entry,
       input_section_userdata_type *ud;
       struct map_symbol_def *def;
 
-      ud = ((input_section_userdata_type *)
-	    get_userdata (hash_entry->u.def.section));
+      ud = bfd_section_userdata (hash_entry->u.def.section);
       if (!ud)
 	{
 	  ud = stat_alloc (sizeof (*ud));
-	  get_userdata (hash_entry->u.def.section) = ud;
+	  bfd_set_section_userdata (hash_entry->u.def.section, ud);
 	  ud->map_symbol_def_tail = &ud->map_symbol_def_head;
 	  ud->map_symbol_def_count = 0;
 	}
@@ -2361,7 +2360,7 @@ init_os (lang_output_section_statement_type *s, flagword flags)
 
   /* Set the userdata of the output section to the output section
      statement to avoid lookup.  */
-  get_userdata (s->bfd_section) = s;
+  bfd_set_section_userdata (s->bfd_section, s);
 
   /* If there is a base address, make sure that any sections it might
      mention are initialized.  */
@@ -4390,8 +4389,7 @@ hash_entry_addr_cmp (const void *a, const void *b)
 static void
 print_all_symbols (asection *sec)
 {
-  input_section_userdata_type *ud
-    = (input_section_userdata_type *) get_userdata (sec);
+  input_section_userdata_type *ud = bfd_section_userdata (sec);
   struct map_symbol_def *def;
   struct bfd_link_hash_entry **entries;
   unsigned int i;
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 9fb10f80a7..5ab62e3279 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -329,8 +329,6 @@ typedef struct input_section_userdata_struct
   unsigned long map_symbol_def_count;
 } input_section_userdata_type;
 
-#define get_userdata(x) ((x)->userdata)
-
 static inline bfd_boolean
 bfd_input_just_syms (const bfd *abfd)
 {


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Fix crash in Ada "catch exception"
@ 2019-09-20 19:53 gdb-buildbot
  2019-09-20 20:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 19:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d42076962798cd2329090cea213e797f4c69c03c ***

commit d42076962798cd2329090cea213e797f4c69c03c
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Fri Sep 20 11:34:21 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Fri Sep 20 11:34:21 2019 -0600

    Fix crash in Ada "catch exception"
    
    PR ada/24919 concerns a crash that Tom de Vries noticed when running
    the "catch_ex" Ada test case.  He sent a test executable and tracked
    this down to commit f21c2bd7b7 ("Fix Fortran regression with variables
    in nested functions").
    
    Looking at that patch, you can see the obvious error:
    
        -  return 0;
        +  return true;
    
    Oops!  This patch fixes the bug.
    
    Tested on x86-64 Fedora 29.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tromey@adacore.com>
    
            PR ada/24919:
            * block.c (contained_in): Fix final return value.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5314b2746b..b1c4db854b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-20  Tom Tromey  <tromey@adacore.com>
+
+	PR ada/24919:
+	* block.c (contained_in): Fix final return value.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* gdb_bfd.c (gdb_bfd_ref, gdb_bfd_unref): Use bfd_set_usrdata.
diff --git a/gdb/block.c b/gdb/block.c
index ca4dc22cf3..5ba44d47ba 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -86,7 +86,7 @@ contained_in (const struct block *a, const struct block *b,
     }
   while (a != NULL);
 
-  return true;
+  return false;
 }
 
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove tui_clear_source_windows_detail
@ 2019-09-20 20:49 gdb-buildbot
  2019-09-20 21:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 20:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 78d5933a43f8a4dd5fd54f5344a7dd9c2d4b8769 ***

commit 78d5933a43f8a4dd5fd54f5344a7dd9c2d4b8769
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Fri Jul 19 12:59:35 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:04 2019 -0600

    Remove tui_clear_source_windows_detail
    
    The calls to tui_clear_source_windows_detail in tui_add_win_to_layout
    aren't needed, because (after the resize unification) resizing will
    update the window contents.  Removing these calls lets us remove
    several other things as well.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-data.h (tui_clear_source_windows_detail): Don't
            declare.
            * tui/tui-layout.c (tui_add_win_to_layout): Don't call
            tui_clear_source_windows_detail.
            * tui/tui-winsource.h (struct tui_source_window_base)
            <clear_detail>: Don't declare.
            * tui/tui-winsource.c (tui_source_window_base::clear_detail):
            Remove.
            * tui/tui-data.c (tui_clear_source_windows_detail): Remove.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b1c4db854b..bedc073d9c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_clear_source_windows_detail): Don't
+	declare.
+	* tui/tui-layout.c (tui_add_win_to_layout): Don't call
+	tui_clear_source_windows_detail.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<clear_detail>: Don't declare.
+	* tui/tui-winsource.c (tui_source_window_base::clear_detail):
+	Remove.
+	* tui/tui-data.c (tui_clear_source_windows_detail): Remove.
+
 2019-09-20  Tom Tromey  <tromey@adacore.com>
 
 	PR ada/24919:
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index c11aa43340..833ea49a95 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -87,15 +87,6 @@ tui_set_win_with_focus (struct tui_win_info *win_info)
 }
 
 
-/* Clear the pertinent detail in the source windows.  */
-void
-tui_clear_source_windows_detail ()
-{
-  for (tui_source_window_base *win : tui_source_windows ())
-    win->clear_detail ();
-}
-
-
 /* Accessor for the term_height.  */
 int
 tui_term_height (void)
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 23f769f6ba..be819503cf 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -295,7 +295,6 @@ extern void tui_set_term_height_to (int);
 extern int tui_term_width (void);
 extern void tui_set_term_width_to (int);
 extern struct tui_locator_window *tui_locator_win_info_ptr (void);
-extern void tui_clear_source_windows_detail (void);
 extern struct tui_win_info *tui_win_with_focus (void);
 extern void tui_set_win_with_focus (struct tui_win_info *);
 extern int tui_win_resized (void);
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index df7056ae97..d331a2f25c 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -207,7 +207,6 @@ tui_add_win_to_layout (enum tui_win_type type)
 	  && cur_layout != SRC_DISASSEM_COMMAND
 	  && cur_layout != SRC_DATA_COMMAND)
 	{
-	  tui_clear_source_windows_detail ();
 	  if (cur_layout == DISASSEM_DATA_COMMAND)
 	    show_layout (SRC_DATA_COMMAND);
 	  else
@@ -219,7 +218,6 @@ tui_add_win_to_layout (enum tui_win_type type)
 	  && cur_layout != SRC_DISASSEM_COMMAND
 	  && cur_layout != DISASSEM_DATA_COMMAND)
 	{
-	  tui_clear_source_windows_detail ();
 	  if (cur_layout == SRC_DATA_COMMAND)
 	    show_layout (DISASSEM_DATA_COMMAND);
 	  else
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 7a4821dc52..4520a1ac3f 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -253,17 +253,6 @@ tui_source_window_base::show_source_content ()
   refresh_window ();
 }
 
-/* See tui-data.h.  */
-
-void
-tui_source_window_base::clear_detail ()
-{
-  gdbarch = NULL;
-  start_line_or_addr.loa = LOA_ADDRESS;
-  start_line_or_addr.u.addr = 0;
-  horizontal_offset = 0;
-}
-
 tui_source_window_base::tui_source_window_base (enum tui_win_type type)
   : tui_win_info (type)
 {
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index 4c98ca3ceb..445cc7c735 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -101,8 +101,6 @@ protected:
 
 public:
 
-  void clear_detail ();
-
   /* Refill the source window's source cache and update it.  If this
      is a disassembly window, then just update it.  */
   void refill ();


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change tui_source_element::line to be a unique_xmalloc_ptr
@ 2019-09-20 21:04 gdb-buildbot
  2019-09-20 21:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 21:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f14bec587fd0b695bbb8dcfe92169b4dae76245d ***

commit f14bec587fd0b695bbb8dcfe92169b4dae76245d
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 15:34:40 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:04 2019 -0600

    Change tui_source_element::line to be a unique_xmalloc_ptr
    
    This changes tui_source_element::line to be a unique_xmalloc_ptr,
    removing some manual memory management.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-winsource.h (~tui_source_element): Remove.
            (tui_source_element): Update.
            (struct tui_source_element) <line>: Now a unique_xmalloc_ptr.
            * tui/tui-winsource.c (tui_show_source_line): Update.
            * tui/tui-source.c (tui_source_window::set_contents): Update.
            * tui/tui-disasm.c (tui_disasm_window::set_contents): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bedc073d9c..3d322877df 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (~tui_source_element): Remove.
+	(tui_source_element): Update.
+	(struct tui_source_element) <line>: Now a unique_xmalloc_ptr.
+	* tui/tui-winsource.c (tui_show_source_line): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-data.h (tui_clear_source_windows_detail): Don't
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index 1d019ca60c..2a331327e7 100644
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -231,11 +231,10 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
       strcpy (line + insn_pos, asm_lines[i].insn);
 
       /* Now copy the line taking the offset into account.  */
-      xfree (src->line);
       if (strlen (line) > offset)
-	src->line = xstrndup (&line[offset], line_width);
+	src->line.reset (xstrndup (&line[offset], line_width));
       else
-	src->line = xstrdup ("");
+	src->line.reset (xstrdup (""));
 
       src->line_or_addr.loa = LOA_ADDRESS;
       src->line_or_addr.u.addr = asm_lines[i].addr;
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 906006a422..c379173018 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -184,9 +184,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 				 symtab_to_fullname (s)) == 0
 		   && cur_line_no == locator->line_no);
 
-	      xfree (content[cur_line].line);
-	      content[cur_line].line
-		= xstrdup (text.c_str ());
+	      content[cur_line].line.reset (xstrdup (text.c_str ()));
 
 	      cur_line++;
 	      cur_line_no++;
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 4520a1ac3f..d5281193c0 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -222,8 +222,7 @@ tui_show_source_line (struct tui_source_window_base *win_info, int lineno)
     tui_set_reverse_mode (win_info->handle, true);
 
   wmove (win_info->handle, lineno, TUI_EXECINFO_SIZE);
-  tui_puts (line->line,
-	    win_info->handle);
+  tui_puts (line->line.get (), win_info->handle);
   if (line->is_exec_point)
     tui_set_reverse_mode (win_info->handle, false);
 
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index 445cc7c735..64f0739e53 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -54,23 +54,17 @@ struct tui_source_element
     line_or_addr.u.line_no = 0;
   }
 
-  ~tui_source_element ()
-  {
-    xfree (line);
-  }
-
   DISABLE_COPY_AND_ASSIGN (tui_source_element);
 
   tui_source_element (tui_source_element &&other)
-    : line (other.line),
+    : line (std::move (other.line)),
       line_or_addr (other.line_or_addr),
       is_exec_point (other.is_exec_point),
       break_mode (other.break_mode)
   {
-    other.line = nullptr;
   }
 
-  char *line = nullptr;
+  gdb::unique_xmalloc_ptr<char> line;
   struct tui_line_or_address line_or_addr;
   bool is_exec_point = false;
   tui_bp_flags break_mode = 0;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move "fullname" to tui_source_window
@ 2019-09-20 21:15 gdb-buildbot
  2019-09-20 22:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 21:15 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2d81b349982daae463bd29a87e962dde6d099392 ***

commit 2d81b349982daae463bd29a87e962dde6d099392
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 15:37:18 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:05 2019 -0600

    Move "fullname" to tui_source_window
    
    The "fullname" field in tui_source_window_base is only used by one
    subclass.  This patch moves the field to that subclass, and changes it
    to be a unique_xmalloc_ptr.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-winsource.h (struct tui_source_window_base)
            <~tui_source_window_base>: Don't declare.
            <fullname>: Remove.
            * tui/tui-winsource.c (~tui_source_window_base): Remove.
            * tui/tui-source.h (struct tui_source_window) <fullname>: New
            member.
            * tui/tui-source.c (tui_source_window::set_contents): Update.
            (tui_source_window::location_matches_p)
            (tui_source_window::maybe_update): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3d322877df..9f7accd2f6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<~tui_source_window_base>: Don't declare.
+	<fullname>: Remove.
+	* tui/tui-winsource.c (~tui_source_window_base): Remove.
+	* tui/tui-source.h (struct tui_source_window) <fullname>: New
+	member.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	(tui_source_window::location_matches_p)
+	(tui_source_window::maybe_update): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-winsource.h (~tui_source_element): Remove.
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index c379173018..f70e053bdb 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -155,8 +155,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 
 	  title = s_filename;
 
-	  xfree (fullname);
-	  fullname = xstrdup (symtab_to_fullname (s));
+	  fullname = make_unique_xstrdup (symtab_to_fullname (s));
 
 	  cur_line = 0;
 	  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
@@ -276,7 +275,7 @@ tui_source_window::location_matches_p (struct bp_location *loc, int line_no)
   return (content[line_no].line_or_addr.loa == LOA_LINE
 	  && content[line_no].line_or_addr.u.line_no == loc->line_number
 	  && loc->symtab != NULL
-	  && filename_cmp (fullname,
+	  && filename_cmp (fullname.get (),
 			   symtab_to_fullname (loc->symtab)) == 0);
 }
 
@@ -308,7 +307,7 @@ tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal,
     start_line = 1;
 
   bool source_already_displayed = (sal.symtab != 0
-				   && showing_source_p (fullname));
+				   && showing_source_p (fullname.get ()));
 
   struct tui_line_or_address l;
 
diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
index a7002123c9..30728e4214 100644
--- a/gdb/tui/tui-source.h
+++ b/gdb/tui/tui-source.h
@@ -76,6 +76,9 @@ private:
      in the current source window.  */
   bool line_is_displayed (int line) const;
 
+  /* It is the resolved form as returned by symtab_to_fullname.  */
+  gdb::unique_xmalloc_ptr<char> fullname;
+
   /* A token used to register and unregister an observer.  */
   gdb::observers::token m_observable;
 };
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index d5281193c0..8b507ed912 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -261,11 +261,6 @@ tui_source_window_base::tui_source_window_base (enum tui_win_type type)
 }
 
 
-tui_source_window_base::~tui_source_window_base ()
-{
-  xfree (fullname);
-}  
-
 /* See tui-data.h.  */
 
 void
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index 64f0739e53..eca0bde4bb 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -78,7 +78,7 @@ struct tui_source_window_base : public tui_win_info
 {
 protected:
   explicit tui_source_window_base (enum tui_win_type type);
-  ~tui_source_window_base () override;
+
   DISABLE_COPY_AND_ASSIGN (tui_source_window_base);
 
   void do_scroll_horizontal (int num_to_scroll) override;
@@ -137,9 +137,6 @@ public:
   int horizontal_offset = 0;
   struct tui_line_or_address start_line_or_addr;
 
-  /* It is the resolved form as returned by symtab_to_fullname.  */
-  char *fullname = nullptr;
-
   /* Architecture associated with code at this location.  */
   struct gdbarch *gdbarch = nullptr;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change tui_make_status_line to return std::string
@ 2019-09-20 21:27 gdb-buildbot
  2019-09-20 23:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 21:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f85321544357a44a824d9d31fd57ed4d3aae1a4a ***

commit f85321544357a44a824d9d31fd57ed4d3aae1a4a
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 16:36:59 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:05 2019 -0600

    Change tui_make_status_line to return std::string
    
    This changes tui_make_status_line to return std::string.  This cleans
    it up a bit, and removes some explicit memory management.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.c (tui_make_status_line): Return std::string.
            (tui_locator_window::rerender): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9f7accd2f6..862748efc1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_make_status_line): Return std::string.
+	(tui_locator_window::rerender): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-winsource.h (struct tui_source_window_base)
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 36208d0cac..a2e4a161bb 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -66,14 +66,12 @@ tui_locator_win_info_ptr (void)
 /* Create the status line to display as much information as we can on
    this single line: target name, process number, current function,
    current line, current PC, SingleKey mode.  */
-static char *
+static std::string
 tui_make_status_line (struct tui_locator_window *loc)
 {
-  char *string;
   char line_buf[50], *pname;
-  char *buf;
   int status_size;
-  int i, proc_width;
+  int proc_width;
   const char *pid_name;
   int target_width;
   int pid_width;
@@ -97,8 +95,6 @@ tui_make_status_line (struct tui_locator_window *loc)
     pid_width = MAX_PID_WIDTH;
 
   status_size = tui_term_width ();
-  string = (char *) xmalloc (status_size + 1);
-  buf = (char*) alloca (status_size + 1);
 
   /* Translate line number and obtain its size.  */
   if (loc->line_no > 0)
@@ -158,61 +154,47 @@ tui_make_status_line (struct tui_locator_window *loc)
   pname = loc->proc_name;
 
   /* Now create the locator line from the string version of the
-     elements.  We could use sprintf() here but that wouldn't ensure
-     that we don't overrun the size of the allocated buffer.
-     strcat_to_buf() will.  */
-  *string = (char) 0;
+     elements.  */
+  string_file string;
 
   if (target_width > 0)
-    {
-      sprintf (buf, "%*.*s ",
-               -target_width, target_width, target_shortname);
-      strcat_to_buf (string, status_size, buf);
-    }
+    string.printf ("%*.*s ", -target_width, target_width, target_shortname);
   if (pid_width > 0)
-    {
-      sprintf (buf, "%*.*s ",
-               -pid_width, pid_width, pid_name);
-      strcat_to_buf (string, status_size, buf);
-    }
-  
+    string.printf ("%*.*s ", -pid_width, pid_width, pid_name);
+
   /* Show whether we are in SingleKey mode.  */
   if (tui_current_key_mode == TUI_SINGLE_KEY_MODE)
     {
-      strcat_to_buf (string, status_size, SINGLE_KEY);
-      strcat_to_buf (string, status_size, " ");
+      string.puts (SINGLE_KEY);
+      string.puts (" ");
     }
 
   /* Procedure/class name.  */
   if (proc_width > 0)
     {
       if (strlen (pname) > proc_width)
-        sprintf (buf, "%s%*.*s* ", PROC_PREFIX,
-                 1 - proc_width, proc_width - 1, pname);
+        string.printf ("%s%*.*s* ", PROC_PREFIX,
+		       1 - proc_width, proc_width - 1, pname);
       else
-        sprintf (buf, "%s%*.*s ", PROC_PREFIX,
-                 -proc_width, proc_width, pname);
-      strcat_to_buf (string, status_size, buf);
+        string.printf ("%s%*.*s ", PROC_PREFIX,
+		       -proc_width, proc_width, pname);
     }
 
   if (line_width > 0)
-    {
-      sprintf (buf, "%s%*.*s ", LINE_PREFIX,
-               -line_width, line_width, line_buf);
-      strcat_to_buf (string, status_size, buf);
-    }
+    string.printf ("%s%*.*s ", LINE_PREFIX,
+		   -line_width, line_width, line_buf);
   if (pc_width > 0)
     {
-      strcat_to_buf (string, status_size, PC_PREFIX);
-      strcat_to_buf (string, status_size, pc_buf);
+      string.puts (PC_PREFIX);
+      string.puts (pc_buf);
     }
-  
-  
-  for (i = strlen (string); i < status_size; i++)
-    string[i] = ' ';
-  string[status_size] = (char) 0;
 
-  return string;
+  if (string.size () < status_size)
+    string.puts (n_spaces (status_size - string.size ()));
+  else if (string.size () > status_size)
+    string.string ().erase (status_size, string.size ());
+
+  return std::move (string.string ());
 }
 
 /* Get a printable name for the function at the address.  The symbol
@@ -252,7 +234,7 @@ tui_locator_window::rerender ()
 {
   if (handle != NULL)
     {
-      char *string = tui_make_status_line (this);
+      std::string string = tui_make_status_line (this);
       wmove (handle, 0, 0);
       /* We ignore the return value from wstandout and wstandend, casting
 	 them to void in order to avoid a compiler warning.  The warning
@@ -260,12 +242,11 @@ tui_locator_window::rerender ()
 	 changing these macro to expand to code that causes the compiler
 	 to generate an unused-value warning.  */
       (void) wstandout (handle);
-      waddstr (handle, string);
+      waddstr (handle, string.c_str ());
       wclrtoeol (handle);
       (void) wstandend (handle);
       refresh_window ();
       wmove (handle, 0, 0);
-      xfree (string);
     }
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change tui_make_status_line to be a method
@ 2019-09-20 21:42 gdb-buildbot
  2019-09-21  0:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 21:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 71a25ed2e77fd72e01d38aa84f5a0fbe5f081474 ***

commit 71a25ed2e77fd72e01d38aa84f5a0fbe5f081474
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 16:43:20 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:05 2019 -0600

    Change tui_make_status_line to be a method
    
    This changes tui_make_status_line to be a method on
    tui_locator_window.  This is a minor cleanup.
    
    This also changes the new method to use the locator's width, rather
    than the terminal width.  This is important if we ever want to allow
    windows to be made more narrow.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
            Declare.
            * tui/tui-stack.c (tui_locator_window::make_status_line): Rename
            from tui_make_status_line.
            (tui_locator_window::rerender): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 862748efc1..b6a15347b5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
+	Declare.
+	* tui/tui-stack.c (tui_locator_window::make_status_line): Rename
+	from tui_make_status_line.
+	(tui_locator_window::rerender): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.c (tui_make_status_line): Return std::string.
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index a2e4a161bb..163a5ad725 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -63,13 +63,10 @@ tui_locator_win_info_ptr (void)
   return &_locator;
 }
 
-/* Create the status line to display as much information as we can on
-   this single line: target name, process number, current function,
-   current line, current PC, SingleKey mode.  */
-static std::string
-tui_make_status_line (struct tui_locator_window *loc)
+std::string
+tui_locator_window::make_status_line () const
 {
-  char line_buf[50], *pname;
+  char line_buf[50];
   int status_size;
   int proc_width;
   const char *pid_name;
@@ -94,11 +91,11 @@ tui_make_status_line (struct tui_locator_window *loc)
   if (pid_width > MAX_PID_WIDTH)
     pid_width = MAX_PID_WIDTH;
 
-  status_size = tui_term_width ();
+  status_size = width;
 
   /* Translate line number and obtain its size.  */
-  if (loc->line_no > 0)
-    xsnprintf (line_buf, sizeof (line_buf), "%d", loc->line_no);
+  if (line_no > 0)
+    xsnprintf (line_buf, sizeof (line_buf), "%d", line_no);
   else
     strcpy (line_buf, "??");
   line_width = strlen (line_buf);
@@ -106,8 +103,8 @@ tui_make_status_line (struct tui_locator_window *loc)
     line_width = MIN_LINE_WIDTH;
 
   /* Translate PC address.  */
-  std::string pc_out (loc->gdbarch
-		      ? paddress (loc->gdbarch, loc->addr)
+  std::string pc_out (gdbarch
+		      ? paddress (gdbarch, addr)
 		      : "??");
   const char *pc_buf = pc_out.c_str ();
   int pc_width = pc_out.size ();
@@ -150,9 +147,6 @@ tui_make_status_line (struct tui_locator_window *loc)
         }
     }
 
-  /* Now convert elements to string form.  */
-  pname = loc->proc_name;
-
   /* Now create the locator line from the string version of the
      elements.  */
   string_file string;
@@ -172,12 +166,12 @@ tui_make_status_line (struct tui_locator_window *loc)
   /* Procedure/class name.  */
   if (proc_width > 0)
     {
-      if (strlen (pname) > proc_width)
+      if (strlen (proc_name) > proc_width)
         string.printf ("%s%*.*s* ", PROC_PREFIX,
-		       1 - proc_width, proc_width - 1, pname);
+		       1 - proc_width, proc_width - 1, proc_name);
       else
         string.printf ("%s%*.*s ", PROC_PREFIX,
-		       -proc_width, proc_width, pname);
+		       -proc_width, proc_width, proc_name);
     }
 
   if (line_width > 0)
@@ -234,7 +228,7 @@ tui_locator_window::rerender ()
 {
   if (handle != NULL)
     {
-      std::string string = tui_make_status_line (this);
+      std::string string = make_status_line ();
       wmove (handle, 0, 0);
       /* We ignore the return value from wstandout and wstandend, casting
 	 them to void in order to avoid a compiler warning.  The warning
diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h
index 86239b0d28..b6ffa986a6 100644
--- a/gdb/tui/tui-stack.h
+++ b/gdb/tui/tui-stack.h
@@ -63,6 +63,14 @@ struct tui_locator_window : public tui_gen_win_info
   CORE_ADDR addr = 0;
   /* Architecture associated with code at this location.  */
   struct gdbarch *gdbarch = nullptr;
+
+private:
+
+  /* Create the status line to display as much information as we can
+     on this single line: target name, process number, current
+     function, current line, current PC, SingleKey mode.  */
+
+  std::string make_status_line () const;
 };
 
 extern void tui_update_locator_fullname (const char *);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove some explicit re-rendering from the TUI
@ 2019-09-20 21:56 gdb-buildbot
  2019-09-21  1:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 21:56 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b3b1bde658c97fbccc1e49b79cc45e434591533e ***

commit b3b1bde658c97fbccc1e49b79cc45e434591533e
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 17:14:37 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:06 2019 -0600

    Remove some explicit re-rendering from the TUI
    
    A couple of spots in tui-layout.c still call the show_source_content
    method.  However, now that re-rendering is done by the resize method,
    these calls are no longer needed.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-layout.c (show_source_disasm_command)
            (show_source_or_disasm_and_command): Don't call
            show_source_content.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b6a15347b5..7e4fa87c90 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Don't call
+	show_source_content.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index d331a2f25c..33d3dd6cb8 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -505,7 +505,6 @@ show_source_disasm_command (void)
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
   gdb_assert (locator != nullptr);
 
-  TUI_SRC_WIN->show_source_content ();
   if (TUI_DISASM_WIN == NULL)
     tui_win_list[DISASSEM_WIN] = new tui_disasm_window ();
   TUI_DISASM_WIN->resize (asm_height,
@@ -516,7 +515,6 @@ show_source_disasm_command (void)
 		   tui_term_width (),
 		   0,
 		   (src_height + asm_height) - 1);
-  TUI_DISASM_WIN->show_source_content ();
 
   if (TUI_CMD_WIN == NULL)
     tui_win_list[CMD_WIN] = new tui_cmd_window ();
@@ -646,8 +644,6 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type)
 		    0,
 		    0);
 
-  win_info->show_source_content ();
-
   if (TUI_CMD_WIN == NULL)
     tui_win_list[CMD_WIN] = new tui_cmd_window ();
   TUI_CMD_WIN->resize (cmd_height,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify tui_source_window_base::show_source_content
@ 2019-09-20 22:05 gdb-buildbot
  2019-09-21  3:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 22:05 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 2ad52f6fb3daecd928605384fcaa45ad43178b4e ***

commit 2ad52f6fb3daecd928605384fcaa45ad43178b4e
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 17:16:56 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:06 2019 -0600

    Simplify tui_source_window_base::show_source_content
    
    tui_source_window_base::show_source_content is not used outside the
    class any more, so this makes it private.  Examining the callers shows
    that it can't be called without source contents, so it can be
    simplified as well.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-winsource.h (struct tui_source_window_base)
            <show_source_content>: Now private.
            * tui/tui-winsource.c
            (tui_source_window_base::show_source_content): Don't handle empty
            content case.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7e4fa87c90..b634e52622 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<show_source_content>: Now private.
+	* tui/tui-winsource.c
+	(tui_source_window_base::show_source_content): Don't handle empty
+	content case.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-layout.c (show_source_disasm_command)
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 8b507ed912..683856de81 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -238,15 +238,10 @@ tui_show_source_line (struct tui_source_window_base *win_info, int lineno)
 void
 tui_source_window_base::show_source_content ()
 {
-  if (!content.empty ())
-    {
-      int lineno;
+  gdb_assert (!content.empty ());
 
-      for (lineno = 1; lineno <= content.size (); lineno++)
-        tui_show_source_line (this, lineno);
-    }
-  else
-    erase_source_content ();
+  for (int lineno = 1; lineno <= content.size (); lineno++)
+    tui_show_source_line (this, lineno);
 
   check_and_display_highlight_if_needed ();
   refresh_window ();
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index eca0bde4bb..a66c63597e 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -76,6 +76,9 @@ struct tui_source_element
 
 struct tui_source_window_base : public tui_win_info
 {
+private:
+  void show_source_content ();
+
 protected:
   explicit tui_source_window_base (enum tui_win_type type);
 
@@ -106,8 +109,6 @@ public:
 
   virtual bool location_matches_p (struct bp_location *loc, int line_no) = 0;
 
-  void show_source_content ();
-
   void update_exec_info ();
 
   /* Update the window to display the given location.  Does nothing if


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Simplify TUI disassembly
@ 2019-09-20 22:25 gdb-buildbot
  2019-09-21  3:59 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 22:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6b915f7d0caf868c037c387aa4feef0c7085cb48 ***

commit 6b915f7d0caf868c037c387aa4feef0c7085cb48
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 17:37:48 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:07 2019 -0600

    Simplify TUI disassembly
    
    This simplifies TUI disassembly somewhat, by removing manual memory
    management.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-disasm.c (struct tui_asm_line) <addr_string, insn>: Now
            std::string.
            (tui_disassemble): Add "pos" parameter.
            (tui_disasm_window::set_contents): Simplify.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b634e52622..00d97c6602 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (struct tui_asm_line) <addr_string, insn>: Now
+	std::string.
+	(tui_disassemble): Add "pos" parameter.
+	(tui_disasm_window::set_contents): Simplify.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-winsource.h (struct tui_source_window_base)
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index 2a331327e7..53ea061afb 100644
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -44,34 +44,32 @@
 struct tui_asm_line 
 {
   CORE_ADDR addr;
-  char *addr_string;
-  char *insn;
+  std::string addr_string;
+  std::string insn;
 };
 
 /* Function to set the disassembly window's content.
    Disassemble count lines starting at pc.
    Return address of the count'th instruction after pc.  */
 static CORE_ADDR
-tui_disassemble (struct gdbarch *gdbarch, struct tui_asm_line *asm_lines,
-		 CORE_ADDR pc, int count)
+tui_disassemble (struct gdbarch *gdbarch,
+		 std::vector<tui_asm_line> &asm_lines,
+		 CORE_ADDR pc, int pos, int count)
 {
   string_file gdb_dis_out;
 
   /* Now construct each line.  */
-  for (; count > 0; count--, asm_lines++)
+  for (int i = 0; i < count; ++i)
     {
-      xfree (asm_lines->addr_string);
-      xfree (asm_lines->insn);
-      
       print_address (gdbarch, pc, &gdb_dis_out);
-      asm_lines->addr = pc;
-      asm_lines->addr_string = xstrdup (gdb_dis_out.c_str ());
+      asm_lines[pos + i].addr = pc;
+      asm_lines[pos + i].addr_string = std::move (gdb_dis_out.string ());
 
       gdb_dis_out.clear ();
 
       pc = pc + gdb_print_insn (gdbarch, pc, &gdb_dis_out, NULL);
 
-      asm_lines->insn = xstrdup (gdb_dis_out.c_str ());
+      asm_lines[pos + i].insn = std::move (gdb_dis_out.string ());
 
       /* Reset the buffer to empty.  */
       gdb_dis_out.clear ();
@@ -87,20 +85,17 @@ tui_find_disassembly_address (struct gdbarch *gdbarch, CORE_ADDR pc, int from)
 {
   CORE_ADDR new_low;
   int max_lines;
-  int i;
-  struct tui_asm_line *asm_lines;
 
   max_lines = (from > 0) ? from : - from;
   if (max_lines <= 1)
-     return pc;
+    return pc;
 
-  asm_lines = XALLOCAVEC (struct tui_asm_line, max_lines);
-  memset (asm_lines, 0, sizeof (struct tui_asm_line) * max_lines);
+  std::vector<tui_asm_line> asm_lines (max_lines);
 
   new_low = pc;
   if (from > 0)
     {
-      tui_disassemble (gdbarch, asm_lines, pc, max_lines);
+      tui_disassemble (gdbarch, asm_lines, pc, 0, max_lines);
       new_low = asm_lines[max_lines - 1].addr;
     }
   else
@@ -122,7 +117,7 @@ tui_find_disassembly_address (struct gdbarch *gdbarch, CORE_ADDR pc, int from)
          else
             new_low += 1 * max_lines;
 
-         tui_disassemble (gdbarch, asm_lines, new_low, max_lines);
+         tui_disassemble (gdbarch, asm_lines, new_low, 0, max_lines);
          last_addr = asm_lines[pos].addr;
       } while (last_addr > pc && msymbol.minsym);
 
@@ -139,8 +134,8 @@ tui_find_disassembly_address (struct gdbarch *gdbarch, CORE_ADDR pc, int from)
             if (pos >= max_lines)
               pos = 0;
 
-            next_addr = tui_disassemble (gdbarch, &asm_lines[pos],
-					 last_addr, 1);
+            next_addr = tui_disassemble (gdbarch, asm_lines,
+					 last_addr, pos, 1);
 
             /* If there are some problems while disassembling exit.  */
             if (next_addr <= last_addr)
@@ -152,11 +147,6 @@ tui_find_disassembly_address (struct gdbarch *gdbarch, CORE_ADDR pc, int from)
          pos = 0;
       new_low = asm_lines[pos].addr;
     }
-  for (i = 0; i < max_lines; i++)
-    {
-      xfree (asm_lines[i].addr_string);
-      xfree (asm_lines[i].insn);
-    }
   return new_low;
 }
 
@@ -172,10 +162,8 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
   CORE_ADDR cur_pc;
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
   int tab_len = tui_tab_width;
-  struct tui_asm_line *asm_lines;
   int insn_pos;
   int addr_size, insn_size;
-  char *line;
   
   gdb_assert (line_or_addr.loa == LOA_ADDRESS);
   CORE_ADDR pc = line_or_addr.u.addr;
@@ -192,22 +180,21 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
   line_width = width - TUI_EXECINFO_SIZE - 2;
 
   /* Get temporary table that will hold all strings (addr & insn).  */
-  asm_lines = XALLOCAVEC (struct tui_asm_line, max_lines);
-  memset (asm_lines, 0, sizeof (struct tui_asm_line) * max_lines);
+  std::vector<tui_asm_line> asm_lines (max_lines);
 
-  tui_disassemble (gdbarch, asm_lines, pc, max_lines);
+  tui_disassemble (gdbarch, asm_lines, pc, 0, max_lines);
 
   /* Determine maximum address- and instruction lengths.  */
   addr_size = 0;
   insn_size = 0;
   for (i = 0; i < max_lines; i++)
     {
-      size_t len = strlen (asm_lines[i].addr_string);
+      size_t len = asm_lines[i].addr_string.size ();
 
       if (len > addr_size)
         addr_size = len;
 
-      len = strlen (asm_lines[i].insn);
+      len = asm_lines[i].insn.size ();
       if (len > insn_size)
 	insn_size = len;
     }
@@ -215,23 +202,20 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
   /* Align instructions to the same column.  */
   insn_pos = (1 + (addr_size / tab_len)) * tab_len;
 
-  /* Allocate memory to create each line.  */
-  line = (char*) alloca (insn_pos + insn_size + 1);
-
   /* Now construct each line.  */
   content.resize (max_lines);
   for (i = 0; i < max_lines; i++)
     {
-      int cur_len;
-
       tui_source_element *src = &content[i];
-      strcpy (line, asm_lines[i].addr_string);
-      cur_len = strlen (line);
-      memset (line + cur_len, ' ', insn_pos - cur_len);
-      strcpy (line + insn_pos, asm_lines[i].insn);
+
+      std::string line
+	= (asm_lines[i].addr_string
+	   + n_spaces (insn_pos
+		       - asm_lines[i].addr_string.size ())
+	   + asm_lines[i].insn);
 
       /* Now copy the line taking the offset into account.  */
-      if (strlen (line) > offset)
+      if (line.size() > offset)
 	src->line.reset (xstrndup (&line[offset], line_width));
       else
 	src->line.reset (xstrdup (""));
@@ -239,9 +223,6 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
       src->line_or_addr.loa = LOA_ADDRESS;
       src->line_or_addr.u.addr = asm_lines[i].addr;
       src->is_exec_point = asm_lines[i].addr == cur_pc;
-
-      xfree (asm_lines[i].addr_string);
-      xfree (asm_lines[i].insn);
     }
   return TUI_SUCCESS;
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use "bool" in tui_data_window::show_register_group
@ 2019-09-20 22:33 gdb-buildbot
  2019-09-21  4:39 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 22:33 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b5457826744f08208a4c29addbbc26c7c877c485 ***

commit b5457826744f08208a4c29addbbc26c7c877c485
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Wed Jul 24 15:42:27 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:07 2019 -0600

    Use "bool" in tui_data_window::show_register_group
    
    This changes tui_data_window::show_register_group to use "bool" rather
    than "int".
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.h (struct tui_data_window) <show_register_group>:
            Change type of "refresh_values_only".
            * tui/tui-regs.c (tui_data_window::show_register_group): Change
            type of "refresh_values_only".

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 00d97c6602..188984ee80 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <show_register_group>:
+	Change type of "refresh_values_only".
+	* tui/tui-regs.c (tui_data_window::show_register_group): Change
+	type of "refresh_values_only".
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-disasm.c (struct tui_asm_line) <addr_string, insn>: Now
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 48e78fc9db..0485d04d25 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -166,12 +166,12 @@ tui_data_window::show_registers (struct reggroup *group)
 
 /* Set the data window to display the registers of the register group
    using the given frame.  Values are refreshed only when
-   refresh_values_only is TRUE.  */
+   refresh_values_only is true.  */
 
 void
 tui_data_window::show_register_group (struct reggroup *group,
 				      struct frame_info *frame, 
-				      int refresh_values_only)
+				      bool refresh_values_only)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   int nr_regs;
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index abf44c88b6..73572efdf9 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -108,7 +108,7 @@ private:
 
   void show_register_group (struct reggroup *group,
 			    struct frame_info *frame,
-			    int refresh_values_only);
+			    bool refresh_values_only);
 
   /* Answer the number of the last line in the regs display.  If there
      are no registers (-1) is returned.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change "win_resized" to bool
@ 2019-09-20 22:45 gdb-buildbot
  2019-09-21  5:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 22:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9abd8a65c1298258c005af3f80bdc4da9726ee05 ***

commit 9abd8a65c1298258c005af3f80bdc4da9726ee05
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Wed Jul 24 15:43:40 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:08 2019 -0600

    Change "win_resized" to bool
    
    This changes the "win_resized" global to be a bool and then updates
    the uses.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui.c (tui_enable): Update.
            * tui/tui-win.c (tui_sigwinch_handler, tui_async_resize_screen):
            Update.
            * tui/tui-data.h (tui_win_resized, tui_set_win_resized_to):
            Update.
            * tui/tui-data.c (win_resized): Now bool.
            (tui_win_resized): Return bool.
            (tui_set_win_resized_to): Accept a bool.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 188984ee80..e36b54f226 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_enable): Update.
+	* tui/tui-win.c (tui_sigwinch_handler, tui_async_resize_screen):
+	Update.
+	* tui/tui-data.h (tui_win_resized, tui_set_win_resized_to):
+	Update.
+	* tui/tui-data.c (win_resized): Now bool.
+	(tui_win_resized): Return bool.
+	(tui_set_win_resized_to): Accept a bool.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.h (struct tui_data_window) <show_register_group>:
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index 833ea49a95..c14b1711f6 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -38,7 +38,7 @@ struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS];
 static int term_height, term_width;
 static struct tui_win_info *win_with_focus = NULL;
 
-static int win_resized = FALSE;
+static bool win_resized = false;
 
 
 /*********************************
@@ -56,8 +56,8 @@ tui_win_is_auxiliary (enum tui_win_type win_type)
 ******************************************/
 
 /* Answer a whether the terminal window has been resized or not.  */
-int
-tui_win_resized (void)
+bool
+tui_win_resized ()
 {
   return win_resized;
 }
@@ -65,7 +65,7 @@ tui_win_resized (void)
 
 /* Set a whether the terminal window has been resized or not.  */
 void
-tui_set_win_resized_to (int resized)
+tui_set_win_resized_to (bool resized)
 {
   win_resized = resized;
 }
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index be819503cf..264652361e 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -297,8 +297,8 @@ extern void tui_set_term_width_to (int);
 extern struct tui_locator_window *tui_locator_win_info_ptr (void);
 extern struct tui_win_info *tui_win_with_focus (void);
 extern void tui_set_win_with_focus (struct tui_win_info *);
-extern int tui_win_resized (void);
-extern void tui_set_win_resized_to (int);
+extern bool tui_win_resized ();
+extern void tui_set_win_resized_to (bool);
 
 extern struct tui_win_info *tui_next_win (struct tui_win_info *);
 extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index bf84cdac44..d07a777360 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -664,7 +664,7 @@ static void
 tui_sigwinch_handler (int signal)
 {
   mark_async_signal_handler (tui_sigwinch_token);
-  tui_set_win_resized_to (TRUE);
+  tui_set_win_resized_to (true);
 }
 
 /* Callback for asynchronously resizing TUI following a SIGWINCH signal.  */
@@ -685,7 +685,7 @@ tui_async_resize_screen (gdb_client_data arg)
     }
   else
     {
-      tui_set_win_resized_to (FALSE);
+      tui_set_win_resized_to (false);
       tui_resize_all ();
       tui_refresh_all_win ();
       tui_update_gdb_sizes ();
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 5d6b9f3203..966304f340 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -504,7 +504,7 @@ tui_enable (void)
      window.  */
   if (tui_win_resized ())
     {
-      tui_set_win_resized_to (FALSE);
+      tui_set_win_resized_to (false);
       tui_resize_all ();
     }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Set TUI locator height to 1
@ 2019-09-20 22:59 gdb-buildbot
  2019-09-21  6:50 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 22:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 1b935acf7ecc2df4649b7d34b7ac467eac07221b ***

commit 1b935acf7ecc2df4649b7d34b7ac467eac07221b
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Wed Jul 24 16:37:48 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:08 2019 -0600

    Set TUI locator height to 1
    
    The TUI has long had code to resize the locator, using 2 as the
    height.  However the code has "1" in a comment, like:
    
        locator->resize (2 /* 1 */ ,
    
    This patch fixes the resizing code to set the height to 1.  Doing this
    revealed what was probably the reason for setting the height to 2 in
    the first place: this caused the locator window to scroll.  However,
    this is easily handled by calling scrollok on the locator window.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use 1 as
            height for locator.
            * tui/tui-stack.c (tui_locator_window::rerender): Call scrollok.
            * tui/tui-layout.c (show_source_disasm_command, show_data)
            (show_source_or_disasm_and_command): Use 1 as height for locator.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e36b54f226..9bc6f263f4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use 1 as
+	height for locator.
+	* tui/tui-stack.c (tui_locator_window::rerender): Call scrollok.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Use 1 as height for locator.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui.c (tui_enable): Update.
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 33d3dd6cb8..03115a7baa 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -511,10 +511,8 @@ show_source_disasm_command (void)
 			  tui_term_width (),
 			  0,
 			  src_height - 1);
-  locator->resize (2 /* 1 */ ,
-		   tui_term_width (),
-		   0,
-		   (src_height + asm_height) - 1);
+  locator->resize (1, tui_term_width (),
+		   0, (src_height + asm_height) - 1);
 
   if (TUI_CMD_WIN == NULL)
     tui_win_list[CMD_WIN] = new tui_cmd_window ();
@@ -561,10 +559,8 @@ show_data (enum tui_layout_type new_layout)
 				  tui_term_width (),
 				  0,
 				  data_height - 1);
-  locator->resize (2 /* 1 */ ,
-		   tui_term_width (),
-		   0,
-		   total_height - 1);
+  locator->resize (1, tui_term_width (),
+		   0, total_height - 1);
   TUI_CMD_WIN->resize (TUI_CMD_WIN->height, tui_term_width (),
 		       0, total_height);
 
@@ -635,10 +631,8 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type)
       win_info = TUI_DISASM_WIN;
     }
 
-  locator->resize (2 /* 1 */ ,
-		   tui_term_width (),
-		   0,
-		   src_height - 1);
+  locator->resize (1, tui_term_width (),
+		   0, src_height - 1);
   win_info->resize (src_height - 1,
 		    tui_term_width (),
 		    0,
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 163a5ad725..6bfbb0e5ea 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -229,6 +229,7 @@ tui_locator_window::rerender ()
   if (handle != NULL)
     {
       std::string string = make_status_line ();
+      scrollok (handle, FALSE);
       wmove (handle, 0, 0);
       /* We ignore the return value from wstandout and wstandend, casting
 	 them to void in order to avoid a compiler warning.  The warning
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index d07a777360..77044738ef 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -580,8 +580,7 @@ tui_resize_all (void)
 
 	  src_win->resize (new_height, screenwidth, 0, 0);
 
-	  locator->resize (2 /* 1 */, screenwidth,
-			   0, new_height);
+	  locator->resize (1, screenwidth, 0, new_height);
 
 	  new_height = screenheight - (new_height + 1);
 	  TUI_CMD_WIN->resize (new_height, screenwidth,
@@ -637,7 +636,7 @@ tui_resize_all (void)
 	  second_win->resize (new_height, screenwidth,
 			      0, first_win->height - 1);
 
-	  locator->resize (2 /* 1 */, screenwidth,
+	  locator->resize (1, screenwidth,
 			   0, second_win->origin.y + new_height);
 
 	  /* Change the command window's height/width.  */
@@ -1119,7 +1118,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
 		  second_win->resize (second_win->height + second_split_diff,
 				      width,
 				      0, first_win->height - 1);
-		  locator->resize (2 /* 1 */, width,
+		  locator->resize (1, width,
 				   0, (second_win->origin.y
 				       + second_win->height + 1));
 
@@ -1155,7 +1154,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
 		  else
 		    second_win->resize (second_win->height, width,
 					0, first_win->height - 1);
-		  locator->resize (2 /* 1 */, width,
+		  locator->resize (1, width,
 				   0, (second_win->origin.y
 				       + second_win->height + 1));
 		  TUI_CMD_WIN->origin.y = locator->origin.y + 1;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Don't call refresh in tui_resize_all
@ 2019-09-20 23:08 gdb-buildbot
  2019-09-21  7:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 23:08 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0891be0835883fc1159565b780d63954e6b09bd9 ***

commit 0891be0835883fc1159565b780d63954e6b09bd9
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Wed Jul 24 21:05:10 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:09 2019 -0600

    Don't call refresh in tui_resize_all
    
    There's no reason to call refresh in tui_resize_all.  This call
    flushes the curses window contents to the terminal -- but, because
    we're about the resize all the windows, we're going to be sending more
    data to the terminal momentarily.  This patch removes the call.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-win.c (tui_resize_all): Don't call refresh.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9bc6f263f4..35584db07f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all): Don't call refresh.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use 1 as
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 77044738ef..8963da2b48 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -561,7 +561,6 @@ tui_resize_all (void)
          AIX 5.3 does not define clear.  */
       erase ();
       clearok (curscr, TRUE);
-      refresh ();
       switch (cur_layout)
        {
 	case SRC_COMMAND:


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove a call to tui_locator_win_info_ptr
@ 2019-09-20 23:22 gdb-buildbot
  2019-09-21  8:52 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 23:22 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b76251abaf279603367ae730b9194fb20861fdb9 ***

commit b76251abaf279603367ae730b9194fb20861fdb9
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Sep 1 08:10:18 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:09 2019 -0600

    Remove a call to tui_locator_win_info_ptr
    
    Commit e594a5d1 ("Turn two locator functions into methods") turned
    set_locator_fullname into a method on tui_locator_window.  I missed it
    at the time, but this change allows for the removal of a call to
    tui_locator_win_info_ptr.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.c (tui_locator_window::set_locator_fullname):
            Don't call tui_locator_win_info_ptr.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 35584db07f..401c74242e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
+	Don't call tui_locator_win_info_ptr.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-win.c (tui_resize_all): Don't call refresh.
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 6bfbb0e5ea..830187995b 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -250,10 +250,8 @@ tui_locator_window::rerender ()
 void
 tui_locator_window::set_locator_fullname (const char *fullname)
 {
-  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-
-  locator->full_name[0] = 0;
-  strcat_to_buf (locator->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
+  full_name[0] = 0;
+  strcat_to_buf (full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
   rerender ();
 }
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change members of tui_locator_window to std::string
@ 2019-09-20 23:35 gdb-buildbot
  2019-09-21  9:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 23:35 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9923f347c4e4b9ed710de3404444cf46b04135a0 ***

commit 9923f347c4e4b9ed710de3404444cf46b04135a0
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Sep 1 08:13:24 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:10 2019 -0600

    Change members of tui_locator_window to std::string
    
    This changes two members of tui_locator_window to have type
    std::string.  This removes a static limit.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN): Remove define.
            (struct tui_locator_window) <full_name, proc_name>: Now
            std::string.
            * tui/tui-stack.c (tui_locator_window::make_status_line)
            (tui_locator_window::set_locator_fullname)
            (tui_locator_window::set_locator_info): Update.
            * tui/tui-source.c (tui_source_window::set_contents)
            (tui_source_window::showing_source_p): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 401c74242e..8d586e72f0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN): Remove define.
+	(struct tui_locator_window) <full_name, proc_name>: Now
+	std::string.
+	* tui/tui-stack.c (tui_locator_window::make_status_line)
+	(tui_locator_window::set_locator_fullname)
+	(tui_locator_window::set_locator_info): Update.
+	* tui/tui-source.c (tui_source_window::set_contents)
+	(tui_source_window::showing_source_p): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index f70e053bdb..e6cc0dbc1a 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -179,7 +179,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 	      element->line_or_addr.loa = LOA_LINE;
 	      element->line_or_addr.u.line_no = cur_line_no;
 	      element->is_exec_point
-		= (filename_cmp (locator->full_name,
+		= (filename_cmp (locator->full_name.c_str (),
 				 symtab_to_fullname (s)) == 0
 		   && cur_line_no == locator->line_no);
 
@@ -213,7 +213,7 @@ bool
 tui_source_window::showing_source_p (const char *fullname) const
 {
   return (!content.empty ()
-	  && (filename_cmp (tui_locator_win_info_ptr ()->full_name,
+	  && (filename_cmp (tui_locator_win_info_ptr ()->full_name.c_str (),
 			    fullname) == 0));
 }
 
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 830187995b..d66e3589e4 100644
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -166,12 +166,12 @@ tui_locator_window::make_status_line () const
   /* Procedure/class name.  */
   if (proc_width > 0)
     {
-      if (strlen (proc_name) > proc_width)
+      if (proc_name.size () > proc_width)
         string.printf ("%s%*.*s* ", PROC_PREFIX,
-		       1 - proc_width, proc_width - 1, proc_name);
+		       1 - proc_width, proc_width - 1, proc_name.c_str ());
       else
         string.printf ("%s%*.*s ", PROC_PREFIX,
-		       -proc_width, proc_width, proc_name);
+		       -proc_width, proc_width, proc_name.c_str ());
     }
 
   if (line_width > 0)
@@ -250,8 +250,7 @@ tui_locator_window::rerender ()
 void
 tui_locator_window::set_locator_fullname (const char *fullname)
 {
-  full_name[0] = 0;
-  strcat_to_buf (full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
+  full_name = fullname;
   rerender ();
 }
 
@@ -272,16 +271,13 @@ tui_locator_window::set_locator_info (struct gdbarch *gdbarch_in,
   if (fullname == NULL)
     fullname = "";
 
-  locator_changed_p |= strncmp (proc_name, procname,
-				MAX_LOCATOR_ELEMENT_LEN) != 0;
+  locator_changed_p |= proc_name != procname;
   locator_changed_p |= lineno != line_no;
   locator_changed_p |= addr_in != addr;
   locator_changed_p |= gdbarch_in != gdbarch;
-  locator_changed_p |= strncmp (full_name, fullname,
-				MAX_LOCATOR_ELEMENT_LEN) != 0;
+  locator_changed_p |= full_name != fullname;
 
-  proc_name[0] = (char) 0;
-  strcat_to_buf (proc_name, MAX_LOCATOR_ELEMENT_LEN, procname);
+  proc_name = procname;
   line_no = lineno;
   addr = addr_in;
   gdbarch = gdbarch_in;
diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h
index b6ffa986a6..93a79fbd79 100644
--- a/gdb/tui/tui-stack.h
+++ b/gdb/tui/tui-stack.h
@@ -26,12 +26,6 @@
 
 struct frame_info;
 
-#ifdef PATH_MAX
-# define MAX_LOCATOR_ELEMENT_LEN        PATH_MAX
-#else
-# define MAX_LOCATOR_ELEMENT_LEN        1024
-#endif
-
 /* Locator window class.  */
 
 struct tui_locator_window : public tui_gen_win_info
@@ -57,8 +51,8 @@ struct tui_locator_window : public tui_gen_win_info
   /* Set the full_name portion of the locator.  */
   void set_locator_fullname (const char *fullname);
 
-  char full_name[MAX_LOCATOR_ELEMENT_LEN];
-  char proc_name[MAX_LOCATOR_ELEMENT_LEN];
+  std::string full_name;
+  std::string proc_name;
   int line_no = 0;
   CORE_ADDR addr = 0;
   /* Architecture associated with code at this location.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rename private data members of tui_data_window
@ 2019-09-20 23:46 gdb-buildbot
  2019-09-21 10:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 23:46 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 80df33379eb01e5cf959f3db8d6b1dec9bc6a03b ***

commit 80df33379eb01e5cf959f3db8d6b1dec9bc6a03b
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Mon Sep 2 08:09:37 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:10 2019 -0600

    Rename private data members of tui_data_window
    
    As Pedro suggested, this patch renames the private data members of
    tui_data_window to use the "m_" prefix.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-regs.h (struct tui_data_window) <get_current_group>:
            Update.
            <m_regs_content, m_regs_column_count, m_current_group>: Add "m_"
            prefix.
            * tui/tui-regs.c (tui_data_window::last_regs_line_no)
            (tui_data_window::line_from_reg_element_no)
            (tui_data_window::first_reg_element_no_inline)
            (tui_data_window::show_registers)
            (tui_data_window::show_register_group)
            (tui_data_window::display_registers_from)
            (tui_data_window::display_registers_from_line)
            (tui_data_window::first_data_item_displayed)
            (tui_data_window::delete_data_content_windows)
            (tui_data_window::erase_data_content)
            (tui_data_window::do_scroll_vertical)
            (tui_data_window::refresh_window)
            (tui_data_window::check_register_values): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8d586e72f0..96bf00595d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,23 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <get_current_group>:
+	Update.
+	<m_regs_content, m_regs_column_count, m_current_group>: Add "m_"
+	prefix.
+	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
+	(tui_data_window::line_from_reg_element_no)
+	(tui_data_window::first_reg_element_no_inline)
+	(tui_data_window::show_registers)
+	(tui_data_window::show_register_group)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::display_registers_from_line)
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows)
+	(tui_data_window::erase_data_content)
+	(tui_data_window::do_scroll_vertical)
+	(tui_data_window::refresh_window)
+	(tui_data_window::check_register_values): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN): Remove define.
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 0485d04d25..c4769cbcb4 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -96,8 +96,8 @@ tui_get_register (struct frame_info *frame,
 int
 tui_data_window::last_regs_line_no () const
 {
-  int num_lines = regs_content.size () / regs_column_count;
-  if (regs_content.size () % regs_column_count)
+  int num_lines = m_regs_content.size () / m_regs_column_count;
+  if (m_regs_content.size () % m_regs_column_count)
     num_lines++;
   return num_lines;
 }
@@ -107,14 +107,14 @@ tui_data_window::last_regs_line_no () const
 int
 tui_data_window::line_from_reg_element_no (int element_no) const
 {
-  if (element_no < regs_content.size ())
+  if (element_no < m_regs_content.size ())
     {
       int i, line = (-1);
 
       i = 1;
       while (line == (-1))
 	{
-	  if (element_no < regs_column_count * i)
+	  if (element_no < m_regs_column_count * i)
 	    line = i - 1;
 	  else
 	    i++;
@@ -131,8 +131,8 @@ tui_data_window::line_from_reg_element_no (int element_no) const
 int
 tui_data_window::first_reg_element_no_inline (int line_no) const
 {
-  if (line_no * regs_column_count <= regs_content.size ())
-    return ((line_no + 1) * regs_column_count) - regs_column_count;
+  if (line_no * m_regs_column_count <= m_regs_content.size ())
+    return ((line_no + 1) * m_regs_column_count) - m_regs_column_count;
   else
     return (-1);
 }
@@ -148,17 +148,17 @@ tui_data_window::show_registers (struct reggroup *group)
   if (target_has_registers && target_has_stack && target_has_memory)
     {
       show_register_group (group, get_selected_frame (NULL),
-			   group == current_group);
+			   group == m_current_group);
 
       /* Clear all notation of changed values.  */
-      for (auto &&data_item_win : regs_content)
+      for (auto &&data_item_win : m_regs_content)
 	data_item_win.highlight = false;
-      current_group = group;
+      m_current_group = group;
       rerender ();
     }
   else
     {
-      current_group = 0;
+      m_current_group = 0;
       erase_data_content (_("[ Register Values Unavailable ]"));
     }
 }
@@ -199,7 +199,7 @@ tui_data_window::show_register_group (struct reggroup *group,
       nr_regs++;
     }
 
-  regs_content.resize (nr_regs);
+  m_regs_content.resize (nr_regs);
 
   /* Now set the register names and values.  */
   pos = 0;
@@ -218,7 +218,7 @@ tui_data_window::show_register_group (struct reggroup *group,
       if (name == 0 || *name == '\0')
 	continue;
 
-      data_item_win = &regs_content[pos];
+      data_item_win = &m_regs_content[pos];
       if (data_item_win)
 	{
 	  if (!refresh_values_only)
@@ -241,7 +241,7 @@ tui_data_window::display_registers_from (int start_element_no)
   int j, item_win_width, cur_y;
 
   int max_len = 0;
-  for (auto &&data_item_win : regs_content)
+  for (auto &&data_item_win : m_regs_content)
     {
       const char *p;
       int len;
@@ -257,24 +257,24 @@ tui_data_window::display_registers_from (int start_element_no)
   item_win_width = max_len + 1;
   int i = start_element_no;
 
-  regs_column_count = (width - 2) / item_win_width;
-  if (regs_column_count == 0)
-    regs_column_count = 1;
-  item_win_width = (width - 2) / regs_column_count;
+  m_regs_column_count = (width - 2) / item_win_width;
+  if (m_regs_column_count == 0)
+    m_regs_column_count = 1;
+  item_win_width = (width - 2) / m_regs_column_count;
 
   /* Now create each data "sub" window, and write the display into
      it.  */
   cur_y = 1;
-  while (i < regs_content.size ()
+  while (i < m_regs_content.size ()
 	 && cur_y <= viewport_height)
     {
       for (j = 0;
-	   j < regs_column_count && i < regs_content.size ();
+	   j < m_regs_column_count && i < m_regs_content.size ();
 	   j++)
 	{
 	  /* Create the window if necessary.  */
-	  regs_content[i].resize (1, item_win_width,
-				  (item_win_width * j) + 1, cur_y);
+	  m_regs_content[i].resize (1, item_win_width,
+				    (item_win_width * j) + 1, cur_y);
 	  i++;		/* Next register.  */
 	}
       cur_y++;		/* Next row.  */
@@ -322,14 +322,14 @@ tui_data_window::display_registers_from_line (int line_no)
 	 registers.  */
       if (line_no >= last_regs_line_no ())
 	{
-	  line_no = line_from_reg_element_no (regs_content.size () - 1);
+	  line_no = line_from_reg_element_no (m_regs_content.size () - 1);
 	  if (line_no < 0)
 	    line_no = 0;
 	}
     }
 
   element_no = first_reg_element_no_inline (line_no);
-  if (element_no < regs_content.size ())
+  if (element_no < m_regs_content.size ())
     display_reg_element_at_line (element_no, line_no);
   else
     line_no = (-1);
@@ -343,11 +343,11 @@ tui_data_window::display_registers_from_line (int line_no)
 int
 tui_data_window::first_data_item_displayed ()
 {
-  for (int i = 0; i < regs_content.size (); i++)
+  for (int i = 0; i < m_regs_content.size (); i++)
     {
       struct tui_gen_win_info *data_item_win;
 
-      data_item_win = &regs_content[i];
+      data_item_win = &m_regs_content[i];
       if (data_item_win->is_visible ())
 	return i;
     }
@@ -360,7 +360,7 @@ tui_data_window::first_data_item_displayed ()
 void
 tui_data_window::delete_data_content_windows ()
 {
-  for (auto &&win : regs_content)
+  for (auto &&win : m_regs_content)
     {
       tui_delete_win (win.handle);
       win.handle = NULL;
@@ -392,7 +392,7 @@ tui_data_window::erase_data_content (const char *prompt)
 void
 tui_data_window::rerender ()
 {
-  if (regs_content.empty ())
+  if (m_regs_content.empty ())
     erase_data_content (_("[ Register Values Unavailable ]"));
   else
     {
@@ -411,7 +411,7 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
   int first_line = (-1);
 
   first_element_no = first_data_item_displayed ();
-  if (first_element_no < regs_content.size ())
+  if (first_element_no < m_regs_content.size ())
     first_line = line_from_reg_element_no (first_element_no);
   else
     { /* Calculate the first line from the element number which is in
@@ -433,7 +433,7 @@ void
 tui_data_window::refresh_window ()
 {
   tui_gen_win_info::refresh_window ();
-  for (auto &&win : regs_content)
+  for (auto &&win : m_regs_content)
     win.refresh_window ();
 }
 
@@ -443,11 +443,11 @@ tui_data_window::refresh_window ()
 void
 tui_data_window::check_register_values (struct frame_info *frame)
 {
-  if (regs_content.empty ())
-    show_registers (current_group);
+  if (m_regs_content.empty ())
+    show_registers (m_current_group);
   else
     {
-      for (auto &&data_item_win : regs_content)
+      for (auto &&data_item_win : m_regs_content)
 	{
 	  int was_hilighted;
 
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 73572efdf9..e45a68f8f4 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -71,7 +71,7 @@ struct tui_data_window : public tui_win_info
 
   struct reggroup *get_current_group () const
   {
-    return current_group;
+    return m_current_group;
   }
 
 protected:
@@ -130,9 +130,9 @@ private:
   void erase_data_content (const char *prompt);
 
   /* Windows that are used to display registers.  */
-  std::vector<tui_data_item_window> regs_content;
-  int regs_column_count = 0;
-  struct reggroup *current_group = nullptr;
+  std::vector<tui_data_item_window> m_regs_content;
+  int m_regs_column_count = 0;
+  struct reggroup *m_current_group = nullptr;
 };
 
 #endif /* TUI_TUI_REGS_H */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Rename a private data member in tui_source_window
@ 2019-09-20 23:58 gdb-buildbot
  2019-09-21 11:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-20 23:58 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7226433c44e3792aeea6ad19c54cd3056ea4308e ***

commit 7226433c44e3792aeea6ad19c54cd3056ea4308e
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Mon Sep 2 08:10:44 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:11 2019 -0600

    Rename a private data member in tui_source_window
    
    This renames tui_source_window::fullname to add the "m_" prefix, as it
    is a private data member.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-source.h (struct tui_source_window) <m_fullname>: Rename
            from "fullname".
            * tui/tui-source.c (tui_source_window::set_contents)
            (tui_source_window::location_matches_p)
            (tui_source_window::maybe_update): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 96bf00595d..3b2fdd2056 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.h (struct tui_source_window) <m_fullname>: Rename
+	from "fullname".
+	* tui/tui-source.c (tui_source_window::set_contents)
+	(tui_source_window::location_matches_p)
+	(tui_source_window::maybe_update): Update.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-regs.h (struct tui_data_window) <get_current_group>:
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index e6cc0dbc1a..fa6ed7893f 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -155,7 +155,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 
 	  title = s_filename;
 
-	  fullname = make_unique_xstrdup (symtab_to_fullname (s));
+	  m_fullname = make_unique_xstrdup (symtab_to_fullname (s));
 
 	  cur_line = 0;
 	  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
@@ -275,7 +275,7 @@ tui_source_window::location_matches_p (struct bp_location *loc, int line_no)
   return (content[line_no].line_or_addr.loa == LOA_LINE
 	  && content[line_no].line_or_addr.u.line_no == loc->line_number
 	  && loc->symtab != NULL
-	  && filename_cmp (fullname.get (),
+	  && filename_cmp (m_fullname.get (),
 			   symtab_to_fullname (loc->symtab)) == 0);
 }
 
@@ -307,7 +307,7 @@ tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal,
     start_line = 1;
 
   bool source_already_displayed = (sal.symtab != 0
-				   && showing_source_p (fullname.get ()));
+				   && showing_source_p (m_fullname.get ()));
 
   struct tui_line_or_address l;
 
diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
index 30728e4214..3ef737c56e 100644
--- a/gdb/tui/tui-source.h
+++ b/gdb/tui/tui-source.h
@@ -77,7 +77,7 @@ private:
   bool line_is_displayed (int line) const;
 
   /* It is the resolved form as returned by symtab_to_fullname.  */
-  gdb::unique_xmalloc_ptr<char> fullname;
+  gdb::unique_xmalloc_ptr<char> m_fullname;
 
   /* A token used to register and unregister an observer.  */
   gdb::observers::token m_observable;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove strcat_to_buf
@ 2019-09-21  0:13 gdb-buildbot
  2019-09-21 12:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  0:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 43df9b2fccc347e95f882519332592a826d72d11 ***

commit 43df9b2fccc347e95f882519332592a826d72d11
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Mon Sep 2 09:07:02 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:11 2019 -0600

    Remove strcat_to_buf
    
    An earlier patch in the series removed the last call to strcat_to_buf,
    so this patch removes the function entirely.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui.h (strcat_to_buf): Don't declare.
            * tui/tui.c (strcat_to_buf): Remove.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3b2fdd2056..ba434dd300 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (strcat_to_buf): Don't declare.
+	* tui/tui.c (strcat_to_buf): Remove.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-source.h (struct tui_source_window) <m_fullname>: Rename
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 966304f340..30bf548879 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -570,19 +570,6 @@ tui_disable_command (const char *args, int from_tty)
   tui_disable ();
 }
 
-void
-strcat_to_buf (char *buf, int buflen, 
-	       const char *item_to_add)
-{
-  if (item_to_add != NULL && buf != NULL)
-    {
-      if ((strlen (buf) + strlen (item_to_add)) <= buflen)
-	strcat (buf, item_to_add);
-      else
-	strncat (buf, item_to_add, (buflen - strlen (buf)));
-    }
-}
-
 #if 0
 /* Solaris <sys/termios.h> defines CTRL.  */
 #ifndef CTRL
diff --git a/gdb/tui/tui.h b/gdb/tui/tui.h
index 25ae0c5e47..baf4a813b6 100644
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -24,8 +24,6 @@
 
 struct ui_file;
 
-extern void strcat_to_buf (char *, int, const char *);
-
 /* Types of error returns.  */
 enum tui_status
 {


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove separator comments from TUI
@ 2019-09-21  0:26 gdb-buildbot
  2019-09-21 13:37 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  0:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 63c4bf1922d5553edb213606270b0e2782bbe4c8 ***

commit 63c4bf1922d5553edb213606270b0e2782bbe4c8
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Sep 10 12:41:29 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:11 2019 -0600

    Remove separator comments from TUI
    
    This removes various separator comments from the TUI.  These aren't
    used elsewhere in gdb, and they were incorrect in some cases as well.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-data.c: Remove separator comments.
            * tui/tui-layout.c: Remove separator comments.
            * tui/tui-win.c: Remove separator comments.
            * tui/tui-wingeneral.c: Remove separator comments.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ba434dd300..8f69dc59ec 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c: Remove separator comments.
+	* tui/tui-layout.c: Remove separator comments.
+	* tui/tui-win.c: Remove separator comments.
+	* tui/tui-wingeneral.c: Remove separator comments.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui.h (strcat_to_buf): Don't declare.
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index c14b1711f6..748d897821 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -27,34 +27,19 @@
 #include "tui/tui-winsource.h"
 #include "gdb_curses.h"
 
-/****************************
-** GLOBAL DECLARATIONS
-****************************/
 struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS];
 
-/***************************
-** Private data
-****************************/
 static int term_height, term_width;
 static struct tui_win_info *win_with_focus = NULL;
 
 static bool win_resized = false;
 
-
-/*********************************
-** PUBLIC FUNCTIONS
-**********************************/
-
 int
 tui_win_is_auxiliary (enum tui_win_type win_type)
 {
   return (win_type > MAX_MAJOR_WINDOWS);
 }
 
-/******************************************
-** ACCESSORS & MUTATORS FOR PRIVATE DATA
-******************************************/
-
 /* Answer a whether the terminal window has been resized or not.  */
 bool
 tui_win_resized ()
@@ -119,11 +104,6 @@ tui_set_term_width_to (int w)
 }
 
 
-/*****************************
-** OTHER PUBLIC FUNCTIONS
-*****************************/
-
-
 /* Answer the next window in the list, cycling back to the top if
    necessary.  */
 struct tui_win_info *
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 03115a7baa..0f3e8d945e 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -40,9 +40,6 @@
 #include "tui/tui-source.h"
 #include "gdb_curses.h"
 
-/*******************************
-** Static Local Decls
-********************************/
 static void show_layout (enum tui_layout_type);
 static void show_source_or_disasm_and_command (enum tui_layout_type);
 static void show_source_command (void);
@@ -64,9 +61,6 @@ tui_current_layout (void)
   return current_layout;
 }
 
-/***************************************
-** DEFINITIONS
-***************************************/
 
 /* Show the screen layout defined.  */
 static void
@@ -338,11 +332,6 @@ Layout names are:\n\
 }
 
 
-/*************************
-** STATIC LOCAL FUNCTIONS
-**************************/
-
-
 /* Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA, or
    REGS. */
 static void
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 8963da2b48..aecb7791f0 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -53,9 +53,6 @@
 
 #include <signal.h>
 
-/*******************************
-** Static Local Decls
-********************************/
 static enum tui_status tui_adjust_win_heights (struct tui_win_info *, 
 					       int);
 static int new_height_ok (struct tui_win_info *, int);
@@ -71,16 +68,9 @@ static void parse_scrolling_args (const char *,
 				  int *);
 
 
-/***************************************
-** DEFINITIONS
-***************************************/
 #define WIN_HEIGHT_USAGE    "Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n"
 #define FOCUS_USAGE         "Usage: focus [WINDOW-NAME | next | prev]\n"
 
-/***************************************
-** PUBLIC FUNCTIONS
-***************************************/
-
 #ifndef ACS_LRCORNER
 #  define ACS_LRCORNER '+'
 #endif
@@ -720,11 +710,6 @@ tui_initialize_win (void)
 }
 
 
-/*************************
-** STATIC LOCAL FUNCTIONS
-**************************/
-
-
 static void
 tui_scroll_forward_command (const char *arg, int from_tty)
 {
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 235c17c5fa..713059d663 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -28,10 +28,6 @@
 
 #include "gdb_curses.h"
 
-/***********************
-** PUBLIC FUNCTIONS
-***********************/
-
 /* See tui-data.h.  */
 
 void
@@ -191,8 +187,3 @@ tui_refresh_all ()
   if (locator->is_visible ())
     locator->refresh_window ();
 }
-
-
-/*********************************
-** Local Static Functions
-*********************************/


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Use make_unique_xstrdup in TUI
@ 2019-09-21  0:43 gdb-buildbot
  2019-09-21 14:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  0:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f074b67ec812612637342a1647da9158a1e77de0 ***

commit f074b67ec812612637342a1647da9158a1e77de0
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Sep 10 12:56:09 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:12 2019 -0600

    Use make_unique_xstrdup in TUI
    
    This changes a couple of spots in the TUI to use make_unique_xstrdup.
    This simplifies the code slightly.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * tui/tui-source.c (tui_source_window::set_contents): Use
            make_unique_xstrdup.
            * tui/tui-disasm.c (tui_disasm_window::set_contents): Use
            make_unique_xstrdup.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8f69dc59ec..402b57ab6e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window::set_contents): Use
+	make_unique_xstrdup.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Use
+	make_unique_xstrdup.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-data.c: Remove separator comments.
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index 53ea061afb..51616bcf87 100644
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -218,7 +218,7 @@ tui_disasm_window::set_contents (struct gdbarch *arch,
       if (line.size() > offset)
 	src->line.reset (xstrndup (&line[offset], line_width));
       else
-	src->line.reset (xstrdup (""));
+	src->line = make_unique_xstrdup ("");
 
       src->line_or_addr.loa = LOA_ADDRESS;
       src->line_or_addr.u.addr = asm_lines[i].addr;
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index fa6ed7893f..bb1013bb86 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -183,7 +183,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 				 symtab_to_fullname (s)) == 0
 		   && cur_line_no == locator->line_no);
 
-	      content[cur_line].line.reset (xstrdup (text.c_str ()));
+	      content[cur_line].line = make_unique_xstrdup (text.c_str ());
 
 	      cur_line++;
 	      cur_line_no++;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Change TUI window commands to be case-sensitive
@ 2019-09-21  0:53 gdb-buildbot
  2019-09-21 15:43 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  0:53 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 78e8cb91cd1374ac59cc8bf6509fa70bde74ff1a ***

commit 78e8cb91cd1374ac59cc8bf6509fa70bde74ff1a
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Jul 23 16:01:03 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Fri Sep 20 13:49:12 2019 -0600

    Change TUI window commands to be case-sensitive
    
    The TUI window-related commands like "focus" are case insensitive.
    This is not the norm in gdb, and I don't see a good reason to have it
    here.  This patch changes the TUI to be case sensitive, like the rest
    of gdb.
    
    gdb/ChangeLog
    2019-09-20  Tom Tromey  <tom@tromey.com>
    
            * NEWS: Mention case-sensitivity of TUI commands.
            * tui/tui-win.c (tui_set_focus_command): Now case-sensitive.
            (tui_set_win_height_command, parse_scrolling_args): Likewise.
            * tui/tui-layout.c (tui_layout_command): Now case-sensitive.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 402b57ab6e..adaa123822 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Mention case-sensitivity of TUI commands.
+	* tui/tui-win.c (tui_set_focus_command): Now case-sensitive.
+	(tui_set_win_height_command, parse_scrolling_args): Likewise.
+	* tui/tui-layout.c (tui_layout_command): Now case-sensitive.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* tui/tui-source.c (tui_source_window::set_contents): Use
diff --git a/gdb/NEWS b/gdb/NEWS
index 1fefd81409..201701bac3 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -186,6 +186,9 @@ maint show test-options-completion-result
   Commands used by the testsuite to validate the command options
   framework.
 
+focus, winheight, +, -, >, <
+  These commands are now case-sensitive.
+
 * New command options, command completion
 
   GDB now has a standard infrastructure to support dash-style command
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 0f3e8d945e..7aa670ec69 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -337,29 +337,23 @@ Layout names are:\n\
 static void
 tui_layout_command (const char *layout_name, int from_tty)
 {
-  int i;
   enum tui_layout_type new_layout = UNDEFINED_LAYOUT;
   enum tui_layout_type cur_layout = tui_current_layout ();
 
-  if (layout_name == NULL)
+  if (layout_name == NULL || *layout_name == '\0')
     error (_("Usage: layout prev | next | LAYOUT-NAME"));
 
-  std::string copy = layout_name;
-  for (i = 0; i < copy.size (); i++)
-    copy[i] = toupper (copy[i]);
-  const char *buf_ptr = copy.c_str ();
-
   /* First check for ambiguous input.  */
-  if (strlen (buf_ptr) <= 1 && *buf_ptr == 'S')
+  if (strcmp (layout_name, "s") == 0)
     error (_("Ambiguous command input."));
 
-  if (subset_compare (buf_ptr, "SRC"))
+  if (subset_compare (layout_name, "src"))
     new_layout = SRC_COMMAND;
-  else if (subset_compare (buf_ptr, "ASM"))
+  else if (subset_compare (layout_name, "asm"))
     new_layout = DISASSEM_COMMAND;
-  else if (subset_compare (buf_ptr, "SPLIT"))
+  else if (subset_compare (layout_name, "split"))
     new_layout = SRC_DISASSEM_COMMAND;
-  else if (subset_compare (buf_ptr, "REGS"))
+  else if (subset_compare (layout_name, "regs"))
     {
       if (cur_layout == SRC_COMMAND
 	  || cur_layout == SRC_DATA_COMMAND)
@@ -367,9 +361,9 @@ tui_layout_command (const char *layout_name, int from_tty)
       else
 	new_layout = DISASSEM_DATA_COMMAND;
     }
-  else if (subset_compare (buf_ptr, "NEXT"))
+  else if (subset_compare (layout_name, "next"))
     new_layout = next_layout ();
-  else if (subset_compare (buf_ptr, "PREV"))
+  else if (subset_compare (layout_name, "prev"))
     new_layout = prev_layout ();
   else
     error (_("Unrecognized layout: %s"), layout_name);
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index aecb7791f0..37e22c550f 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -776,35 +776,27 @@ tui_set_focus_command (const char *arg, int from_tty)
 
   if (arg != NULL)
     {
-      char *buf_ptr = xstrdup (arg);
-      int i;
       struct tui_win_info *win_info = NULL;
 
-      for (i = 0; (i < strlen (buf_ptr)); i++)
-	buf_ptr[i] = tolower (arg[i]);
-
-      if (subset_compare (buf_ptr, "next"))
+      if (subset_compare (arg, "next"))
 	win_info = tui_next_win (tui_win_with_focus ());
-      else if (subset_compare (buf_ptr, "prev"))
+      else if (subset_compare (arg, "prev"))
 	win_info = tui_prev_win (tui_win_with_focus ());
       else
-	win_info = tui_partial_win_by_name (buf_ptr);
+	win_info = tui_partial_win_by_name (arg);
 
-      if (win_info == NULL || !win_info->is_visible ())
-	warning (_("Invalid window specified. \n\
-The window name specified must be valid and visible.\n"));
-      else
-	{
-	  tui_set_win_focus_to (win_info);
-	  keypad (TUI_CMD_WIN->handle, (win_info != TUI_CMD_WIN));
-	}
+      if (win_info == NULL)
+	error (_("Unrecognized window name \"%s\""), arg);
+      if (!win_info->is_visible ())
+	error (_("Window \"%s\" is not visible"), arg);
 
-      xfree (buf_ptr);
+      tui_set_win_focus_to (win_info);
+      keypad (TUI_CMD_WIN->handle, (win_info != TUI_CMD_WIN));
       printf_filtered (_("Focus set to %s window.\n"),
 		       tui_win_with_focus ()->name ());
     }
   else
-    warning (_("Incorrect Number of Arguments.\n%s"), FOCUS_USAGE);
+    error (_("Incorrect Number of Arguments.\n%s"), FOCUS_USAGE);
 }
 
 static void
@@ -927,65 +919,61 @@ tui_set_win_height_command (const char *arg, int from_tty)
       char *buf = &copy[0];
       char *buf_ptr = buf;
       char *wname = NULL;
-      int new_height, i;
+      int new_height;
       struct tui_win_info *win_info;
 
       wname = buf_ptr;
       buf_ptr = strchr (buf_ptr, ' ');
       if (buf_ptr != NULL)
 	{
-	  *buf_ptr = (char) 0;
+	  *buf_ptr = '\0';
 
 	  /* Validate the window name.  */
-	  for (i = 0; i < strlen (wname); i++)
-	    wname[i] = tolower (wname[i]);
 	  win_info = tui_partial_win_by_name (wname);
 
-	  if (win_info == NULL || !win_info->is_visible ())
-	    warning (_("Invalid window specified. \n\
-The window name specified must be valid and visible.\n"));
-	  else
+	  if (win_info == NULL)
+	    error (_("Unrecognized window name \"%s\""), arg);
+	  if (!win_info->is_visible ())
+	    error (_("Window \"%s\" is not visible"), arg);
+
+	  /* Process the size.  */
+	  buf_ptr = skip_spaces (buf_ptr);
+
+	  if (*buf_ptr != '\0')
 	    {
-	      /* Process the size.  */
-	      while (*(++buf_ptr) == ' ')
-		;
+	      bool negate = false;
+	      bool fixed_size = true;
+	      int input_no;;
 
-	      if (*buf_ptr != (char) 0)
+	      if (*buf_ptr == '+' || *buf_ptr == '-')
 		{
-		  int negate = FALSE;
-		  int fixed_size = TRUE;
-		  int input_no;;
-
-		  if (*buf_ptr == '+' || *buf_ptr == '-')
-		    {
-		      if (*buf_ptr == '-')
-			negate = TRUE;
-		      fixed_size = FALSE;
-		      buf_ptr++;
-		    }
-		  input_no = atoi (buf_ptr);
-		  if (input_no > 0)
-		    {
-		      if (negate)
-			input_no *= (-1);
-		      if (fixed_size)
-			new_height = input_no;
-		      else
-			new_height = win_info->height + input_no;
-
-		      /* Now change the window's height, and adjust
-		         all other windows around it.  */
-		      if (tui_adjust_win_heights (win_info,
-						new_height) == TUI_FAILURE)
-			warning (_("Invalid window height specified.\n%s"),
-				 WIN_HEIGHT_USAGE);
-		      else
-                        tui_update_gdb_sizes ();
-		    }
+		  if (*buf_ptr == '-')
+		    negate = true;
+		  fixed_size = false;
+		  buf_ptr++;
+		}
+	      input_no = atoi (buf_ptr);
+	      if (input_no > 0)
+		{
+		  if (negate)
+		    input_no *= (-1);
+		  if (fixed_size)
+		    new_height = input_no;
 		  else
+		    new_height = win_info->height + input_no;
+
+		  /* Now change the window's height, and adjust
+		     all other windows around it.  */
+		  if (tui_adjust_win_heights (win_info,
+					      new_height) == TUI_FAILURE)
 		    warning (_("Invalid window height specified.\n%s"),
 			     WIN_HEIGHT_USAGE);
+		  else
+		    tui_update_gdb_sizes ();
 		}
+	      else
+		warning (_("Invalid window height specified.\n%s"),
+			 WIN_HEIGHT_USAGE);
 	    }
 	}
       else
@@ -1299,7 +1287,7 @@ parse_scrolling_args (const char *arg,
 	  buf_ptr = strchr (buf_ptr, ' ');
 	  if (buf_ptr != NULL)
 	    {
-	      *buf_ptr = (char) 0;
+	      *buf_ptr = '\0';
 	      if (num_to_scroll)
 		*num_to_scroll = atoi (num_str);
 	      buf_ptr++;
@@ -1313,29 +1301,19 @@ parse_scrolling_args (const char *arg,
 	{
 	  const char *wname;
 
-	  if (*buf_ptr == ' ')
-	    while (*(++buf_ptr) == ' ')
-	      ;
+	  wname = skip_spaces (buf_ptr);
 
-	  if (*buf_ptr != (char) 0)
+	  if (*wname != '\0')
 	    {
-	      /* Validate the window name.  */
-	      for (char *p = buf_ptr; *p != '\0'; p++)
-		*p = tolower (*p);
-
-	      wname = buf_ptr;
+	      *win_to_scroll = tui_partial_win_by_name (wname);
+
+	      if (*win_to_scroll == NULL)
+		error (_("Unrecognized window `%s'"), wname);
+	      if (!(*win_to_scroll)->is_visible ())
+		error (_("Window is not visible"));
+	      else if (*win_to_scroll == TUI_CMD_WIN)
+		*win_to_scroll = *(tui_source_windows ().begin ());
 	    }
-	  else
-	    wname = "?";
-	  
-	  *win_to_scroll = tui_partial_win_by_name (wname);
-
-	  if (*win_to_scroll == NULL)
-	    error (_("Unrecognized window `%s'"), wname);
-	  if (!(*win_to_scroll)->is_visible ())
-	    error (_("Window is not visible"));
-	  else if (*win_to_scroll == TUI_CMD_WIN)
-	    *win_to_scroll = *(tui_source_windows ().begin ());
 	}
     }
 }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove Cell Broadband Engine debugging support
@ 2019-09-21  1:04 gdb-buildbot
  2019-09-21 16:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  1:04 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT abf516c6931af1683d1e51203de1ca01467f9f85 ***

commit abf516c6931af1683d1e51203de1ca01467f9f85
Author:     Ulrich Weigand <ulrich.weigand@de.ibm.com>
AuthorDate: Fri Sep 20 23:06:57 2019 +0200
Commit:     Ulrich Weigand <ulrich.weigand@de.ibm.com>
CommitDate: Fri Sep 20 23:06:57 2019 +0200

    Remove Cell Broadband Engine debugging support
    
    This patch implements removal of Cell/B.E. support, including
    - Support for the spu-*-* target
    - Support for native stand-alone SPU debugging
    - Support for integrated debugging of combined PPU/SPU applications
    - Remote debugging (gdbserver) support for all the above.
    
    The patch also removes the TARGET_OBJECT_SPU target object type,
    as this is available only on Cell/B.E. targets, including
    - Native Linux support
    - Core file support (including core file generation)
    - Remote target support, including removal of the qXfer:spu:read
      and qXfer:spu:write remote protocal packets and associated
      support in gdbserver.
    
    gdb/ChangeLog
    2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
    
            * NEWS: Mention that Cell/B.E. debugging support was removed.
            * MAINTAINERS: Remove spu target.
    
            * config/djgpp/fnchange.lst: Remove entries for removed files.
    
            * Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
            spu-multiarch.o, and spu-tdep.o.
            (HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
            (ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
            spu-multiarch.c, and spu-tdep.c.
            * spu-linux-nat.c: Remove file.
            * spu-multiarch.c: Remove file.
            * spu-tdep.c: Remove file.
            * spu-tdep.h: Remove file.
            * solib-spu.c: Remove file.
            * solib-spu.h: Remove file.
    
            * configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
            * configure.nat (spu-linux): Remove.
            * configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
            solib-multiarch.o from gdb_target_obs.
            (spu*-*-*): Remove.
    
            * arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
            feature flag.
            (ppc_linux_no_features): Update.
            * arch/ppc-linux-common.c (ppc_linux_match_description): Remove
            Cell/B.E. support.
            * arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
            (tdesc_powerpc_cell64l): Likewise.
            * nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
            * ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
            Cell/B.E. support.
            * ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
            Do not include "features/rs6000/powerpc-cell32l.c" or
            "features/rs6000/powerpc-cell64l.c".
            (ppc_linux_spu_section): Remove.
            (ppc_linux_core_read_description): Remove Cell/B.E. support.
            (spe_context_objfile, spe_context_lm_addr, spe_context_offset,
            spe_context_cache_ptid, spe_context_cache_ptid): Remove.
            (ppc_linux_spe_context_lookup): Remove.
            (ppc_linux_spe_context_inferior_created): Remove.
            (ppc_linux_spe_context_solib_loaded): Remove.
            (ppc_linux_spe_context_solib_unloaded): Remove.
            (ppc_linux_spe_context): Remove.
            (struct ppu2spu_cache): Remove.
            (ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
            (struct ppu2spu_data): Remove.
            (ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
            ppu2spu_unwind): Remove.
            (ppc_linux_init_abi): Remove Cell/B.E. support.
            * rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
    
            * features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
            (rs6000/powerpc-cell64l-expedite): Likewise
            (WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
            (XMLTOC): Remove rs6000/powerpc-cell32l.xml and
            rs6000/powerpc-cell64l.xml.
            * features/rs6000/powerpc-cell32l.xml: Remove.
            * features/rs6000/powerpc-cell64l.xml: Likewise.
            * features/rs6000/powerpc-cell32l.c: Remove generated file.
            * features/rs6000/powerpc-cell64l.c: Likewise.
            * regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
            * regformats/rs6000/powerpc-cell64l.dat: Likewise.
            * regformats/reg-spu.dat: Remove.
    
            * target.h (enum target_object): Remove TARGET_OBJECT_SPU.
            * corelow.c (struct spuid_list): Remove.
            (add_to_spuid_list): Remove.
            (core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
            * remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
            (remote_protocol_features): Remove associated entries.
            (_initialize_remote): No longer initialize them.
            (remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
            * linux-nat.c (SPUFS_MAGIC): Remove.
            (linux_proc_xfer_spu): Remove.
            (spu_enumerate_spu_ids): Remove.
            (linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
            * linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
            (linux_make_corefile_notes): No longer call it.
    
            * regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
            (cooked_write_test): Likewise.
    
    gdb/doc/ChangeLog
    2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
    
            * doc/gdb.texinfo (Remote Configuration): Remove documentation for
            qXfer:spu:read and qXfer:spu:write.
            (General Query Packets): Likewise.
            (Cell Broadband Engine SPU architecture): Remove subsection.
    
    gdb/gdbserver/ChangeLog
    2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
    
            * configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
            and powerpc-cell64l-ipa.o.
            (powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
            from srv_regobj.  Remove rs6000/powerpc-cell32l.xml and
            rs6000/powerpc-cell64l.xml from srv_xmlfiles.
            (spu*-*-*): Remove.
    
            * spu-low.c: Remove file.
    
            * linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
            (parse_spufs_run): Remove.
            (ppc_get_pc): Remove Cell/B.E. support.
            (ppc_set_pc): Likewise.
            (ppc_breakpoint_at): Likewise.
            (ppc_arch_setup): Likewise.
            (ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
            tdesc_powerpc_cell32l.
            (initialize_low_arch): Do not call init_registers_powerpc_cell64l
            or init_registers_powerpc_cell32l.
            * linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
            (initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
            or init_registers_powerpc_cell32l.
            * linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
            (init_registers_powerpc_cell32l): Remove prototype.
            (init_registers_powerpc_cell64l): Likewise.
    
            * target.h (struct target_ops): Remove qxfer_spu member.
            * server.c (handle_qxfer_spu): Remove.
            (qxfer_packets): Remove entry for "spu".
            (handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
            * linux-low.c (SPUFS_MAGIC): Remove.
            (spu_enumerate_spu_ids): Remove.
            (linux_qxfer_spu): Remove.
            (linux_target_ops): Remove qxfer_spu member.
            * lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
            * nto-low.c (nto_target_ops): Remove qxfer_spu member.
            * win32-low.c (win32_target_ops): Remove qxfer_spu member.
    
    gdb/testsuite/ChangeLog
    2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
    
            * gdb.arch/spu-info.exp: Remove file.
            * gdb.arch/spu-info.c: Remove file.
            * gdb.arch/spu-ls.exp: Remove file.
            * gdb.arch/spu-ls.c: Remove file.
    
            * gdb.asm/asm-source.exp: Remove support for spu*-*-*.
            * gdb.asm/spu.inc: Remove file.
    
            * gdb.base/dump.exp: Remove support for spu*-*-*.
            * gdb.base/stack-checking.exp: Likewise.
            * gdb.base/overlays.exp: Likewise.
            * gdb.base/ovlymgr.c: Likewise.
            * gdb.base/spu.ld: Remove file.
    
            * gdb.cp/bs15503.exp: Remove support for spu*-*-*.
            * gdb.cp/cpexprs.exp: Likewise.
            * gdb.cp/exception.exp: Likewise.
            * gdb.cp/gdb2495.exp: Likewise.
            * gdb.cp/mb-templates.exp: Likewise.
            * gdb.cp/pr9167.exp: Likewise.
            * gdb.cp/userdef.exp: Likewise.
    
            * gdb.xml/tdesc-regs.exp: Remove support for spu*-*-*.
    
            * gdb.cell: Remove directory.
            * lib/cell.exp: Remove file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index adaa123822..9c8cebaf6f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,89 @@
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* NEWS: Mention that Cell/B.E. debugging support was removed.
+	* MAINTAINERS: Remove spu target.
+
+	* config/djgpp/fnchange.lst: Remove entries for removed files.
+
+	* Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
+	spu-multiarch.o, and spu-tdep.o.
+	(HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
+	(ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
+	spu-multiarch.c, and spu-tdep.c.
+	* spu-linux-nat.c: Remove file.
+	* spu-multiarch.c: Remove file.
+	* spu-tdep.c: Remove file.
+	* spu-tdep.h: Remove file.
+	* solib-spu.c: Remove file.
+	* solib-spu.h: Remove file.
+
+	* configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
+	* configure.nat (spu-linux): Remove.
+	* configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
+	solib-multiarch.o from gdb_target_obs.
+	(spu*-*-*): Remove.
+
+	* arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
+	feature flag.
+	(ppc_linux_no_features): Update.
+	* arch/ppc-linux-common.c (ppc_linux_match_description): Remove
+	Cell/B.E. support.
+	* arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
+	(tdesc_powerpc_cell64l): Likewise.
+	* nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
+	* ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
+	Cell/B.E. support.
+	* ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
+	Do not include "features/rs6000/powerpc-cell32l.c" or
+	"features/rs6000/powerpc-cell64l.c".
+	(ppc_linux_spu_section): Remove.
+	(ppc_linux_core_read_description): Remove Cell/B.E. support.
+	(spe_context_objfile, spe_context_lm_addr, spe_context_offset,
+	spe_context_cache_ptid, spe_context_cache_ptid): Remove.
+	(ppc_linux_spe_context_lookup): Remove.
+	(ppc_linux_spe_context_inferior_created): Remove.
+	(ppc_linux_spe_context_solib_loaded): Remove.
+	(ppc_linux_spe_context_solib_unloaded): Remove.
+	(ppc_linux_spe_context): Remove.
+	(struct ppu2spu_cache): Remove.
+	(ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
+	(struct ppu2spu_data): Remove.
+	(ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
+	ppu2spu_unwind): Remove.
+	(ppc_linux_init_abi): Remove Cell/B.E. support.
+	* rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
+
+	* features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
+	(rs6000/powerpc-cell64l-expedite): Likewise
+	(WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
+	(XMLTOC): Remove rs6000/powerpc-cell32l.xml and
+	rs6000/powerpc-cell64l.xml.
+	* features/rs6000/powerpc-cell32l.xml: Remove.
+	* features/rs6000/powerpc-cell64l.xml: Likewise.
+	* features/rs6000/powerpc-cell32l.c: Remove generated file.
+	* features/rs6000/powerpc-cell64l.c: Likewise.
+	* regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
+	* regformats/rs6000/powerpc-cell64l.dat: Likewise.
+	* regformats/reg-spu.dat: Remove.
+
+	* target.h (enum target_object): Remove TARGET_OBJECT_SPU.
+	* corelow.c (struct spuid_list): Remove.
+	(add_to_spuid_list): Remove.
+	(core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
+	(remote_protocol_features): Remove associated entries.
+	(_initialize_remote): No longer initialize them.
+	(remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* linux-nat.c (SPUFS_MAGIC): Remove.
+	(linux_proc_xfer_spu): Remove.
+	(spu_enumerate_spu_ids): Remove.
+	(linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
+	(linux_make_corefile_notes): No longer call it.
+
+	* regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
+	(cooked_write_test): Likewise.
+
 2019-09-20  Tom Tromey  <tom@tromey.com>
 
 	* NEWS: Mention case-sensitivity of TUI commands.
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index fd24cb79bc..3efcb71470 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -319,9 +319,6 @@ the native maintainer when resolving ABI issues.
 	sparc		--target=sparc64-solaris2.10 ,-Werror
 			(--target=sparc-elf broken)
 
-	spu		--target=spu-elf ,-Werror
-			Ulrich Weigand		uweigand@de.ibm.com
-
 	tic6x		--target=tic6x-elf ,-Werror
 			Yao Qi			qiyao@sourceware.org
 
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index e7e26a44a0..877a9ccd6b 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -776,7 +776,6 @@ ALL_TARGET_OBS = \
 	solib-darwin.o \
 	solib-dsbt.o \
 	solib-frv.o \
-	solib-spu.o \
 	solib-svr4.o \
 	sparc-linux-tdep.o \
 	sparc-nbsd-tdep.o \
@@ -784,8 +783,6 @@ ALL_TARGET_OBS = \
 	sparc-ravenscar-thread.o \
 	sparc-sol2-tdep.o \
 	sparc-tdep.o \
-	spu-multiarch.o \
-	spu-tdep.o \
 	symfile-mem.o \
 	tic6x-linux-tdep.o \
 	tic6x-tdep.o \
@@ -1382,7 +1379,6 @@ HFILES_NO_SRCDIR = \
 	solib.h \
 	solib-aix.h \
 	solib-darwin.h \
-	solib-spu.h \
 	solib-svr4.h \
 	solib-target.h \
 	solist.h \
@@ -1392,7 +1388,6 @@ HFILES_NO_SRCDIR = \
 	sparc-ravenscar-thread.h \
 	sparc-tdep.h \
 	sparc64-tdep.h \
-	spu-tdep.h \
 	stabsread.h \
 	stack.h \
 	stap-probe.h \
@@ -2304,7 +2299,6 @@ ALLDEPFILES = \
 	sh-tdep.c \
 	sol2-tdep.c \
 	solib-aix.c \
-	solib-spu.c \
 	solib-svr4.c \
 	sparc-linux-nat.c \
 	sparc-linux-tdep.c \
@@ -2327,9 +2321,6 @@ ALLDEPFILES = \
 	sparc64-obsd-tdep.c \
 	sparc64-sol2-tdep.c \
 	sparc64-tdep.c \
-	spu-linux-nat.c \
-	spu-multiarch.c \
-	spu-tdep.c \
 	tilegx-linux-nat.c \
 	tilegx-linux-tdep.c \
 	tilegx-tdep.c \
diff --git a/gdb/NEWS b/gdb/NEWS
index 201701bac3..35b48d9cb3 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -330,6 +330,12 @@ focus, winheight, +, -, >, <
   from .inputrc to bind keys in this keymap.  This feature is only
   available when gdb is built against GNU readline 8.0 or later.
 
+* Removed targets and native configurations
+
+  GDB no longer supports debugging the Cell Broadband Engine.  This includes
+  both debugging standalone Cell/B.E. SPU applications and integrated debugging
+  of Cell/B.E. applications that use both the PPU and SPU architectures.
+
 *** Changes in GDB 8.3
 
 * GDB and GDBserver now support access to additional registers on
diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c
index 8af30e3cd4..20b3580746 100644
--- a/gdb/arch/ppc-linux-common.c
+++ b/gdb/arch/ppc-linux-common.c
@@ -50,9 +50,7 @@ ppc_linux_match_description (struct ppc_linux_features features)
 
   if (features.wordsize == 8)
     {
-      if (features.cell)
-	tdesc = tdesc_powerpc_cell64l;
-      else if (features.vsx)
+      if (features.vsx)
 	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l
 		 : features.isa207? tdesc_powerpc_isa207_vsx64l
 		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l
@@ -69,9 +67,7 @@ ppc_linux_match_description (struct ppc_linux_features features)
     {
       gdb_assert (features.wordsize == 4);
 
-      if (features.cell)
-	tdesc = tdesc_powerpc_cell32l;
-      else if (features.vsx)
+      if (features.vsx)
 	tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx32l
 		 : features.isa207? tdesc_powerpc_isa207_vsx32l
 		 : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx32l
diff --git a/gdb/arch/ppc-linux-common.h b/gdb/arch/ppc-linux-common.h
index fe332accdc..1f91ff0576 100644
--- a/gdb/arch/ppc-linux-common.h
+++ b/gdb/arch/ppc-linux-common.h
@@ -58,7 +58,6 @@ struct ppc_linux_features
   bool ppr_dscr;
   bool isa207;
   bool htm;
-  bool cell;
 };
 
 /* Base value for ppc_linux_features variables.  */
@@ -70,7 +69,6 @@ const struct ppc_linux_features ppc_linux_no_features = {
   false,
   false,
   false,
-  false,
 };
 
 /* Return a target description that matches FEATURES.  */
diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h
index 5c9242f7dc..5014131b6e 100644
--- a/gdb/arch/ppc-linux-tdesc.h
+++ b/gdb/arch/ppc-linux-tdesc.h
@@ -24,7 +24,6 @@ struct target_desc;
 
 extern struct target_desc *tdesc_powerpc_32l;
 extern struct target_desc *tdesc_powerpc_altivec32l;
-extern struct target_desc *tdesc_powerpc_cell32l;
 extern struct target_desc *tdesc_powerpc_vsx32l;
 extern struct target_desc *tdesc_powerpc_isa205_32l;
 extern struct target_desc *tdesc_powerpc_isa205_altivec32l;
@@ -36,7 +35,6 @@ extern struct target_desc *tdesc_powerpc_e500l;
 
 extern struct target_desc *tdesc_powerpc_64l;
 extern struct target_desc *tdesc_powerpc_altivec64l;
-extern struct target_desc *tdesc_powerpc_cell64l;
 extern struct target_desc *tdesc_powerpc_vsx64l;
 extern struct target_desc *tdesc_powerpc_isa205_64l;
 extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index 12fb082b66..7608218dbc 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -199,8 +199,6 @@
 @V@/gdb/features/rs6000/powerpc-vsx32l.c @V@/gdb/features/rs6000/ppc-v32l.c
 @V@/gdb/features/rs6000/powerpc-vsx64.c @V@/gdb/features/rs6000/ppc-v64.c
 @V@/gdb/features/rs6000/powerpc-vsx64l.c @V@/gdb/features/rs6000/ppc-v64l.c
-@V@/gdb/features/rs6000/powerpc-cell32l.c @V@/gdb/features/rs6000/ppc-c32l.c
-@V@/gdb/features/rs6000/powerpc-cell64l.c @V@/gdb/features/rs6000/ppc-c64l.c
 @V@/gdb/features/rs6000/powerpc-32.xml @V@/gdb/features/rs6000/ppc-32.xml
 @V@/gdb/features/rs6000/powerpc-32l.xml @V@/gdb/features/rs6000/ppc-32l.xml
 @V@/gdb/features/rs6000/powerpc-403.xml @V@/gdb/features/rs6000/ppc-403.xml
@@ -231,8 +229,6 @@
 @V@/gdb/features/rs6000/powerpc-vsx32l.xml @V@/gdb/features/rs6000/ppc-v32l.xml
 @V@/gdb/features/rs6000/powerpc-vsx64.xml @V@/gdb/features/rs6000/ppc-v64.xml
 @V@/gdb/features/rs6000/powerpc-vsx64l.xml @V@/gdb/features/rs6000/ppc-v64l.xml
-@V@/gdb/features/rs6000/powerpc-cell32l.xml @V@/gdb/features/rs6000/ppc-c32l.xml
-@V@/gdb/features/rs6000/powerpc-cell64l.xml @V@/gdb/features/rs6000/ppc-c64l.xml
 @V@/gdb/features/i386/amd64-avx-linux.c @V@/gdb/features/i386/a64-al.c
 @V@/gdb/features/i386/amd64-avx.c @V@/gdb/features/i386/a64-a.c
 @V@/gdb/features/i386/amd64-avx-linux.xml @V@/gdb/features/i386/a64-al.xml
@@ -356,8 +352,6 @@
 @V@/gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat @V@/gdb/regformats/rs6000/ppciv64l.dat
 @V@/gdb/regformats/rs6000/powerpc-vsx32l.dat @V@/gdb/regformats/rs6000/ppc-v32l.dat
 @V@/gdb/regformats/rs6000/powerpc-vsx64l.dat @V@/gdb/regformats/rs6000/ppc-v64l.dat
-@V@/gdb/regformats/rs6000/powerpc-cell32l.dat @V@/gdb/regformats/rs6000/ppc-c32l.dat
-@V@/gdb/regformats/rs6000/powerpc-cell64l.dat @V@/gdb/regformats/rs6000/ppc-c64l.dat
 @V@/gdb/regformats/tic6x-c62x.dat @V@/gdb/regformats/c6x-62x.dat
 @V@/gdb/regformats/tic6x-c64x.dat @V@/gdb/regformats/c6x-64x.dat
 @V@/gdb/regformats/tic6x-c64xp.dat @V@/gdb/regformats/c6xc64xp.dat
@@ -452,9 +446,6 @@
 @V@/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp @V@/gdb/testsuite/gdb.base/wpcondg.exp
 @V@/gdb/testsuite/gdb.base/watchpoint-cond-gone.c @V@/gdb/testsuite/gdb.base/wpcondg.c
 @V@/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c @V@/gdb/testsuite/gdb.base/wpcondgs.c
-@V@/gdb/testsuite/gdb.cell/coremaker-spu.c @V@/gdb/testsuite/gdb.cell/core-spu.c
-@V@/gdb/testsuite/gdb.cell/ea-cache-spu.c @V@/gdb/testsuite/gdb.cell/ea-spu.c
-@V@/gdb/testsuite/gdb.cell/mem-access-spu.c @V@/gdb/testsuite/gdb.cell/mem-spu.c
 @V@/gdb/testsuite/gdb.cp/m-static1.cc @V@/gdb/testsuite/gdb.cp/m-stat1.cc
 @V@/gdb/testsuite/gdb.cp/namespace1.cc @V@/gdb/testsuite/gdb.cp/namesp1.cc
 @V@/gdb/testsuite/gdb.cp/namespace-nested-import.cc @V@/gdb/testsuite/gdb.cp/nnested.cc
diff --git a/gdb/configure.host b/gdb/configure.host
index c87f997abc..f382cad1a8 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -140,13 +140,7 @@ powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
 			gdb_host=nbsd ;;
 powerpc-*-openbsd*)	gdb_host=obsd ;;
 
-powerpc64*-*-linux*)	gdb_host=ppc64-linux
-                        # Support 'pseudo-native' debugging on the Cell BE
-                        if test "${target_cpu}" = "spu"; then
-				gdb_host=spu-linux
-				gdb_native=yes
-                        fi
-			;;
+powerpc64*-*-linux*)	gdb_host=ppc64-linux ;;
 powerpc*-*-linux*)	gdb_host=linux ;;
 
 riscv*-*-freebsd*)	gdb_host=fbsd ;;
diff --git a/gdb/configure.nat b/gdb/configure.nat
index 64ee101d83..77a2ee8083 100644
--- a/gdb/configure.nat
+++ b/gdb/configure.nat
@@ -484,21 +484,4 @@ case ${gdb_host} in
 		;;
 	esac
 	;;
-    spu-linux)
-	case ${gdb_host_cpu} in
-	    powerpc)
-		# Target: Cell BE (PowerPC64 + SPU)
-		# This implements a 'pseudo-native' GDB running on the
-		# PPU side of the Cell BE and debugging the SPU side.
-		NAT_FILE=
-		NAT_CDEPS=
-		LOADLIBES=
-		NATDEPFILES='spu-linux-nat.o \
-		      inf-ptrace.o fork-child.o nat/fork-inferior.o \
-		      nat/linux-procfs.o nat/linux-ptrace.o \
-		      nat/linux-waitpid.o \
-		      nat/linux-personality.o nat/linux-namespaces.o'
-		;;
-	esac
-	;;
 esac
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 7c0215e89a..2edfe3bfb5 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -514,8 +514,7 @@ powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
 powerpc*-*-linux*)
 	# Target: PowerPC running Linux
 	gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
-			ppc64-tdep.o solib-svr4.o solib-spu.o \
-			spu-multiarch.o \
+			ppc64-tdep.o solib-svr4.o \
 			glibc-tdep.o symfile-mem.o linux-tdep.o \
 			ravenscar-thread.o ppc-ravenscar-thread.o \
 			linux-record.o \
@@ -668,12 +667,6 @@ sparc64-*-*)
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 
-spu*-*-*)
-	# Target: Cell BE SPU
-	gdb_target_obs="spu-tdep.o"
-	build_gdbserver=yes
-	;;
-
 s12z-*-*)
 	# Target: Freescale S12z
 	gdb_target_obs="s12z-tdep.o"
diff --git a/gdb/corelow.c b/gdb/corelow.c
index b30b91b522..cea9210a52 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -709,36 +709,6 @@ core_target::files_info ()
   print_section_info (&m_core_section_table, core_bfd);
 }
 \f
-struct spuid_list
-{
-  gdb_byte *buf;
-  ULONGEST offset;
-  LONGEST len;
-  ULONGEST pos;
-  ULONGEST written;
-};
-
-static void
-add_to_spuid_list (bfd *abfd, asection *asect, void *list_p)
-{
-  struct spuid_list *list = (struct spuid_list *) list_p;
-  enum bfd_endian byte_order
-    = bfd_big_endian (abfd) ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-  int fd, pos = 0;
-
-  sscanf (bfd_section_name (asect), "SPU/%d/regs%n", &fd, &pos);
-  if (pos == 0)
-    return;
-
-  if (list->pos >= list->offset && list->pos + 4 <= list->offset + list->len)
-    {
-      store_unsigned_integer (list->buf + list->pos - list->offset,
-			      4, byte_order, fd);
-      list->written += 4;
-    }
-  list->pos += 4;
-}
-
 enum target_xfer_status
 core_target::xfer_partial (enum target_object object, const char *annex,
 			   gdb_byte *readbuf, const gdb_byte *writebuf,
@@ -865,64 +835,6 @@ core_target::xfer_partial (enum target_object object, const char *annex,
 	}
       /* FALL THROUGH */
 
-    case TARGET_OBJECT_SPU:
-      if (readbuf && annex)
-	{
-	  /* When the SPU contexts are stored in a core file, BFD
-	     represents this with a fake section called
-	     "SPU/<annex>".  */
-
-	  struct bfd_section *section;
-	  bfd_size_type size;
-	  char sectionstr[100];
-
-	  xsnprintf (sectionstr, sizeof sectionstr, "SPU/%s", annex);
-
-	  section = bfd_get_section_by_name (core_bfd, sectionstr);
-	  if (section == NULL)
-	    return TARGET_XFER_E_IO;
-
-	  size = bfd_section_size (section);
-	  if (offset >= size)
-	    return TARGET_XFER_EOF;
-	  size -= offset;
-	  if (size > len)
-	    size = len;
-
-	  if (size == 0)
-	    return TARGET_XFER_EOF;
-	  if (!bfd_get_section_contents (core_bfd, section, readbuf,
-					 (file_ptr) offset, size))
-	    {
-	      warning (_("Couldn't read SPU section in core file."));
-	      return TARGET_XFER_E_IO;
-	    }
-
-	  *xfered_len = (ULONGEST) size;
-	  return TARGET_XFER_OK;
-	}
-      else if (readbuf)
-	{
-	  /* NULL annex requests list of all present spuids.  */
-	  struct spuid_list list;
-
-	  list.buf = readbuf;
-	  list.offset = offset;
-	  list.len = len;
-	  list.pos = 0;
-	  list.written = 0;
-	  bfd_map_over_sections (core_bfd, add_to_spuid_list, &list);
-
-	  if (list.written == 0)
-	    return TARGET_XFER_EOF;
-	  else
-	    {
-	      *xfered_len = (ULONGEST) list.written;
-	      return TARGET_XFER_OK;
-	    }
-	}
-      return TARGET_XFER_E_IO;
-
     case TARGET_OBJECT_SIGNAL_INFO:
       if (readbuf)
 	{
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 8eaaab3ae1..0a10fa3fad 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* doc/gdb.texinfo (Remote Configuration): Remove documentation for
+	qXfer:spu:read and qXfer:spu:write.
+	(General Query Packets): Likewise.
+	(Cell Broadband Engine SPU architecture): Remove subsection.
+
 2019-09-18  Tom Tromey  <tom@tromey.com>
 
 	* gdb.texinfo (Editing): Document readline application name.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a129ea0aa1..f2713c0396 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -22563,14 +22563,6 @@ are:
 @tab @code{qXfer:sdata:read}
 @tab @code{print $_sdata}
 
-@item @code{read-spu-object}
-@tab @code{qXfer:spu:read}
-@tab @code{info spu}
-
-@item @code{write-spu-object}
-@tab @code{qXfer:spu:write}
-@tab @code{info spu}
-
 @item @code{read-siginfo-object}
 @tab @code{qXfer:siginfo:read}
 @tab @code{print $_siginfo}
@@ -24438,7 +24430,6 @@ all uses of @value{GDBN} with the architecture, both native and cross.
 * Alpha::
 * MIPS::
 * HPPA::               HP PA architecture
-* SPU::                Cell Broadband Engine SPU architecture
 * PowerPC::
 * Nios II::
 * Sparc64::
@@ -24753,69 +24744,6 @@ given @var{address}.
 @end table
 
 
-@node SPU
-@subsection Cell Broadband Engine SPU architecture
-@cindex Cell Broadband Engine
-@cindex SPU
-
-When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
-it provides the following special commands:
-
-@table @code
-@item info spu event
-@kindex info spu
-Display SPU event facility status.  Shows current event mask
-and pending event status.
-
-@item info spu signal
-Display SPU signal notification facility status.  Shows pending
-signal-control word and signal notification mode of both signal
-notification channels.
-
-@item info spu mailbox
-Display SPU mailbox facility status.  Shows all pending entries,
-in order of processing, in each of the SPU Write Outbound,
-SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
-
-@item info spu dma
-Display MFC DMA status.  Shows all pending commands in the MFC
-DMA queue.  For each entry, opcode, tag, class IDs, effective
-and local store addresses and transfer size are shown.
-
-@item info spu proxydma
-Display MFC Proxy-DMA status.  Shows all pending commands in the MFC
-Proxy-DMA queue.  For each entry, opcode, tag, class IDs, effective
-and local store addresses and transfer size are shown.
-
-@end table
- 
-When @value{GDBN} is debugging a combined PowerPC/SPU application
-on the Cell Broadband Engine, it provides in addition the following
-special commands:
-
-@table @code
-@item set spu stop-on-load @var{arg}
-@kindex set spu
-Set whether to stop for new SPE threads.  When set to @code{on}, @value{GDBN}
-will give control to the user when a new SPE thread enters its @code{main}
-function.  The default is @code{off}.
-
-@item show spu stop-on-load
-@kindex show spu
-Show whether to stop for new SPE threads.
-
-@item set spu auto-flush-cache @var{arg}
-Set whether to automatically flush the software-managed cache.  When set to
-@code{on}, @value{GDBN} will automatically cause the SPE software-managed
-cache to be flushed whenever SPE execution stops.  This provides a consistent
-view of PowerPC memory that is accessed via the cache.  If an application
-does not use the software-managed cache, this option has no effect.
-
-@item show spu auto-flush-cache
-Show whether to automatically flush the software-managed cache.
-
-@end table
-
 @node PowerPC
 @subsection PowerPC
 @cindex PowerPC architecture
@@ -40110,16 +40038,6 @@ These are the currently defined stub features and their properties:
 @tab @samp{-}
 @tab Yes
 
-@item @samp{qXfer:spu:read}
-@tab No
-@tab @samp{-}
-@tab Yes
-
-@item @samp{qXfer:spu:write}
-@tab No
-@tab @samp{-}
-@tab Yes
-
 @item @samp{qXfer:siginfo:read}
 @tab No
 @tab @samp{-}
@@ -40352,14 +40270,6 @@ The remote stub understands the @samp{qXfer:memory-map:read} packet
 The remote stub understands the @samp{qXfer:sdata:read} packet
 (@pxref{qXfer sdata read}).
 
-@item qXfer:spu:read
-The remote stub understands the @samp{qXfer:spu:read} packet
-(@pxref{qXfer spu read}).
-
-@item qXfer:spu:write
-The remote stub understands the @samp{qXfer:spu:write} packet
-(@pxref{qXfer spu write}).
-
 @item qXfer:siginfo:read
 The remote stub understands the @samp{qXfer:siginfo:read} packet
 (@pxref{qXfer siginfo read}).
@@ -40805,18 +40715,6 @@ This packet is not probed by default; the remote stub must request it,
 by supplying an appropriate @samp{qSupported} response
 (@pxref{qSupported}).
 
-@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
-@anchor{qXfer spu read}
-Read contents of an @code{spufs} file on the target system.  The
-annex specifies which file to read; it must be of the form 
-@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
-in the target process, and @var{name} identifes the @code{spufs} file
-in that context to be accessed.
-
-This packet is not probed by default; the remote stub must request it,
-by supplying an appropriate @samp{qSupported} response
-(@pxref{qSupported}).
-
 @item qXfer:threads:read::@var{offset},@var{length}
 @anchor{qXfer threads read}
 Access the list of threads on target.  @xref{Thread List Format}.  The
@@ -40902,17 +40800,6 @@ empty (@pxref{qXfer write}).
 This packet is not probed by default; the remote stub must request it,
 by supplying an appropriate @samp{qSupported} response
 (@pxref{qSupported}).
-
-@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
-@anchor{qXfer spu write}
-Write @var{data} to an @code{spufs} file on the target system.  The
-annex specifies which file to write; it must be of the form
-@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
-in the target process, and @var{name} identifes the @code{spufs} file
-in that context to be accessed.
-
-This packet is not probed by default; the remote stub must request it,
-by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
 @end table
 
 @item qXfer:@var{object}:@var{operation}:@dots{}
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 2b65d46df0..52318d4c06 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -53,7 +53,7 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
 	rs6000/powerpc-32 \
 	rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
 	rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
-	rs6000/powerpc-vsx64l rs6000/powerpc-cell32l rs6000/powerpc-cell64l \
+	rs6000/powerpc-vsx64l \
 	rs6000/powerpc-isa205-32l rs6000/powerpc-isa205-64l \
 	rs6000/powerpc-isa205-altivec32l rs6000/powerpc-isa205-altivec64l \
 	rs6000/powerpc-isa205-vsx32l rs6000/powerpc-isa205-vsx64l \
@@ -84,8 +84,6 @@ microblaze-expedite = r1,rpc
 nios2-linux-expedite = sp,pc
 or1k-expedite = r1,npc
 powerpc-expedite = r1,pc
-rs6000/powerpc-cell32l-expedite = r1,pc,r0,orig_r3,r4
-rs6000/powerpc-cell64l-expedite = r1,pc,r0,orig_r3,r4
 s390-linux32-expedite = r14,r15,pswa
 s390-linux32v1-expedite = r14,r15,pswa
 s390-linux32v2-expedite = r14,r15,pswa
@@ -140,8 +138,6 @@ XMLTOC = \
 	rs6000/powerpc-altivec32l.xml \
 	rs6000/powerpc-altivec64.xml \
 	rs6000/powerpc-altivec64l.xml \
-	rs6000/powerpc-cell32l.xml \
-	rs6000/powerpc-cell64l.xml \
 	rs6000/powerpc-e500.xml \
 	rs6000/powerpc-e500l.xml \
 	rs6000/powerpc-isa205-32l.xml \
diff --git a/gdb/features/rs6000/powerpc-cell32l.c b/gdb/features/rs6000/powerpc-cell32l.c
deleted file mode 100644
index 74c42f94bc..0000000000
--- a/gdb/features/rs6000/powerpc-cell32l.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-cell32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_cell32l;
-static void
-initialize_tdesc_powerpc_cell32l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
-  tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_cell32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-cell32l.xml b/gdb/features/rs6000/powerpc-cell32l.xml
deleted file mode 100644
index 57b4806947..0000000000
--- a/gdb/features/rs6000/powerpc-cell32l.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- Cell/B.E. architecture.  Identical to the PowerPC 32-bit Linux UISA,
-     but adds support for the SPU as compatible architecture.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common</architecture>
-  <compatible>spu</compatible>
-  <xi:include href="power-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-cell64l.c b/gdb/features/rs6000/powerpc-cell64l.c
deleted file mode 100644
index cbfda4c50a..0000000000
--- a/gdb/features/rs6000/powerpc-cell64l.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: powerpc-cell64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_cell64l;
-static void
-initialize_tdesc_powerpc_cell64l (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
-  tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
-  tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
-  tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
-  tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
-  tdesc_type *element_type;
-  element_type = tdesc_named_type (feature, "ieee_single");
-  tdesc_create_vector (feature, "v4f", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int32");
-  tdesc_create_vector (feature, "v4i32", element_type, 4);
-
-  element_type = tdesc_named_type (feature, "int16");
-  tdesc_create_vector (feature, "v8i16", element_type, 8);
-
-  element_type = tdesc_named_type (feature, "int8");
-  tdesc_create_vector (feature, "v16i8", element_type, 16);
-
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_union (feature, "vec128");
-  tdesc_type *field_type;
-  field_type = tdesc_named_type (feature, "uint128");
-  tdesc_add_field (type_with_fields, "uint128", field_type);
-  field_type = tdesc_named_type (feature, "v4f");
-  tdesc_add_field (type_with_fields, "v4_float", field_type);
-  field_type = tdesc_named_type (feature, "v4i32");
-  tdesc_add_field (type_with_fields, "v4_int32", field_type);
-  field_type = tdesc_named_type (feature, "v8i16");
-  tdesc_add_field (type_with_fields, "v8_int16", field_type);
-  field_type = tdesc_named_type (feature, "v16i8");
-  tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
-  tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
-  tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
-  tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
-  tdesc_powerpc_cell64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-cell64l.xml b/gdb/features/rs6000/powerpc-cell64l.xml
deleted file mode 100644
index c2add44b45..0000000000
--- a/gdb/features/rs6000/powerpc-cell64l.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!-- Cell/B.E. architecture.  Identical to the PowerPC 64-bit Linux UISA,
-     but adds support for the SPU as compatible architecture.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>powerpc:common64</architecture>
-  <compatible>spu</compatible>
-  <xi:include href="power64-core.xml"/>
-  <xi:include href="power-fpu.xml"/>
-  <xi:include href="power64-linux.xml"/>
-  <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index faafdfd967..5c76167014 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,43 @@
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
+	and powerpc-cell64l-ipa.o.
+	(powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
+	from srv_regobj.  Remove rs6000/powerpc-cell32l.xml and
+	rs6000/powerpc-cell64l.xml from srv_xmlfiles.
+	(spu*-*-*): Remove.
+
+	* spu-low.c: Remove file.
+
+	* linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
+	(parse_spufs_run): Remove.
+	(ppc_get_pc): Remove Cell/B.E. support.
+	(ppc_set_pc): Likewise.
+	(ppc_breakpoint_at): Likewise.
+	(ppc_arch_setup): Likewise.
+	(ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
+	tdesc_powerpc_cell32l.
+	(initialize_low_arch): Do not call init_registers_powerpc_cell64l
+	or init_registers_powerpc_cell32l.
+	* linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
+	(initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
+	or init_registers_powerpc_cell32l.
+	* linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
+	(init_registers_powerpc_cell32l): Remove prototype.
+	(init_registers_powerpc_cell64l): Likewise.
+
+	* target.h (struct target_ops): Remove qxfer_spu member.
+	* server.c (handle_qxfer_spu): Remove.
+	(qxfer_packets): Remove entry for "spu".
+	(handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
+	* linux-low.c (SPUFS_MAGIC): Remove.
+	(spu_enumerate_spu_ids): Remove.
+	(linux_qxfer_spu): Remove.
+	(linux_target_ops): Remove qxfer_spu member.
+	* lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
+	* nto-low.c (nto_target_ops): Remove qxfer_spu member.
+	* win32-low.c (win32_target_ops): Remove qxfer_spu member.
+
 2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	* Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 66d3d426ac..1a4ab8e336 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -24,7 +24,7 @@
 # Default hostio_last_error implementation
 srv_hostio_err_objs="hostio-errno.o"
 
-ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
+ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
 
 # Linux object files.  This is so we don't have to repeat
 # these files over and over again.
@@ -186,7 +186,6 @@ case "${target}" in
 			;;
   powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"
 			srv_regobj="${srv_regobj} powerpc-altivec32l.o"
-			srv_regobj="${srv_regobj} powerpc-cell32l.o"
 			srv_regobj="${srv_regobj} powerpc-vsx32l.o"
 			srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
 			srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
@@ -197,7 +196,6 @@ case "${target}" in
 			srv_regobj="${srv_regobj} powerpc-e500l.o"
 			srv_regobj="${srv_regobj} powerpc-64l.o"
 			srv_regobj="${srv_regobj} powerpc-altivec64l.o"
-			srv_regobj="${srv_regobj} powerpc-cell64l.o"
 			srv_regobj="${srv_regobj} powerpc-vsx64l.o"
 			srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
 			srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
@@ -209,7 +207,6 @@ case "${target}" in
 			srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
 			srv_xmlfiles="rs6000/powerpc-32l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell32l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
@@ -240,7 +237,6 @@ case "${target}" in
 			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell64l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
 			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
@@ -340,9 +336,6 @@ case "${target}" in
 			srv_linux_regsets=yes
 			srv_linux_thread_db=yes
 			;;
-  spu*-*-*)		srv_regobj=reg-spu.o
-			srv_tgtobj="spu-low.o fork-child.o fork-inferior.o"
-			;;
   tic6x-*-uclinux)	if $development; then
 			  srv_regobj="tic6x-c64xp-linux.o"
 			  srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 3113017ae6..d64c3641ff 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -60,10 +60,6 @@
 #endif
 #include "nat/linux-namespaces.h"
 
-#ifndef SPUFS_MAGIC
-#define SPUFS_MAGIC 0x23c9b64e
-#endif
-
 #ifdef HAVE_PERSONALITY
 # include <sys/personality.h>
 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
@@ -6358,99 +6354,6 @@ linux_supports_range_stepping (void)
   return (*the_low_target.supports_range_stepping) ();
 }
 
-/* Enumerate spufs IDs for process PID.  */
-static int
-spu_enumerate_spu_ids (long pid, unsigned char *buf, CORE_ADDR offset, int len)
-{
-  int pos = 0;
-  int written = 0;
-  char path[128];
-  DIR *dir;
-  struct dirent *entry;
-
-  sprintf (path, "/proc/%ld/fd", pid);
-  dir = opendir (path);
-  if (!dir)
-    return -1;
-
-  rewinddir (dir);
-  while ((entry = readdir (dir)) != NULL)
-    {
-      struct stat st;
-      struct statfs stfs;
-      int fd;
-
-      fd = atoi (entry->d_name);
-      if (!fd)
-        continue;
-
-      sprintf (path, "/proc/%ld/fd/%d", pid, fd);
-      if (stat (path, &st) != 0)
-        continue;
-      if (!S_ISDIR (st.st_mode))
-        continue;
-
-      if (statfs (path, &stfs) != 0)
-        continue;
-      if (stfs.f_type != SPUFS_MAGIC)
-        continue;
-
-      if (pos >= offset && pos + 4 <= offset + len)
-        {
-          *(unsigned int *)(buf + pos - offset) = fd;
-          written += 4;
-        }
-      pos += 4;
-    }
-
-  closedir (dir);
-  return written;
-}
-
-/* Implements the to_xfer_partial interface for the TARGET_OBJECT_SPU
-   object type, using the /proc file system.  */
-static int
-linux_qxfer_spu (const char *annex, unsigned char *readbuf,
-		 unsigned const char *writebuf,
-		 CORE_ADDR offset, int len)
-{
-  long pid = lwpid_of (current_thread);
-  char buf[128];
-  int fd = 0;
-  int ret = 0;
-
-  if (!writebuf && !readbuf)
-    return -1;
-
-  if (!*annex)
-    {
-      if (!readbuf)
-	return -1;
-      else
-	return spu_enumerate_spu_ids (pid, readbuf, offset, len);
-    }
-
-  sprintf (buf, "/proc/%ld/fd/%s", pid, annex);
-  fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
-  if (fd <= 0)
-    return -1;
-
-  if (offset != 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
-    {
-      close (fd);
-      return 0;
-    }
-
-  if (writebuf)
-    ret = write (fd, writebuf, (size_t) len);
-  else
-    ret = read (fd, readbuf, (size_t) len);
-
-  close (fd);
-  return ret;
-}
-
 #if defined PT_GETDSBT || defined PTRACE_GETFDPIC
 struct target_loadseg
 {
@@ -7496,7 +7399,6 @@ static struct target_ops linux_target_ops = {
 #else
   NULL,
 #endif
-  linux_qxfer_spu,
   hostio_last_error_from_errno,
   linux_qxfer_osdata,
   linux_xfer_siginfo,
diff --git a/gdb/gdbserver/linux-ppc-ipa.c b/gdb/gdbserver/linux-ppc-ipa.c
index 08adc52ce4..f9df02236a 100644
--- a/gdb/gdbserver/linux-ppc-ipa.c
+++ b/gdb/gdbserver/linux-ppc-ipa.c
@@ -181,8 +181,6 @@ get_ipa_tdesc (int idx)
       return tdesc_powerpc_64l;
     case PPC_TDESC_ALTIVEC:
       return tdesc_powerpc_altivec64l;
-    case PPC_TDESC_CELL:
-      return tdesc_powerpc_cell64l;
     case PPC_TDESC_VSX:
       return tdesc_powerpc_vsx64l;
     case PPC_TDESC_ISA205:
@@ -202,8 +200,6 @@ get_ipa_tdesc (int idx)
       return tdesc_powerpc_32l;
     case PPC_TDESC_ALTIVEC:
       return tdesc_powerpc_altivec32l;
-    case PPC_TDESC_CELL:
-      return tdesc_powerpc_cell32l;
     case PPC_TDESC_VSX:
       return tdesc_powerpc_vsx32l;
     case PPC_TDESC_ISA205:
@@ -241,7 +237,6 @@ initialize_low_tracepoint (void)
 #ifdef __powerpc64__
   init_registers_powerpc_64l ();
   init_registers_powerpc_altivec64l ();
-  init_registers_powerpc_cell64l ();
   init_registers_powerpc_vsx64l ();
   init_registers_powerpc_isa205_64l ();
   init_registers_powerpc_isa205_altivec64l ();
@@ -252,7 +247,6 @@ initialize_low_tracepoint (void)
 #else
   init_registers_powerpc_32l ();
   init_registers_powerpc_altivec32l ();
-  init_registers_powerpc_cell32l ();
   init_registers_powerpc_vsx32l ();
   init_registers_powerpc_isa205_32l ();
   init_registers_powerpc_isa205_altivec32l ();
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
index 8a0965bd20..c0622825ad 100644
--- a/gdb/gdbserver/linux-ppc-low.c
+++ b/gdb/gdbserver/linux-ppc-low.c
@@ -220,73 +220,10 @@ ppc_supply_ptrace_register (struct regcache *regcache,
     perror_with_name ("Unexpected byte order");
 }
 
-
-#define INSTR_SC        0x44000002
-#define NR_spu_run      0x0116
-
-/* If the PPU thread is currently stopped on a spu_run system call,
-   return to FD and ADDR the file handle and NPC parameter address
-   used with the system call.  Return non-zero if successful.  */
-static int
-parse_spufs_run (struct regcache *regcache, int *fd, CORE_ADDR *addr)
-{
-  CORE_ADDR curr_pc;
-  int curr_insn;
-  int curr_r0;
-
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      unsigned int pc, r0, r3, r4;
-      collect_register_by_name (regcache, "pc", &pc);
-      collect_register_by_name (regcache, "r0", &r0);
-      collect_register_by_name (regcache, "orig_r3", &r3);
-      collect_register_by_name (regcache, "r4", &r4);
-      curr_pc = (CORE_ADDR) pc;
-      curr_r0 = (int) r0;
-      *fd = (int) r3;
-      *addr = (CORE_ADDR) r4;
-    }
-  else
-    {
-      unsigned long pc, r0, r3, r4;
-      collect_register_by_name (regcache, "pc", &pc);
-      collect_register_by_name (regcache, "r0", &r0);
-      collect_register_by_name (regcache, "orig_r3", &r3);
-      collect_register_by_name (regcache, "r4", &r4);
-      curr_pc = (CORE_ADDR) pc;
-      curr_r0 = (int) r0;
-      *fd = (int) r3;
-      *addr = (CORE_ADDR) r4;
-    }
-
-  /* Fetch instruction preceding current NIP.  */
-  if ((*the_target->read_memory) (curr_pc - 4,
-				  (unsigned char *) &curr_insn, 4) != 0)
-    return 0;
-  /* It should be a "sc" instruction.  */
-  if (curr_insn != INSTR_SC)
-    return 0;
-  /* System call number should be NR_spu_run.  */
-  if (curr_r0 != NR_spu_run)
-    return 0;
-
-  return 1;
-}
-
 static CORE_ADDR
 ppc_get_pc (struct regcache *regcache)
 {
-  CORE_ADDR addr;
-  int fd;
-
-  if (parse_spufs_run (regcache, &fd, &addr))
-    {
-      unsigned int pc;
-      (*the_target->read_memory) (addr, (unsigned char *) &pc, 4);
-      return ((CORE_ADDR)1 << 63)
-	| ((CORE_ADDR)fd << 32) | (CORE_ADDR) (pc - 4);
-    }
-  else if (register_size (regcache->tdesc, 0) == 4)
+  if (register_size (regcache->tdesc, 0) == 4)
     {
       unsigned int pc;
       collect_register_by_name (regcache, "pc", &pc);
@@ -303,15 +240,7 @@ ppc_get_pc (struct regcache *regcache)
 static void
 ppc_set_pc (struct regcache *regcache, CORE_ADDR pc)
 {
-  CORE_ADDR addr;
-  int fd;
-
-  if (parse_spufs_run (regcache, &fd, &addr))
-    {
-      unsigned int newpc = pc;
-      (*the_target->write_memory) (addr, (unsigned char *) &newpc, 4);
-    }
-  else if (register_size (regcache->tdesc, 0) == 4)
+  if (register_size (regcache->tdesc, 0) == 4)
     {
       unsigned int newpc = pc;
       supply_register_by_name (regcache, "pc", &newpc);
@@ -348,23 +277,11 @@ ppc_breakpoint_at (CORE_ADDR where)
 {
   unsigned int insn;
 
-  if (where & ((CORE_ADDR)1 << 63))
-    {
-      char mem_annex[32];
-      sprintf (mem_annex, "%d/mem", (int)((where >> 32) & 0x7fffffff));
-      (*the_target->qxfer_spu) (mem_annex, (unsigned char *) &insn,
-				NULL, where & 0xffffffff, 4);
-      if (insn == 0x3fff)
-	return 1;
-    }
-  else
-    {
-      (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-      if (insn == ppc_breakpoint)
-	return 1;
-      /* If necessary, recognize more trap instructions here.  GDB only uses
-	 the one.  */
-    }
+  (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
+  if (insn == ppc_breakpoint)
+    return 1;
+  /* If necessary, recognize more trap instructions here.  GDB only uses
+     the one.  */
 
   return 0;
 }
@@ -941,9 +858,6 @@ ppc_arch_setup (void)
 	}
     }
 
-  if (ppc_hwcap & PPC_FEATURE_CELL)
-    features.cell = true;
-
   tdesc = ppc_linux_match_description (features);
 
   /* On 32-bit machines, check for SPE registers.
@@ -3416,8 +3330,6 @@ ppc_get_ipa_tdesc_idx (void)
     return PPC_TDESC_BASE;
   if (tdesc == tdesc_powerpc_altivec64l)
     return PPC_TDESC_ALTIVEC;
-  if (tdesc == tdesc_powerpc_cell64l)
-    return PPC_TDESC_CELL;
   if (tdesc == tdesc_powerpc_vsx64l)
     return PPC_TDESC_VSX;
   if (tdesc == tdesc_powerpc_isa205_64l)
@@ -3438,8 +3350,6 @@ ppc_get_ipa_tdesc_idx (void)
     return PPC_TDESC_BASE;
   if (tdesc == tdesc_powerpc_altivec32l)
     return PPC_TDESC_ALTIVEC;
-  if (tdesc == tdesc_powerpc_cell32l)
-    return PPC_TDESC_CELL;
   if (tdesc == tdesc_powerpc_vsx32l)
     return PPC_TDESC_VSX;
   if (tdesc == tdesc_powerpc_isa205_32l)
@@ -3507,7 +3417,6 @@ initialize_low_arch (void)
 
   init_registers_powerpc_32l ();
   init_registers_powerpc_altivec32l ();
-  init_registers_powerpc_cell32l ();
   init_registers_powerpc_vsx32l ();
   init_registers_powerpc_isa205_32l ();
   init_registers_powerpc_isa205_altivec32l ();
@@ -3519,7 +3428,6 @@ initialize_low_arch (void)
 #if __powerpc64__
   init_registers_powerpc_64l ();
   init_registers_powerpc_altivec64l ();
-  init_registers_powerpc_cell64l ();
   init_registers_powerpc_vsx64l ();
   init_registers_powerpc_isa205_64l ();
   init_registers_powerpc_isa205_altivec64l ();
diff --git a/gdb/gdbserver/linux-ppc-tdesc-init.h b/gdb/gdbserver/linux-ppc-tdesc-init.h
index 4f9a7c5009..299b3ce363 100644
--- a/gdb/gdbserver/linux-ppc-tdesc-init.h
+++ b/gdb/gdbserver/linux-ppc-tdesc-init.h
@@ -27,7 +27,7 @@
 enum ppc_linux_tdesc {
   PPC_TDESC_BASE,
   PPC_TDESC_ALTIVEC,
-  PPC_TDESC_CELL,
+  PPC_TDESC_CELL,  /* No longer used, but kept to avoid ABI changes.  */
   PPC_TDESC_VSX,
   PPC_TDESC_ISA205,
   PPC_TDESC_ISA205_ALTIVEC,
@@ -46,9 +46,6 @@ void init_registers_powerpc_32l (void);
 /* Defined in auto-generated file powerpc-altivec32l.c.  */
 void init_registers_powerpc_altivec32l (void);
 
-/* Defined in auto-generated file powerpc-cell32l.c.  */
-void init_registers_powerpc_cell32l (void);
-
 /* Defined in auto-generated file powerpc-vsx32l.c.  */
 void init_registers_powerpc_vsx32l (void);
 
@@ -83,9 +80,6 @@ void init_registers_powerpc_64l (void);
 /* Defined in auto-generated file powerpc-altivec64l.c.  */
 void init_registers_powerpc_altivec64l (void);
 
-/* Defined in auto-generated file powerpc-cell64l.c.  */
-void init_registers_powerpc_cell64l (void);
-
 /* Defined in auto-generated file powerpc-vsx64l.c.  */
 void init_registers_powerpc_vsx64l (void);
 
diff --git a/gdb/gdbserver/lynx-low.c b/gdb/gdbserver/lynx-low.c
index 0a8b258e87..2bd24e7cee 100644
--- a/gdb/gdbserver/lynx-low.c
+++ b/gdb/gdbserver/lynx-low.c
@@ -753,7 +753,6 @@ static struct target_ops lynx_target_ops = {
   NULL,  /* stopped_data_address */
   NULL,  /* read_offsets */
   NULL,  /* get_tls_address */
-  NULL,  /* qxfer_spu */
   NULL,  /* hostio_last_error */
   NULL,  /* qxfer_osdata */
   NULL,  /* qxfer_siginfo */
diff --git a/gdb/gdbserver/nto-low.c b/gdb/gdbserver/nto-low.c
index 011701aa8c..3c1130680f 100644
--- a/gdb/gdbserver/nto-low.c
+++ b/gdb/gdbserver/nto-low.c
@@ -963,7 +963,6 @@ static struct target_ops nto_target_ops = {
   nto_stopped_data_address,
   NULL, /* nto_read_offsets */
   NULL, /* thread_db_set_tls_address */
-  NULL,
   hostio_last_error_from_errno,
   NULL, /* nto_qxfer_osdata */
   NULL, /* xfer_siginfo */
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 127cd3840b..67e8e3e54d 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -1613,22 +1613,6 @@ handle_qxfer_siginfo (const char *annex,
   return (*the_target->qxfer_siginfo) (annex, readbuf, writebuf, offset, len);
 }
 
-/* Handle qXfer:spu:read and qXfer:spu:write.  */
-
-static int
-handle_qxfer_spu (const char *annex,
-		  gdb_byte *readbuf, const gdb_byte *writebuf,
-		  ULONGEST offset, LONGEST len)
-{
-  if (the_target->qxfer_spu == NULL)
-    return -2;
-
-  if (current_thread == NULL)
-    return -1;
-
-  return (*the_target->qxfer_spu) (annex, readbuf, writebuf, offset, len);
-}
-
 /* Handle qXfer:statictrace:read.  */
 
 static int
@@ -1985,7 +1969,6 @@ static const struct qxfer qxfer_packets[] =
     { "libraries-svr4", handle_qxfer_libraries_svr4 },
     { "osdata", handle_qxfer_osdata },
     { "siginfo", handle_qxfer_siginfo },
-    { "spu", handle_qxfer_spu },
     { "statictrace", handle_qxfer_statictrace },
     { "threads", handle_qxfer_threads },
     { "traceframe-info", handle_qxfer_traceframe_info },
@@ -2397,9 +2380,6 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
       if (the_target->read_auxv != NULL)
 	strcat (own_buf, ";qXfer:auxv:read+");
 
-      if (the_target->qxfer_spu != NULL)
-	strcat (own_buf, ";qXfer:spu:read+;qXfer:spu:write+");
-
       if (the_target->qxfer_siginfo != NULL)
 	strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+");
 
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
deleted file mode 100644
index 4930c59d73..0000000000
--- a/gdb/gdbserver/spu-low.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/* Low level interface to SPUs, for the remote server for GDB.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "server.h"
-
-#include "gdbsupport/gdb_wait.h"
-#include <sys/ptrace.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-#include "gdbsupport/filestuff.h"
-#include "hostio.h"
-#include "nat/fork-inferior.h"
-
-/* Some older glibc versions do not define this.  */
-#ifndef __WNOTHREAD
-#define __WNOTHREAD     0x20000000      /* Don't wait on children of other
-					   threads in this group */
-#endif
-
-#define PTRACE_TYPE_RET long
-#define PTRACE_TYPE_ARG3 long
-
-/* Number of registers.  */
-#define SPU_NUM_REGS         130
-#define SPU_NUM_CORE_REGS    128
-
-/* Special registers.  */
-#define SPU_ID_REGNUM        128
-#define SPU_PC_REGNUM        129
-
-/* PPU side system calls.  */
-#define INSTR_SC	0x44000002
-#define NR_spu_run	0x0116
-
-/* These are used in remote-utils.c.  */
-int using_threads = 0;
-
-/* Defined in auto-generated file reg-spu.c.  */
-void init_registers_spu (void);
-extern const struct target_desc *tdesc_spu;
-
-/* Software breakpoint instruction.  */
-static const gdb_byte breakpoint[] = { 0x00, 0x00, 0x3f, 0xff };
-
-/* Fetch PPU register REGNO.  */
-static CORE_ADDR
-fetch_ppc_register (int regno)
-{
-  PTRACE_TYPE_RET res;
-
-  int tid = current_ptid.lwp ();
-
-#ifndef __powerpc64__
-  /* If running as a 32-bit process on a 64-bit system, we attempt
-     to get the full 64-bit register content of the target process.
-     If the PPC special ptrace call fails, we're on a 32-bit system;
-     just fall through to the regular ptrace call in that case.  */
-  {
-    char buf[8];
-
-    errno = 0;
-    ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKUSR_3264, tid,
-	    (PTRACE_TYPE_ARG3) (regno * 8), buf);
-    if (errno == 0)
-      ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKUSR_3264, tid,
-	      (PTRACE_TYPE_ARG3) (regno * 8 + 4), buf + 4);
-    if (errno == 0)
-      return (CORE_ADDR) *(unsigned long long *)buf;
-  }
-#endif
-
-  errno = 0;
-  res = ptrace (PT_READ_U, tid,
-		(PTRACE_TYPE_ARG3) (regno * sizeof (PTRACE_TYPE_RET)), 0);
-  if (errno != 0)
-    {
-      char mess[128];
-      sprintf (mess, "reading PPC register #%d", regno);
-      perror_with_name (mess);
-    }
-
-  return (CORE_ADDR) (unsigned long) res;
-}
-
-/* Fetch WORD from PPU memory at (aligned) MEMADDR in thread TID.  */
-static int
-fetch_ppc_memory_1 (int tid, CORE_ADDR memaddr, PTRACE_TYPE_RET *word)
-{
-  errno = 0;
-
-#ifndef __powerpc64__
-  if (memaddr >> 32)
-    {
-      unsigned long long addr_8 = (unsigned long long) memaddr;
-      ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKTEXT_3264, tid,
-	      (PTRACE_TYPE_ARG3) &addr_8, word);
-    }
-  else
-#endif
-    *word = ptrace (PT_READ_I, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, 0);
-
-  return errno;
-}
-
-/* Store WORD into PPU memory at (aligned) MEMADDR in thread TID.  */
-static int
-store_ppc_memory_1 (int tid, CORE_ADDR memaddr, PTRACE_TYPE_RET word)
-{
-  errno = 0;
-
-#ifndef __powerpc64__
-  if (memaddr >> 32)
-    {
-      unsigned long long addr_8 = (unsigned long long) memaddr;
-      ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_POKEDATA_3264, tid,
-	      (PTRACE_TYPE_ARG3) &addr_8, word);
-    }
-  else
-#endif
-    ptrace (PT_WRITE_D, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, word);
-
-  return errno;
-}
-
-/* Fetch LEN bytes of PPU memory at MEMADDR to MYADDR.  */
-static int
-fetch_ppc_memory (CORE_ADDR memaddr, char *myaddr, int len)
-{
-  int i, ret;
-
-  CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_TYPE_RET);
-  int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
-	       / sizeof (PTRACE_TYPE_RET));
-  PTRACE_TYPE_RET *buffer;
-
-  int tid = current_ptid.lwp ();
-
-  buffer = XALLOCAVEC (PTRACE_TYPE_RET, count);
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
-    if ((ret = fetch_ppc_memory_1 (tid, addr, &buffer[i])) != 0)
-      return ret;
-
-  memcpy (myaddr,
-	  (char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
-	  len);
-
-  return 0;
-}
-
-/* Store LEN bytes from MYADDR to PPU memory at MEMADDR.  */
-static int
-store_ppc_memory (CORE_ADDR memaddr, char *myaddr, int len)
-{
-  int i, ret;
-
-  CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_TYPE_RET);
-  int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
-	       / sizeof (PTRACE_TYPE_RET));
-  PTRACE_TYPE_RET *buffer;
-
-  int tid = current_ptid.lwp ();
-
-  buffer = XALLOCAVEC (PTRACE_TYPE_RET, count);
-
-  if (addr != memaddr || len < (int) sizeof (PTRACE_TYPE_RET))
-    if ((ret = fetch_ppc_memory_1 (tid, addr, &buffer[0])) != 0)
-      return ret;
-
-  if (count > 1)
-    if ((ret = fetch_ppc_memory_1 (tid, addr + (count - 1)
-					       * sizeof (PTRACE_TYPE_RET),
-				   &buffer[count - 1])) != 0)
-      return ret;
-
-  memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
-	  myaddr, len);
-
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
-    if ((ret = store_ppc_memory_1 (tid, addr, buffer[i])) != 0)
-      return ret;
-
-  return 0;
-}
-
-
-/* If the PPU thread is currently stopped on a spu_run system call,
-   return to FD and ADDR the file handle and NPC parameter address
-   used with the system call.  Return non-zero if successful.  */
-static int
-parse_spufs_run (int *fd, CORE_ADDR *addr)
-{
-  unsigned int insn;
-  CORE_ADDR pc = fetch_ppc_register (32);  /* nip */
-
-  /* Fetch instruction preceding current NIP.  */
-  if (fetch_ppc_memory (pc-4, (char *) &insn, 4) != 0)
-    return 0;
-  /* It should be a "sc" instruction.  */
-  if (insn != INSTR_SC)
-    return 0;
-  /* System call number should be NR_spu_run.  */
-  if (fetch_ppc_register (0) != NR_spu_run)
-    return 0;
-
-  /* Register 3 contains fd, register 4 the NPC param pointer.  */
-  *fd = fetch_ppc_register (34);  /* orig_gpr3 */
-  *addr = fetch_ppc_register (4);
-  return 1;
-}
-
-
-/* Copy LEN bytes at OFFSET in spufs file ANNEX into/from READBUF or WRITEBUF,
-   using the /proc file system.  */
-static int
-spu_proc_xfer_spu (const char *annex, unsigned char *readbuf,
-		   const unsigned char *writebuf,
-		   CORE_ADDR offset, int len)
-{
-  char buf[128];
-  int fd = 0;
-  int ret = -1;
-
-  if (!annex)
-    return 0;
-
-  sprintf (buf, "/proc/%ld/fd/%s", current_ptid.lwp (), annex);
-  fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
-  if (fd <= 0)
-    return -1;
-
-  if (offset != 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
-    {
-      close (fd);
-      return 0;
-    }
-
-  if (writebuf)
-    ret = write (fd, writebuf, (size_t) len);
-  else if (readbuf)
-    ret = read (fd, readbuf, (size_t) len);
-
-  close (fd);
-  return ret;
-}
-
-/* Callback to be used when calling fork_inferior, responsible for
-   actually initiating the tracing of the inferior.  */
-
-static void
-spu_ptrace_fun ()
-{
-  if (ptrace (PTRACE_TRACEME, 0, 0, 0) < 0)
-    trace_start_error_with_name ("ptrace");
-  if (setpgid (0, 0) < 0)
-    trace_start_error_with_name ("setpgid");
-}
-
-/* Start an inferior process and returns its pid.
-   PROGRAM is the name of the program to be started, and PROGRAM_ARGS
-   are its arguments.  */
-
-static int
-spu_create_inferior (const char *program,
-		     const std::vector<char *> &program_args)
-{
-  int pid;
-  ptid_t ptid;
-  struct process_info *proc;
-  std::string str_program_args = stringify_argv (program_args);
-
-  pid = fork_inferior (program,
-		       str_program_args.c_str (),
-		       get_environ ()->envp (), spu_ptrace_fun,
-		       NULL, NULL, NULL, NULL);
-
-  post_fork_inferior (pid, program);
-
-  proc = add_process (pid, 0);
-  proc->tdesc = tdesc_spu;
-
-  ptid = ptid_t (pid, pid, 0);
-  add_thread (ptid, NULL);
-  return pid;
-}
-
-/* Attach to an inferior process.  */
-int
-spu_attach (unsigned long  pid)
-{
-  ptid_t ptid;
-  struct process_info *proc;
-
-  if (ptrace (PTRACE_ATTACH, pid, 0, 0) != 0)
-    {
-      fprintf (stderr, "Cannot attach to process %ld: %s (%d)\n", pid,
-	       strerror (errno), errno);
-      fflush (stderr);
-      _exit (0177);
-    }
-
-  proc = add_process (pid, 1);
-  proc->tdesc = tdesc_spu;
-  ptid = ptid_t (pid, pid, 0);
-  add_thread (ptid, NULL);
-  return 0;
-}
-
-/* Kill the inferior process.  */
-static int
-spu_kill (process_info *process)
-{
-  int status, ret;
-  int pid = process->pid;
-
-  ptrace (PTRACE_KILL, pid, 0, 0);
-
-  do {
-    ret = waitpid (pid, &status, 0);
-    if (WIFEXITED (status) || WIFSIGNALED (status))
-      break;
-  } while (ret != -1 || errno != ECHILD);
-
-  clear_inferiors ();
-  remove_process (process);
-  return 0;
-}
-
-/* Detach from inferior process.  */
-static int
-spu_detach (process_info *process)
-{
-  ptrace (PTRACE_DETACH, process->pid, 0, 0);
-
-  clear_inferiors ();
-  remove_process (process);
-  return 0;
-}
-
-static void
-spu_mourn (struct process_info *process)
-{
-  remove_process (process);
-}
-
-static void
-spu_join (int pid)
-{
-  int status, ret;
-
-  do {
-    ret = waitpid (pid, &status, 0);
-    if (WIFEXITED (status) || WIFSIGNALED (status))
-      break;
-  } while (ret != -1 || errno != ECHILD);
-}
-
-/* Return nonzero if the given thread is still alive.  */
-static int
-spu_thread_alive (ptid_t ptid)
-{
-  return ptid == current_ptid;
-}
-
-/* Resume process.  */
-static void
-spu_resume (struct thread_resume *resume_info, size_t n)
-{
-  struct thread_info *thr = get_first_thread ();
-  size_t i;
-
-  for (i = 0; i < n; i++)
-    if (resume_info[i].thread == minus_one_ptid
-	|| resume_info[i].thread == ptid_of (thr))
-      break;
-
-  if (i == n)
-    return;
-
-  /* We don't support hardware single-stepping right now, assume
-     GDB knows to use software single-stepping.  */
-  if (resume_info[i].kind == resume_step)
-    fprintf (stderr, "Hardware single-step not supported.\n");
-
-  regcache_invalidate ();
-
-  errno = 0;
-  ptrace (PTRACE_CONT, ptid_of (thr).lwp (), 0, resume_info[i].sig);
-  if (errno)
-    perror_with_name ("ptrace");
-}
-
-/* Wait for process, returns status.  */
-static ptid_t
-spu_wait (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
-{
-  int pid = ptid.pid ();
-  int w;
-  int ret;
-
-  while (1)
-    {
-      ret = waitpid (pid, &w, WNOHANG | __WALL | __WNOTHREAD);
-
-      if (ret == -1)
-	{
-	  if (errno != ECHILD)
-	    perror_with_name ("waitpid");
-	}
-      else if (ret > 0)
-	break;
-
-      usleep (1000);
-    }
-
-  /* On the first wait, continue running the inferior until we are
-     blocked inside an spu_run system call.  */
-  if (!server_waiting)
-    {
-      int fd;
-      CORE_ADDR addr;
-
-      while (!parse_spufs_run (&fd, &addr))
-	{
-	  ptrace (PT_SYSCALL, pid, (PTRACE_TYPE_ARG3) 0, 0);
-	  waitpid (pid, NULL, __WALL | __WNOTHREAD);
-	}
-    }
-
-  if (WIFEXITED (w))
-    {
-      fprintf (stderr, "\nChild exited with retcode = %x \n", WEXITSTATUS (w));
-      ourstatus->kind =  TARGET_WAITKIND_EXITED;
-      ourstatus->value.integer = WEXITSTATUS (w);
-      clear_inferiors ();
-      return ptid_t (ret);
-    }
-  else if (!WIFSTOPPED (w))
-    {
-      fprintf (stderr, "\nChild terminated with signal = %x \n", WTERMSIG (w));
-      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-      ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (w));
-      clear_inferiors ();
-      return ptid_t (ret);
-    }
-
-  /* After attach, we may have received a SIGSTOP.  Do not return this
-     as signal to GDB, or else it will try to continue with SIGSTOP ...  */
-  if (!server_waiting)
-    {
-      ourstatus->kind = TARGET_WAITKIND_STOPPED;
-      ourstatus->value.sig = GDB_SIGNAL_0;
-      return ptid_t (ret, ret, 0);
-    }
-
-  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-  ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
-  return ptid_t (ret, ret, 0);
-}
-
-/* Fetch inferior registers.  */
-static void
-spu_fetch_registers (struct regcache *regcache, int regno)
-{
-  int fd;
-  CORE_ADDR addr;
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return;
-
-  /* The ID register holds the spufs file handle.  */
-  if (regno == -1 || regno == SPU_ID_REGNUM)
-    supply_register (regcache, SPU_ID_REGNUM, (char *)&fd);
-
-  /* The NPC register is found at ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      char buf[4];
-      if (fetch_ppc_memory (addr, buf, 4) == 0)
-	supply_register (regcache, SPU_PC_REGNUM, buf);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_CORE_REGS))
-    {
-      unsigned char buf[16*SPU_NUM_CORE_REGS];
-      char annex[32];
-      int i;
-
-      sprintf (annex, "%d/regs", fd);
-      if (spu_proc_xfer_spu (annex, buf, NULL, 0, sizeof buf) == sizeof buf)
-	for (i = 0; i < SPU_NUM_CORE_REGS; i++)
-	  supply_register (regcache, i, buf + i*16);
-    }
-}
-
-/* Store inferior registers.  */
-static void
-spu_store_registers (struct regcache *regcache, int regno)
-{
-  int fd;
-  CORE_ADDR addr;
-
-  /* ??? Some callers use 0 to mean all registers.  */
-  if (regno == 0)
-    regno = -1;
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return;
-
-  /* The NPC register is found at ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      char buf[4];
-      collect_register (regcache, SPU_PC_REGNUM, buf);
-      store_ppc_memory (addr, buf, 4);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_CORE_REGS))
-    {
-      unsigned char buf[16*SPU_NUM_CORE_REGS];
-      char annex[32];
-      int i;
-
-      for (i = 0; i < SPU_NUM_CORE_REGS; i++)
-	collect_register (regcache, i, buf + i*16);
-
-      sprintf (annex, "%d/regs", fd);
-      spu_proc_xfer_spu (annex, NULL, buf, 0, sizeof buf);
-    }
-}
-
-/* Copy LEN bytes from inferior's memory starting at MEMADDR
-   to debugger memory starting at MYADDR.  */
-static int
-spu_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int fd, ret;
-  CORE_ADDR addr;
-  char annex[32], lslr_annex[32], buf[32];
-  CORE_ADDR lslr;
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return 0;
-
-  /* Use the "mem" spufs file to access SPU local store.  */
-  sprintf (annex, "%d/mem", fd);
-  ret = spu_proc_xfer_spu (annex, myaddr, NULL, memaddr, len);
-  if (ret > 0)
-    return ret == len ? 0 : EIO;
-
-  /* SPU local store access wraps the address around at the
-     local store limit.  We emulate this here.  To avoid needing
-     an extra access to retrieve the LSLR, we only do that after
-     trying the original address first, and getting end-of-file.  */
-  sprintf (lslr_annex, "%d/lslr", fd);
-  memset (buf, 0, sizeof buf);
-  if (spu_proc_xfer_spu (lslr_annex, (unsigned char *)buf, NULL,
-			 0, sizeof buf) <= 0)
-    return ret;
-
-  lslr = strtoul (buf, NULL, 16);
-  ret = spu_proc_xfer_spu (annex, myaddr, NULL, memaddr & lslr, len);
-
-  return ret == len ? 0 : EIO;
-}
-
-/* Copy LEN bytes of data from debugger memory at MYADDR
-   to inferior's memory at MEMADDR.
-   On failure (cannot write the inferior)
-   returns the value of errno.  */
-static int
-spu_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
-  int fd, ret;
-  CORE_ADDR addr;
-  char annex[32], lslr_annex[32], buf[32];
-  CORE_ADDR lslr;
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return 0;
-
-  /* Use the "mem" spufs file to access SPU local store.  */
-  sprintf (annex, "%d/mem", fd);
-  ret = spu_proc_xfer_spu (annex, NULL, myaddr, memaddr, len);
-  if (ret > 0)
-    return ret == len ? 0 : EIO;
-
-  /* SPU local store access wraps the address around at the
-     local store limit.  We emulate this here.  To avoid needing
-     an extra access to retrieve the LSLR, we only do that after
-     trying the original address first, and getting end-of-file.  */
-  sprintf (lslr_annex, "%d/lslr", fd);
-  memset (buf, 0, sizeof buf);
-  if (spu_proc_xfer_spu (lslr_annex, (unsigned char *)buf, NULL,
-			 0, sizeof buf) <= 0)
-    return ret;
-
-  lslr = strtoul (buf, NULL, 16);
-  ret = spu_proc_xfer_spu (annex, NULL, myaddr, memaddr & lslr, len);
-
-  return ret == len ? 0 : EIO;
-}
-
-/* Look up special symbols -- unneded here.  */
-static void
-spu_look_up_symbols (void)
-{
-}
-
-/* Send signal to inferior.  */
-static void
-spu_request_interrupt (void)
-{
-  struct thread_info *thr = get_first_thread ();
-
-  syscall (SYS_tkill, lwpid_of (thr), SIGINT);
-}
-
-/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-spu_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = sizeof breakpoint;
-  return breakpoint;
-}
-
-static struct target_ops spu_target_ops = {
-  spu_create_inferior,
-  NULL,  /* post_create_inferior */
-  spu_attach,
-  spu_kill,
-  spu_detach,
-  spu_mourn,
-  spu_join,
-  spu_thread_alive,
-  spu_resume,
-  spu_wait,
-  spu_fetch_registers,
-  spu_store_registers,
-  NULL, /* prepare_to_access_memory */
-  NULL, /* done_accessing_memory */
-  spu_read_memory,
-  spu_write_memory,
-  spu_look_up_symbols,
-  spu_request_interrupt,
-  NULL,
-  NULL,  /* supports_z_point_type */
-  NULL,
-  NULL,
-  NULL, /* stopped_by_sw_breakpoint */
-  NULL, /* supports_stopped_by_sw_breakpoint */
-  NULL, /* stopped_by_hw_breakpoint */
-  NULL, /* supports_stopped_by_hw_breakpoint */
-  NULL, /* supports_hardware_single_step */
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  spu_proc_xfer_spu,
-  hostio_last_error_from_errno,
-  NULL, /* qxfer_osdata */
-  NULL, /* qxfer_siginfo */
-  NULL, /* supports_non_stop */
-  NULL, /* async */
-  NULL, /* start_non_stop */
-  NULL, /* supports_multi_process */
-  NULL, /* supports_fork_events */
-  NULL, /* supports_vfork_events */
-  NULL, /* supports_exec_events */
-  NULL, /* handle_new_gdb_connection */
-  NULL, /* handle_monitor_command */
-  NULL, /* core_of_thread */
-  NULL, /* read_loadmap */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* read_pc */
-  NULL, /* write_pc */
-  NULL, /* thread_stopped */
-  NULL, /* get_tib_address */
-  NULL, /* pause_all */
-  NULL, /* unpause_all */
-  NULL, /* stabilize_threads */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* supports_disable_randomization */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* qxfer_libraries_svr4 */
-  NULL, /* support_agent */
-  NULL, /* enable_btrace */
-  NULL, /* disable_btrace */
-  NULL, /* read_btrace */
-  NULL, /* read_btrace_conf */
-  NULL, /* supports_range_stepping */
-  NULL, /* pid_to_exec_file */
-  NULL, /* multifs_open */
-  NULL, /* multifs_unlink */
-  NULL, /* multifs_readlink */
-  NULL, /* breakpoint_kind_from_pc */
-  spu_sw_breakpoint_from_kind,
-};
-
-void
-initialize_low (void)
-{
-  set_target_ops (&spu_target_ops);
-  init_registers_spu ();
-}
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
index 67167cca2d..2df135a769 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
@@ -256,10 +256,6 @@ struct target_ops
   int (*get_tls_address) (struct thread_info *thread, CORE_ADDR offset,
 			  CORE_ADDR load_module, CORE_ADDR *address);
 
-   /* Read/Write from/to spufs using qXfer packets.  */
-  int (*qxfer_spu) (const char *annex, unsigned char *readbuf,
-		    unsigned const char *writebuf, CORE_ADDR offset, int len);
-
   /* Fill BUF with an hostio error packet representing the last hostio
      error.  */
   void (*hostio_last_error) (char *buf);
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 49c6cf1b7c..7088ba4dd1 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -1809,7 +1809,6 @@ static struct target_ops win32_target_ops = {
   win32_stopped_data_address,
   NULL, /* read_offsets */
   NULL, /* get_tls_address */
-  NULL, /* qxfer_spu */
 #ifdef _WIN32_WCE
   wince_hostio_last_error,
 #else
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 945c19f666..cd5cf1830d 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -68,10 +68,6 @@
 #include "gdbsupport/fileio.h"
 #include "gdbsupport/scope-exit.h"
 
-#ifndef SPUFS_MAGIC
-#define SPUFS_MAGIC 0x23c9b64e
-#endif
-
 /* This comment documents high-level logic of this file.
 
 Waiting for events in sync mode
@@ -3841,12 +3837,6 @@ linux_nat_xfer_osdata (enum target_object object,
 		       const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
 		       ULONGEST *xfered_len);
 
-static enum target_xfer_status
-linux_proc_xfer_spu (enum target_object object,
-		     const char *annex, gdb_byte *readbuf,
-		     const gdb_byte *writebuf,
-		     ULONGEST offset, ULONGEST len, ULONGEST *xfered_len);
-
 static enum target_xfer_status
 linux_proc_xfer_partial (enum target_object object,
 			 const char *annex, gdb_byte *readbuf,
@@ -3879,10 +3869,6 @@ linux_nat_target::xfer_partial (enum target_object object,
     return linux_nat_xfer_osdata (object, annex, readbuf, writebuf,
 				  offset, len, xfered_len);
 
-  if (object == TARGET_OBJECT_SPU)
-    return linux_proc_xfer_spu (object, annex, readbuf, writebuf,
-				offset, len, xfered_len);
-
   /* GDB calculates all addresses in the largest possible address
      width.
      The address width must be masked before its final use - either by
@@ -4020,121 +4006,6 @@ linux_proc_xfer_partial (enum target_object object,
 }
 
 
-/* Enumerate spufs IDs for process PID.  */
-static LONGEST
-spu_enumerate_spu_ids (int pid, gdb_byte *buf, ULONGEST offset, ULONGEST len)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  LONGEST pos = 0;
-  LONGEST written = 0;
-  char path[128];
-  DIR *dir;
-  struct dirent *entry;
-
-  xsnprintf (path, sizeof path, "/proc/%d/fd", pid);
-  dir = opendir (path);
-  if (!dir)
-    return -1;
-
-  rewinddir (dir);
-  while ((entry = readdir (dir)) != NULL)
-    {
-      struct stat st;
-      struct statfs stfs;
-      int fd;
-
-      fd = atoi (entry->d_name);
-      if (!fd)
-	continue;
-
-      xsnprintf (path, sizeof path, "/proc/%d/fd/%d", pid, fd);
-      if (stat (path, &st) != 0)
-	continue;
-      if (!S_ISDIR (st.st_mode))
-	continue;
-
-      if (statfs (path, &stfs) != 0)
-	continue;
-      if (stfs.f_type != SPUFS_MAGIC)
-	continue;
-
-      if (pos >= offset && pos + 4 <= offset + len)
-	{
-	  store_unsigned_integer (buf + pos - offset, 4, byte_order, fd);
-	  written += 4;
-	}
-      pos += 4;
-    }
-
-  closedir (dir);
-  return written;
-}
-
-/* Implement the to_xfer_partial interface for the TARGET_OBJECT_SPU
-   object type, using the /proc file system.  */
-
-static enum target_xfer_status
-linux_proc_xfer_spu (enum target_object object,
-		     const char *annex, gdb_byte *readbuf,
-		     const gdb_byte *writebuf,
-		     ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
-{
-  char buf[128];
-  int fd = 0;
-  int ret = -1;
-  int pid = inferior_ptid.lwp ();
-
-  if (!annex)
-    {
-      if (!readbuf)
-	return TARGET_XFER_E_IO;
-      else
-	{
-	  LONGEST l = spu_enumerate_spu_ids (pid, readbuf, offset, len);
-
-	  if (l < 0)
-	    return TARGET_XFER_E_IO;
-	  else if (l == 0)
-	    return TARGET_XFER_EOF;
-	  else
-	    {
-	      *xfered_len = (ULONGEST) l;
-	      return TARGET_XFER_OK;
-	    }
-	}
-    }
-
-  xsnprintf (buf, sizeof buf, "/proc/%d/fd/%s", pid, annex);
-  fd = gdb_open_cloexec (buf, writebuf? O_WRONLY : O_RDONLY, 0);
-  if (fd <= 0)
-    return TARGET_XFER_E_IO;
-
-  if (offset != 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
-    {
-      close (fd);
-      return TARGET_XFER_EOF;
-    }
-
-  if (writebuf)
-    ret = write (fd, writebuf, (size_t) len);
-  else if (readbuf)
-    ret = read (fd, readbuf, (size_t) len);
-
-  close (fd);
-
-  if (ret < 0)
-    return TARGET_XFER_E_IO;
-  else if (ret == 0)
-    return TARGET_XFER_EOF;
-  else
-    {
-      *xfered_len = (ULONGEST) ret;
-      return TARGET_XFER_OK;
-    }
-}
-
-
 /* Parse LINE as a signal set and add its set bits to SIGS.  */
 
 static void
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 63a9bd32df..567b01c5d1 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1413,73 +1413,6 @@ find_signalled_thread (struct thread_info *info, void *data)
   return 0;
 }
 
-/* Generate corefile notes for SPU contexts.  */
-
-static char *
-linux_spu_make_corefile_notes (bfd *obfd, char *note_data, int *note_size)
-{
-  static const char *spu_files[] =
-    {
-      "object-id",
-      "mem",
-      "regs",
-      "fpcr",
-      "lslr",
-      "decr",
-      "decr_status",
-      "signal1",
-      "signal1_type",
-      "signal2",
-      "signal2_type",
-      "event_mask",
-      "event_status",
-      "mbox_info",
-      "ibox_info",
-      "wbox_info",
-      "dma_info",
-      "proxydma_info",
-   };
-
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-
-  /* Determine list of SPU ids.  */
-  gdb::optional<gdb::byte_vector>
-    spu_ids = target_read_alloc (current_top_target (),
-				 TARGET_OBJECT_SPU, NULL);
-
-  if (!spu_ids)
-    return note_data;
-
-  /* Generate corefile notes for each SPU file.  */
-  for (size_t i = 0; i < spu_ids->size (); i += 4)
-    {
-      int fd = extract_unsigned_integer (spu_ids->data () + i, 4, byte_order);
-
-      for (size_t j = 0; j < sizeof (spu_files) / sizeof (spu_files[0]); j++)
-	{
-	  char annex[32], note_name[32];
-
-	  xsnprintf (annex, sizeof annex, "%d/%s", fd, spu_files[j]);
-	  gdb::optional<gdb::byte_vector> spu_data
-	    = target_read_alloc (current_top_target (), TARGET_OBJECT_SPU, annex);
-
-	  if (spu_data && !spu_data->empty ())
-	    {
-	      xsnprintf (note_name, sizeof note_name, "SPU/%s", annex);
-	      note_data = elfcore_write_note (obfd, note_data, note_size,
-					      note_name, NT_SPU,
-					      spu_data->data (),
-					      spu_data->size ());
-
-	      if (!note_data)
-		return nullptr;
-	    }
-	}
-    }
-
-  return note_data;
-}
-
 /* This is used to pass information from
    linux_make_mappings_corefile_notes through
    linux_find_memory_regions_full.  */
@@ -2008,11 +1941,6 @@ linux_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size)
 	return NULL;
     }
 
-  /* SPU information.  */
-  note_data = linux_spu_make_corefile_notes (obfd, note_data, note_size);
-  if (!note_data)
-    return NULL;
-
   /* File mappings.  */
   note_data = linux_make_mappings_corefile_notes (gdbarch, obfd,
 						  note_data, note_size);
diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
index f1561b3b35..508395cdb2 100644
--- a/gdb/nat/ppc-linux.h
+++ b/gdb/nat/ppc-linux.h
@@ -33,9 +33,6 @@
    If they aren't, we can provide them ourselves (their values are fixed
    because they are part of the kernel ABI).  They are used in the AT_HWCAP
    entry of the AUXV.  */
-#ifndef PPC_FEATURE_CELL
-#define PPC_FEATURE_CELL 0x00010000
-#endif
 #ifndef PPC_FEATURE_BOOKE
 #define PPC_FEATURE_BOOKE 0x00008000
 #endif
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index deb31d4989..53406f61c8 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -2646,9 +2646,6 @@ ppc_linux_nat_target::read_description ()
 	perror_with_name (_("Unable to fetch AltiVec registers"));
     }
 
-  if (hwcap & PPC_FEATURE_CELL)
-    features.cell = true;
-
   features.isa205 = ppc_linux_has_isa205 (hwcap);
 
   if ((hwcap2 & PPC_FEATURE2_DSCR)
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index c6181c9dd4..ce3c727371 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -31,7 +31,6 @@
 #include "osabi.h"
 #include "regset.h"
 #include "solib-svr4.h"
-#include "solib-spu.h"
 #include "solib.h"
 #include "solist.h"
 #include "ppc-tdep.h"
@@ -48,7 +47,6 @@
 #include "elf/common.h"
 #include "elf/ppc64.h"
 #include "arch-utils.h"
-#include "spu-tdep.h"
 #include "xml-syscall.h"
 #include "linux-tdep.h"
 #include "linux-record.h"
@@ -66,7 +64,6 @@
 
 #include "features/rs6000/powerpc-32l.c"
 #include "features/rs6000/powerpc-altivec32l.c"
-#include "features/rs6000/powerpc-cell32l.c"
 #include "features/rs6000/powerpc-vsx32l.c"
 #include "features/rs6000/powerpc-isa205-32l.c"
 #include "features/rs6000/powerpc-isa205-altivec32l.c"
@@ -76,7 +73,6 @@
 #include "features/rs6000/powerpc-isa207-htm-vsx32l.c"
 #include "features/rs6000/powerpc-64l.c"
 #include "features/rs6000/powerpc-altivec64l.c"
-#include "features/rs6000/powerpc-cell64l.c"
 #include "features/rs6000/powerpc-vsx64l.c"
 #include "features/rs6000/powerpc-isa205-64l.c"
 #include "features/rs6000/powerpc-isa205-altivec64l.c"
@@ -1555,19 +1551,12 @@ ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
     regcache_cooked_write_unsigned (regcache, PPC_TRAP_REGNUM, -1);
 }
 
-static int
-ppc_linux_spu_section (bfd *abfd, asection *asect, void *user_data)
-{
-  return startswith (bfd_section_name (asect), "SPU/");
-}
-
 static const struct target_desc *
 ppc_linux_core_read_description (struct gdbarch *gdbarch,
 				 struct target_ops *target,
 				 bfd *abfd)
 {
   struct ppc_linux_features features = ppc_linux_no_features;
-  asection *cell = bfd_sections_find_if (abfd, ppc_linux_spu_section, NULL);
   asection *altivec = bfd_get_section_by_name (abfd, ".reg-ppc-vmx");
   asection *vsx = bfd_get_section_by_name (abfd, ".reg-ppc-vsx");
   asection *section = bfd_get_section_by_name (abfd, ".reg");
@@ -1592,9 +1581,6 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch,
       return NULL;
     }
 
-  if (cell)
-    features.cell = true;
-
   if (altivec)
     features.altivec = true;
 
@@ -1743,287 +1729,6 @@ ppc_stap_parse_special_token (struct gdbarch *gdbarch,
   return 1;
 }
 
-/* Cell/B.E. active SPE context tracking support.  */
-
-static struct objfile *spe_context_objfile = NULL;
-static CORE_ADDR spe_context_lm_addr = 0;
-static CORE_ADDR spe_context_offset = 0;
-
-static ptid_t spe_context_cache_ptid;
-static CORE_ADDR spe_context_cache_address;
-
-/* Hook into inferior_created, solib_loaded, and solib_unloaded observers
-   to track whether we've loaded a version of libspe2 (as static or dynamic
-   library) that provides the __spe_current_active_context variable.  */
-static void
-ppc_linux_spe_context_lookup (struct objfile *objfile)
-{
-  struct bound_minimal_symbol sym;
-
-  if (!objfile)
-    {
-      spe_context_objfile = NULL;
-      spe_context_lm_addr = 0;
-      spe_context_offset = 0;
-      spe_context_cache_ptid = minus_one_ptid;
-      spe_context_cache_address = 0;
-      return;
-    }
-
-  sym = lookup_minimal_symbol ("__spe_current_active_context", NULL, objfile);
-  if (sym.minsym)
-    {
-      spe_context_objfile = objfile;
-      spe_context_lm_addr = svr4_fetch_objfile_link_map (objfile);
-      spe_context_offset = MSYMBOL_VALUE_RAW_ADDRESS (sym.minsym);
-      spe_context_cache_ptid = minus_one_ptid;
-      spe_context_cache_address = 0;
-      return;
-    }
-}
-
-static void
-ppc_linux_spe_context_inferior_created (struct target_ops *t, int from_tty)
-{
-  ppc_linux_spe_context_lookup (NULL);
-  for (objfile *objfile : current_program_space->objfiles ())
-    ppc_linux_spe_context_lookup (objfile);
-}
-
-static void
-ppc_linux_spe_context_solib_loaded (struct so_list *so)
-{
-  if (strstr (so->so_original_name, "/libspe") != NULL)
-    {
-      solib_read_symbols (so, 0);
-      ppc_linux_spe_context_lookup (so->objfile);
-    }
-}
-
-static void
-ppc_linux_spe_context_solib_unloaded (struct so_list *so)
-{
-  if (so->objfile == spe_context_objfile)
-    ppc_linux_spe_context_lookup (NULL);
-}
-
-/* Retrieve contents of the N'th element in the current thread's
-   linked SPE context list into ID and NPC.  Return the address of
-   said context element, or 0 if not found.  */
-static CORE_ADDR
-ppc_linux_spe_context (int wordsize, enum bfd_endian byte_order,
-		       int n, int *id, unsigned int *npc)
-{
-  CORE_ADDR spe_context = 0;
-  gdb_byte buf[16];
-  int i;
-
-  /* Quick exit if we have not found __spe_current_active_context.  */
-  if (!spe_context_objfile)
-    return 0;
-
-  /* Look up cached address of thread-local variable.  */
-  if (spe_context_cache_ptid != inferior_ptid)
-    {
-      struct target_ops *target = current_top_target ();
-
-      try
-	{
-	  /* We do not call target_translate_tls_address here, because
-	     svr4_fetch_objfile_link_map may invalidate the frame chain,
-	     which must not do while inside a frame sniffer.
-
-	     Instead, we have cached the lm_addr value, and use that to
-	     directly call the target's to_get_thread_local_address.  */
-	  spe_context_cache_address
-	    = target->get_thread_local_address (inferior_ptid,
-						spe_context_lm_addr,
-						spe_context_offset);
-	  spe_context_cache_ptid = inferior_ptid;
-	}
-
-      catch (const gdb_exception_error &ex)
-	{
-	  return 0;
-	}
-    }
-
-  /* Read variable value.  */
-  if (target_read_memory (spe_context_cache_address, buf, wordsize) == 0)
-    spe_context = extract_unsigned_integer (buf, wordsize, byte_order);
-
-  /* Cyle through to N'th linked list element.  */
-  for (i = 0; i < n && spe_context; i++)
-    if (target_read_memory (spe_context + align_up (12, wordsize),
-			    buf, wordsize) == 0)
-      spe_context = extract_unsigned_integer (buf, wordsize, byte_order);
-    else
-      spe_context = 0;
-
-  /* Read current context.  */
-  if (spe_context
-      && target_read_memory (spe_context, buf, 12) != 0)
-    spe_context = 0;
-
-  /* Extract data elements.  */
-  if (spe_context)
-    {
-      if (id)
-	*id = extract_signed_integer (buf, 4, byte_order);
-      if (npc)
-	*npc = extract_unsigned_integer (buf + 4, 4, byte_order);
-    }
-
-  return spe_context;
-}
-
-
-/* Cell/B.E. cross-architecture unwinder support.  */
-
-struct ppu2spu_cache
-{
-  struct frame_id frame_id;
-  readonly_detached_regcache *regcache;
-};
-
-static struct gdbarch *
-ppu2spu_prev_arch (struct frame_info *this_frame, void **this_cache)
-{
-  struct ppu2spu_cache *cache = (struct ppu2spu_cache *) *this_cache;
-  return cache->regcache->arch ();
-}
-
-static void
-ppu2spu_this_id (struct frame_info *this_frame,
-		 void **this_cache, struct frame_id *this_id)
-{
-  struct ppu2spu_cache *cache = (struct ppu2spu_cache *) *this_cache;
-  *this_id = cache->frame_id;
-}
-
-static struct value *
-ppu2spu_prev_register (struct frame_info *this_frame,
-		       void **this_cache, int regnum)
-{
-  struct ppu2spu_cache *cache = (struct ppu2spu_cache *) *this_cache;
-  struct gdbarch *gdbarch = cache->regcache->arch ();
-  gdb_byte *buf;
-
-  buf = (gdb_byte *) alloca (register_size (gdbarch, regnum));
-
-  cache->regcache->cooked_read (regnum, buf);
-  return frame_unwind_got_bytes (this_frame, regnum, buf);
-}
-
-struct ppu2spu_data
-{
-  struct gdbarch *gdbarch;
-  int id;
-  unsigned int npc;
-  gdb_byte gprs[128*16];
-};
-
-static enum register_status
-ppu2spu_unwind_register (ppu2spu_data *data, int regnum, gdb_byte *buf)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (data->gdbarch);
-
-  if (regnum >= 0 && regnum < SPU_NUM_GPRS)
-    memcpy (buf, data->gprs + 16*regnum, 16);
-  else if (regnum == SPU_ID_REGNUM)
-    store_unsigned_integer (buf, 4, byte_order, data->id);
-  else if (regnum == SPU_PC_REGNUM)
-    store_unsigned_integer (buf, 4, byte_order, data->npc);
-  else
-    return REG_UNAVAILABLE;
-
-  return REG_VALID;
-}
-
-static int
-ppu2spu_sniffer (const struct frame_unwind *self,
-		 struct frame_info *this_frame, void **this_prologue_cache)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct ppu2spu_data data;
-  struct frame_info *fi;
-  CORE_ADDR base, func, backchain, spe_context;
-  gdb_byte buf[8];
-  int n = 0;
-
-  /* Count the number of SPU contexts already in the frame chain.  */
-  for (fi = get_next_frame (this_frame); fi; fi = get_next_frame (fi))
-    if (get_frame_type (fi) == ARCH_FRAME
-	&& gdbarch_bfd_arch_info (get_frame_arch (fi))->arch == bfd_arch_spu)
-      n++;
-
-  base = get_frame_sp (this_frame);
-  func = get_frame_pc (this_frame);
-  if (target_read_memory (base, buf, tdep->wordsize))
-    return 0;
-  backchain = extract_unsigned_integer (buf, tdep->wordsize, byte_order);
-
-  spe_context = ppc_linux_spe_context (tdep->wordsize, byte_order,
-				       n, &data.id, &data.npc);
-  if (spe_context && base <= spe_context && spe_context < backchain)
-    {
-      char annex[32];
-
-      /* Find gdbarch for SPU.  */
-      struct gdbarch_info info;
-      gdbarch_info_init (&info);
-      info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
-      info.byte_order = BFD_ENDIAN_BIG;
-      info.osabi = GDB_OSABI_LINUX;
-      info.id = &data.id;
-      data.gdbarch = gdbarch_find_by_info (info);
-      if (!data.gdbarch)
-	return 0;
-
-      xsnprintf (annex, sizeof annex, "%d/regs", data.id);
-      if (target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		       data.gprs, 0, sizeof data.gprs)
-	  == sizeof data.gprs)
-	{
-	  auto cooked_read = [&data] (int regnum, gdb_byte *out_buf)
-	    {
-	      return ppu2spu_unwind_register (&data, regnum, out_buf);
-	    };
-	  struct ppu2spu_cache *cache
-	    = FRAME_OBSTACK_CALLOC (1, struct ppu2spu_cache);
-	  std::unique_ptr<readonly_detached_regcache> regcache
-	    (new readonly_detached_regcache (data.gdbarch, cooked_read));
-
-	  cache->frame_id = frame_id_build (base, func);
-	  cache->regcache = regcache.release ();
-	  *this_prologue_cache = cache;
-	  return 1;
-	}
-    }
-
-  return 0;
-}
-
-static void
-ppu2spu_dealloc_cache (struct frame_info *self, void *this_cache)
-{
-  struct ppu2spu_cache *cache = (struct ppu2spu_cache *) this_cache;
-  delete cache->regcache;
-}
-
-static const struct frame_unwind ppu2spu_unwind = {
-  ARCH_FRAME,
-  default_frame_unwind_stop_reason,
-  ppu2spu_this_id,
-  ppu2spu_prev_register,
-  NULL,
-  ppu2spu_sniffer,
-  ppu2spu_dealloc_cache,
-  ppu2spu_prev_arch,
-};
-
 /* Initialize linux_record_tdep if not initialized yet.
    WORDSIZE is 4 or 8 for 32- or 64-bit PowerPC Linux respectively.
    Sizes of data structures are initialized accordingly.  */
@@ -2439,21 +2144,6 @@ ppc_linux_init_abi (struct gdbarch_info info,
 	}
     }
 
-  /* Enable Cell/B.E. if supported by the target.  */
-  if (tdesc_compatible_p (info.target_desc,
-			  bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu)))
-    {
-      /* Cell/B.E. multi-architecture support.  */
-      set_spu_solib_ops (gdbarch);
-
-      /* Cell/B.E. cross-architecture unwinder support.  */
-      frame_unwind_prepend_unwinder (gdbarch, &ppu2spu_unwind);
-
-      /* We need to support more than "addr_bit" significant address bits
-         in order to support SPUADDR_ADDR encoded values.  */
-      set_gdbarch_significant_addr_bit (gdbarch, 64);
-    }
-
   set_gdbarch_displaced_step_location (gdbarch,
 				       linux_displaced_step_location);
 
@@ -2478,15 +2168,9 @@ _initialize_ppc_linux_tdep (void)
   gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
                          ppc_linux_init_abi);
 
-  /* Attach to observers to track __spe_current_active_context.  */
-  gdb::observers::inferior_created.attach (ppc_linux_spe_context_inferior_created);
-  gdb::observers::solib_loaded.attach (ppc_linux_spe_context_solib_loaded);
-  gdb::observers::solib_unloaded.attach (ppc_linux_spe_context_solib_unloaded);
-
   /* Initialize the Linux target descriptions.  */
   initialize_tdesc_powerpc_32l ();
   initialize_tdesc_powerpc_altivec32l ();
-  initialize_tdesc_powerpc_cell32l ();
   initialize_tdesc_powerpc_vsx32l ();
   initialize_tdesc_powerpc_isa205_32l ();
   initialize_tdesc_powerpc_isa205_altivec32l ();
@@ -2496,7 +2180,6 @@ _initialize_ppc_linux_tdep (void)
   initialize_tdesc_powerpc_isa207_htm_vsx32l ();
   initialize_tdesc_powerpc_64l ();
   initialize_tdesc_powerpc_altivec64l ();
-  initialize_tdesc_powerpc_cell64l ();
   initialize_tdesc_powerpc_vsx64l ();
   initialize_tdesc_powerpc_isa205_64l ();
   initialize_tdesc_powerpc_isa205_altivec64l ();
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 7184c74842..2e8b52ee75 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -1605,10 +1605,7 @@ cooked_read_test (struct gdbarch *gdbarch)
 
       SELF_CHECK (mock_target.fetch_registers_called == 0);
       SELF_CHECK (mock_target.store_registers_called == 0);
-
-      /* Some SPU pseudo registers are got via TARGET_OBJECT_SPU.  */
-      if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-	SELF_CHECK (mock_target.xfer_partial_called == 0);
+      SELF_CHECK (mock_target.xfer_partial_called == 0);
 
       mock_target.reset ();
     }
@@ -1724,16 +1721,12 @@ cooked_write_test (struct gdbarch *gdbarch)
 
       auto bfd_arch = gdbarch_bfd_arch_info (gdbarch)->arch;
 
-      if ((bfd_arch == bfd_arch_sparc
-	   /* SPARC64_CWP_REGNUM, SPARC64_PSTATE_REGNUM,
-	      SPARC64_ASI_REGNUM and SPARC64_CCR_REGNUM are hard to test.  */
-	   && gdbarch_ptr_bit (gdbarch) == 64
-	   && (regnum >= gdbarch_num_regs (gdbarch)
-	       && regnum <= gdbarch_num_regs (gdbarch) + 4))
-	  || (bfd_arch == bfd_arch_spu
-	      /* SPU pseudo registers except SPU_SP_REGNUM are got by
-		 TARGET_OBJECT_SPU.  */
-	      && regnum >= gdbarch_num_regs (gdbarch) && regnum != 130))
+      if (bfd_arch == bfd_arch_sparc
+	  /* SPARC64_CWP_REGNUM, SPARC64_PSTATE_REGNUM,
+	     SPARC64_ASI_REGNUM and SPARC64_CCR_REGNUM are hard to test.  */
+	  && gdbarch_ptr_bit (gdbarch) == 64
+	  && (regnum >= gdbarch_num_regs (gdbarch)
+	      && regnum <= gdbarch_num_regs (gdbarch) + 4))
 	continue;
 
       std::vector<gdb_byte> expected (register_size (gdbarch, regnum), 0);
diff --git a/gdb/regformats/reg-spu.dat b/gdb/regformats/reg-spu.dat
deleted file mode 100644
index fb69119cc6..0000000000
--- a/gdb/regformats/reg-spu.dat
+++ /dev/null
@@ -1,133 +0,0 @@
-name:spu
-xmlarch:spu
-expedite:r0,r1,npc
-128:r0
-128:r1
-128:r2
-128:r3
-128:r4
-128:r5
-128:r6
-128:r7
-128:r8
-128:r9
-128:r10
-128:r11
-128:r12
-128:r13
-128:r14
-128:r15
-128:r16
-128:r17
-128:r18
-128:r19
-128:r20
-128:r21
-128:r22
-128:r23
-128:r24
-128:r25
-128:r26
-128:r27
-128:r28
-128:r29
-128:r30
-128:r31
-128:r32
-128:r33
-128:r34
-128:r35
-128:r36
-128:r37
-128:r38
-128:r39
-128:r40
-128:r41
-128:r42
-128:r43
-128:r44
-128:r45
-128:r46
-128:r47
-128:r48
-128:r49
-128:r50
-128:r51
-128:r52
-128:r53
-128:r54
-128:r55
-128:r56
-128:r57
-128:r58
-128:r59
-128:r60
-128:r61
-128:r62
-128:r63
-128:r64
-128:r65
-128:r66
-128:r67
-128:r68
-128:r69
-128:r70
-128:r71
-128:r72
-128:r73
-128:r74
-128:r75
-128:r76
-128:r77
-128:r78
-128:r79
-128:r80
-128:r81
-128:r82
-128:r83
-128:r84
-128:r85
-128:r86
-128:r87
-128:r88
-128:r89
-128:r90
-128:r91
-128:r92
-128:r93
-128:r94
-128:r95
-128:r96
-128:r97
-128:r98
-128:r99
-128:r100
-128:r101
-128:r102
-128:r103
-128:r104
-128:r105
-128:r106
-128:r107
-128:r108
-128:r109
-128:r110
-128:r111
-128:r112
-128:r113
-128:r114
-128:r115
-128:r116
-128:r117
-128:r118
-128:r119
-128:r120
-128:r121
-128:r122
-128:r123
-128:r124
-128:r125
-128:r126
-128:r127
-32:id
-32:npc
diff --git a/gdb/regformats/rs6000/powerpc-cell32l.dat b/gdb/regformats/rs6000/powerpc-cell32l.dat
deleted file mode 100644
index bd28505495..0000000000
--- a/gdb/regformats/rs6000/powerpc-cell32l.dat
+++ /dev/null
@@ -1,112 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-cell32l.xml
-name:powerpc_cell32l
-xmltarget:powerpc-cell32l.xml
-expedite:r1,pc,r0,orig_r3,r4
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:r14
-32:r15
-32:r16
-32:r17
-32:r18
-32:r19
-32:r20
-32:r21
-32:r22
-32:r23
-32:r24
-32:r25
-32:r26
-32:r27
-32:r28
-32:r29
-32:r30
-32:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-32:pc
-32:msr
-32:cr
-32:lr
-32:ctr
-32:xer
-32:fpscr
-32:orig_r3
-32:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/regformats/rs6000/powerpc-cell64l.dat b/gdb/regformats/rs6000/powerpc-cell64l.dat
deleted file mode 100644
index b5b162eced..0000000000
--- a/gdb/regformats/rs6000/powerpc-cell64l.dat
+++ /dev/null
@@ -1,112 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: rs6000/powerpc-cell64l.xml
-name:powerpc_cell64l
-xmltarget:powerpc-cell64l.xml
-expedite:r1,pc,r0,orig_r3,r4
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:f0
-64:f1
-64:f2
-64:f3
-64:f4
-64:f5
-64:f6
-64:f7
-64:f8
-64:f9
-64:f10
-64:f11
-64:f12
-64:f13
-64:f14
-64:f15
-64:f16
-64:f17
-64:f18
-64:f19
-64:f20
-64:f21
-64:f22
-64:f23
-64:f24
-64:f25
-64:f26
-64:f27
-64:f28
-64:f29
-64:f30
-64:f31
-64:pc
-64:msr
-32:cr
-64:lr
-64:ctr
-32:xer
-32:fpscr
-64:orig_r3
-64:trap
-128:vr0
-128:vr1
-128:vr2
-128:vr3
-128:vr4
-128:vr5
-128:vr6
-128:vr7
-128:vr8
-128:vr9
-128:vr10
-128:vr11
-128:vr12
-128:vr13
-128:vr14
-128:vr15
-128:vr16
-128:vr17
-128:vr18
-128:vr19
-128:vr20
-128:vr21
-128:vr22
-128:vr23
-128:vr24
-128:vr25
-128:vr26
-128:vr27
-128:vr28
-128:vr29
-128:vr30
-128:vr31
-32:vscr
-32:vrsave
diff --git a/gdb/remote.c b/gdb/remote.c
index 980864e070..21160e13ac 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1970,8 +1970,6 @@ enum {
   PACKET_qXfer_libraries,
   PACKET_qXfer_libraries_svr4,
   PACKET_qXfer_memory_map,
-  PACKET_qXfer_spu_read,
-  PACKET_qXfer_spu_write,
   PACKET_qXfer_osdata,
   PACKET_qXfer_threads,
   PACKET_qXfer_statictrace_read,
@@ -5083,10 +5081,6 @@ static const struct protocol_feature remote_protocol_features[] = {
     remote_supported_packet, PACKET_augmented_libraries_svr4_read_feature },
   { "qXfer:memory-map:read", PACKET_DISABLE, remote_supported_packet,
     PACKET_qXfer_memory_map },
-  { "qXfer:spu:read", PACKET_DISABLE, remote_supported_packet,
-    PACKET_qXfer_spu_read },
-  { "qXfer:spu:write", PACKET_DISABLE, remote_supported_packet,
-    PACKET_qXfer_spu_write },
   { "qXfer:osdata:read", PACKET_DISABLE, remote_supported_packet,
     PACKET_qXfer_osdata },
   { "qXfer:threads:read", PACKET_DISABLE, remote_supported_packet,
@@ -10858,19 +10852,6 @@ remote_target::xfer_partial (enum target_object object,
 				  xfered_len);
     }
 
-  /* Handle SPU memory using qxfer packets.  */
-  if (object == TARGET_OBJECT_SPU)
-    {
-      if (readbuf)
-	return remote_read_qxfer ("spu", annex, readbuf, offset, len,
-				  xfered_len, &remote_protocol_packets
-				  [PACKET_qXfer_spu_read]);
-      else
-	return remote_write_qxfer ("spu", annex, writebuf, offset, len,
-				   xfered_len, &remote_protocol_packets
-				   [PACKET_qXfer_spu_write]);
-    }
-
   /* Handle extra signal info using qxfer packets.  */
   if (object == TARGET_OBJECT_SIGNAL_INFO)
     {
@@ -14481,12 +14462,6 @@ Show the maximum size of the address (in bits) in a memory packet."), NULL,
   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_memory_map],
 			 "qXfer:memory-map:read", "memory-map", 0);
 
-  add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_read],
-                         "qXfer:spu:read", "read-spu-object", 0);
-
-  add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_write],
-                         "qXfer:spu:write", "write-spu-object", 0);
-
   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_osdata],
                         "qXfer:osdata:read", "osdata", 0);
 
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 47a232f6c6..9123a3dc33 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -6141,16 +6141,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   int num_pseudoregs = 0;
   int cur_reg;
 
-  /* INFO may refer to a binary that is not of the PowerPC architecture,
-     e.g. when debugging a stand-alone SPE executable on a Cell/B.E. system.
-     In this case, we must not attempt to infer properties of the (PowerPC
-     side) of the target system from properties of that executable.  Trust
-     the target description instead.  */
-  if (info.abfd
-      && bfd_get_arch (info.abfd) != bfd_arch_powerpc
-      && bfd_get_arch (info.abfd) != bfd_arch_rs6000)
-    info.abfd = NULL;
-
   from_xcoff_exec = info.abfd && info.abfd->format == bfd_object &&
     bfd_get_flavour (info.abfd) == bfd_target_xcoff_flavour;
 
diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c
deleted file mode 100644
index 49e470adb6..0000000000
--- a/gdb/solib-spu.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/* Cell SPU GNU/Linux support -- shared library handling.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "solib-spu.h"
-#include "gdbcore.h"
-#include <sys/stat.h>
-#include "arch-utils.h"
-#include "bfd.h"
-#include "symtab.h"
-#include "solib.h"
-#include "solib-svr4.h"
-#include "solist.h"
-#include "inferior.h"
-#include "objfiles.h"
-#include "observable.h"
-#include "breakpoint.h"
-#include "gdbthread.h"
-#include "gdb_bfd.h"
-
-#include "spu-tdep.h"
-
-/* Highest SPE id (file handle) the inferior may have.  */
-#define MAX_SPE_FD 1024
-
-/* Stand-alone SPE executable?  */
-#define spu_standalone_p() \
-  (symfile_objfile && symfile_objfile->obfd \
-   && bfd_get_arch (symfile_objfile->obfd) == bfd_arch_spu)
-
-
-/* Relocate main SPE executable.  */
-static void
-spu_relocate_main_executable (int spufs_fd)
-{
-  struct section_offsets *new_offsets;
-  int i;
-
-  if (symfile_objfile == NULL)
-    return;
-
-  new_offsets = XALLOCAVEC (struct section_offsets,
-			    symfile_objfile->num_sections);
-
-  for (i = 0; i < symfile_objfile->num_sections; i++)
-    new_offsets->offsets[i] = SPUADDR (spufs_fd, 0);
-
-  objfile_relocate (symfile_objfile, new_offsets);
-}
-
-/* When running a stand-alone SPE executable, we may need to skip one more
-   exec event on startup, to get past the binfmt_misc loader.  */
-static void
-spu_skip_standalone_loader (void)
-{
-  if (target_has_execution && !current_inferior ()->attach_flag)
-    {
-      struct target_waitstatus ws;
-
-      /* Only some kernels report an extra SIGTRAP with the binfmt_misc
-	 loader; others do not.  In addition, if we have attached to an
-	 already running inferior instead of starting a new one, we will
-	 not see the extra SIGTRAP -- and we cannot readily distinguish
-	 the two cases, in particular with the extended-remote target.
-
-	 Thus we issue a single-step here.  If no extra SIGTRAP was pending,
-	 this will step past the first instruction of the stand-alone SPE
-	 executable loader, but we don't care about that.  */
-
-      inferior_thread ()->control.in_infcall = 1; /* Suppress MI messages.  */
-
-      target_resume (inferior_ptid, 1, GDB_SIGNAL_0);
-      target_wait (minus_one_ptid, &ws, 0);
-      set_executing (minus_one_ptid, 0);
-
-      inferior_thread ()->control.in_infcall = 0;
-    }
-}
-
-static objfile_key<CORE_ADDR, gdb::noop_deleter<CORE_ADDR>>
-  ocl_program_data_key;
-
-/* Appends OpenCL programs to the list of `struct so_list' objects.  */
-static void
-append_ocl_sos (struct so_list **link_ptr)
-{
-  CORE_ADDR *ocl_program_addr_base;
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      ocl_program_addr_base = ocl_program_data_key.get (objfile);
-      if (ocl_program_addr_base != NULL)
-        {
-	  enum bfd_endian byte_order = bfd_big_endian (objfile->obfd)?
-					 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-	  try
-	    {
-	      CORE_ADDR data =
-		read_memory_unsigned_integer (*ocl_program_addr_base,
-					      sizeof (CORE_ADDR),
-					      byte_order);
-	      if (data != 0x0)
-		{
-		  struct so_list *newobj;
-
-		  /* Allocate so_list structure.  */
-		  newobj = XCNEW (struct so_list);
-
-		  /* Encode FD and object ID in path name.  */
-		  xsnprintf (newobj->so_name, sizeof newobj->so_name, "@%s <%d>",
-			     hex_string (data),
-			     SPUADDR_SPU (*ocl_program_addr_base));
-		  strcpy (newobj->so_original_name, newobj->so_name);
-
-		  *link_ptr = newobj;
-		  link_ptr = &newobj->next;
-		}
-	    }
-	  catch (const gdb_exception &ex)
-	    {
-	      /* Ignore memory errors.  */
-	      switch (ex.error)
-		{
-		case MEMORY_ERROR:
-		  break;
-		default:
-		  throw;
-		  break;
-		}
-	    }
-	}
-    }
-}
-
-/* Build a list of `struct so_list' objects describing the shared
-   objects currently loaded in the inferior.  */
-static struct so_list *
-spu_current_sos (void)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct so_list *head;
-  struct so_list **link_ptr;
-
-  gdb_byte buf[MAX_SPE_FD * 4];
-  int i, size;
-
-  /* First, retrieve the SVR4 shared library list.  */
-  head = svr4_so_ops.current_sos ();
-
-  /* Append our libraries to the end of the list.  */
-  for (link_ptr = &head; *link_ptr; link_ptr = &(*link_ptr)->next)
-    ;
-
-  /* Determine list of SPU ids.  */
-  size = target_read (current_top_target (), TARGET_OBJECT_SPU, NULL,
-		      buf, 0, sizeof buf);
-
-  /* Do not add stand-alone SPE executable context as shared library,
-     but relocate main SPE executable objfile.  */
-  if (spu_standalone_p ())
-    {
-      if (size == 4)
-	{
-	  int fd = extract_unsigned_integer (buf, 4, byte_order);
-
-	  spu_relocate_main_executable (fd);
-
-	  /* Re-enable breakpoints after main SPU context was established;
-	     see also comments in spu_solib_create_inferior_hook.  */
-	  enable_breakpoints_after_startup ();
-	}
-
-      return head;
-    }
-
-  /* Create an so_list entry for each SPU id.  */
-  for (i = 0; i < size; i += 4)
-    {
-      int fd = extract_unsigned_integer (buf + i, 4, byte_order);
-      struct so_list *newobj;
-
-      unsigned long long addr;
-      char annex[32], id[100];
-      int len;
-
-      /* Read object ID.  There's a race window where the inferior may have
-	 already created the SPE context, but not installed the object-id
-	 yet.  Skip such entries; we'll be back for them later.  */
-      xsnprintf (annex, sizeof annex, "%d/object-id", fd);
-      len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-			 (gdb_byte *) id, 0, sizeof id);
-      if (len <= 0 || len >= sizeof id)
-	continue;
-      id[len] = 0;
-      if (sscanf (id, "0x%llx", &addr) != 1 || !addr)
-	continue;
-
-      /* Allocate so_list structure.  */
-      newobj = XCNEW (struct so_list);
-
-      /* Encode FD and object ID in path name.  Choose the name so as not
-	 to conflict with any (normal) SVR4 library path name.  */
-      xsnprintf (newobj->so_name, sizeof newobj->so_name, "@%s <%d>",
-		 hex_string (addr), fd);
-      strcpy (newobj->so_original_name, newobj->so_name);
-
-      *link_ptr = newobj;
-      link_ptr = &newobj->next;
-    }
-
-  /* Append OpenCL sos.  */
-  append_ocl_sos (link_ptr);
-
-  return head;
-}
-
-/* Free so_list information.  */
-static void
-spu_free_so (struct so_list *so)
-{
-  if (so->so_original_name[0] != '@')
-    svr4_so_ops.free_so (so);
-}
-
-/* Relocate section addresses.  */
-static void
-spu_relocate_section_addresses (struct so_list *so,
-				struct target_section *sec)
-{
-  if (so->so_original_name[0] != '@')
-    svr4_so_ops.relocate_section_addresses (so, sec);
-  else
-    {
-      unsigned long long addr;
-      int fd;
-
-      /* Set addr_low/high to just LS offset for display.  */
-      if (so->addr_low == 0 && so->addr_high == 0
-          && strcmp (sec->the_bfd_section->name, ".text") == 0)
-        {
-          so->addr_low = sec->addr;
-          so->addr_high = sec->endaddr;
-        }
-
-      /* Decode object ID.  */
-      if (sscanf (so->so_original_name, "@0x%llx <%d>", &addr, &fd) != 2)
-	internal_error (__FILE__, __LINE__, "bad object ID");
-
-      sec->addr = SPUADDR (fd, sec->addr);
-      sec->endaddr = SPUADDR (fd, sec->endaddr);
-    }
-}
-
-
-/* Inferior memory should contain an SPE executable image at location ADDR.
-   Allocate a BFD representing that executable.  Return NULL on error.  */
-
-static void *
-spu_bfd_iovec_open (bfd *nbfd, void *open_closure)
-{
-  return open_closure;
-}
-
-static int
-spu_bfd_iovec_close (bfd *nbfd, void *stream)
-{
-  xfree (stream);
-
-  /* Zero means success.  */
-  return 0;
-}
-
-static file_ptr
-spu_bfd_iovec_pread (bfd *abfd, void *stream, void *buf,
-                     file_ptr nbytes, file_ptr offset)
-{
-  CORE_ADDR addr = *(CORE_ADDR *)stream;
-  int ret;
-
-  ret = target_read_memory (addr + offset, (gdb_byte *) buf, nbytes);
-  if (ret != 0)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return -1;
-    }
-
-  return nbytes;
-}
-
-static int
-spu_bfd_iovec_stat (bfd *abfd, void *stream, struct stat *sb)
-{
-  /* We don't have an easy way of finding the size of embedded spu
-     images.  We could parse the in-memory ELF header and section
-     table to find the extent of the last section but that seems
-     pointless when the size is needed only for checks of other
-     parsed values in dbxread.c.  */
-  memset (sb, 0, sizeof (struct stat));
-  sb->st_size = INT_MAX;
-  return 0;
-}
-
-static gdb_bfd_ref_ptr
-spu_bfd_fopen (const char *name, CORE_ADDR addr)
-{
-  CORE_ADDR *open_closure = XNEW (CORE_ADDR);
-
-  *open_closure = addr;
-
-  gdb_bfd_ref_ptr nbfd (gdb_bfd_openr_iovec (name, "elf32-spu",
-					     spu_bfd_iovec_open, open_closure,
-					     spu_bfd_iovec_pread,
-					     spu_bfd_iovec_close,
-					     spu_bfd_iovec_stat));
-  if (nbfd == NULL)
-    return NULL;
-
-  if (!bfd_check_format (nbfd.get (), bfd_object))
-    return NULL;
-
-  return nbfd;
-}
-
-/* Open shared library BFD.  */
-static gdb_bfd_ref_ptr
-spu_bfd_open (const char *pathname)
-{
-  const char *original_name = strrchr (pathname, '@');
-  asection *spu_name;
-  unsigned long long addr;
-  int fd;
-
-  /* Handle regular SVR4 libraries.  */
-  if (!original_name)
-    return svr4_so_ops.bfd_open (pathname);
-
-  /* Decode object ID.  */
-  if (sscanf (original_name, "@0x%llx <%d>", &addr, &fd) != 2)
-    internal_error (__FILE__, __LINE__, "bad object ID");
-
-  /* Open BFD representing SPE executable.  */
-  gdb_bfd_ref_ptr abfd (spu_bfd_fopen (original_name, (CORE_ADDR) addr));
-  if (abfd == NULL)
-    error (_("Cannot read SPE executable at %s"), original_name);
-
-  /* Retrieve SPU name note.  */
-  spu_name = bfd_get_section_by_name (abfd.get (), ".note.spu_name");
-  if (spu_name)
-    {
-      int sect_size = bfd_section_size (spu_name);
-
-      if (sect_size > 20)
-	{
-	  char *buf
-	    = (char *) alloca (sect_size - 20 + strlen (original_name) + 1);
-
-	  bfd_get_section_contents (abfd.get (), spu_name, buf, 20,
-				    sect_size - 20);
-	  buf[sect_size - 20] = '\0';
-
-	  strcat (buf, original_name);
-
-	  bfd_set_filename (abfd.get (), xstrdup (buf));
-	}
-    }
-
-  return abfd;
-}
-
-/* Lookup global symbol in a SPE executable.  */
-static struct block_symbol
-spu_lookup_lib_symbol (struct objfile *objfile,
-		       const char *name,
-		       const domain_enum domain)
-{
-  if (bfd_get_arch (objfile->obfd) == bfd_arch_spu)
-    return lookup_global_symbol_from_objfile (objfile, GLOBAL_BLOCK, name,
-					      domain);
-
-  if (svr4_so_ops.lookup_lib_global_symbol != NULL)
-    return svr4_so_ops.lookup_lib_global_symbol (objfile, name, domain);
-  return {};
-}
-
-/* Enable shared library breakpoint.  */
-static int
-spu_enable_break (struct objfile *objfile)
-{
-  struct bound_minimal_symbol spe_event_sym;
-
-  /* The libspe library will call __spe_context_update_event whenever any
-     SPE context is allocated or destroyed.  */
-  spe_event_sym = lookup_minimal_symbol ("__spe_context_update_event",
-					 NULL, objfile);
-
-  /* Place a solib_event breakpoint on the symbol.  */
-  if (spe_event_sym.minsym)
-    {
-      CORE_ADDR addr = BMSYMBOL_VALUE_ADDRESS (spe_event_sym);
-
-      addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), addr,
-						 current_top_target ());
-      create_solib_event_breakpoint (target_gdbarch (), addr);
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Enable shared library breakpoint for the
-   OpenCL runtime running on the SPU.  */
-static void
-ocl_enable_break (struct objfile *objfile)
-{
-  struct bound_minimal_symbol event_sym;
-  struct bound_minimal_symbol addr_sym;
-
-  /* The OpenCL runtime on the SPU will call __opencl_program_update_event
-     whenever an OpenCL program is loaded.  */
-  event_sym = lookup_minimal_symbol ("__opencl_program_update_event", NULL,
-				     objfile);
-  /* The PPU address of the OpenCL program can be found
-     at opencl_elf_image_address.  */
-  addr_sym = lookup_minimal_symbol ("opencl_elf_image_address", NULL, objfile);
-
-  if (event_sym.minsym && addr_sym.minsym)
-    {
-      /* Place a solib_event breakpoint on the symbol.  */
-      CORE_ADDR event_addr = BMSYMBOL_VALUE_ADDRESS (event_sym);
-      create_solib_event_breakpoint (get_objfile_arch (objfile), event_addr);
-
-      /* Store the address of the symbol that will point to OpenCL program
-         using the per-objfile private data mechanism.  */
-      if (ocl_program_data_key.get (objfile) == NULL)
-        {
-          CORE_ADDR *ocl_program_addr_base = OBSTACK_CALLOC (
-		  &objfile->objfile_obstack,
-		  objfile->sections_end - objfile->sections,
-		  CORE_ADDR);
-	  *ocl_program_addr_base = BMSYMBOL_VALUE_ADDRESS (addr_sym);
-	  ocl_program_data_key.set (objfile, ocl_program_addr_base);
-        }
-    }
-}
-
-/* Create inferior hook.  */
-static void
-spu_solib_create_inferior_hook (int from_tty)
-{
-  /* Handle SPE stand-alone executables.  */
-  if (spu_standalone_p ())
-    {
-      /* After an SPE stand-alone executable was loaded, we'll receive
-	 an additional trap due to the binfmt_misc handler.  Make sure
-	 to skip that trap.  */
-      spu_skip_standalone_loader ();
-
-      /* If the user established breakpoints before starting the inferior, GDB
-	 would attempt to insert those now.  This would fail because the SPU
-	 context has not yet been created and the SPU executable has not yet
-	 been loaded.  To prevent such failures, we disable all user-created
-	 breakpoints now; they will be re-enabled in spu_current_sos once the
-	 main SPU context has been detected.  */
-      disable_breakpoints_before_startup ();
-
-      /* A special case arises when re-starting an executable, because at
-	 this point it still resides at the relocated address range that was
-	 determined during its last execution.  We need to undo the relocation
-	 so that that multi-architecture target recognizes the stand-alone
-	 initialization special case.  */
-      spu_relocate_main_executable (-1);
-    }
-
-  /* Call SVR4 hook -- this will re-insert the SVR4 solib breakpoints.  */
-  svr4_so_ops.solib_create_inferior_hook (from_tty);
-
-  /* If the inferior is statically linked against libspe, we need to install
-     our own solib breakpoint right now.  Otherwise, it will be installed by
-     the solib_loaded observer below as soon as libspe is loaded.  */
-  spu_enable_break (NULL);
-}
-
-/* Install SPE "shared library" handling.  This is called by -tdep code
-   that wants to support SPU as a secondary architecture.  */
-void
-set_spu_solib_ops (struct gdbarch *gdbarch)
-{
-  static struct target_so_ops spu_so_ops;
-
-  /* Initialize this lazily, to avoid an initialization order
-     dependency on solib-svr4.c's _initialize routine.  */
-  if (spu_so_ops.current_sos == NULL)
-    {
-      spu_so_ops = svr4_so_ops;
-      spu_so_ops.solib_create_inferior_hook = spu_solib_create_inferior_hook;
-      spu_so_ops.relocate_section_addresses = spu_relocate_section_addresses;
-      spu_so_ops.free_so = spu_free_so;
-      spu_so_ops.current_sos = spu_current_sos;
-      spu_so_ops.bfd_open = spu_bfd_open;
-      spu_so_ops.lookup_lib_global_symbol = spu_lookup_lib_symbol;
-    }
-
-  set_solib_ops (gdbarch, &spu_so_ops);
-}
-
-/* Observer for the solib_loaded event.  Used to install our breakpoint
-   if libspe is a shared library.  */
-static void
-spu_solib_loaded (struct so_list *so)
-{
-  if (strstr (so->so_original_name, "/libspe") != NULL)
-    {
-      solib_read_symbols (so, 0);
-      spu_enable_break (so->objfile);
-    }
-  /* In case the OpenCL runtime is loaded we install a breakpoint
-     to get notified whenever an OpenCL program gets loaded.  */
-  if (strstr (so->so_name, "CLRuntimeAccelCellSPU@") != NULL)
-    {
-      solib_read_symbols (so, 0);
-      ocl_enable_break (so->objfile);
-    }
-}
-
-void
-_initialize_spu_solib (void)
-{
-  gdb::observers::solib_loaded.attach (spu_solib_loaded);
-}
-
diff --git a/gdb/solib-spu.h b/gdb/solib-spu.h
deleted file mode 100644
index a7a65336f8..0000000000
--- a/gdb/solib-spu.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Cell SPU GNU/Linux support -- shared library handling.
-
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef SOLIB_SPU_H
-#define SOLIB_SPU_H
-
-extern void set_spu_solib_ops (struct gdbarch *gdbarch);
-
-#endif
diff --git a/gdb/spu-linux-nat.c b/gdb/spu-linux-nat.c
deleted file mode 100644
index 635366b4f1..0000000000
--- a/gdb/spu-linux-nat.c
+++ /dev/null
@@ -1,661 +0,0 @@
-/* SPU native-dependent code for GDB, the GNU debugger.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "inferior.h"
-#include "inf-child.h"
-#include "inf-ptrace.h"
-#include "regcache.h"
-#include "symfile.h"
-#include "gdbsupport/gdb_wait.h"
-#include "gdbthread.h"
-#include "gdb_bfd.h"
-
-#include "nat/gdb_ptrace.h"
-#include <asm/ptrace.h>
-#include <sys/types.h>
-
-#include "spu-tdep.h"
-
-/* PPU side system calls.  */
-#define INSTR_SC	0x44000002
-#define NR_spu_run	0x0116
-
-class spu_linux_nat_target final : public inf_ptrace_target
-{
-public:
-  void fetch_registers (struct regcache *regcache, int regnum) override;
-  void store_registers (struct regcache *regcache, int regnum) override;
-
-  void post_attach (int) override;
-  void post_startup_inferior (ptid_t) override;
-
-  ptid_t wait (ptid_t, struct target_waitstatus *, int options) override;
-
-  enum target_xfer_status xfer_partial (enum target_object object,
-					const char *annex,
-					gdb_byte *readbuf,
-					const gdb_byte *writebuf,
-					ULONGEST offset, ULONGEST len,
-					ULONGEST *xfered_len) override;
-
-  int can_use_hw_breakpoint (enum bptype, int, int) override;
-};
-
-static spu_linux_nat_target the_spu_linux_nat_target;
-
-/* Fetch PPU register REGNO.  */
-static ULONGEST
-fetch_ppc_register (int regno)
-{
-  PTRACE_TYPE_RET res;
-
-  int tid = inferior_ptid.lwp ();
-  if (tid == 0)
-    tid = inferior_ptid.pid ();
-
-#ifndef __powerpc64__
-  /* If running as a 32-bit process on a 64-bit system, we attempt
-     to get the full 64-bit register content of the target process.
-     If the PPC special ptrace call fails, we're on a 32-bit system;
-     just fall through to the regular ptrace call in that case.  */
-  {
-    gdb_byte buf[8];
-
-    errno = 0;
-    ptrace (PPC_PTRACE_PEEKUSR_3264, tid,
-	    (PTRACE_TYPE_ARG3) (regno * 8), buf);
-    if (errno == 0)
-      ptrace (PPC_PTRACE_PEEKUSR_3264, tid,
-	      (PTRACE_TYPE_ARG3) (regno * 8 + 4), buf + 4);
-    if (errno == 0)
-      return (ULONGEST) *(uint64_t *)buf;
-  }
-#endif
-
-  errno = 0;
-  res = ptrace (PT_READ_U, tid,
-	 	(PTRACE_TYPE_ARG3) (regno * sizeof (PTRACE_TYPE_RET)), 0);
-  if (errno != 0)
-    {
-      char mess[128];
-      xsnprintf (mess, sizeof mess, "reading PPC register #%d", regno);
-      perror_with_name (_(mess));
-    }
-
-  return (ULONGEST) (unsigned long) res;
-}
-
-/* Fetch WORD from PPU memory at (aligned) MEMADDR in thread TID.  */
-static int
-fetch_ppc_memory_1 (int tid, ULONGEST memaddr, PTRACE_TYPE_RET *word)
-{
-  errno = 0;
-
-#ifndef __powerpc64__
-  if (memaddr >> 32)
-    {
-      uint64_t addr_8 = (uint64_t) memaddr;
-      ptrace (PPC_PTRACE_PEEKTEXT_3264, tid, (PTRACE_TYPE_ARG3) &addr_8, word);
-    }
-  else
-#endif
-    *word = ptrace (PT_READ_I, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, 0);
-
-  return errno;
-}
-
-/* Store WORD into PPU memory at (aligned) MEMADDR in thread TID.  */
-static int
-store_ppc_memory_1 (int tid, ULONGEST memaddr, PTRACE_TYPE_RET word)
-{
-  errno = 0;
-
-#ifndef __powerpc64__
-  if (memaddr >> 32)
-    {
-      uint64_t addr_8 = (uint64_t) memaddr;
-      ptrace (PPC_PTRACE_POKEDATA_3264, tid, (PTRACE_TYPE_ARG3) &addr_8, word);
-    }
-  else
-#endif
-    ptrace (PT_WRITE_D, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, word);
-
-  return errno;
-}
-
-/* Fetch LEN bytes of PPU memory at MEMADDR to MYADDR.  */
-static int
-fetch_ppc_memory (ULONGEST memaddr, gdb_byte *myaddr, int len)
-{
-  int i, ret;
-
-  ULONGEST addr = memaddr & -(ULONGEST) sizeof (PTRACE_TYPE_RET);
-  int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
-	       / sizeof (PTRACE_TYPE_RET));
-  PTRACE_TYPE_RET *buffer;
-
-  int tid = inferior_ptid.lwp ();
-  if (tid == 0)
-    tid = inferior_ptid.pid ();
-
-  buffer = (PTRACE_TYPE_RET *) alloca (count * sizeof (PTRACE_TYPE_RET));
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
-    {
-      ret = fetch_ppc_memory_1 (tid, addr, &buffer[i]);
-      if (ret)
-	return ret;
-    }
-
-  memcpy (myaddr,
-	  (char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
-	  len);
-
-  return 0;
-}
-
-/* Store LEN bytes from MYADDR to PPU memory at MEMADDR.  */
-static int
-store_ppc_memory (ULONGEST memaddr, const gdb_byte *myaddr, int len)
-{
-  int i, ret;
-
-  ULONGEST addr = memaddr & -(ULONGEST) sizeof (PTRACE_TYPE_RET);
-  int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
-	       / sizeof (PTRACE_TYPE_RET));
-  PTRACE_TYPE_RET *buffer;
-
-  int tid = inferior_ptid.lwp ();
-  if (tid == 0)
-    tid = inferior_ptid.pid ();
-
-  buffer = (PTRACE_TYPE_RET *) alloca (count * sizeof (PTRACE_TYPE_RET));
-
-  if (addr != memaddr || len < (int) sizeof (PTRACE_TYPE_RET))
-    {
-      ret = fetch_ppc_memory_1 (tid, addr, &buffer[0]);
-      if (ret)
-	return ret;
-    }
-
-  if (count > 1)
-    {
-      ret = fetch_ppc_memory_1 (tid, addr + (count - 1)
-					       * sizeof (PTRACE_TYPE_RET),
-				&buffer[count - 1]);
-      if (ret)
-	return ret;
-    }
-
-  memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
-          myaddr, len);
-
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
-    {
-      ret = store_ppc_memory_1 (tid, addr, buffer[i]);
-      if (ret)
-	return ret;
-    }
-
-  return 0;
-}
-
-
-/* If the PPU thread is currently stopped on a spu_run system call,
-   return to FD and ADDR the file handle and NPC parameter address
-   used with the system call.  Return non-zero if successful.  */
-static int 
-parse_spufs_run (int *fd, ULONGEST *addr)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  gdb_byte buf[4];
-  ULONGEST pc = fetch_ppc_register (32);  /* nip */
-
-  /* Fetch instruction preceding current NIP.  */
-  if (fetch_ppc_memory (pc-4, buf, 4) != 0)
-    return 0;
-  /* It should be a "sc" instruction.  */
-  if (extract_unsigned_integer (buf, 4, byte_order) != INSTR_SC)
-    return 0;
-  /* System call number should be NR_spu_run.  */
-  if (fetch_ppc_register (0) != NR_spu_run)
-    return 0;
-
-  /* Register 3 contains fd, register 4 the NPC param pointer.  */
-  *fd = fetch_ppc_register (34);  /* orig_gpr3 */
-  *addr = fetch_ppc_register (4);
-  return 1;
-}
-
-
-/* Implement the to_xfer_partial target_ops method for TARGET_OBJECT_SPU.
-   Copy LEN bytes at OFFSET in spufs file ANNEX into/from READBUF or WRITEBUF,
-   using the /proc file system.  */
-
-static enum target_xfer_status
-spu_proc_xfer_spu (const char *annex, gdb_byte *readbuf,
-		   const gdb_byte *writebuf,
-		   ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
-{
-  char buf[128];
-  int fd = 0;
-  int ret = -1;
-  int pid = inferior_ptid.pid ();
-
-  if (!annex)
-    return TARGET_XFER_EOF;
-
-  xsnprintf (buf, sizeof buf, "/proc/%d/fd/%s", pid, annex);
-  fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
-  if (fd <= 0)
-    return TARGET_XFER_E_IO;
-
-  if (offset != 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
-    {
-      close (fd);
-      return TARGET_XFER_EOF;
-    }
-
-  if (writebuf)
-    ret = write (fd, writebuf, (size_t) len);
-  else if (readbuf)
-    ret = read (fd, readbuf, (size_t) len);
-
-  close (fd);
-  if (ret < 0)
-    return TARGET_XFER_E_IO;
-  else if (ret == 0)
-    return TARGET_XFER_EOF;
-  else
-    {
-      *xfered_len = (ULONGEST) ret;
-      return TARGET_XFER_OK;
-    }
-}
-
-
-/* Inferior memory should contain an SPE executable image at location ADDR.
-   Allocate a BFD representing that executable.  Return NULL on error.  */
-
-static void *
-spu_bfd_iovec_open (struct bfd *nbfd, void *open_closure)
-{
-  return open_closure;
-}
-
-static int
-spu_bfd_iovec_close (struct bfd *nbfd, void *stream)
-{
-  xfree (stream);
-
-  /* Zero means success.  */
-  return 0;
-}
-
-static file_ptr
-spu_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf,
-	             file_ptr nbytes, file_ptr offset)
-{
-  ULONGEST addr = *(ULONGEST *)stream;
-
-  if (fetch_ppc_memory (addr + offset, (gdb_byte *)buf, nbytes) != 0)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return -1;
-    }
-
-  return nbytes;
-}
-
-static int
-spu_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb)
-{
-  /* We don't have an easy way of finding the size of embedded spu
-     images.  We could parse the in-memory ELF header and section
-     table to find the extent of the last section but that seems
-     pointless when the size is needed only for checks of other
-     parsed values in dbxread.c.  */
-  memset (sb, 0, sizeof (struct stat));
-  sb->st_size = INT_MAX;
-  return 0;
-}
-
-static gdb_bfd_ref_ptr
-spu_bfd_open (ULONGEST addr)
-{
-  asection *spu_name;
-
-  ULONGEST *open_closure = XNEW (ULONGEST);
-  *open_closure = addr;
-
-  gdb_bfd_ref_ptr nbfd (gdb_bfd_openr_iovec ("<in-memory>", "elf32-spu",
-					     spu_bfd_iovec_open, open_closure,
-					     spu_bfd_iovec_pread,
-					     spu_bfd_iovec_close,
-					     spu_bfd_iovec_stat));
-  if (nbfd == NULL)
-    return NULL;
-
-  if (!bfd_check_format (nbfd.get (), bfd_object))
-    return NULL;
-
-  /* Retrieve SPU name note and update BFD name.  */
-  spu_name = bfd_get_section_by_name (nbfd.get (), ".note.spu_name");
-  if (spu_name)
-    {
-      int sect_size = bfd_section_size (spu_name);
-      if (sect_size > 20)
-	{
-	  char *buf = (char *)alloca (sect_size - 20 + 1);
-	  bfd_get_section_contents (nbfd.get (), spu_name, buf, 20,
-				    sect_size - 20);
-	  buf[sect_size - 20] = '\0';
-
-	  bfd_set_filename (nbfd.get (), xstrdup (buf));
-	}
-    }
-
-  return nbfd;
-}
-
-/* INFERIOR_FD is a file handle passed by the inferior to the
-   spu_run system call.  Assuming the SPE context was allocated
-   by the libspe library, try to retrieve the main SPE executable
-   file from its copy within the target process.  */
-static void
-spu_symbol_file_add_from_memory (int inferior_fd)
-{
-  ULONGEST addr;
-
-  gdb_byte id[128];
-  char annex[32];
-  ULONGEST len;
-  enum target_xfer_status status;
-
-  /* Read object ID.  */
-  xsnprintf (annex, sizeof annex, "%d/object-id", inferior_fd);
-  status = spu_proc_xfer_spu (annex, id, NULL, 0, sizeof id, &len);
-  if (status != TARGET_XFER_OK || len >= sizeof id)
-    return;
-  id[len] = 0;
-  addr = strtoulst ((const char *) id, NULL, 16);
-  if (!addr)
-    return;
-
-  /* Open BFD representing SPE executable and read its symbols.  */
-  gdb_bfd_ref_ptr nbfd (spu_bfd_open (addr));
-  if (nbfd != NULL)
-    {
-      symbol_file_add_from_bfd (nbfd.get (), bfd_get_filename (nbfd),
-				SYMFILE_VERBOSE | SYMFILE_MAINLINE,
-				NULL, 0, NULL);
-    }
-}
-
-
-/* Override the post_startup_inferior routine to continue running
-   the inferior until the first spu_run system call.  */
-void
-spu_linux_nat_target::post_startup_inferior (ptid_t ptid)
-{
-  int fd;
-  ULONGEST addr;
-
-  int tid = ptid.lwp ();
-  if (tid == 0)
-    tid = ptid.pid ();
-  
-  while (!parse_spufs_run (&fd, &addr))
-    {
-      ptrace (PT_SYSCALL, tid, (PTRACE_TYPE_ARG3) 0, 0);
-      waitpid (tid, NULL, __WALL | __WNOTHREAD);
-    }
-}
-
-/* Override the post_attach routine to try load the SPE executable
-   file image from its copy inside the target process.  */
-void
-spu_linux_nat_target::post_attach (int pid)
-{
-  int fd;
-  ULONGEST addr;
-
-  /* Like child_post_startup_inferior, if we happened to attach to
-     the inferior while it wasn't currently in spu_run, continue 
-     running it until we get back there.  */
-  while (!parse_spufs_run (&fd, &addr))
-    {
-      ptrace (PT_SYSCALL, pid, (PTRACE_TYPE_ARG3) 0, 0);
-      waitpid (pid, NULL, __WALL | __WNOTHREAD);
-    }
-
-  /* If the user has not provided an executable file, try to extract
-     the image from inside the target process.  */
-  if (!get_exec_file (0))
-    spu_symbol_file_add_from_memory (fd);
-}
-
-/* Wait for child PTID to do something.  Return id of the child,
-   minus_one_ptid in case of error; store status into *OURSTATUS.  */
-ptid_t
-spu_linux_nat_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
-			    int options)
-{
-  int save_errno;
-  int status;
-  pid_t pid;
-
-  do
-    {
-      set_sigint_trap ();	/* Causes SIGINT to be passed on to the
-				   attached process.  */
-
-      pid = waitpid (ptid.pid (), &status, 0);
-      if (pid == -1 && errno == ECHILD)
-	/* Try again with __WCLONE to check cloned processes.  */
-	pid = waitpid (ptid.pid (), &status, __WCLONE);
-
-      save_errno = errno;
-
-      /* Make sure we don't report an event for the exit of the
-         original program, if we've detached from it.  */
-      if (pid != -1 && !WIFSTOPPED (status)
-	  && pid != inferior_ptid.pid ())
-	{
-	  pid = -1;
-	  save_errno = EINTR;
-	}
-
-      clear_sigint_trap ();
-    }
-  while (pid == -1 && save_errno == EINTR);
-
-  if (pid == -1)
-    {
-      warning (_("Child process unexpectedly missing: %s"),
-	       safe_strerror (save_errno));
-
-      /* Claim it exited with unknown signal.  */
-      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-      ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
-      return inferior_ptid;
-    }
-
-  store_waitstatus (ourstatus, status);
-  return ptid_t (pid);
-}
-
-/* Override the fetch_inferior_register routine.  */
-void
-spu_linux_nat_target::fetch_registers (struct regcache *regcache, int regno)
-{
-  int fd;
-  ULONGEST addr;
-
-  /* Since we use functions that rely on inferior_ptid, we need to set and
-     restore it.  */
-  scoped_restore save_ptid
-    = make_scoped_restore (&inferior_ptid, regcache->ptid ());
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return;
-
-  /* The ID register holds the spufs file handle.  */
-  if (regno == -1 || regno == SPU_ID_REGNUM)
-    {
-      struct gdbarch *gdbarch = regcache->arch ();
-      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-      gdb_byte buf[4];
-      store_unsigned_integer (buf, 4, byte_order, fd);
-      regcache->raw_supply (SPU_ID_REGNUM, buf);
-    }
-
-  /* The NPC register is found at ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      gdb_byte buf[4];
-      if (fetch_ppc_memory (addr, buf, 4) == 0)
-	regcache->raw_supply (SPU_PC_REGNUM, buf);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_GPRS))
-    {
-      gdb_byte buf[16 * SPU_NUM_GPRS];
-      char annex[32];
-      int i;
-      ULONGEST len;
-
-      xsnprintf (annex, sizeof annex, "%d/regs", fd);
-      if ((spu_proc_xfer_spu (annex, buf, NULL, 0, sizeof buf, &len)
-	   == TARGET_XFER_OK)
-	  && len == sizeof buf)
-	for (i = 0; i < SPU_NUM_GPRS; i++)
-	  regcache->raw_supply (i, buf + i*16);
-    }
-}
-
-/* Override the store_inferior_register routine.  */
-void
-spu_linux_nat_target::store_registers (struct regcache *regcache, int regno)
-{
-  int fd;
-  ULONGEST addr;
-
-  /* Since we use functions that rely on inferior_ptid, we need to set and
-     restore it.  */
-  scoped_restore save_ptid
-    = make_scoped_restore (&inferior_ptid, regcache->ptid ());
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (&fd, &addr))
-    return;
-
-  /* The NPC register is found at ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      gdb_byte buf[4];
-      regcache->raw_collect (SPU_PC_REGNUM, buf);
-      store_ppc_memory (addr, buf, 4);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_GPRS))
-    {
-      gdb_byte buf[16 * SPU_NUM_GPRS];
-      char annex[32];
-      int i;
-      ULONGEST len;
-
-      for (i = 0; i < SPU_NUM_GPRS; i++)
-	regcache->raw_collect (i, buf + i*16);
-
-      xsnprintf (annex, sizeof annex, "%d/regs", fd);
-      spu_proc_xfer_spu (annex, NULL, buf, 0, sizeof buf, &len);
-    }
-}
-
-/* Override the to_xfer_partial routine.  */
-enum target_xfer_status
-spu_linux_nat_target::xfer_partial (enum target_object object, const char *annex,
-				    gdb_byte *readbuf, const gdb_byte *writebuf,
-				    ULONGEST offset, ULONGEST len,
-				    ULONGEST *xfered_len)
-{
-  if (object == TARGET_OBJECT_SPU)
-    return spu_proc_xfer_spu (annex, readbuf, writebuf, offset, len,
-			      xfered_len);
-
-  if (object == TARGET_OBJECT_MEMORY)
-    {
-      int fd;
-      ULONGEST addr;
-      char mem_annex[32], lslr_annex[32];
-      gdb_byte buf[32];
-      ULONGEST lslr;
-      enum target_xfer_status ret;
-
-      /* We must be stopped on a spu_run system call.  */
-      if (!parse_spufs_run (&fd, &addr))
-	return TARGET_XFER_EOF;
-
-      /* Use the "mem" spufs file to access SPU local store.  */
-      xsnprintf (mem_annex, sizeof mem_annex, "%d/mem", fd);
-      ret = spu_proc_xfer_spu (mem_annex, readbuf, writebuf, offset, len,
-			       xfered_len);
-      if (ret == TARGET_XFER_OK)
-	return ret;
-
-      /* SPU local store access wraps the address around at the
-	 local store limit.  We emulate this here.  To avoid needing
-	 an extra access to retrieve the LSLR, we only do that after
-	 trying the original address first, and getting end-of-file.  */
-      xsnprintf (lslr_annex, sizeof lslr_annex, "%d/lslr", fd);
-      memset (buf, 0, sizeof buf);
-      if (spu_proc_xfer_spu (lslr_annex, buf, NULL, 0, sizeof buf, xfered_len)
-	  != TARGET_XFER_OK)
-	return ret;
-
-      lslr = strtoulst ((const char *) buf, NULL, 16);
-      return spu_proc_xfer_spu (mem_annex, readbuf, writebuf,
-				offset & lslr, len, xfered_len);
-    }
-
-  return TARGET_XFER_E_IO;
-}
-
-/* Override the to_can_use_hw_breakpoint routine.  */
-int
-spu_linux_nat_target::can_use_hw_breakpoint (enum bptype type,
-					     int cnt, int othertype)
-{
-  return 0;
-}
-
-/* Initialize SPU native target.  */
-void 
-_initialize_spu_nat (void)
-{
-  add_inf_child_target (&the_spu_linux_nat_target);
-}
diff --git a/gdb/spu-multiarch.c b/gdb/spu-multiarch.c
deleted file mode 100644
index 88ad291dbd..0000000000
--- a/gdb/spu-multiarch.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/* Cell SPU GNU/Linux multi-architecture debugging support.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "gdbcmd.h"
-#include "arch-utils.h"
-#include "observable.h"
-#include "inferior.h"
-#include "regcache.h"
-#include "symfile.h"
-#include "objfiles.h"
-#include "solib.h"
-#include "solist.h"
-
-#include "ppc-tdep.h"
-#include "ppc-linux-tdep.h"
-#include "spu-tdep.h"
-
-/* The SPU multi-architecture support target.  */
-
-static const target_info spu_multiarch_target_info = {
-  "spu",
-  N_("SPU multi-architecture support."),
-  N_("SPU multi-architecture support.")
-};
-
-struct spu_multiarch_target final : public target_ops
-{
-  const target_info &info () const override
-  { return spu_multiarch_target_info; }
-
-  strata stratum () const override { return arch_stratum; }
-
-  void mourn_inferior () override;
-
-  void fetch_registers (struct regcache *, int) override;
-  void store_registers (struct regcache *, int) override;
-
-  enum target_xfer_status xfer_partial (enum target_object object,
-					const char *annex,
-					gdb_byte *readbuf,
-					const gdb_byte *writebuf,
-					ULONGEST offset, ULONGEST len,
-					ULONGEST *xfered_len) override;
-
-  int search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
-		     const gdb_byte *pattern, ULONGEST pattern_len,
-		     CORE_ADDR *found_addrp) override;
-
-  int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
-
-  struct gdbarch *thread_architecture (ptid_t) override;
-};
-
-static spu_multiarch_target spu_ops;
-
-/* Number of SPE objects loaded into the current inferior.  */
-static int spu_nr_solib;
-
-/* Stand-alone SPE executable?  */
-#define spu_standalone_p() \
-  (symfile_objfile && symfile_objfile->obfd \
-   && bfd_get_arch (symfile_objfile->obfd) == bfd_arch_spu)
-
-/* PPU side system calls.  */
-#define INSTR_SC	0x44000002
-#define NR_spu_run	0x0116
-
-/* If the PPU thread is currently stopped on a spu_run system call,
-   return to FD and ADDR the file handle and NPC parameter address
-   used with the system call.  Return non-zero if successful.  */
-static int
-parse_spufs_run (ptid_t ptid, int *fd, CORE_ADDR *addr)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  struct gdbarch_tdep *tdep;
-  struct regcache *regcache;
-  gdb_byte buf[4];
-  ULONGEST regval;
-
-  /* If we're not on PPU, there's nothing to detect.  */
-  if (gdbarch_bfd_arch_info (target_gdbarch ())->arch != bfd_arch_powerpc)
-    return 0;
-
-  /* If we're called too early (e.g. after fork), we cannot
-     access the inferior yet.  */
-  if (find_inferior_ptid (ptid) == NULL)
-    return 0;
-
-  /* Get PPU-side registers.  */
-  regcache = get_thread_arch_regcache (ptid, target_gdbarch ());
-  tdep = gdbarch_tdep (target_gdbarch ());
-
-  /* Fetch instruction preceding current NIP.  */
-  {
-    scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-    inferior_ptid = ptid;
-    regval = target_read_memory (regcache_read_pc (regcache) - 4, buf, 4);
-  }
-  if (regval != 0)
-    return 0;
-  /* It should be a "sc" instruction.  */
-  if (extract_unsigned_integer (buf, 4, byte_order) != INSTR_SC)
-    return 0;
-  /* System call number should be NR_spu_run.  */
-  regcache_cooked_read_unsigned (regcache, tdep->ppc_gp0_regnum, &regval);
-  if (regval != NR_spu_run)
-    return 0;
-
-  /* Register 3 contains fd, register 4 the NPC param pointer.  */
-  regcache_cooked_read_unsigned (regcache, PPC_ORIG_R3_REGNUM, &regval);
-  *fd = (int) regval;
-  regcache_cooked_read_unsigned (regcache, tdep->ppc_gp0_regnum + 4, &regval);
-  *addr = (CORE_ADDR) regval;
-  return 1;
-}
-
-/* Find gdbarch for SPU context SPUFS_FD.  */
-static struct gdbarch *
-spu_gdbarch (int spufs_fd)
-{
-  struct gdbarch_info info;
-  gdbarch_info_init (&info);
-  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
-  info.byte_order = BFD_ENDIAN_BIG;
-  info.osabi = GDB_OSABI_LINUX;
-  info.id = &spufs_fd;
-  return gdbarch_find_by_info (info);
-}
-
-/* Override the to_thread_architecture routine.  */
-struct gdbarch *
-spu_multiarch_target::thread_architecture (ptid_t ptid)
-{
-  int spufs_fd;
-  CORE_ADDR spufs_addr;
-
-  if (parse_spufs_run (ptid, &spufs_fd, &spufs_addr))
-    return spu_gdbarch (spufs_fd);
-
-  return beneath ()->thread_architecture (ptid);
-}
-
-/* Override the to_region_ok_for_hw_watchpoint routine.  */
-
-int
-spu_multiarch_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
-{
-  /* We cannot watch SPU local store.  */
-  if (SPUADDR_SPU (addr) != -1)
-    return 0;
-
-  return beneath ()->region_ok_for_hw_watchpoint (addr, len);
-}
-
-/* Override the to_fetch_registers routine.  */
-
-void
-spu_multiarch_target::fetch_registers (struct regcache *regcache, int regno)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  int spufs_fd;
-  CORE_ADDR spufs_addr;
-
-  /* Since we use functions that rely on inferior_ptid, we need to set and
-     restore it.  */
-  scoped_restore save_ptid
-    = make_scoped_restore (&inferior_ptid, regcache->ptid ());
-
-  /* This version applies only if we're currently in spu_run.  */
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    {
-      beneath ()->fetch_registers (regcache, regno);
-      return;
-    }
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (inferior_ptid, &spufs_fd, &spufs_addr))
-    return;
-
-  /* The ID register holds the spufs file handle.  */
-  if (regno == -1 || regno == SPU_ID_REGNUM)
-    {
-      gdb_byte buf[4];
-      store_unsigned_integer (buf, 4, byte_order, spufs_fd);
-      regcache->raw_supply (SPU_ID_REGNUM, buf);
-    }
-
-  /* The NPC register is found in PPC memory at SPUFS_ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      gdb_byte buf[4];
-
-      if (target_read (beneath (), TARGET_OBJECT_MEMORY, NULL,
-		       buf, spufs_addr, sizeof buf) == sizeof buf)
-	regcache->raw_supply (SPU_PC_REGNUM, buf);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_GPRS))
-    {
-      gdb_byte buf[16 * SPU_NUM_GPRS];
-      char annex[32];
-      int i;
-
-      xsnprintf (annex, sizeof annex, "%d/regs", spufs_fd);
-      if (target_read (beneath (), TARGET_OBJECT_SPU, annex,
-		       buf, 0, sizeof buf) == sizeof buf)
-	for (i = 0; i < SPU_NUM_GPRS; i++)
-	  regcache->raw_supply (i, buf + i*16);
-    }
-}
-
-/* Override the to_store_registers routine.  */
-
-void
-spu_multiarch_target::store_registers (struct regcache *regcache, int regno)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  int spufs_fd;
-  CORE_ADDR spufs_addr;
-
-  /* Since we use functions that rely on inferior_ptid, we need to set and
-     restore it.  */
-  scoped_restore save_ptid
-    = make_scoped_restore (&inferior_ptid, regcache->ptid ());
-
-  /* This version applies only if we're currently in spu_run.  */
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    {
-      beneath ()->store_registers (regcache, regno);
-      return;
-    }
-
-  /* We must be stopped on a spu_run system call.  */
-  if (!parse_spufs_run (inferior_ptid, &spufs_fd, &spufs_addr))
-    return;
-
-  /* The NPC register is found in PPC memory at SPUFS_ADDR.  */
-  if (regno == -1 || regno == SPU_PC_REGNUM)
-    {
-      gdb_byte buf[4];
-      regcache->raw_collect (SPU_PC_REGNUM, buf);
-
-      target_write (beneath (), TARGET_OBJECT_MEMORY, NULL,
-		    buf, spufs_addr, sizeof buf);
-    }
-
-  /* The GPRs are found in the "regs" spufs file.  */
-  if (regno == -1 || (regno >= 0 && regno < SPU_NUM_GPRS))
-    {
-      gdb_byte buf[16 * SPU_NUM_GPRS];
-      char annex[32];
-      int i;
-
-      for (i = 0; i < SPU_NUM_GPRS; i++)
-	regcache->raw_collect (i, buf + i*16);
-
-      xsnprintf (annex, sizeof annex, "%d/regs", spufs_fd);
-      target_write (beneath (), TARGET_OBJECT_SPU, annex,
-		    buf, 0, sizeof buf);
-    }
-}
-
-/* Override the to_xfer_partial routine.  */
-
-enum target_xfer_status
-spu_multiarch_target::xfer_partial (enum target_object object,
-				    const char *annex, gdb_byte *readbuf,
-				    const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
-				    ULONGEST *xfered_len)
-{
-  struct target_ops *ops_beneath = this->beneath ();
-
-  /* Use the "mem" spufs file to access SPU local store.  */
-  if (object == TARGET_OBJECT_MEMORY)
-    {
-      int fd = SPUADDR_SPU (offset);
-      CORE_ADDR addr = SPUADDR_ADDR (offset);
-      char mem_annex[32], lslr_annex[32];
-      gdb_byte buf[32];
-      ULONGEST lslr;
-      enum target_xfer_status ret;
-
-      if (fd >= 0)
-	{
-	  xsnprintf (mem_annex, sizeof mem_annex, "%d/mem", fd);
-	  ret = ops_beneath->xfer_partial (TARGET_OBJECT_SPU,
-					   mem_annex, readbuf, writebuf,
-					   addr, len, xfered_len);
-	  if (ret == TARGET_XFER_OK)
-	    return ret;
-
-	  /* SPU local store access wraps the address around at the
-	     local store limit.  We emulate this here.  To avoid needing
-	     an extra access to retrieve the LSLR, we only do that after
-	     trying the original address first, and getting end-of-file.  */
-	  xsnprintf (lslr_annex, sizeof lslr_annex, "%d/lslr", fd);
-	  memset (buf, 0, sizeof buf);
-	  if (ops_beneath->xfer_partial (TARGET_OBJECT_SPU,
-					 lslr_annex, buf, NULL,
-					 0, sizeof buf, xfered_len)
-	      != TARGET_XFER_OK)
-	    return ret;
-
-	  lslr = strtoulst ((char *) buf, NULL, 16);
-	  return ops_beneath->xfer_partial (TARGET_OBJECT_SPU,
-					    mem_annex, readbuf, writebuf,
-					    addr & lslr, len, xfered_len);
-	}
-    }
-
-  return ops_beneath->xfer_partial (object, annex,
-				    readbuf, writebuf, offset, len, xfered_len);
-}
-
-/* Override the to_search_memory routine.  */
-int
-spu_multiarch_target::search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
-				     const gdb_byte *pattern, ULONGEST pattern_len,
-				     CORE_ADDR *found_addrp)
-{
-  /* For SPU local store, always fall back to the simple method.  */
-  if (SPUADDR_SPU (start_addr) >= 0)
-    return simple_search_memory (this, start_addr, search_space_len,
-				 pattern, pattern_len, found_addrp);
-
-  return beneath ()->search_memory (start_addr, search_space_len,
-				    pattern, pattern_len, found_addrp);
-}
-
-
-/* Push and pop the SPU multi-architecture support target.  */
-
-static void
-spu_multiarch_activate (void)
-{
-  /* If GDB was configured without SPU architecture support,
-     we cannot install SPU multi-architecture support either.  */
-  if (spu_gdbarch (-1) == NULL)
-    return;
-
-  push_target (&spu_ops);
-
-  /* Make sure the thread architecture is re-evaluated.  */
-  registers_changed ();
-}
-
-static void
-spu_multiarch_deactivate (void)
-{
-  unpush_target (&spu_ops);
-
-  /* Make sure the thread architecture is re-evaluated.  */
-  registers_changed ();
-}
-
-static void
-spu_multiarch_inferior_created (struct target_ops *ops, int from_tty)
-{
-  if (spu_standalone_p ())
-    spu_multiarch_activate ();
-}
-
-static void
-spu_multiarch_solib_loaded (struct so_list *so)
-{
-  if (!spu_standalone_p ())
-    if (so->abfd && bfd_get_arch (so->abfd) == bfd_arch_spu)
-      if (spu_nr_solib++ == 0)
-	spu_multiarch_activate ();
-}
-
-static void
-spu_multiarch_solib_unloaded (struct so_list *so)
-{
-  if (!spu_standalone_p ())
-    if (so->abfd && bfd_get_arch (so->abfd) == bfd_arch_spu)
-      if (--spu_nr_solib == 0)
-	spu_multiarch_deactivate ();
-}
-
-void
-spu_multiarch_target::mourn_inferior ()
-{
-  beneath ()->mourn_inferior ();
-  spu_multiarch_deactivate ();
-}
-
-void
-_initialize_spu_multiarch (void)
-{
-  /* Install observers to watch for SPU objects.  */
-  gdb::observers::inferior_created.attach (spu_multiarch_inferior_created);
-  gdb::observers::solib_loaded.attach (spu_multiarch_solib_loaded);
-  gdb::observers::solib_unloaded.attach (spu_multiarch_solib_unloaded);
-}
-
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
deleted file mode 100644
index 5360efb12f..0000000000
--- a/gdb/spu-tdep.c
+++ /dev/null
@@ -1,2835 +0,0 @@
-/* SPU target-dependent code for GDB, the GNU debugger.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-   Based on a port by Sid Manning <sid@us.ibm.com>.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "arch-utils.h"
-#include "gdbtypes.h"
-#include "gdbcmd.h"
-#include "gdbcore.h"
-#include "frame.h"
-#include "frame-unwind.h"
-#include "frame-base.h"
-#include "trad-frame.h"
-#include "symtab.h"
-#include "symfile.h"
-#include "value.h"
-#include "inferior.h"
-#include "dis-asm.h"
-#include "disasm.h"
-#include "objfiles.h"
-#include "language.h"
-#include "regcache.h"
-#include "reggroups.h"
-#include "block.h"
-#include "observable.h"
-#include "infcall.h"
-#include "dwarf2.h"
-#include "dwarf2-frame.h"
-#include "ax.h"
-#include "spu-tdep.h"
-#include "location.h"
-
-/* The list of available "set spu " and "show spu " commands.  */
-static struct cmd_list_element *setspucmdlist = NULL;
-static struct cmd_list_element *showspucmdlist = NULL;
-
-/* Whether to stop for new SPE contexts.  */
-static bool spu_stop_on_load_p = false;
-/* Whether to automatically flush the SW-managed cache.  */
-static bool spu_auto_flush_cache_p = true;
-
-
-/* The tdep structure.  */
-struct gdbarch_tdep
-{
-  /* The spufs ID identifying our address space.  */
-  int id;
-
-  /* SPU-specific vector type.  */
-  struct type *spu_builtin_type_vec128;
-};
-
-
-/* SPU-specific vector type.  */
-static struct type *
-spu_builtin_type_vec128 (struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  if (!tdep->spu_builtin_type_vec128)
-    {
-      const struct builtin_type *bt = builtin_type (gdbarch);
-      struct type *t;
-
-      t = arch_composite_type (gdbarch,
-			       "__spu_builtin_type_vec128", TYPE_CODE_UNION);
-      append_composite_type_field (t, "uint128", bt->builtin_int128);
-      append_composite_type_field (t, "v2_int64",
-				   init_vector_type (bt->builtin_int64, 2));
-      append_composite_type_field (t, "v4_int32",
-				   init_vector_type (bt->builtin_int32, 4));
-      append_composite_type_field (t, "v8_int16",
-				   init_vector_type (bt->builtin_int16, 8));
-      append_composite_type_field (t, "v16_int8",
-				   init_vector_type (bt->builtin_int8, 16));
-      append_composite_type_field (t, "v2_double",
-				   init_vector_type (bt->builtin_double, 2));
-      append_composite_type_field (t, "v4_float",
-				   init_vector_type (bt->builtin_float, 4));
-
-      TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "spu_builtin_type_vec128";
-
-      tdep->spu_builtin_type_vec128 = t;
-    }
-
-  return tdep->spu_builtin_type_vec128;
-}
-
-
-/* The list of available "info spu " commands.  */
-static struct cmd_list_element *infospucmdlist = NULL;
-
-/* Registers.  */
-
-static const char *
-spu_register_name (struct gdbarch *gdbarch, int reg_nr)
-{
-  static const char *register_names[] =
-    {
-      "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
-      "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
-      "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
-      "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
-      "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",
-      "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",
-      "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55",
-      "r56", "r57", "r58", "r59", "r60", "r61", "r62", "r63",
-      "r64", "r65", "r66", "r67", "r68", "r69", "r70", "r71",
-      "r72", "r73", "r74", "r75", "r76", "r77", "r78", "r79",
-      "r80", "r81", "r82", "r83", "r84", "r85", "r86", "r87",
-      "r88", "r89", "r90", "r91", "r92", "r93", "r94", "r95",
-      "r96", "r97", "r98", "r99", "r100", "r101", "r102", "r103",
-      "r104", "r105", "r106", "r107", "r108", "r109", "r110", "r111",
-      "r112", "r113", "r114", "r115", "r116", "r117", "r118", "r119",
-      "r120", "r121", "r122", "r123", "r124", "r125", "r126", "r127",
-      "id", "pc", "sp", "fpscr", "srr0", "lslr", "decr", "decr_status"
-    };
-
-  if (reg_nr < 0)
-    return NULL;
-  if (reg_nr >= sizeof register_names / sizeof *register_names)
-    return NULL;
-
-  return register_names[reg_nr];
-}
-
-static struct type *
-spu_register_type (struct gdbarch *gdbarch, int reg_nr)
-{
-  if (reg_nr < SPU_NUM_GPRS)
-    return spu_builtin_type_vec128 (gdbarch);
-
-  switch (reg_nr)
-    {
-    case SPU_ID_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint32;
-
-    case SPU_PC_REGNUM:
-      return builtin_type (gdbarch)->builtin_func_ptr;
-
-    case SPU_SP_REGNUM:
-      return builtin_type (gdbarch)->builtin_data_ptr;
-
-    case SPU_FPSCR_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint128;
-
-    case SPU_SRR0_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint32;
-
-    case SPU_LSLR_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint32;
-
-    case SPU_DECR_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint32;
-
-    case SPU_DECR_STATUS_REGNUM:
-      return builtin_type (gdbarch)->builtin_uint32;
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
-    }
-}
-
-/* Pseudo registers for preferred slots - stack pointer.  */
-
-static enum register_status
-spu_pseudo_register_read_spu (readable_regcache *regcache, const char *regname,
-			      gdb_byte *buf)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum register_status status;
-  gdb_byte reg[32];
-  char annex[32];
-  ULONGEST id;
-  ULONGEST ul;
-
-  status = regcache->raw_read (SPU_ID_REGNUM, &id);
-  if (status != REG_VALID)
-    return status;
-  xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname);
-  memset (reg, 0, sizeof reg);
-  target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-	       reg, 0, sizeof reg);
-
-  ul = strtoulst ((char *) reg, NULL, 16);
-  store_unsigned_integer (buf, 4, byte_order, ul);
-  return REG_VALID;
-}
-
-static enum register_status
-spu_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache,
-                          int regnum, gdb_byte *buf)
-{
-  gdb_byte reg[16];
-  char annex[32];
-  ULONGEST id;
-  enum register_status status;
-
-  switch (regnum)
-    {
-    case SPU_SP_REGNUM:
-      status = regcache->raw_read (SPU_RAW_SP_REGNUM, reg);
-      if (status != REG_VALID)
-	return status;
-      memcpy (buf, reg, 4);
-      return status;
-
-    case SPU_FPSCR_REGNUM:
-      status = regcache->raw_read (SPU_ID_REGNUM, &id);
-      if (status != REG_VALID)
-	return status;
-      xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id);
-      target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16);
-      return status;
-
-    case SPU_SRR0_REGNUM:
-      return spu_pseudo_register_read_spu (regcache, "srr0", buf);
-
-    case SPU_LSLR_REGNUM:
-      return spu_pseudo_register_read_spu (regcache, "lslr", buf);
-
-    case SPU_DECR_REGNUM:
-      return spu_pseudo_register_read_spu (regcache, "decr", buf);
-
-    case SPU_DECR_STATUS_REGNUM:
-      return spu_pseudo_register_read_spu (regcache, "decr_status", buf);
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
-    }
-}
-
-static void
-spu_pseudo_register_write_spu (struct regcache *regcache, const char *regname,
-			       const gdb_byte *buf)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  char reg[32];
-  char annex[32];
-  ULONGEST id;
-
-  regcache_raw_read_unsigned (regcache, SPU_ID_REGNUM, &id);
-  xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname);
-  xsnprintf (reg, sizeof reg, "0x%s",
-	     phex_nz (extract_unsigned_integer (buf, 4, byte_order), 4));
-  target_write (current_top_target (), TARGET_OBJECT_SPU, annex,
-		(gdb_byte *) reg, 0, strlen (reg));
-}
-
-static void
-spu_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
-                           int regnum, const gdb_byte *buf)
-{
-  gdb_byte reg[16];
-  char annex[32];
-  ULONGEST id;
-
-  switch (regnum)
-    {
-    case SPU_SP_REGNUM:
-      regcache->raw_read (SPU_RAW_SP_REGNUM, reg);
-      memcpy (reg, buf, 4);
-      regcache->raw_write (SPU_RAW_SP_REGNUM, reg);
-      break;
-
-    case SPU_FPSCR_REGNUM:
-      regcache_raw_read_unsigned (regcache, SPU_ID_REGNUM, &id);
-      xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id);
-      target_write (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16);
-      break;
-
-    case SPU_SRR0_REGNUM:
-      spu_pseudo_register_write_spu (regcache, "srr0", buf);
-      break;
-
-    case SPU_LSLR_REGNUM:
-      spu_pseudo_register_write_spu (regcache, "lslr", buf);
-      break;
-
-    case SPU_DECR_REGNUM:
-      spu_pseudo_register_write_spu (regcache, "decr", buf);
-      break;
-
-    case SPU_DECR_STATUS_REGNUM:
-      spu_pseudo_register_write_spu (regcache, "decr_status", buf);
-      break;
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
-    }
-}
-
-static int
-spu_ax_pseudo_register_collect (struct gdbarch *gdbarch,
-				struct agent_expr *ax, int regnum)
-{
-  switch (regnum)
-    {
-    case SPU_SP_REGNUM:
-      ax_reg_mask (ax, SPU_RAW_SP_REGNUM);
-      return 0;
-
-    case SPU_FPSCR_REGNUM:
-    case SPU_SRR0_REGNUM:
-    case SPU_LSLR_REGNUM:
-    case SPU_DECR_REGNUM:
-    case SPU_DECR_STATUS_REGNUM:
-      return -1;
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
-    }
-}
-
-static int
-spu_ax_pseudo_register_push_stack (struct gdbarch *gdbarch,
-				   struct agent_expr *ax, int regnum)
-{
-  switch (regnum)
-    {
-    case SPU_SP_REGNUM:
-      ax_reg (ax, SPU_RAW_SP_REGNUM);
-      return 0;
-
-    case SPU_FPSCR_REGNUM:
-    case SPU_SRR0_REGNUM:
-    case SPU_LSLR_REGNUM:
-    case SPU_DECR_REGNUM:
-    case SPU_DECR_STATUS_REGNUM:
-      return -1;
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
-    }
-}
-
-
-/* Value conversion -- access scalar values at the preferred slot.  */
-
-static struct value *
-spu_value_from_register (struct gdbarch *gdbarch, struct type *type,
-			 int regnum, struct frame_id frame_id)
-{
-  struct value *value = default_value_from_register (gdbarch, type,
-						     regnum, frame_id);
-  LONGEST len = TYPE_LENGTH (type);
-
-  if (regnum < SPU_NUM_GPRS && len < 16)
-    {
-      int preferred_slot = len < 4 ? 4 - len : 0;
-      set_value_offset (value, preferred_slot);
-    }
-
-  return value;
-}
-
-/* Register groups.  */
-
-static int
-spu_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-			 struct reggroup *group)
-{
-  /* Registers displayed via 'info regs'.  */
-  if (group == general_reggroup)
-    return 1;
-
-  /* Registers displayed via 'info float'.  */
-  if (group == float_reggroup)
-    return 0;
-
-  /* Registers that need to be saved/restored in order to
-     push or pop frames.  */
-  if (group == save_reggroup || group == restore_reggroup)
-    return 1;
-
-  return default_register_reggroup_p (gdbarch, regnum, group);
-}
-
-/* DWARF-2 register numbers.  */
-
-static int
-spu_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
-{
-  /* Use cooked instead of raw SP.  */
-  return (reg == SPU_RAW_SP_REGNUM)? SPU_SP_REGNUM : reg;
-}
-
-
-/* Address handling.  */
-
-static int
-spu_gdbarch_id (struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  int id = tdep->id;
-
-  /* The objfile architecture of a standalone SPU executable does not
-     provide an SPU ID.  Retrieve it from the objfile's relocated
-     address range in this special case.  */
-  if (id == -1
-      && symfile_objfile && symfile_objfile->obfd
-      && bfd_get_arch (symfile_objfile->obfd) == bfd_arch_spu
-      && symfile_objfile->sections != symfile_objfile->sections_end)
-    id = SPUADDR_SPU (obj_section_addr (symfile_objfile->sections));
-
-  return id;
-}
-
-static int
-spu_address_class_type_flags (int byte_size, int dwarf2_addr_class)
-{
-  if (dwarf2_addr_class == 1)
-    return TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
-  else
-    return 0;
-}
-
-static const char *
-spu_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
-{
-  if (type_flags & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
-    return "__ea";
-  else
-    return NULL;
-}
-
-static int
-spu_address_class_name_to_type_flags (struct gdbarch *gdbarch,
-				      const char *name, int *type_flags_ptr)
-{
-  if (strcmp (name, "__ea") == 0)
-    {
-      *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
-      return 1;
-    }
-  else
-   return 0;
-}
-
-static void
-spu_address_to_pointer (struct gdbarch *gdbarch,
-			struct type *type, gdb_byte *buf, CORE_ADDR addr)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order,
-			  SPUADDR_ADDR (addr));
-}
-
-static CORE_ADDR
-spu_pointer_to_address (struct gdbarch *gdbarch,
-			struct type *type, const gdb_byte *buf)
-{
-  int id = spu_gdbarch_id (gdbarch);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  ULONGEST addr
-    = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
-
-  /* Do not convert __ea pointers.  */
-  if (TYPE_ADDRESS_CLASS_1 (type))
-    return addr;
-
-  return addr? SPUADDR (id, addr) : 0;
-}
-
-static CORE_ADDR
-spu_integer_to_address (struct gdbarch *gdbarch,
-			struct type *type, const gdb_byte *buf)
-{
-  int id = spu_gdbarch_id (gdbarch);
-  ULONGEST addr = unpack_long (type, buf);
-
-  return SPUADDR (id, addr);
-}
-
-
-/* Decoding SPU instructions.  */
-
-enum
-  {
-    op_lqd   = 0x34,
-    op_lqx   = 0x3c4,
-    op_lqa   = 0x61,
-    op_lqr   = 0x67,
-    op_stqd  = 0x24,
-    op_stqx  = 0x144,
-    op_stqa  = 0x41,
-    op_stqr  = 0x47,
-
-    op_il    = 0x081,
-    op_ila   = 0x21,
-    op_a     = 0x0c0,
-    op_ai    = 0x1c,
-
-    op_selb  = 0x8,
-
-    op_br    = 0x64,
-    op_bra   = 0x60,
-    op_brsl  = 0x66,
-    op_brasl = 0x62,
-    op_brnz  = 0x42,
-    op_brz   = 0x40,
-    op_brhnz = 0x46,
-    op_brhz  = 0x44,
-    op_bi    = 0x1a8,
-    op_bisl  = 0x1a9,
-    op_biz   = 0x128,
-    op_binz  = 0x129,
-    op_bihz  = 0x12a,
-    op_bihnz = 0x12b,
-  };
-
-static int
-is_rr (unsigned int insn, int op, int *rt, int *ra, int *rb)
-{
-  if ((insn >> 21) == op)
-    {
-      *rt = insn & 127;
-      *ra = (insn >> 7) & 127;
-      *rb = (insn >> 14) & 127;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_rrr (unsigned int insn, int op, int *rt, int *ra, int *rb, int *rc)
-{
-  if ((insn >> 28) == op)
-    {
-      *rt = (insn >> 21) & 127;
-      *ra = (insn >> 7) & 127;
-      *rb = (insn >> 14) & 127;
-      *rc = insn & 127;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_ri7 (unsigned int insn, int op, int *rt, int *ra, int *i7)
-{
-  if ((insn >> 21) == op)
-    {
-      *rt = insn & 127;
-      *ra = (insn >> 7) & 127;
-      *i7 = (((insn >> 14) & 127) ^ 0x40) - 0x40;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_ri10 (unsigned int insn, int op, int *rt, int *ra, int *i10)
-{
-  if ((insn >> 24) == op)
-    {
-      *rt = insn & 127;
-      *ra = (insn >> 7) & 127;
-      *i10 = (((insn >> 14) & 0x3ff) ^ 0x200) - 0x200;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_ri16 (unsigned int insn, int op, int *rt, int *i16)
-{
-  if ((insn >> 23) == op)
-    {
-      *rt = insn & 127;
-      *i16 = (((insn >> 7) & 0xffff) ^ 0x8000) - 0x8000;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_ri18 (unsigned int insn, int op, int *rt, int *i18)
-{
-  if ((insn >> 25) == op)
-    {
-      *rt = insn & 127;
-      *i18 = (((insn >> 7) & 0x3ffff) ^ 0x20000) - 0x20000;
-      return 1;
-    }
-
-  return 0;
-}
-
-static int
-is_branch (unsigned int insn, int *offset, int *reg)
-{
-  int rt, i7, i16;
-
-  if (is_ri16 (insn, op_br, &rt, &i16)
-      || is_ri16 (insn, op_brsl, &rt, &i16)
-      || is_ri16 (insn, op_brnz, &rt, &i16)
-      || is_ri16 (insn, op_brz, &rt, &i16)
-      || is_ri16 (insn, op_brhnz, &rt, &i16)
-      || is_ri16 (insn, op_brhz, &rt, &i16))
-    {
-      *reg = SPU_PC_REGNUM;
-      *offset = i16 << 2;
-      return 1;
-    }
-
-  if (is_ri16 (insn, op_bra, &rt, &i16)
-      || is_ri16 (insn, op_brasl, &rt, &i16))
-    {
-      *reg = -1;
-      *offset = i16 << 2;
-      return 1;
-    }
-
-  if (is_ri7 (insn, op_bi, &rt, reg, &i7)
-      || is_ri7 (insn, op_bisl, &rt, reg, &i7)
-      || is_ri7 (insn, op_biz, &rt, reg, &i7)
-      || is_ri7 (insn, op_binz, &rt, reg, &i7)
-      || is_ri7 (insn, op_bihz, &rt, reg, &i7)
-      || is_ri7 (insn, op_bihnz, &rt, reg, &i7))
-    {
-      *offset = 0;
-      return 1;
-    }
-
-  return 0;
-}
-
-
-/* Prolog parsing.  */
-
-struct spu_prologue_data
-  {
-    /* Stack frame size.  -1 if analysis was unsuccessful.  */
-    int size;
-
-    /* How to find the CFA.  The CFA is equal to SP at function entry.  */
-    int cfa_reg;
-    int cfa_offset;
-
-    /* Offset relative to CFA where a register is saved.  -1 if invalid.  */
-    int reg_offset[SPU_NUM_GPRS];
-  };
-
-static CORE_ADDR
-spu_analyze_prologue (struct gdbarch *gdbarch,
-		      CORE_ADDR start_pc, CORE_ADDR end_pc,
-                      struct spu_prologue_data *data)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  int found_sp = 0;
-  int found_fp = 0;
-  int found_lr = 0;
-  int found_bc = 0;
-  int reg_immed[SPU_NUM_GPRS];
-  gdb_byte buf[16];
-  CORE_ADDR prolog_pc = start_pc;
-  CORE_ADDR pc;
-  int i;
-
-
-  /* Initialize DATA to default values.  */
-  data->size = -1;
-
-  data->cfa_reg = SPU_RAW_SP_REGNUM;
-  data->cfa_offset = 0;
-
-  for (i = 0; i < SPU_NUM_GPRS; i++)
-    data->reg_offset[i] = -1;
-
-  /* Set up REG_IMMED array.  This is non-zero for a register if we know its
-     preferred slot currently holds this immediate value.  */
-  for (i = 0; i < SPU_NUM_GPRS; i++)
-      reg_immed[i] = 0;
-
-  /* Scan instructions until the first branch.
-
-     The following instructions are important prolog components:
-
-	- The first instruction to set up the stack pointer.
-	- The first instruction to set up the frame pointer.
-	- The first instruction to save the link register.
-	- The first instruction to save the backchain.
-
-     We return the instruction after the latest of these four,
-     or the incoming PC if none is found.  The first instruction
-     to set up the stack pointer also defines the frame size.
-
-     Note that instructions saving incoming arguments to their stack
-     slots are not counted as important, because they are hard to
-     identify with certainty.  This should not matter much, because
-     arguments are relevant only in code compiled with debug data,
-     and in such code the GDB core will advance until the first source
-     line anyway, using SAL data.
-
-     For purposes of stack unwinding, we analyze the following types
-     of instructions in addition:
-
-      - Any instruction adding to the current frame pointer.
-      - Any instruction loading an immediate constant into a register.
-      - Any instruction storing a register onto the stack.
-
-     These are used to compute the CFA and REG_OFFSET output.  */
-
-  for (pc = start_pc; pc < end_pc; pc += 4)
-    {
-      unsigned int insn;
-      int rt, ra, rb, rc, immed;
-
-      if (target_read_memory (pc, buf, 4))
-	break;
-      insn = extract_unsigned_integer (buf, 4, byte_order);
-
-      /* AI is the typical instruction to set up a stack frame.
-         It is also used to initialize the frame pointer.  */
-      if (is_ri10 (insn, op_ai, &rt, &ra, &immed))
-	{
-	  if (rt == data->cfa_reg && ra == data->cfa_reg)
-	    data->cfa_offset -= immed;
-
-	  if (rt == SPU_RAW_SP_REGNUM && ra == SPU_RAW_SP_REGNUM
-	      && !found_sp)
-	    {
-	      found_sp = 1;
-	      prolog_pc = pc + 4;
-
-	      data->size = -immed;
-	    }
-	  else if (rt == SPU_FP_REGNUM && ra == SPU_RAW_SP_REGNUM
-		   && !found_fp)
-	    {
-	      found_fp = 1;
-	      prolog_pc = pc + 4;
-
-	      data->cfa_reg = SPU_FP_REGNUM;
-	      data->cfa_offset -= immed;
-	    }
-	}
-
-      /* A is used to set up stack frames of size >= 512 bytes.
-         If we have tracked the contents of the addend register,
-         we can handle this as well.  */
-      else if (is_rr (insn, op_a, &rt, &ra, &rb))
-	{
-	  if (rt == data->cfa_reg && ra == data->cfa_reg)
-	    {
-	      if (reg_immed[rb] != 0)
-		data->cfa_offset -= reg_immed[rb];
-	      else
-		data->cfa_reg = -1;  /* We don't know the CFA any more.  */
-	    }
-
-	  if (rt == SPU_RAW_SP_REGNUM && ra == SPU_RAW_SP_REGNUM
-	      && !found_sp)
-	    {
-	      found_sp = 1;
-	      prolog_pc = pc + 4;
-
-	      if (reg_immed[rb] != 0)
-		data->size = -reg_immed[rb];
-	    }
-	}
-
-      /* We need to track IL and ILA used to load immediate constants
-         in case they are later used as input to an A instruction.  */
-      else if (is_ri16 (insn, op_il, &rt, &immed))
-	{
-	  reg_immed[rt] = immed;
-
-	  if (rt == SPU_RAW_SP_REGNUM && !found_sp)
-	    found_sp = 1;
-	}
-
-      else if (is_ri18 (insn, op_ila, &rt, &immed))
-	{
-	  reg_immed[rt] = immed & 0x3ffff;
-
-	  if (rt == SPU_RAW_SP_REGNUM && !found_sp)
-	    found_sp = 1;
-	}
-
-      /* STQD is used to save registers to the stack.  */
-      else if (is_ri10 (insn, op_stqd, &rt, &ra, &immed))
-	{
-	  if (ra == data->cfa_reg)
-	    data->reg_offset[rt] = data->cfa_offset - (immed << 4);
-
-	  if (ra == data->cfa_reg && rt == SPU_LR_REGNUM
-              && !found_lr)
-	    {
-	      found_lr = 1;
-	      prolog_pc = pc + 4;
-	    }
-
-	  if (ra == SPU_RAW_SP_REGNUM
-	      && (found_sp? immed == 0 : rt == SPU_RAW_SP_REGNUM)
-	      && !found_bc)
-	    {
-	      found_bc = 1;
-	      prolog_pc = pc + 4;
-	    }
-	}
-
-      /* _start uses SELB to set up the stack pointer.  */
-      else if (is_rrr (insn, op_selb, &rt, &ra, &rb, &rc))
-	{
-	  if (rt == SPU_RAW_SP_REGNUM && !found_sp)
-	    found_sp = 1;
-	}
-
-      /* We terminate if we find a branch.  */
-      else if (is_branch (insn, &immed, &ra))
-	break;
-    }
-
-
-  /* If we successfully parsed until here, and didn't find any instruction
-     modifying SP, we assume we have a frameless function.  */
-  if (!found_sp)
-    data->size = 0;
-
-  /* Return cooked instead of raw SP.  */
-  if (data->cfa_reg == SPU_RAW_SP_REGNUM)
-    data->cfa_reg = SPU_SP_REGNUM;
-
-  return prolog_pc;
-}
-
-/* Return the first instruction after the prologue starting at PC.  */
-static CORE_ADDR
-spu_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
-{
-  struct spu_prologue_data data;
-  return spu_analyze_prologue (gdbarch, pc, (CORE_ADDR)-1, &data);
-}
-
-/* Return the frame pointer in use at address PC.  */
-static void
-spu_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc,
-			   int *reg, LONGEST *offset)
-{
-  struct spu_prologue_data data;
-  spu_analyze_prologue (gdbarch, pc, (CORE_ADDR)-1, &data);
-
-  if (data.size != -1 && data.cfa_reg != -1)
-    {
-      /* The 'frame pointer' address is CFA minus frame size.  */
-      *reg = data.cfa_reg;
-      *offset = data.cfa_offset - data.size;
-    }
-  else
-    {
-      /* ??? We don't really know ...  */
-      *reg = SPU_SP_REGNUM;
-      *offset = 0;
-    }
-}
-
-/* Implement the stack_frame_destroyed_p gdbarch method.
-
-   1) scan forward from the point of execution:
-       a) If you find an instruction that modifies the stack pointer
-          or transfers control (except a return), execution is not in
-          an epilogue, return.
-       b) Stop scanning if you find a return instruction or reach the
-          end of the function or reach the hard limit for the size of
-          an epilogue.
-   2) scan backward from the point of execution:
-        a) If you find an instruction that modifies the stack pointer,
-            execution *is* in an epilogue, return.
-        b) Stop scanning if you reach an instruction that transfers
-           control or the beginning of the function or reach the hard
-           limit for the size of an epilogue.  */
-
-static int
-spu_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  CORE_ADDR scan_pc, func_start, func_end, epilogue_start, epilogue_end;
-  bfd_byte buf[4];
-  unsigned int insn;
-  int rt, ra, rb, immed;
-
-  /* Find the search limits based on function boundaries and hard limit.
-     We assume the epilogue can be up to 64 instructions long.  */
-
-  const int spu_max_epilogue_size = 64 * 4;
-
-  if (!find_pc_partial_function (pc, NULL, &func_start, &func_end))
-    return 0;
-
-  if (pc - func_start < spu_max_epilogue_size)
-    epilogue_start = func_start;
-  else
-    epilogue_start = pc - spu_max_epilogue_size;
-
-  if (func_end - pc < spu_max_epilogue_size)
-    epilogue_end = func_end;
-  else
-    epilogue_end = pc + spu_max_epilogue_size;
-
-  /* Scan forward until next 'bi $0'.  */
-
-  for (scan_pc = pc; scan_pc < epilogue_end; scan_pc += 4)
-    {
-      if (target_read_memory (scan_pc, buf, 4))
-	return 0;
-      insn = extract_unsigned_integer (buf, 4, byte_order);
-
-      if (is_branch (insn, &immed, &ra))
-	{
-	  if (immed == 0 && ra == SPU_LR_REGNUM)
-	    break;
-
-	  return 0;
-	}
-
-      if (is_ri10 (insn, op_ai, &rt, &ra, &immed)
-	  || is_rr (insn, op_a, &rt, &ra, &rb)
-	  || is_ri10 (insn, op_lqd, &rt, &ra, &immed))
-	{
-	  if (rt == SPU_RAW_SP_REGNUM)
-	    return 0;
-	}
-    }
-
-  if (scan_pc >= epilogue_end)
-    return 0;
-
-  /* Scan backward until adjustment to stack pointer (R1).  */
-
-  for (scan_pc = pc - 4; scan_pc >= epilogue_start; scan_pc -= 4)
-    {
-      if (target_read_memory (scan_pc, buf, 4))
-	return 0;
-      insn = extract_unsigned_integer (buf, 4, byte_order);
-
-      if (is_branch (insn, &immed, &ra))
-	return 0;
-
-      if (is_ri10 (insn, op_ai, &rt, &ra, &immed)
-	  || is_rr (insn, op_a, &rt, &ra, &rb)
-	  || is_ri10 (insn, op_lqd, &rt, &ra, &immed))
-	{
-	  if (rt == SPU_RAW_SP_REGNUM)
-	    return 1;
-	}
-    }
-
-  return 0;
-}
-
-
-/* Normal stack frames.  */
-
-struct spu_unwind_cache
-{
-  CORE_ADDR func;
-  CORE_ADDR frame_base;
-  CORE_ADDR local_base;
-
-  struct trad_frame_saved_reg *saved_regs;
-};
-
-static struct spu_unwind_cache *
-spu_frame_unwind_cache (struct frame_info *this_frame,
-			void **this_prologue_cache)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct spu_unwind_cache *info;
-  struct spu_prologue_data data;
-  CORE_ADDR id = tdep->id;
-  gdb_byte buf[16];
-
-  if (*this_prologue_cache)
-    return (struct spu_unwind_cache *) *this_prologue_cache;
-
-  info = FRAME_OBSTACK_ZALLOC (struct spu_unwind_cache);
-  *this_prologue_cache = info;
-  info->saved_regs = trad_frame_alloc_saved_regs (this_frame);
-  info->frame_base = 0;
-  info->local_base = 0;
-
-  /* Find the start of the current function, and analyze its prologue.  */
-  info->func = get_frame_func (this_frame);
-  if (info->func == 0)
-    {
-      /* Fall back to using the current PC as frame ID.  */
-      info->func = get_frame_pc (this_frame);
-      data.size = -1;
-    }
-  else
-    spu_analyze_prologue (gdbarch, info->func, get_frame_pc (this_frame),
-			  &data);
-
-  /* If successful, use prologue analysis data.  */
-  if (data.size != -1 && data.cfa_reg != -1)
-    {
-      CORE_ADDR cfa;
-      int i;
-
-      /* Determine CFA via unwound CFA_REG plus CFA_OFFSET.  */
-      get_frame_register (this_frame, data.cfa_reg, buf);
-      cfa = extract_unsigned_integer (buf, 4, byte_order) + data.cfa_offset;
-      cfa = SPUADDR (id, cfa);
-
-      /* Call-saved register slots.  */
-      for (i = 0; i < SPU_NUM_GPRS; i++)
-	if (i == SPU_LR_REGNUM
-	    || (i >= SPU_SAVED1_REGNUM && i <= SPU_SAVEDN_REGNUM))
-	  if (data.reg_offset[i] != -1)
-	    info->saved_regs[i].addr = cfa - data.reg_offset[i];
-
-      /* Frame bases.  */
-      info->frame_base = cfa;
-      info->local_base = cfa - data.size;
-    }
-
-  /* Otherwise, fall back to reading the backchain link.  */
-  else
-    {
-      CORE_ADDR reg;
-      LONGEST backchain;
-      ULONGEST lslr;
-      int status;
-
-      /* Get local store limit.  */
-      lslr = get_frame_register_unsigned (this_frame, SPU_LSLR_REGNUM);
-      if (!lslr)
-	lslr = (ULONGEST) -1;
-
-      /* Get the backchain.  */
-      reg = get_frame_register_unsigned (this_frame, SPU_SP_REGNUM);
-      status = safe_read_memory_integer (SPUADDR (id, reg), 4, byte_order,
-					 &backchain);
-
-      /* A zero backchain terminates the frame chain.  Also, sanity
-         check against the local store size limit.  */
-      if (status && backchain > 0 && backchain <= lslr)
-	{
-	  /* Assume the link register is saved into its slot.  */
-	  if (backchain + 16 <= lslr)
-	    info->saved_regs[SPU_LR_REGNUM].addr = SPUADDR (id,
-							    backchain + 16);
-
-          /* Frame bases.  */
-	  info->frame_base = SPUADDR (id, backchain);
-	  info->local_base = SPUADDR (id, reg);
-	}
-    }
-
-  /* If we didn't find a frame, we cannot determine SP / return address.  */
-  if (info->frame_base == 0)
-    return info;
-
-  /* The previous SP is equal to the CFA.  */
-  trad_frame_set_value (info->saved_regs, SPU_SP_REGNUM,
-			SPUADDR_ADDR (info->frame_base));
-
-  /* Read full contents of the unwound link register in order to
-     be able to determine the return address.  */
-  if (trad_frame_addr_p (info->saved_regs, SPU_LR_REGNUM))
-    target_read_memory (info->saved_regs[SPU_LR_REGNUM].addr, buf, 16);
-  else
-    get_frame_register (this_frame, SPU_LR_REGNUM, buf);
-
-  /* Normally, the return address is contained in the slot 0 of the
-     link register, and slots 1-3 are zero.  For an overlay return,
-     slot 0 contains the address of the overlay manager return stub,
-     slot 1 contains the partition number of the overlay section to
-     be returned to, and slot 2 contains the return address within
-     that section.  Return the latter address in that case.  */
-  if (extract_unsigned_integer (buf + 8, 4, byte_order) != 0)
-    trad_frame_set_value (info->saved_regs, SPU_PC_REGNUM,
-			  extract_unsigned_integer (buf + 8, 4, byte_order));
-  else
-    trad_frame_set_value (info->saved_regs, SPU_PC_REGNUM,
-			  extract_unsigned_integer (buf, 4, byte_order));
- 
-  return info;
-}
-
-static void
-spu_frame_this_id (struct frame_info *this_frame,
-		   void **this_prologue_cache, struct frame_id *this_id)
-{
-  struct spu_unwind_cache *info =
-    spu_frame_unwind_cache (this_frame, this_prologue_cache);
-
-  if (info->frame_base == 0)
-    return;
-
-  *this_id = frame_id_build (info->frame_base, info->func);
-}
-
-static struct value *
-spu_frame_prev_register (struct frame_info *this_frame,
-			 void **this_prologue_cache, int regnum)
-{
-  struct spu_unwind_cache *info
-    = spu_frame_unwind_cache (this_frame, this_prologue_cache);
-
-  /* Special-case the stack pointer.  */
-  if (regnum == SPU_RAW_SP_REGNUM)
-    regnum = SPU_SP_REGNUM;
-
-  return trad_frame_get_prev_register (this_frame, info->saved_regs, regnum);
-}
-
-static const struct frame_unwind spu_frame_unwind = {
-  NORMAL_FRAME,
-  default_frame_unwind_stop_reason,
-  spu_frame_this_id,
-  spu_frame_prev_register,
-  NULL,
-  default_frame_sniffer
-};
-
-static CORE_ADDR
-spu_frame_base_address (struct frame_info *this_frame, void **this_cache)
-{
-  struct spu_unwind_cache *info
-    = spu_frame_unwind_cache (this_frame, this_cache);
-  return info->local_base;
-}
-
-static const struct frame_base spu_frame_base = {
-  &spu_frame_unwind,
-  spu_frame_base_address,
-  spu_frame_base_address,
-  spu_frame_base_address
-};
-
-static CORE_ADDR
-spu_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  CORE_ADDR pc = frame_unwind_register_unsigned (next_frame, SPU_PC_REGNUM);
-  /* Mask off interrupt enable bit.  */
-  return SPUADDR (tdep->id, pc & -4);
-}
-
-static CORE_ADDR
-spu_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  CORE_ADDR sp = frame_unwind_register_unsigned (next_frame, SPU_SP_REGNUM);
-  return SPUADDR (tdep->id, sp);
-}
-
-static CORE_ADDR
-spu_read_pc (readable_regcache *regcache)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
-  ULONGEST pc;
-
-  regcache->cooked_read (SPU_PC_REGNUM, &pc);
-  /* Mask off interrupt enable bit.  */
-  return SPUADDR (tdep->id, pc & -4);
-}
-
-static void
-spu_write_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  /* Keep interrupt enabled state unchanged.  */
-  ULONGEST old_pc;
-
-  regcache_cooked_read_unsigned (regcache, SPU_PC_REGNUM, &old_pc);
-  regcache_cooked_write_unsigned (regcache, SPU_PC_REGNUM,
-				  (SPUADDR_ADDR (pc) & -4) | (old_pc & 3));
-}
-
-
-/* Cell/B.E. cross-architecture unwinder support.  */
-
-struct spu2ppu_cache
-{
-  struct frame_id frame_id;
-  readonly_detached_regcache *regcache;
-};
-
-static struct gdbarch *
-spu2ppu_prev_arch (struct frame_info *this_frame, void **this_cache)
-{
-  struct spu2ppu_cache *cache = (struct spu2ppu_cache *) *this_cache;
-  return cache->regcache->arch ();
-}
-
-static void
-spu2ppu_this_id (struct frame_info *this_frame,
-		 void **this_cache, struct frame_id *this_id)
-{
-  struct spu2ppu_cache *cache = (struct spu2ppu_cache *) *this_cache;
-  *this_id = cache->frame_id;
-}
-
-static struct value *
-spu2ppu_prev_register (struct frame_info *this_frame,
-		       void **this_cache, int regnum)
-{
-  struct spu2ppu_cache *cache = (struct spu2ppu_cache *) *this_cache;
-  struct gdbarch *gdbarch = cache->regcache->arch ();
-  gdb_byte *buf;
-
-  buf = (gdb_byte *) alloca (register_size (gdbarch, regnum));
-  cache->regcache->cooked_read (regnum, buf);
-  return frame_unwind_got_bytes (this_frame, regnum, buf);
-}
-
-static int
-spu2ppu_sniffer (const struct frame_unwind *self,
-		 struct frame_info *this_frame, void **this_prologue_cache)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  CORE_ADDR base, func, backchain;
-  gdb_byte buf[4];
-
-  if (gdbarch_bfd_arch_info (target_gdbarch ())->arch == bfd_arch_spu)
-    return 0;
-
-  base = get_frame_sp (this_frame);
-  func = get_frame_pc (this_frame);
-  if (target_read_memory (base, buf, 4))
-    return 0;
-  backchain = extract_unsigned_integer (buf, 4, byte_order);
-
-  if (!backchain)
-    {
-      struct frame_info *fi;
-
-      struct spu2ppu_cache *cache
-	= FRAME_OBSTACK_CALLOC (1, struct spu2ppu_cache);
-
-      cache->frame_id = frame_id_build (base + 16, func);
-
-      for (fi = get_next_frame (this_frame); fi; fi = get_next_frame (fi))
-	if (gdbarch_bfd_arch_info (get_frame_arch (fi))->arch != bfd_arch_spu)
-	  break;
-
-      if (fi)
-	{
-	  cache->regcache = frame_save_as_regcache (fi).release ();
-	  *this_prologue_cache = cache;
-	  return 1;
-	}
-      else
-	{
-	  struct regcache *regcache;
-	  regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
-	  cache->regcache = new readonly_detached_regcache (*regcache);
-	  *this_prologue_cache = cache;
-	  return 1;
-	}
-    }
-
-  return 0;
-}
-
-static void
-spu2ppu_dealloc_cache (struct frame_info *self, void *this_cache)
-{
-  struct spu2ppu_cache *cache = (struct spu2ppu_cache *) this_cache;
-  delete cache->regcache;
-}
-
-static const struct frame_unwind spu2ppu_unwind = {
-  ARCH_FRAME,
-  default_frame_unwind_stop_reason,
-  spu2ppu_this_id,
-  spu2ppu_prev_register,
-  NULL,
-  spu2ppu_sniffer,
-  spu2ppu_dealloc_cache,
-  spu2ppu_prev_arch,
-};
-
-
-/* Function calling convention.  */
-
-static CORE_ADDR
-spu_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
-{
-  return sp & ~15;
-}
-
-static CORE_ADDR
-spu_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr,
-		     struct value **args, int nargs, struct type *value_type,
-		     CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
-		     struct regcache *regcache)
-{
-  /* Allocate space sufficient for a breakpoint, keeping the stack aligned.  */
-  sp = (sp - 4) & ~15;
-  /* Store the address of that breakpoint */
-  *bp_addr = sp;
-  /* The call starts at the callee's entry point.  */
-  *real_pc = funaddr;
-
-  return sp;
-}
-
-static int
-spu_scalar_value_p (struct type *type)
-{
-  switch (TYPE_CODE (type))
-    {
-    case TYPE_CODE_INT:
-    case TYPE_CODE_ENUM:
-    case TYPE_CODE_RANGE:
-    case TYPE_CODE_CHAR:
-    case TYPE_CODE_BOOL:
-    case TYPE_CODE_PTR:
-    case TYPE_CODE_REF:
-    case TYPE_CODE_RVALUE_REF:
-      return TYPE_LENGTH (type) <= 16;
-
-    default:
-      return 0;
-    }
-}
-
-static void
-spu_value_to_regcache (struct regcache *regcache, int regnum,
-		       struct type *type, const gdb_byte *in)
-{
-  int len = TYPE_LENGTH (type);
-
-  if (spu_scalar_value_p (type))
-    {
-      int preferred_slot = len < 4 ? 4 - len : 0;
-      regcache->cooked_write_part (regnum, preferred_slot, len, in);
-    }
-  else
-    {
-      while (len >= 16)
-	{
-	  regcache->cooked_write (regnum++, in);
-	  in += 16;
-	  len -= 16;
-	}
-
-      if (len > 0)
-	regcache->cooked_write_part (regnum, 0, len, in);
-    }
-}
-
-static void
-spu_regcache_to_value (struct regcache *regcache, int regnum,
-		       struct type *type, gdb_byte *out)
-{
-  int len = TYPE_LENGTH (type);
-
-  if (spu_scalar_value_p (type))
-    {
-      int preferred_slot = len < 4 ? 4 - len : 0;
-      regcache->cooked_read_part (regnum, preferred_slot, len, out);
-    }
-  else
-    {
-      while (len >= 16)
-	{
-	  regcache->cooked_read (regnum++, out);
-	  out += 16;
-	  len -= 16;
-	}
-
-      if (len > 0)
-	regcache->cooked_read_part (regnum, 0, len, out);
-    }
-}
-
-static CORE_ADDR
-spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
-		     struct regcache *regcache, CORE_ADDR bp_addr,
-		     int nargs, struct value **args, CORE_ADDR sp,
-		     function_call_return_method return_method,
-		     CORE_ADDR struct_addr)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  CORE_ADDR sp_delta;
-  int i;
-  int regnum = SPU_ARG1_REGNUM;
-  int stack_arg = -1;
-  gdb_byte buf[16];
-
-  /* Set the return address.  */
-  memset (buf, 0, sizeof buf);
-  store_unsigned_integer (buf, 4, byte_order, SPUADDR_ADDR (bp_addr));
-  regcache->cooked_write (SPU_LR_REGNUM, buf);
-
-  /* If STRUCT_RETURN is true, then the struct return address (in
-     STRUCT_ADDR) will consume the first argument-passing register.
-     Both adjust the register count and store that value.  */
-  if (return_method == return_method_struct)
-    {
-      memset (buf, 0, sizeof buf);
-      store_unsigned_integer (buf, 4, byte_order, SPUADDR_ADDR (struct_addr));
-      regcache->cooked_write (regnum++, buf);
-    }
-
-  /* Fill in argument registers.  */
-  for (i = 0; i < nargs; i++)
-    {
-      struct value *arg = args[i];
-      struct type *type = check_typedef (value_type (arg));
-      const gdb_byte *contents = value_contents (arg);
-      int n_regs = align_up (TYPE_LENGTH (type), 16) / 16;
-
-      /* If the argument doesn't wholly fit into registers, it and
-	 all subsequent arguments go to the stack.  */
-      if (regnum + n_regs - 1 > SPU_ARGN_REGNUM)
-	{
-	  stack_arg = i;
-	  break;
-	}
-
-      spu_value_to_regcache (regcache, regnum, type, contents);
-      regnum += n_regs;
-    }
-
-  /* Overflow arguments go to the stack.  */
-  if (stack_arg != -1)
-    {
-      CORE_ADDR ap;
-
-      /* Allocate all required stack size.  */
-      for (i = stack_arg; i < nargs; i++)
-	{
-	  struct type *type = check_typedef (value_type (args[i]));
-	  sp -= align_up (TYPE_LENGTH (type), 16);
-	}
-
-      /* Fill in stack arguments.  */
-      ap = sp;
-      for (i = stack_arg; i < nargs; i++)
-	{
-	  struct value *arg = args[i];
-	  struct type *type = check_typedef (value_type (arg));
-	  int len = TYPE_LENGTH (type);
-	  int preferred_slot;
-	  
-	  if (spu_scalar_value_p (type))
-	    preferred_slot = len < 4 ? 4 - len : 0;
-	  else
-	    preferred_slot = 0;
-
-	  target_write_memory (ap + preferred_slot, value_contents (arg), len);
-	  ap += align_up (TYPE_LENGTH (type), 16);
-	}
-    }
-
-  /* Allocate stack frame header.  */
-  sp -= 32;
-
-  /* Store stack back chain.  */
-  regcache->cooked_read (SPU_RAW_SP_REGNUM, buf);
-  target_write_memory (sp, buf, 16);
-
-  /* Finally, update all slots of the SP register.  */
-  sp_delta = sp - extract_unsigned_integer (buf, 4, byte_order);
-  for (i = 0; i < 4; i++)
-    {
-      CORE_ADDR sp_slot = extract_unsigned_integer (buf + 4*i, 4, byte_order);
-      store_unsigned_integer (buf + 4*i, 4, byte_order, sp_slot + sp_delta);
-    }
-  regcache->cooked_write (SPU_RAW_SP_REGNUM, buf);
-
-  return sp;
-}
-
-static struct frame_id
-spu_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  CORE_ADDR pc = get_frame_register_unsigned (this_frame, SPU_PC_REGNUM);
-  CORE_ADDR sp = get_frame_register_unsigned (this_frame, SPU_SP_REGNUM);
-  return frame_id_build (SPUADDR (tdep->id, sp), SPUADDR (tdep->id, pc & -4));
-}
-
-/* Function return value access.  */
-
-static enum return_value_convention
-spu_return_value (struct gdbarch *gdbarch, struct value *function,
-		  struct type *type, struct regcache *regcache,
-		  gdb_byte *out, const gdb_byte *in)
-{
-  struct type *func_type = function ? value_type (function) : NULL;
-  enum return_value_convention rvc;
-  int opencl_vector = 0;
-
-  if (func_type)
-    {
-      func_type = check_typedef (func_type);
-
-      if (TYPE_CODE (func_type) == TYPE_CODE_PTR)
-	func_type = check_typedef (TYPE_TARGET_TYPE (func_type));
-
-      if (TYPE_CODE (func_type) == TYPE_CODE_FUNC
-	  && TYPE_CALLING_CONVENTION (func_type) == DW_CC_GDB_IBM_OpenCL
-	  && TYPE_CODE (type) == TYPE_CODE_ARRAY
-	  && TYPE_VECTOR (type))
-	opencl_vector = 1;
-    }
-
-  if (TYPE_LENGTH (type) <= (SPU_ARGN_REGNUM - SPU_ARG1_REGNUM + 1) * 16)
-    rvc = RETURN_VALUE_REGISTER_CONVENTION;
-  else
-    rvc = RETURN_VALUE_STRUCT_CONVENTION;
-
-  if (in)
-    {
-      switch (rvc)
-	{
-	case RETURN_VALUE_REGISTER_CONVENTION:
-	  if (opencl_vector && TYPE_LENGTH (type) == 2)
-	    regcache->cooked_write_part (SPU_ARG1_REGNUM, 2, 2, in);
-	  else
-	    spu_value_to_regcache (regcache, SPU_ARG1_REGNUM, type, in);
-	  break;
-
-	case RETURN_VALUE_STRUCT_CONVENTION:
-	  error (_("Cannot set function return value."));
-	  break;
-	}
-    }
-  else if (out)
-    {
-      switch (rvc)
-	{
-	case RETURN_VALUE_REGISTER_CONVENTION:
-	  if (opencl_vector && TYPE_LENGTH (type) == 2)
-	    regcache->cooked_read_part (SPU_ARG1_REGNUM, 2, 2, out);
-	  else
-	    spu_regcache_to_value (regcache, SPU_ARG1_REGNUM, type, out);
-	  break;
-
-	case RETURN_VALUE_STRUCT_CONVENTION:
-	  error (_("Function return value unknown."));
-	  break;
-	}
-    }
-
-  return rvc;
-}
-
-
-/* Breakpoints.  */
-constexpr gdb_byte spu_break_insn[] = { 0x00, 0x00, 0x3f, 0xff };
-
-typedef BP_MANIPULATION (spu_break_insn) spu_breakpoint;
-
-static int
-spu_memory_remove_breakpoint (struct gdbarch *gdbarch,
-			      struct bp_target_info *bp_tgt)
-{
-  /* We work around a problem in combined Cell/B.E. debugging here.  Consider
-     that in a combined application, we have some breakpoints inserted in SPU
-     code, and now the application forks (on the PPU side).  GDB common code
-     will assume that the fork system call copied all breakpoints into the new
-     process' address space, and that all those copies now need to be removed
-     (see breakpoint.c:detach_breakpoints).
-
-     While this is certainly true for PPU side breakpoints, it is not true
-     for SPU side breakpoints.  fork will clone the SPU context file
-     descriptors, so that all the existing SPU contexts are in accessible
-     in the new process.  However, the contents of the SPU contexts themselves
-     are *not* cloned.  Therefore the effect of detach_breakpoints is to
-     remove SPU breakpoints from the *original* SPU context's local store
-     -- this is not the correct behaviour.
-
-     The workaround is to check whether the PID we are asked to remove this
-     breakpoint from (i.e. inferior_ptid.pid ()) is different from the
-     PID of the current inferior (i.e. current_inferior ()->pid).  This is only
-     true in the context of detach_breakpoints.  If so, we simply do nothing.
-     [ Note that for the fork child process, it does not matter if breakpoints
-     remain inserted, because those SPU contexts are not runnable anyway --
-     the Linux kernel allows only the original process to invoke spu_run.  */
-
-  if (inferior_ptid.pid () != current_inferior ()->pid) 
-    return 0;
-
-  return default_memory_remove_breakpoint (gdbarch, bp_tgt);
-}
-
-
-/* Software single-stepping support.  */
-
-static std::vector<CORE_ADDR>
-spu_software_single_step (struct regcache *regcache)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  CORE_ADDR pc, next_pc;
-  unsigned int insn;
-  int offset, reg;
-  gdb_byte buf[4];
-  ULONGEST lslr;
-  std::vector<CORE_ADDR> next_pcs;
-
-  pc = regcache_read_pc (regcache);
-
-  if (target_read_memory (pc, buf, 4))
-    throw_error (MEMORY_ERROR, _("Could not read instruction at %s."),
-		 paddress (gdbarch, pc));
-
-  insn = extract_unsigned_integer (buf, 4, byte_order);
-
-  /* Get local store limit.  */
-  if ((regcache_cooked_read_unsigned (regcache, SPU_LSLR_REGNUM, &lslr)
-       != REG_VALID) || !lslr)
-    lslr = (ULONGEST) -1;
-
-  /* Next sequential instruction is at PC + 4, except if the current
-     instruction is a PPE-assisted call, in which case it is at PC + 8.
-     Wrap around LS limit to be on the safe side.  */
-  if ((insn & 0xffffff00) == 0x00002100)
-    next_pc = (SPUADDR_ADDR (pc) + 8) & lslr;
-  else
-    next_pc = (SPUADDR_ADDR (pc) + 4) & lslr;
-
-  next_pcs.push_back (SPUADDR (SPUADDR_SPU (pc), next_pc));
-
-  if (is_branch (insn, &offset, &reg))
-    {
-      CORE_ADDR target = offset;
-
-      if (reg == SPU_PC_REGNUM)
-	target += SPUADDR_ADDR (pc);
-      else if (reg != -1)
-      {
-	regcache->raw_read_part (reg, 0, 4, buf);
-	target += extract_unsigned_integer (buf, 4, byte_order) & -4;
-      }
-
-      target = target & lslr;
-      if (target != next_pc)
-	next_pcs.push_back (SPUADDR (SPUADDR_SPU (pc), target));
-    }
-
-  return next_pcs;
-}
-
-
-/* Longjmp support.  */
-
-static int
-spu_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
-{
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  gdb_byte buf[4];
-  CORE_ADDR jb_addr;
-  int optim, unavail;
-
-  /* Jump buffer is pointed to by the argument register $r3.  */
-  if (!get_frame_register_bytes (frame, SPU_ARG1_REGNUM, 0, 4, buf,
-				 &optim, &unavail))
-    return 0;
-
-  jb_addr = extract_unsigned_integer (buf, 4, byte_order);
-  if (target_read_memory (SPUADDR (tdep->id, jb_addr), buf, 4))
-    return 0;
-
-  *pc = extract_unsigned_integer (buf, 4, byte_order);
-  *pc = SPUADDR (tdep->id, *pc);
-  return 1;
-}
-
-
-/* Disassembler.  */
-
-struct spu_dis_asm_info : disassemble_info
-{
-  int id;
-};
-
-static void
-spu_dis_asm_print_address (bfd_vma addr, struct disassemble_info *info)
-{
-  struct spu_dis_asm_info *data = (struct spu_dis_asm_info *) info;
-  gdb_disassembler *di
-    = static_cast<gdb_disassembler *>(info->application_data);
-
-  print_address (di->arch (), SPUADDR (data->id, addr),
-		 (struct ui_file *) info->stream);
-}
-
-static int
-gdb_print_insn_spu (bfd_vma memaddr, struct disassemble_info *info)
-{
-  /* The opcodes disassembler does 18-bit address arithmetic.  Make
-     sure the SPU ID encoded in the high bits is added back when we
-     call print_address.  */
-  struct spu_dis_asm_info spu_info;
-
-  memcpy (&spu_info, info, sizeof (*info));
-  spu_info.id = SPUADDR_SPU (memaddr);
-  spu_info.print_address_func = spu_dis_asm_print_address;
-  return default_print_insn (memaddr, &spu_info);
-}
-
-
-/* Target overlays for the SPU overlay manager.
-
-   See the documentation of simple_overlay_update for how the
-   interface is supposed to work.
-
-   Data structures used by the overlay manager:
-
-   struct ovly_table
-     {
-        u32 vma;
-        u32 size;
-        u32 pos;
-        u32 buf;
-     } _ovly_table[];   -- one entry per overlay section
-
-   struct ovly_buf_table
-     {
-        u32 mapped;
-     } _ovly_buf_table[];  -- one entry per overlay buffer
-
-   _ovly_table should never change.
-
-   Both tables are aligned to a 16-byte boundary, the symbols
-   _ovly_table and _ovly_buf_table are of type STT_OBJECT and their
-   size set to the size of the respective array. buf in _ovly_table is
-   an index into _ovly_buf_table.
-
-   mapped is an index into _ovly_table.  Both the mapped and buf indices start
-   from one to reference the first entry in their respective tables.  */
-
-/* Using the per-objfile private data mechanism, we store for each
-   objfile an array of "struct spu_overlay_table" structures, one
-   for each obj_section of the objfile.  This structure holds two
-   fields, MAPPED_PTR and MAPPED_VAL.  If MAPPED_PTR is zero, this
-   is *not* an overlay section.  If it is non-zero, it represents
-   a target address.  The overlay section is mapped iff the target
-   integer at this location equals MAPPED_VAL.  */
-
-struct spu_overlay_table
-  {
-    CORE_ADDR mapped_ptr;
-    CORE_ADDR mapped_val;
-  };
-
-static objfile_key<spu_overlay_table,
-		   gdb::noop_deleter<spu_overlay_table>> spu_overlay_data;
-
-/* Retrieve the overlay table for OBJFILE.  If not already cached, read
-   the _ovly_table data structure from the target and initialize the
-   spu_overlay_table data structure from it.  */
-static struct spu_overlay_table *
-spu_get_overlay_table (struct objfile *objfile)
-{
-  enum bfd_endian byte_order = bfd_big_endian (objfile->obfd)?
-		   BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-  struct bound_minimal_symbol ovly_table_msym, ovly_buf_table_msym;
-  CORE_ADDR ovly_table_base, ovly_buf_table_base;
-  unsigned ovly_table_size, ovly_buf_table_size;
-  struct spu_overlay_table *tbl;
-  struct obj_section *osect;
-  gdb_byte *ovly_table;
-  int i;
-
-  tbl = spu_overlay_data.get (objfile);
-  if (tbl)
-    return tbl;
-
-  ovly_table_msym = lookup_minimal_symbol ("_ovly_table", NULL, objfile);
-  if (!ovly_table_msym.minsym)
-    return NULL;
-
-  ovly_buf_table_msym = lookup_minimal_symbol ("_ovly_buf_table",
-					       NULL, objfile);
-  if (!ovly_buf_table_msym.minsym)
-    return NULL;
-
-  ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
-  ovly_table_size = MSYMBOL_SIZE (ovly_table_msym.minsym);
-
-  ovly_buf_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_buf_table_msym);
-  ovly_buf_table_size = MSYMBOL_SIZE (ovly_buf_table_msym.minsym);
-
-  ovly_table = (gdb_byte *) xmalloc (ovly_table_size);
-  read_memory (ovly_table_base, ovly_table, ovly_table_size);
-
-  tbl = OBSTACK_CALLOC (&objfile->objfile_obstack,
-			objfile->sections_end - objfile->sections,
-			struct spu_overlay_table);
-
-  for (i = 0; i < ovly_table_size / 16; i++)
-    {
-      CORE_ADDR vma  = extract_unsigned_integer (ovly_table + 16*i + 0,
-						 4, byte_order);
-      /* Note that this skips the "size" entry, which is at offset
-	 4.  */
-      CORE_ADDR pos  = extract_unsigned_integer (ovly_table + 16*i + 8,
-						 4, byte_order);
-      CORE_ADDR buf  = extract_unsigned_integer (ovly_table + 16*i + 12,
-						 4, byte_order);
-
-      if (buf == 0 || (buf - 1) * 4 >= ovly_buf_table_size)
-	continue;
-
-      ALL_OBJFILE_OSECTIONS (objfile, osect)
-	if (vma == bfd_section_vma (osect->the_bfd_section)
-	    && pos == osect->the_bfd_section->filepos)
-	  {
-	    int ndx = osect - objfile->sections;
-	    tbl[ndx].mapped_ptr = ovly_buf_table_base + (buf - 1) * 4;
-	    tbl[ndx].mapped_val = i + 1;
-	    break;
-	  }
-    }
-
-  xfree (ovly_table);
-  spu_overlay_data.set (objfile, tbl);
-  return tbl;
-}
-
-/* Read _ovly_buf_table entry from the target to dermine whether
-   OSECT is currently mapped, and update the mapped state.  */
-static void
-spu_overlay_update_osect (struct obj_section *osect)
-{
-  enum bfd_endian byte_order = bfd_big_endian (osect->objfile->obfd)?
-		   BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-  struct spu_overlay_table *ovly_table;
-  CORE_ADDR id, val;
-
-  ovly_table = spu_get_overlay_table (osect->objfile);
-  if (!ovly_table)
-    return;
-
-  ovly_table += osect - osect->objfile->sections;
-  if (ovly_table->mapped_ptr == 0)
-    return;
-
-  id = SPUADDR_SPU (obj_section_addr (osect));
-  val = read_memory_unsigned_integer (SPUADDR (id, ovly_table->mapped_ptr),
-				      4, byte_order);
-  osect->ovly_mapped = (val == ovly_table->mapped_val);
-}
-
-/* If OSECT is NULL, then update all sections' mapped state.
-   If OSECT is non-NULL, then update only OSECT's mapped state.  */
-static void
-spu_overlay_update (struct obj_section *osect)
-{
-  /* Just one section.  */
-  if (osect)
-    spu_overlay_update_osect (osect);
-
-  /* All sections.  */
-  else
-    {
-      for (objfile *objfile : current_program_space->objfiles ())
-	ALL_OBJFILE_OSECTIONS (objfile, osect)
-	  if (section_is_overlay (osect))
-	    spu_overlay_update_osect (osect);
-    }
-}
-
-/* Whenever a new objfile is loaded, read the target's _ovly_table.
-   If there is one, go through all sections and make sure for non-
-   overlay sections LMA equals VMA, while for overlay sections LMA
-   is larger than SPU_OVERLAY_LMA.  */
-static void
-spu_overlay_new_objfile (struct objfile *objfile)
-{
-  struct spu_overlay_table *ovly_table;
-  struct obj_section *osect;
-
-  /* If we've already touched this file, do nothing.  */
-  if (!objfile || spu_overlay_data.get (objfile) != NULL)
-    return;
-
-  /* Consider only SPU objfiles.  */
-  if (bfd_get_arch (objfile->obfd) != bfd_arch_spu)
-    return;
-
-  /* Check if this objfile has overlays.  */
-  ovly_table = spu_get_overlay_table (objfile);
-  if (!ovly_table)
-    return;
-
-  /* Now go and fiddle with all the LMAs.  */
-  ALL_OBJFILE_OSECTIONS (objfile, osect)
-    {
-      asection *bsect = osect->the_bfd_section;
-      int ndx = osect - objfile->sections;
-
-      if (ovly_table[ndx].mapped_ptr == 0)
-	bfd_set_section_lma (bsect, bfd_section_vma (bsect));
-      else
-	bfd_set_section_lma (bsect, SPU_OVERLAY_LMA + bsect->filepos);
-    }
-}
-
-
-/* Insert temporary breakpoint on "main" function of newly loaded
-   SPE context OBJFILE.  */
-static void
-spu_catch_start (struct objfile *objfile)
-{
-  struct bound_minimal_symbol minsym;
-  struct compunit_symtab *cust;
-  CORE_ADDR pc;
-
-  /* Do this only if requested by "set spu stop-on-load on".  */
-  if (!spu_stop_on_load_p)
-    return;
-
-  /* Consider only SPU objfiles.  */
-  if (!objfile || bfd_get_arch (objfile->obfd) != bfd_arch_spu)
-    return;
-
-  /* The main objfile is handled differently.  */
-  if (objfile == symfile_objfile)
-    return;
-
-  /* There can be multiple symbols named "main".  Search for the
-     "main" in *this* objfile.  */
-  minsym = lookup_minimal_symbol ("main", NULL, objfile);
-  if (!minsym.minsym)
-    return;
-
-  /* If we have debugging information, try to use it -- this
-     will allow us to properly skip the prologue.  */
-  pc = BMSYMBOL_VALUE_ADDRESS (minsym);
-  cust
-    = find_pc_sect_compunit_symtab (pc, MSYMBOL_OBJ_SECTION (minsym.objfile,
-							     minsym.minsym));
-  if (cust != NULL)
-    {
-      const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (cust);
-      const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
-      struct symbol *sym;
-      struct symtab_and_line sal;
-
-      sym = block_lookup_symbol (block, "main",
-				 symbol_name_match_type::SEARCH_NAME,
-				 VAR_DOMAIN);
-      if (sym)
-	{
-	  fixup_symbol_section (sym, objfile);
-	  sal = find_function_start_sal (sym, 1);
-	  pc = sal.pc;
-	}
-    }
-
-  /* Use a numerical address for the set_breakpoint command to avoid having
-     the breakpoint re-set incorrectly.  */
-  event_location_up location = new_address_location (pc, NULL, 0);
-  create_breakpoint (get_objfile_arch (objfile), location.get (),
-		     NULL /* cond_string */, -1 /* thread */,
-		     NULL /* extra_string */,
-		     0 /* parse_condition_and_thread */, 1 /* tempflag */,
-		     bp_breakpoint /* type_wanted */,
-		     0 /* ignore_count */,
-		     AUTO_BOOLEAN_FALSE /* pending_break_support */,
-		     &bkpt_breakpoint_ops /* ops */, 0 /* from_tty */,
-		     1 /* enabled */, 0 /* internal  */, 0);
-}
-
-
-/* Look up OBJFILE loaded into FRAME's SPU context.  */
-static struct objfile *
-spu_objfile_from_frame (struct frame_info *frame)
-{
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    return NULL;
-
-  for (objfile *obj : current_program_space->objfiles ())
-    {
-      if (obj->sections != obj->sections_end
-	  && SPUADDR_SPU (obj_section_addr (obj->sections)) == tdep->id)
-	return obj;
-    }
-
-  return NULL;
-}
-
-/* Flush cache for ea pointer access if available.  */
-static void
-flush_ea_cache (void)
-{
-  struct bound_minimal_symbol msymbol;
-  struct objfile *obj;
-
-  if (!has_stack_frames ())
-    return;
-
-  obj = spu_objfile_from_frame (get_current_frame ());
-  if (obj == NULL)
-    return;
-
-  /* Lookup inferior function __cache_flush.  */
-  msymbol = lookup_minimal_symbol ("__cache_flush", NULL, obj);
-  if (msymbol.minsym != NULL)
-    {
-      struct type *type;
-      CORE_ADDR addr;
-
-      type = objfile_type (obj)->builtin_void;
-      type = lookup_function_type (type);
-      type = lookup_pointer_type (type);
-      addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
-
-      call_function_by_hand (value_from_pointer (type, addr), NULL, {});
-    }
-}
-
-/* This handler is called when the inferior has stopped.  If it is stopped in
-   SPU architecture then flush the ea cache if used.  */
-static void
-spu_attach_normal_stop (struct bpstats *bs, int print_frame)
-{
-  if (!spu_auto_flush_cache_p)
-    return;
-
-  /* Temporarily reset spu_auto_flush_cache_p to avoid recursively
-     re-entering this function when __cache_flush stops.  */
-  spu_auto_flush_cache_p = 0;
-  flush_ea_cache ();
-  spu_auto_flush_cache_p = 1;
-}
-
-
-/* "info spu" commands.  */
-
-static void
-info_spu_event_command (const char *args, int from_tty)
-{
-  struct frame_info *frame = get_selected_frame (NULL);
-  ULONGEST event_status = 0;
-  ULONGEST event_mask = 0;
-  gdb_byte buf[100];
-  char annex[32];
-  LONGEST len;
-  int id;
-
-  if (gdbarch_bfd_arch_info (get_frame_arch (frame))->arch != bfd_arch_spu)
-    error (_("\"info spu\" is only supported on the SPU architecture."));
-
-  id = get_frame_register_unsigned (frame, SPU_ID_REGNUM);
-
-  xsnprintf (annex, sizeof annex, "%d/event_status", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, (sizeof (buf) - 1));
-  if (len <= 0)
-    error (_("Could not read event_status."));
-  buf[len] = '\0';
-  event_status = strtoulst ((char *) buf, NULL, 16);
- 
-  xsnprintf (annex, sizeof annex, "%d/event_mask", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, (sizeof (buf) - 1));
-  if (len <= 0)
-    error (_("Could not read event_mask."));
-  buf[len] = '\0';
-  event_mask = strtoulst ((char *) buf, NULL, 16);
- 
-  ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoEvent");
-
-  current_uiout->text (_("Event Status "));
-  current_uiout->field_fmt ("event_status", "0x%s", phex (event_status, 4));
-  current_uiout->text ("\n");
-  current_uiout->text (_("Event Mask   "));
-  current_uiout->field_fmt ("event_mask", "0x%s", phex (event_mask, 4));
-  current_uiout->text ("\n");
-}
-
-static void
-info_spu_signal_command (const char *args, int from_tty)
-{
-  struct frame_info *frame = get_selected_frame (NULL);
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  ULONGEST signal1 = 0;
-  ULONGEST signal1_type = 0;
-  int signal1_pending = 0;
-  ULONGEST signal2 = 0;
-  ULONGEST signal2_type = 0;
-  int signal2_pending = 0;
-  char annex[32];
-  gdb_byte buf[100];
-  LONGEST len;
-  int id;
-
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    error (_("\"info spu\" is only supported on the SPU architecture."));
-
-  id = get_frame_register_unsigned (frame, SPU_ID_REGNUM);
-
-  xsnprintf (annex, sizeof annex, "%d/signal1", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU,
-		     annex, buf, 0, 4);
-  if (len < 0)
-    error (_("Could not read signal1."));
-  else if (len == 4)
-    {
-      signal1 = extract_unsigned_integer (buf, 4, byte_order);
-      signal1_pending = 1;
-    }
-    
-  xsnprintf (annex, sizeof annex, "%d/signal1_type", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, (sizeof (buf) - 1));
-  if (len <= 0)
-    error (_("Could not read signal1_type."));
-  buf[len] = '\0';
-  signal1_type = strtoulst ((char *) buf, NULL, 16);
-
-  xsnprintf (annex, sizeof annex, "%d/signal2", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU,
-		     annex, buf, 0, 4);
-  if (len < 0)
-    error (_("Could not read signal2."));
-  else if (len == 4)
-    {
-      signal2 = extract_unsigned_integer (buf, 4, byte_order);
-      signal2_pending = 1;
-    }
-    
-  xsnprintf (annex, sizeof annex, "%d/signal2_type", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, (sizeof (buf) - 1));
-  if (len <= 0)
-    error (_("Could not read signal2_type."));
-  buf[len] = '\0';
-  signal2_type = strtoulst ((char *) buf, NULL, 16);
-
-  ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoSignal");
-
-  if (current_uiout->is_mi_like_p ())
-    {
-      current_uiout->field_signed ("signal1_pending", signal1_pending);
-      current_uiout->field_fmt ("signal1", "0x%s", phex_nz (signal1, 4));
-      current_uiout->field_signed ("signal1_type", signal1_type);
-      current_uiout->field_signed ("signal2_pending", signal2_pending);
-      current_uiout->field_fmt ("signal2", "0x%s", phex_nz (signal2, 4));
-      current_uiout->field_signed ("signal2_type", signal2_type);
-    }
-  else
-    {
-      if (signal1_pending)
-	printf_filtered (_("Signal 1 control word 0x%s "), phex (signal1, 4));
-      else
-	printf_filtered (_("Signal 1 not pending "));
-
-      if (signal1_type)
-	printf_filtered (_("(Type Or)\n"));
-      else
-	printf_filtered (_("(Type Overwrite)\n"));
-
-      if (signal2_pending)
-	printf_filtered (_("Signal 2 control word 0x%s "), phex (signal2, 4));
-      else
-	printf_filtered (_("Signal 2 not pending "));
-
-      if (signal2_type)
-	printf_filtered (_("(Type Or)\n"));
-      else
-	printf_filtered (_("(Type Overwrite)\n"));
-    }
-}
-
-static void
-info_spu_mailbox_list (gdb_byte *buf, int nr, enum bfd_endian byte_order,
-		       const char *field, const char *msg)
-{
-  int i;
-
-  if (nr <= 0)
-    return;
-
-  ui_out_emit_table table_emitter (current_uiout, 1, nr, "mbox");
-
-  current_uiout->table_header (32, ui_left, field, msg);
-  current_uiout->table_body ();
-
-  for (i = 0; i < nr; i++)
-    {
-      {
-	ULONGEST val;
-	ui_out_emit_tuple tuple_emitter (current_uiout, "mbox");
-	val = extract_unsigned_integer (buf + 4*i, 4, byte_order);
-	current_uiout->field_fmt (field, "0x%s", phex (val, 4));
-      }
-
-      current_uiout->text ("\n");
-    }
-}
-
-static void
-info_spu_mailbox_command (const char *args, int from_tty)
-{
-  struct frame_info *frame = get_selected_frame (NULL);
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  char annex[32];
-  gdb_byte buf[1024];
-  LONGEST len;
-  int id;
-
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    error (_("\"info spu\" is only supported on the SPU architecture."));
-
-  id = get_frame_register_unsigned (frame, SPU_ID_REGNUM);
-
-  ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoMailbox");
-
-  xsnprintf (annex, sizeof annex, "%d/mbox_info", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, sizeof buf);
-  if (len < 0)
-    error (_("Could not read mbox_info."));
-
-  info_spu_mailbox_list (buf, len / 4, byte_order,
-			 "mbox", "SPU Outbound Mailbox");
-
-  xsnprintf (annex, sizeof annex, "%d/ibox_info", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, sizeof buf);
-  if (len < 0)
-    error (_("Could not read ibox_info."));
-
-  info_spu_mailbox_list (buf, len / 4, byte_order,
-			 "ibox", "SPU Outbound Interrupt Mailbox");
-
-  xsnprintf (annex, sizeof annex, "%d/wbox_info", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, sizeof buf);
-  if (len < 0)
-    error (_("Could not read wbox_info."));
-
-  info_spu_mailbox_list (buf, len / 4, byte_order,
-			 "wbox", "SPU Inbound Mailbox");
-}
-
-static ULONGEST
-spu_mfc_get_bitfield (ULONGEST word, int first, int last)
-{
-  ULONGEST mask = ~(~(ULONGEST)0 << (last - first + 1));
-  return (word >> (63 - last)) & mask;
-}
-
-static void
-info_spu_dma_cmdlist (gdb_byte *buf, int nr, enum bfd_endian byte_order)
-{
-  static const char *spu_mfc_opcode[256] =
-    {
-    /* 00 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 10 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 20 */ "put", "putb", "putf", NULL, "putl", "putlb", "putlf", NULL,
-             "puts", "putbs", "putfs", NULL, NULL, NULL, NULL, NULL,
-    /* 30 */ "putr", "putrb", "putrf", NULL, "putrl", "putrlb", "putrlf", NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 40 */ "get", "getb", "getf", NULL, "getl", "getlb", "getlf", NULL,
-             "gets", "getbs", "getfs", NULL, NULL, NULL, NULL, NULL,
-    /* 50 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 60 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 70 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* 80 */ "sdcrt", "sdcrtst", NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, "sdcrz", NULL, NULL, NULL, "sdcrst", NULL, "sdcrf",
-    /* 90 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* a0 */ "sndsig", "sndsigb", "sndsigf", NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* b0 */ "putlluc", NULL, NULL, NULL, "putllc", NULL, NULL, NULL,
-             "putqlluc", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* c0 */ "barrier", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             "mfceieio", NULL, NULL, NULL, "mfcsync", NULL, NULL, NULL,
-    /* d0 */ "getllar", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* e0 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    /* f0 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    };
-
-  int *seq = XALLOCAVEC (int, nr);
-  int done = 0;
-  int i, j;
-
-
-  /* Determine sequence in which to display (valid) entries.  */
-  for (i = 0; i < nr; i++)
-    {
-      /* Search for the first valid entry all of whose
-	 dependencies are met.  */
-      for (j = 0; j < nr; j++)
-	{
-          ULONGEST mfc_cq_dw3;
-	  ULONGEST dependencies;
-
-	  if (done & (1 << (nr - 1 - j)))
-	    continue;
-
-	  mfc_cq_dw3
-	    = extract_unsigned_integer (buf + 32*j + 24,8, byte_order);
-	  if (!spu_mfc_get_bitfield (mfc_cq_dw3, 16, 16))
-	    continue;
-
-	  dependencies = spu_mfc_get_bitfield (mfc_cq_dw3, 0, nr - 1);
-	  if ((dependencies & done) != dependencies)
-	    continue;
-
-	  seq[i] = j;
-	  done |= 1 << (nr - 1 - j);
-	  break;
-	}
-
-      if (j == nr)
-	break;
-    }
-
-  nr = i;
-
-
-  ui_out_emit_table table_emitter (current_uiout, 10, nr, "dma_cmd");
-
-  current_uiout->table_header (7, ui_left, "opcode", "Opcode");
-  current_uiout->table_header (3, ui_left, "tag", "Tag");
-  current_uiout->table_header (3, ui_left, "tid", "TId");
-  current_uiout->table_header (3, ui_left, "rid", "RId");
-  current_uiout->table_header (18, ui_left, "ea", "EA");
-  current_uiout->table_header (7, ui_left, "lsa", "LSA");
-  current_uiout->table_header (7, ui_left, "size", "Size");
-  current_uiout->table_header (7, ui_left, "lstaddr", "LstAddr");
-  current_uiout->table_header (7, ui_left, "lstsize", "LstSize");
-  current_uiout->table_header (1, ui_left, "error_p", "E");
-
-  current_uiout->table_body ();
-
-  for (i = 0; i < nr; i++)
-    {
-      ULONGEST mfc_cq_dw0;
-      ULONGEST mfc_cq_dw1;
-      ULONGEST mfc_cq_dw2;
-      int mfc_cmd_opcode, mfc_cmd_tag, rclass_id, tclass_id;
-      int list_lsa, list_size, mfc_lsa, mfc_size;
-      ULONGEST mfc_ea;
-      int list_valid_p, qw_valid_p, ea_valid_p, cmd_error_p;
-
-      /* Decode contents of MFC Command Queue Context Save/Restore Registers.
-	 See "Cell Broadband Engine Registers V1.3", section 3.3.2.1.  */
-
-      mfc_cq_dw0
-	= extract_unsigned_integer (buf + 32*seq[i], 8, byte_order);
-      mfc_cq_dw1
-	= extract_unsigned_integer (buf + 32*seq[i] + 8, 8, byte_order);
-      mfc_cq_dw2
-	= extract_unsigned_integer (buf + 32*seq[i] + 16, 8, byte_order);
-
-      list_lsa = spu_mfc_get_bitfield (mfc_cq_dw0, 0, 14);
-      list_size = spu_mfc_get_bitfield (mfc_cq_dw0, 15, 26);
-      mfc_cmd_opcode = spu_mfc_get_bitfield (mfc_cq_dw0, 27, 34);
-      mfc_cmd_tag = spu_mfc_get_bitfield (mfc_cq_dw0, 35, 39);
-      list_valid_p = spu_mfc_get_bitfield (mfc_cq_dw0, 40, 40);
-      rclass_id = spu_mfc_get_bitfield (mfc_cq_dw0, 41, 43);
-      tclass_id = spu_mfc_get_bitfield (mfc_cq_dw0, 44, 46);
-
-      mfc_ea = spu_mfc_get_bitfield (mfc_cq_dw1, 0, 51) << 12
-		| spu_mfc_get_bitfield (mfc_cq_dw2, 25, 36);
-
-      mfc_lsa = spu_mfc_get_bitfield (mfc_cq_dw2, 0, 13);
-      mfc_size = spu_mfc_get_bitfield (mfc_cq_dw2, 14, 24);
-      qw_valid_p = spu_mfc_get_bitfield (mfc_cq_dw2, 38, 38);
-      ea_valid_p = spu_mfc_get_bitfield (mfc_cq_dw2, 39, 39);
-      cmd_error_p = spu_mfc_get_bitfield (mfc_cq_dw2, 40, 40);
-
-      {
-	ui_out_emit_tuple tuple_emitter (current_uiout, "cmd");
-
-	if (spu_mfc_opcode[mfc_cmd_opcode])
-	  current_uiout->field_string ("opcode", spu_mfc_opcode[mfc_cmd_opcode]);
-	else
-	  current_uiout->field_signed ("opcode", mfc_cmd_opcode);
-
-	current_uiout->field_signed ("tag", mfc_cmd_tag);
-	current_uiout->field_signed ("tid", tclass_id);
-	current_uiout->field_signed ("rid", rclass_id);
-
-	if (ea_valid_p)
-	  current_uiout->field_fmt ("ea", "0x%s", phex (mfc_ea, 8));
-	else
-	  current_uiout->field_skip ("ea");
-
-	current_uiout->field_fmt ("lsa", "0x%05x", mfc_lsa << 4);
-	if (qw_valid_p)
-	  current_uiout->field_fmt ("size", "0x%05x", mfc_size << 4);
-	else
-	  current_uiout->field_fmt ("size", "0x%05x", mfc_size);
-
-	if (list_valid_p)
-	  {
-	    current_uiout->field_fmt ("lstaddr", "0x%05x", list_lsa << 3);
-	    current_uiout->field_fmt ("lstsize", "0x%05x", list_size << 3);
-	  }
-	else
-	  {
-	    current_uiout->field_skip ("lstaddr");
-	    current_uiout->field_skip ("lstsize");
-	  }
-
-	if (cmd_error_p)
-	  current_uiout->field_string ("error_p", "*");
-	else
-	  current_uiout->field_skip ("error_p");
-      }
-
-      current_uiout->text ("\n");
-    }
-}
-
-static void
-info_spu_dma_command (const char *args, int from_tty)
-{
-  struct frame_info *frame = get_selected_frame (NULL);
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  ULONGEST dma_info_type;
-  ULONGEST dma_info_mask;
-  ULONGEST dma_info_status;
-  ULONGEST dma_info_stall_and_notify;
-  ULONGEST dma_info_atomic_command_status;
-  char annex[32];
-  gdb_byte buf[1024];
-  LONGEST len;
-  int id;
-
-  if (gdbarch_bfd_arch_info (get_frame_arch (frame))->arch != bfd_arch_spu)
-    error (_("\"info spu\" is only supported on the SPU architecture."));
-
-  id = get_frame_register_unsigned (frame, SPU_ID_REGNUM);
-
-  xsnprintf (annex, sizeof annex, "%d/dma_info", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, 40 + 16 * 32);
-  if (len <= 0)
-    error (_("Could not read dma_info."));
-
-  dma_info_type
-    = extract_unsigned_integer (buf, 8, byte_order);
-  dma_info_mask
-    = extract_unsigned_integer (buf + 8, 8, byte_order);
-  dma_info_status
-    = extract_unsigned_integer (buf + 16, 8, byte_order);
-  dma_info_stall_and_notify
-    = extract_unsigned_integer (buf + 24, 8, byte_order);
-  dma_info_atomic_command_status
-    = extract_unsigned_integer (buf + 32, 8, byte_order);
-  
-  ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoDMA");
-
-  if (current_uiout->is_mi_like_p ())
-    {
-      current_uiout->field_fmt ("dma_info_type", "0x%s",
-				phex_nz (dma_info_type, 4));
-      current_uiout->field_fmt ("dma_info_mask", "0x%s",
-				phex_nz (dma_info_mask, 4));
-      current_uiout->field_fmt ("dma_info_status", "0x%s",
-				phex_nz (dma_info_status, 4));
-      current_uiout->field_fmt ("dma_info_stall_and_notify", "0x%s",
-				phex_nz (dma_info_stall_and_notify, 4));
-      current_uiout->field_fmt ("dma_info_atomic_command_status", "0x%s",
-				phex_nz (dma_info_atomic_command_status, 4));
-    }
-  else
-    {
-      const char *query_msg = _("no query pending");
-
-      if (dma_info_type & 4)
-	switch (dma_info_type & 3)
-	  {
-	    case 1: query_msg = _("'any' query pending"); break;
-	    case 2: query_msg = _("'all' query pending"); break;
-	    default: query_msg = _("undefined query type"); break;
-	  }
-
-      printf_filtered (_("Tag-Group Status  0x%s\n"),
-		       phex (dma_info_status, 4));
-      printf_filtered (_("Tag-Group Mask    0x%s (%s)\n"),
-		       phex (dma_info_mask, 4), query_msg);
-      printf_filtered (_("Stall-and-Notify  0x%s\n"),
-		       phex (dma_info_stall_and_notify, 4));
-      printf_filtered (_("Atomic Cmd Status 0x%s\n"),
-		       phex (dma_info_atomic_command_status, 4));
-      printf_filtered ("\n");
-    }
-
-  info_spu_dma_cmdlist (buf + 40, 16, byte_order);
-}
-
-static void
-info_spu_proxydma_command (const char *args, int from_tty)
-{
-  struct frame_info *frame = get_selected_frame (NULL);
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  ULONGEST dma_info_type;
-  ULONGEST dma_info_mask;
-  ULONGEST dma_info_status;
-  char annex[32];
-  gdb_byte buf[1024];
-  LONGEST len;
-  int id;
-
-  if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu)
-    error (_("\"info spu\" is only supported on the SPU architecture."));
-
-  id = get_frame_register_unsigned (frame, SPU_ID_REGNUM);
-
-  xsnprintf (annex, sizeof annex, "%d/proxydma_info", id);
-  len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex,
-		     buf, 0, 24 + 8 * 32);
-  if (len <= 0)
-    error (_("Could not read proxydma_info."));
-
-  dma_info_type = extract_unsigned_integer (buf, 8, byte_order);
-  dma_info_mask = extract_unsigned_integer (buf + 8, 8, byte_order);
-  dma_info_status = extract_unsigned_integer (buf + 16, 8, byte_order);
-  
-  ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoProxyDMA");
-
-  if (current_uiout->is_mi_like_p ())
-    {
-      current_uiout->field_fmt ("proxydma_info_type", "0x%s",
-				phex_nz (dma_info_type, 4));
-      current_uiout->field_fmt ("proxydma_info_mask", "0x%s",
-				phex_nz (dma_info_mask, 4));
-      current_uiout->field_fmt ("proxydma_info_status", "0x%s",
-				phex_nz (dma_info_status, 4));
-    }
-  else
-    {
-      const char *query_msg;
-
-      switch (dma_info_type & 3)
-	{
-	case 0: query_msg = _("no query pending"); break;
-	case 1: query_msg = _("'any' query pending"); break;
-	case 2: query_msg = _("'all' query pending"); break;
-	default: query_msg = _("undefined query type"); break;
-	}
-
-      printf_filtered (_("Tag-Group Status  0x%s\n"),
-		       phex (dma_info_status, 4));
-      printf_filtered (_("Tag-Group Mask    0x%s (%s)\n"),
-		       phex (dma_info_mask, 4), query_msg);
-      printf_filtered ("\n");
-    }
-
-  info_spu_dma_cmdlist (buf + 24, 8, byte_order);
-}
-
-static void
-info_spu_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"info spu\" must be followed by "
-		       "the name of an SPU facility.\n"));
-  help_list (infospucmdlist, "info spu ", all_commands, gdb_stdout);
-}
-
-
-/* Root of all "set spu "/"show spu " commands.  */
-
-static void
-show_spu_command (const char *args, int from_tty)
-{
-  help_list (showspucmdlist, "show spu ", all_commands, gdb_stdout);
-}
-
-static void
-set_spu_command (const char *args, int from_tty)
-{
-  help_list (setspucmdlist, "set spu ", all_commands, gdb_stdout);
-}
-
-static void
-show_spu_stop_on_load (struct ui_file *file, int from_tty,
-                       struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file, _("Stopping for new SPE threads is %s.\n"),
-                    value);
-}
-
-static void
-show_spu_auto_flush_cache (struct ui_file *file, int from_tty,
-			   struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file, _("Automatic software-cache flush is %s.\n"),
-                    value);
-}
-
-
-/* Set up gdbarch struct.  */
-
-static struct gdbarch *
-spu_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
-{
-  struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
-  int id = -1;
-
-  /* Which spufs ID was requested as address space?  */
-  if (info.id)
-    id = *info.id;
-  /* For objfile architectures of SPU solibs, decode the ID from the name.
-     This assumes the filename convention employed by solib-spu.c.  */
-  else if (info.abfd)
-    {
-      const char *name = strrchr (info.abfd->filename, '@');
-      if (name)
-	sscanf (name, "@0x%*x <%d>", &id);
-    }
-
-  /* Find a candidate among extant architectures.  */
-  for (arches = gdbarch_list_lookup_by_info (arches, &info);
-       arches != NULL;
-       arches = gdbarch_list_lookup_by_info (arches->next, &info))
-    {
-      tdep = gdbarch_tdep (arches->gdbarch);
-      if (tdep && tdep->id == id)
-	return arches->gdbarch;
-    }
-
-  /* None found, so create a new architecture.  */
-  tdep = XCNEW (struct gdbarch_tdep);
-  tdep->id = id;
-  gdbarch = gdbarch_alloc (&info, tdep);
-
-  /* Disassembler.  */
-  set_gdbarch_print_insn (gdbarch, gdb_print_insn_spu);
-
-  /* Registers.  */
-  set_gdbarch_num_regs (gdbarch, SPU_NUM_REGS);
-  set_gdbarch_num_pseudo_regs (gdbarch, SPU_NUM_PSEUDO_REGS);
-  set_gdbarch_sp_regnum (gdbarch, SPU_SP_REGNUM);
-  set_gdbarch_pc_regnum (gdbarch, SPU_PC_REGNUM);
-  set_gdbarch_read_pc (gdbarch, spu_read_pc);
-  set_gdbarch_write_pc (gdbarch, spu_write_pc);
-  set_gdbarch_register_name (gdbarch, spu_register_name);
-  set_gdbarch_register_type (gdbarch, spu_register_type);
-  set_gdbarch_pseudo_register_read (gdbarch, spu_pseudo_register_read);
-  set_gdbarch_pseudo_register_write (gdbarch, spu_pseudo_register_write);
-  set_gdbarch_value_from_register (gdbarch, spu_value_from_register);
-  set_gdbarch_register_reggroup_p (gdbarch, spu_register_reggroup_p);
-  set_gdbarch_dwarf2_reg_to_regnum (gdbarch, spu_dwarf_reg_to_regnum);
-  set_gdbarch_ax_pseudo_register_collect
-    (gdbarch, spu_ax_pseudo_register_collect);
-  set_gdbarch_ax_pseudo_register_push_stack
-    (gdbarch, spu_ax_pseudo_register_push_stack);
-
-  /* Data types.  */
-  set_gdbarch_char_signed (gdbarch, 0);
-  set_gdbarch_ptr_bit (gdbarch, 32);
-  set_gdbarch_addr_bit (gdbarch, 32);
-  set_gdbarch_short_bit (gdbarch, 16);
-  set_gdbarch_int_bit (gdbarch, 32);
-  set_gdbarch_long_bit (gdbarch, 32);
-  set_gdbarch_long_long_bit (gdbarch, 64);
-  set_gdbarch_float_bit (gdbarch, 32);
-  set_gdbarch_double_bit (gdbarch, 64);
-  set_gdbarch_long_double_bit (gdbarch, 64);
-  set_gdbarch_float_format (gdbarch, floatformats_ieee_single);
-  set_gdbarch_double_format (gdbarch, floatformats_ieee_double);
-  set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double);
-
-  /* Address handling.  */
-  set_gdbarch_address_to_pointer (gdbarch, spu_address_to_pointer);
-  set_gdbarch_pointer_to_address (gdbarch, spu_pointer_to_address);
-  set_gdbarch_integer_to_address (gdbarch, spu_integer_to_address);
-  set_gdbarch_address_class_type_flags (gdbarch, spu_address_class_type_flags);
-  set_gdbarch_address_class_type_flags_to_name
-    (gdbarch, spu_address_class_type_flags_to_name);
-  set_gdbarch_address_class_name_to_type_flags
-    (gdbarch, spu_address_class_name_to_type_flags);
-
-  /* We need to support more than "addr_bit" significant address bits
-     in order to support SPUADDR_ADDR encoded values.  */
-  set_gdbarch_significant_addr_bit (gdbarch, 64);
-
-  /* Inferior function calls.  */
-  set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
-  set_gdbarch_frame_align (gdbarch, spu_frame_align);
-  set_gdbarch_frame_red_zone_size (gdbarch, 2000);
-  set_gdbarch_push_dummy_code (gdbarch, spu_push_dummy_code);
-  set_gdbarch_push_dummy_call (gdbarch, spu_push_dummy_call);
-  set_gdbarch_dummy_id (gdbarch, spu_dummy_id);
-  set_gdbarch_return_value (gdbarch, spu_return_value);
-
-  /* Frame handling.  */
-  set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
-  dwarf2_append_unwinders (gdbarch);
-  frame_unwind_append_unwinder (gdbarch, &spu_frame_unwind);
-  frame_base_set_default (gdbarch, &spu_frame_base);
-  set_gdbarch_unwind_pc (gdbarch, spu_unwind_pc);
-  set_gdbarch_unwind_sp (gdbarch, spu_unwind_sp);
-  set_gdbarch_virtual_frame_pointer (gdbarch, spu_virtual_frame_pointer);
-  set_gdbarch_frame_args_skip (gdbarch, 0);
-  set_gdbarch_skip_prologue (gdbarch, spu_skip_prologue);
-  set_gdbarch_stack_frame_destroyed_p (gdbarch, spu_stack_frame_destroyed_p);
-
-  /* Cell/B.E. cross-architecture unwinder support.  */
-  frame_unwind_prepend_unwinder (gdbarch, &spu2ppu_unwind);
-
-  /* Breakpoints.  */
-  set_gdbarch_decr_pc_after_break (gdbarch, 4);
-  set_gdbarch_breakpoint_kind_from_pc (gdbarch, spu_breakpoint::kind_from_pc);
-  set_gdbarch_sw_breakpoint_from_kind (gdbarch, spu_breakpoint::bp_from_kind);
-  set_gdbarch_memory_remove_breakpoint (gdbarch, spu_memory_remove_breakpoint);
-  set_gdbarch_software_single_step (gdbarch, spu_software_single_step);
-  set_gdbarch_get_longjmp_target (gdbarch, spu_get_longjmp_target);
-
-  /* Overlays.  */
-  set_gdbarch_overlay_update (gdbarch, spu_overlay_update);
-
-  return gdbarch;
-}
-
-void
-_initialize_spu_tdep (void)
-{
-  register_gdbarch_init (bfd_arch_spu, spu_gdbarch_init);
-
-  /* Add ourselves to objfile event chain.  */
-  gdb::observers::new_objfile.attach (spu_overlay_new_objfile);
-
-  /* Install spu stop-on-load handler.  */
-  gdb::observers::new_objfile.attach (spu_catch_start);
-
-  /* Add ourselves to normal_stop event chain.  */
-  gdb::observers::normal_stop.attach (spu_attach_normal_stop);
-
-  /* Add root prefix command for all "set spu"/"show spu" commands.  */
-  add_prefix_cmd ("spu", no_class, set_spu_command,
-		  _("Various SPU specific commands."),
-		  &setspucmdlist, "set spu ", 0, &setlist);
-  add_prefix_cmd ("spu", no_class, show_spu_command,
-		  _("Various SPU specific commands."),
-		  &showspucmdlist, "show spu ", 0, &showlist);
-
-  /* Toggle whether or not to add a temporary breakpoint at the "main"
-     function of new SPE contexts.  */
-  add_setshow_boolean_cmd ("stop-on-load", class_support,
-                          &spu_stop_on_load_p, _("\
-Set whether to stop for new SPE threads."),
-                           _("\
-Show whether to stop for new SPE threads."),
-                           _("\
-Use \"on\" to give control to the user when a new SPE thread\n\
-enters its \"main\" function.\n\
-Use \"off\" to disable stopping for new SPE threads."),
-                          NULL,
-                          show_spu_stop_on_load,
-                          &setspucmdlist, &showspucmdlist);
-
-  /* Toggle whether or not to automatically flush the software-managed
-     cache whenever SPE execution stops.  */
-  add_setshow_boolean_cmd ("auto-flush-cache", class_support,
-                          &spu_auto_flush_cache_p, _("\
-Set whether to automatically flush the software-managed cache."),
-                           _("\
-Show whether to automatically flush the software-managed cache."),
-                           _("\
-Use \"on\" to automatically flush the software-managed cache\n\
-whenever SPE execution stops.\n\
-Use \"off\" to never automatically flush the software-managed cache."),
-                          NULL,
-                          show_spu_auto_flush_cache,
-                          &setspucmdlist, &showspucmdlist);
-
-  /* Add root prefix command for all "info spu" commands.  */
-  add_prefix_cmd ("spu", class_info, info_spu_command,
-		  _("Various SPU specific commands."),
-		  &infospucmdlist, "info spu ", 0, &infolist);
-
-  /* Add various "info spu" commands.  */
-  add_cmd ("event", class_info, info_spu_event_command,
-	   _("Display SPU event facility status."),
-	   &infospucmdlist);
-  add_cmd ("signal", class_info, info_spu_signal_command,
-	   _("Display SPU signal notification facility status."),
-	   &infospucmdlist);
-  add_cmd ("mailbox", class_info, info_spu_mailbox_command,
-	   _("Display SPU mailbox facility status."),
-	   &infospucmdlist);
-  add_cmd ("dma", class_info, info_spu_dma_command,
-	   _("Display MFC DMA status."),
-	   &infospucmdlist);
-  add_cmd ("proxydma", class_info, info_spu_proxydma_command,
-	   _("Display MFC Proxy-DMA status."),
-	   &infospucmdlist);
-}
diff --git a/gdb/spu-tdep.h b/gdb/spu-tdep.h
deleted file mode 100644
index 255be2ed5a..0000000000
--- a/gdb/spu-tdep.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* SPU target-dependent code for GDB, the GNU debugger.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef SPU_TDEP_H
-#define SPU_TDEP_H
-
-/* Number of registers.  */
-#define SPU_NUM_REGS         130
-#define SPU_NUM_PSEUDO_REGS  6
-#define SPU_NUM_GPRS	     128
-
-/* Register numbers of various important registers.  */
-enum spu_regnum
-{
-  /* SPU calling convention.  */
-  SPU_LR_REGNUM = 0,		/* Link register.  */
-  SPU_RAW_SP_REGNUM = 1,	/* Stack pointer (full register).  */
-  SPU_ARG1_REGNUM = 3,		/* First argument register.  */
-  SPU_ARGN_REGNUM = 74,		/* Last argument register.  */
-  SPU_SAVED1_REGNUM = 80,	/* First call-saved register.  */
-  SPU_SAVEDN_REGNUM = 127,	/* Last call-saved register.  */
-  SPU_FP_REGNUM = 127,		/* Frame pointer.  */
-
-  /* Special registers.  */
-  SPU_ID_REGNUM = 128,		/* SPU ID register.  */
-  SPU_PC_REGNUM = 129,		/* Next program counter.  */
-  SPU_SP_REGNUM = 130,		/* Stack pointer (preferred slot).  */
-  SPU_FPSCR_REGNUM = 131,	/* Floating point status/control register.  */
-  SPU_SRR0_REGNUM = 132,	/* SRR0 register.  */
-  SPU_LSLR_REGNUM = 133,	/* Local store limit register.  */
-  SPU_DECR_REGNUM = 134,	/* Decrementer value.  */
-  SPU_DECR_STATUS_REGNUM = 135	/* Decrementer status.  */
-};
-
-/* Address conversions.
-
-   In a combined PPU/SPU debugging session, we have to consider multiple
-   address spaces: the PPU 32- or 64-bit address space, and the 32-bit
-   local store address space for each SPU context.  As it is currently
-   not yet possible to use the program_space / address_space mechanism
-   to represent this, we encode all those addresses into one single
-   64-bit address for the whole process.  For SPU programs using overlays,
-   this address space must also include separate ranges reserved for the
-   LMA of overlay sections.
-
-
-   The following combinations are supported for combined debugging:
-
-   PPU address (this relies on the fact that PPC 64-bit user space
-   addresses can never have the highest-most bit set):
-
-      +-+---------------------------------+
-      |0|              ADDR [63]          |
-      +-+---------------------------------+
-
-   SPU address for SPU context with id SPU (this assumes that SPU
-   IDs, which are file descriptors, are never larger than 2^30):
-
-      +-+-+--------------+----------------+
-      |1|0|    SPU [30]  |    ADDR [32]   |
-      +-+-+--------------+----------------+
-
-   SPU overlay section LMA for SPU context with id SPU:
-
-      +-+-+--------------+----------------+
-      |1|1|    SPU [30]  |    ADDR [32]   |
-      +-+-+--------------+----------------+
-
-
-   In SPU stand-alone debugging mode (using spu-linux-nat.c),
-   the following combinations are supported:
-
-   SPU address:
-
-      +-+-+--------------+----------------+
-      |0|0|     0        |    ADDR [32]   |
-      +-+-+--------------+----------------+
-
-   SPU overlay section LMA:
-
-      +-+-+--------------+----------------+
-      |0|1|     0        |    ADDR [32]   |
-      +-+-+--------------+----------------+
-
-
-   The following macros allow manipulation of addresses in the
-   above formats.  */
-
-#define SPUADDR(spu, addr) \
-  ((spu) != -1? (ULONGEST)1 << 63 | (ULONGEST)(spu) << 32 | (addr) : (addr))
-
-#define SPUADDR_SPU(addr) \
-  (((addr) & (ULONGEST)1 << 63) \
-   ? (int) ((ULONGEST)(addr) >> 32 & 0x3fffffff) \
-   : -1)
-
-#define SPUADDR_ADDR(addr) \
-  (((addr) & (ULONGEST)1 << 63)? (ULONGEST)(addr) & 0xffffffff : (addr))
-
-#define SPU_OVERLAY_LMA ((ULONGEST)1 << 62)
-
-#endif
diff --git a/gdb/target.h b/gdb/target.h
index c2f6203174..8dbd2d62dc 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -137,8 +137,6 @@ enum target_object
 {
   /* AVR target specific transfer.  See "avr-tdep.c" and "remote.c".  */
   TARGET_OBJECT_AVR,
-  /* SPU target specific transfer.  See "spu-tdep.c".  */
-  TARGET_OBJECT_SPU,
   /* Transfer up-to LEN bytes of memory starting at OFFSET.  */
   TARGET_OBJECT_MEMORY,
   /* Memory, avoiding GDB's data cache and trusting the executable.
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e86091eee3..64c7d38861 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,32 @@
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* gdb.arch/spu-info.exp: Remove file.
+	* gdb.arch/spu-info.c: Remove file.
+	* gdb.arch/spu-ls.exp: Remove file.
+	* gdb.arch/spu-ls.c: Remove file.
+
+	* gdb.asm/asm-source.exp: Remove support for spu*-*-*.
+	* gdb.asm/spu.inc: Remove file.
+
+	* gdb.base/dump.exp: Remove support for spu*-*-*.
+	* gdb.base/stack-checking.exp: Likewise.
+	* gdb.base/overlays.exp: Likewise.
+	* gdb.base/ovlymgr.c: Likewise.
+	* gdb.base/spu.ld: Remove file.
+
+	* gdb.cp/bs15503.exp: Remove support for spu*-*-*.
+	* gdb.cp/cpexprs.exp: Likewise.
+	* gdb.cp/exception.exp: Likewise.
+	* gdb.cp/gdb2495.exp: Likewise.
+	* gdb.cp/mb-templates.exp: Likewise.
+	* gdb.cp/pr9167.exp: Likewise.
+	* gdb.cp/userdef.exp: Likewise.
+
+	* gdb.xml/tdesc-regs.exp: Remove support for spu*-*-*.
+
+	* gdb.cell: Remove directory.
+	* lib/cell.exp: Remove file.
+
 2019-09-19  Tom de Vries  <tdevries@suse.de>
 
 	* lib/gdb.exp (gdb_test): Eliminate "^FOOBAR$" pattern.
diff --git a/gdb/testsuite/gdb.arch/spu-info.c b/gdb/testsuite/gdb.arch/spu-info.c
deleted file mode 100644
index 3046525c9e..0000000000
--- a/gdb/testsuite/gdb.arch/spu-info.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Copyright 2007-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   This file is part of the gdb testsuite.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>.
-   Tests for 'info spu' commands.  */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <spu_mfcio.h>
-
-
-/* PPE-assisted call interface.  */
-void
-send_to_ppe (unsigned int signalcode, unsigned int opcode, void *data)
-{
-  __vector unsigned int stopfunc =
-    {
-      signalcode,     /* stop */
-      (opcode << 24) | (unsigned int) data,
-      0x4020007f,     /* nop */
-      0x35000000      /* bi $0 */
-    };
-
-  void (*f) (void) = (void *) &stopfunc;
-  asm ("sync");
-  f ();
-}
-
-/* PPE-assisted call to mmap from SPU.  */
-unsigned long long
-mmap_ea (unsigned long long start, size_t length,
-         int prot, int flags, int fd, off_t offset)
-{
-  struct mmap_args
-    {
-      unsigned long long start __attribute__ ((aligned (16)));
-      size_t length __attribute__ ((aligned (16)));
-      int prot __attribute__ ((aligned (16)));
-      int flags __attribute__ ((aligned (16)));
-      int fd __attribute__ ((aligned (16)));
-      off_t offset __attribute__ ((aligned (16)));
-    } args;
-
-  args.start = start;
-  args.length = length;
-  args.prot = prot;
-  args.flags = flags;
-  args.fd = fd;
-  args.offset = offset;
-
-  send_to_ppe (0x2101, 11, &args);
-  return args.start;
-}
-
-/* This works only in a Linux environment with <= 1024 open
-   file descriptors for one process. Result is the file
-   descriptor for the current context if available.  */
-int
-find_context_fd (void)
-{
-  int dir_fd = -1;
-  int i;
-
-  for (i = 0; i < 1024; i++)
-    {
-      struct stat stat;
-
-      if (fstat (i, &stat) < 0)
-        break;
-      if (S_ISDIR (stat.st_mode))
-        dir_fd = dir_fd == -1 ? i : -2;
-    }
-  return dir_fd < 0 ? -1 : dir_fd;
-}
-
-/* Open the context file and return the file handler.  */
-int
-open_context_file (int context_fd, char *name, int flags)
-{
-  char buf[128];
-
-  if (context_fd < 0)
-    return -1;
-
-  sprintf (buf, "/proc/self/fd/%d/%s", context_fd, name);
-  return open (buf, flags);
-}
-
-
-int
-do_event_test ()
-{
-  spu_write_event_mask (MFC_MULTI_SRC_SYNC_EVENT); /* 0x1000 */  /* Marker Event */
-  spu_write_event_mask (MFC_PRIV_ATTN_EVENT); /* 0x0800 */
-  spu_write_event_mask (MFC_LLR_LOST_EVENT); /* 0x0400 */
-  spu_write_event_mask (MFC_SIGNAL_NOTIFY_1_EVENT); /* 0x0200 */
-  spu_write_event_mask (MFC_SIGNAL_NOTIFY_2_EVENT); /* 0x0100 */
-  spu_write_event_mask (MFC_OUT_MBOX_AVAILABLE_EVENT); /* 0x0080 */
-  spu_write_event_mask (MFC_OUT_INTR_MBOX_AVAILABLE_EVENT); /* 0x0040 */
-  spu_write_event_mask (MFC_DECREMENTER_EVENT); /* 0x0020 */
-  spu_write_event_mask (MFC_IN_MBOX_AVAILABLE_EVENT); /* 0x0010 */
-  spu_write_event_mask (MFC_COMMAND_QUEUE_AVAILABLE_EVENT); /* 0x0008 */
-  spu_write_event_mask (MFC_LIST_STALL_NOTIFY_EVENT); /* 0x0002 */
-  spu_write_event_mask (MFC_TAG_STATUS_UPDATE_EVENT); /* 0x0001 */
-
-  return 0;
-}
-
-int
-do_dma_test ()
-{
-  #define MAP_FAILED      (-1ULL)
-  #define PROT_READ       0x1
-  #define MAP_PRIVATE     0x002
-  #define BSIZE 128
-  static char buf[BSIZE] __attribute__ ((aligned (128)));
-  char *file = "/var/tmp/tmp_buf";
-  struct stat fdstat;
-  int fd, cnt;
-  unsigned long long src;
-
-  /* Create a file and fill it with some bytes.  */
-  fd = open (file, O_CREAT | O_RDWR | O_TRUNC, 0777);
-  if (fd == -1)
-    return -1;
-  memset ((void *)buf, '1', BSIZE);
-  write (fd, buf, BSIZE);
-  write (fd, buf, BSIZE);
-  memset ((void *)buf, 0, BSIZE);
-
-  if (fstat (fd, &fdstat) != 0
-      || !fdstat.st_size)
-    return -2;
-
-  src = mmap_ea(0ULL, fdstat.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
-  if (src == MAP_FAILED)
-    return -3;
-
-  /* Copy some data via DMA.  */
-  mfc_get (&buf, src, BSIZE, 5, 0, 0);   /* Marker DMA */
-  mfc_write_tag_mask (1<<5);   /* Marker DMAWait */
-  spu_mfcstat (MFC_TAG_UPDATE_ALL);
-
-  /* Close the file.  */
-  close (fd);
-
-  return cnt;
-}
-
-int
-do_mailbox_test ()
-{
-  /* Write to SPU Outbound Mailbox.  */
-  if (spu_stat_out_mbox ())            /* Marker Mbox */
-    spu_write_out_mbox (0x12345678);
-
-  /* Write to SPU Outbound Interrupt Mailbox.  */
-  if (spu_stat_out_intr_mbox ())
-    spu_write_out_intr_mbox (0x12345678);
-
-  return 0;       /* Marker MboxEnd */
-}
-
-int
-do_signal_test ()
-{
-  struct stat fdstat;
-  int context_fd = find_context_fd ();
-  int ret, buf, fd;
-
-  buf = 23;    /* Marker Signal */
-  /* Write to signal1.  */
-  fd = open_context_file (context_fd, "signal1", O_RDWR);
-  if (fstat (fd, &fdstat) != 0)
-    return -1;
-  ret = write (fd, &buf, sizeof (int));
-  close (fd);  /* Marker Signal1 */
-
-  /* Write to signal2.  */
-  fd = open_context_file (context_fd, "signal2", O_RDWR);
-  if (fstat (fd, &fdstat) != 0)
-    return -1;
-  ret = write (fd, &buf, sizeof (int));
-  close (fd);  /* Marker Signal2 */
-
-  /* Read signal1.  */
-  if (spu_stat_signal1 ())
-    ret = spu_read_signal1 ();
-
-  /* Read signal2.  */
-  if (spu_stat_signal2 ())
-    ret = spu_read_signal2 ();   /* Marker SignalRead */
-
-  return 0;
-}
-
-int
-main (unsigned long long speid, unsigned long long argp, 
-      unsigned long long envp)
-{
-  int res;
-
-  /* info spu event  */
-  res = do_event_test ();
-
-  /* info spu dma  */
-  res = do_dma_test ();
-
-  /* info spu mailbox  */
-  res = do_mailbox_test ();
-
-  /* info spu signal  */
-  res = do_signal_test ();
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.arch/spu-info.exp b/gdb/testsuite/gdb.arch/spu-info.exp
deleted file mode 100644
index f840251c31..0000000000
--- a/gdb/testsuite/gdb.arch/spu-info.exp
+++ /dev/null
@@ -1,241 +0,0 @@
-# Copyright 2007-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# This file is part of the gdb testsuite.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-# Tests for 'info spu' commands.
-
-
-if { ![istarget "spu-*-elf"] } then {
-  verbose "Skipping SPU-only testcase"
-  return
-}
-
-standard_testfile
-
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug}] } {
-  fail "cannot compile test program"
-  return -1
-}
-
-
-# Continue to MARKER
-proc c_to { marker } {
-  global srcfile
-  set line [gdb_get_line_number $marker]
-  gdb_test "break $line" \
-	   "Breakpoint.*at.*file.*$srcfile.*line $line.*" \
-	   "break $line"
-  gdb_test "continue" \
-	   "Continuing.*Breakpoint.*at.*$srcfile.*$line.*" \
-	   "continue to $line"
-}
-
-
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Check the help.
-gdb_test "info spu" \
-	 ".*info spu.* must be followed by the name of an SPU facility.*" \
-	 "info spu"
-gdb_test "help info spu" \
-	 "Various SPU specific commands.*List of info spu subcommands.*" \
-	 "help info spu"
-
-gdb_test "help info spu dma" \
-	 "Display MFC DMA status." \
-	 "help info spu dma"
-gdb_test "help info spu event" \
-	 "Display SPU event facility status." \
-	 "help info spu event"
-gdb_test "help info spu mailbox" \
-	 "Display SPU mailbox facility status." \
-	 "help info spu mailbox"
-gdb_test "help info spu proxydma" \
-	 "Display MFC Proxy-DMA status." \
-	 "help info spu proxydma"
-gdb_test "help info spu signal" \
-	 "Display SPU signal notification facility status." \
-	 "help info spu signal"
-
-
-# architecture should be spu:256K.
-gdb_test "show architecture" \
-	 "The target architecture is set automatically.*currently spu:256K.*" \
-	 "architecture = spu256K"
-
-# 'info spu event'.
-gdb_test "info spu event" \
-	 "Event Status.*Event Mask.*" \
-	 "info spu event"
-
-# 'info spu signal'.
-gdb_test "info spu signal" \
-	 "Signal 1 not pending.*\(Type.*\).*Signal 2 not pending.*\(Type.*\).*" \
-	 "info spu signal"
-
-# 'info spu mailbox'.
-gdb_test "info spu mailbox" \
-	 "" \
-	 "info spu mailbox"
-
-# 'info spu dma'.
-gdb_test "info spu dma" \
-	 "Tag-Group Status.*Tag-Group Mask.*Stall-and-Notify .*Atomic Cmd Status.*" \
-	 "info spu dma"
-
-# 'info spu proxydma'.
-gdb_test "info spu proxydma" \
-	 "Tag-Group Status.*Tag-Group Mask.*" \
-	  "info spu proxydma"
-
-# Event tests.
-c_to "Marker Event"
-gdb_test "info spu event" \
-	"Event Status 0x00000000.*Event Mask   0x00000000.*" \
-	"empty event status"
-
-# MFC_MULTI_SRC_SYNC_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00001000.*" \
-	"event mask 0x1000"
-# MFC_PRIV_ATTN_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000800.*" \
-	"event mask 0x0800"
-# MFC_LLR_LOST_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000400.*" \
-	"event mask 0x0400"
-# MFC_SIGNAL_NOTIFY_1_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000200.*" \
-	"event mask 0x0200"
-# MFC_SIGNAL_NOTIFY_2_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000100.*" \
-	"event mask 0x0100"
-# MFC_OUT_MBOX_AVAILABLE_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000080.*" \
-	"event mask 0x0080"
-# MFC_OUT_INTR_MBOX_AVAILABLE_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000040.*" \
-	"event mask 0x0040"
-# MFC_DECREMENTER_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000020.*" \
-	"event mask 0x0020"
-# MFC_IN_MBOX_AVAILABLE_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000010.*" \
-	"event mask 0x0010"
-# MFC_COMMAND_QUEUE_AVAILABLE_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000008.*" \
-	"event mask 0x0008"
-# MFC_LIST_STALL_NOTIFY_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000002.*" \
-	"event mask 0x0002"
-# MFC_TAG_STATUS_UPDATE_EVENT.
-gdb_test "next" "" "next"
-gdb_test "info spu event" \
-	"Event Status 0x0000.*Event Mask   0x00000001.*" \
-	"event mask 0x0001"
-
-
-# DMA tests.
-# 'info spu dma' should be empty.
-c_to "Marker DMA"
-gdb_test "info spu dma" \
-	 "Tag-Group Status.*0x00000000.*Tag-Group Mask.*0x00000000.*Stall-and-Notify.*0x00000000.*Atomic Cmd Status.*0x00000000\[\r\n\]+" \
-	 "info spu dma (empty)"
-
-# 'info spu dma' should be filled with some data.
-c_to "Marker DMAWait"
-gdb_test "next" "" "next"
-gdb_test "info spu dma" \
-	 "Tag-Group Status.*0x00000000.*Tag-Group Mask.*0x00000020.*Stall-and-Notify.*0x00000000.*Atomic Cmd Status.*0x00000000.*Opcode.*Tag.*TId.*RId.*EA.*LSA.*Size.*LstAddr.*LstSize.*E.*get.*5.*0.*0.*0x00080\[ \r\n\]+" \
-	 "info spu dma (non-empty)"
-gdb_test "finish" "" "finish"
-
-# Mailbox Test
-# 'info spu mailbox' should be empty.
-c_to "Marker Mbox"
-set msg "info spu mailbox"
-gdb_test_multiple "info spu mailbox" $msg {
-    -re "$gdb_prompt $" {
-      pass $msg
-    }
-    -re "SPU Outbound Mailbox.*0x.*SPU Outbound Interrupt Mailbox.*0x.*$gdb_prompt $" {
-      # Older kernels had a bug that caused them to return arbitrary values
-      # when attempting to read from an empty mailbox via spufs.
-      xfail $msg
-    }
-}
-
-# 'info spu mailbox' should now contain data.
-c_to "Marker MboxEnd"
-gdb_test "info spu mailbox" \
-	 "SPU Outbound Mailbox.*0x12345678.*SPU Outbound Interrupt Mailbox.*0x12345678.*" \
-	 "info spu mailbox"
-
-# Signal Test
-# 'info spu signal'.
-c_to "Marker Signal"
-gdb_test "info spu signal" \
-	 "Signal 1 not pending.*\(Type.*\).*Signal 2 not pending.*\(Type.*\).*" \
-	 "info spu signal"
-
-# 'info spu signal' with signal1 pending.
-c_to "Marker Signal1"
-gdb_test "info spu signal" \
-	 "Signal 1 control word 0x00000017.*Signal 2 not pending.*\(Type.*\).*" \
-	 "info spu signal"
-
-# 'info spu signal' with signal1 and signal2 pending.
-c_to "Marker Signal2"
-gdb_test "info spu signal" \
-	 "Signal 1 control word 0x00000017.*Signal 2 control word 0x00000017.*" \
-	 "info spu signal"
-
-# Read signal1. Only signal2 is pending.
-c_to "Marker SignalRead"
-gdb_test "info spu signal" \
-	 "Signal 1 not pending.*Signal 2 control word 0x00000017.*" \
-	 "info spu signal"
-
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.arch/spu-ls.c b/gdb/testsuite/gdb.arch/spu-ls.c
deleted file mode 100644
index f1a20491f0..0000000000
--- a/gdb/testsuite/gdb.arch/spu-ls.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2010-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   This file is part of the gdb testsuite.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-   Tests for SPU local-store access.  */
-
-char *ptr = (char *)0x12345678;
-
-char array[256];
-
-int
-main (unsigned long long speid, unsigned long long argp, 
-      unsigned long long envp)
-{
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.arch/spu-ls.exp b/gdb/testsuite/gdb.arch/spu-ls.exp
deleted file mode 100644
index af0b1acec8..0000000000
--- a/gdb/testsuite/gdb.arch/spu-ls.exp
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2010-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# This file is part of the gdb testsuite.
-#
-# Contributed by Ulrich Weigand  <uweigand@de.ibm.com>.
-# Tests for SPU local-store access.
-
-if { ![istarget "spu-*-elf"] } then {
-  verbose "Skipping SPU-only testcase"
-  return
-}
-
-standard_testfile
-
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug}] } {
-  fail "cannot compile test program"
-  return -1
-}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-gdb_test "print ptr" " = 0x12345678 \".*\"" "print ptr"
-gdb_test_no_output "set ptr = array + \$lslr + 1" "set ptr = array + \$lslr + 1"
-gdb_test_no_output "set array\[0\] = 1" "set array\[0\] = 1"
-gdb_test "print *ptr" " = 1 '\\\\001'" "print *ptr"
-gdb_test_no_output "set *ptr = 2" "set *ptr = 2"
-gdb_test "print array\[0\]" " = 2 '\\\\002'" "print array\[0\]"
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
index 1bc384e974..b10ee1702f 100644
--- a/gdb/testsuite/gdb.asm/asm-source.exp
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
@@ -128,11 +128,6 @@ switch -glob -- [istarget] {
         set asm-flags "-xarch=v9 -I${srcdir}/${subdir} $obj_include"
 	set debug-flags "-gdwarf-2"
     }
-    "spu*-*-*" {
-       set asm-arch spu
-       set asm-flags "-I${srcdir}/${subdir} $obj_include --no-warn"
-       set debug-flags "-gdwarf-2"
-    }
     "xstormy16-*-*" {
         set asm-arch xstormy16
 	set debug-flags "-gdwarf-2"
diff --git a/gdb/testsuite/gdb.asm/spu.inc b/gdb/testsuite/gdb.asm/spu.inc
deleted file mode 100644
index aabceb845d..0000000000
--- a/gdb/testsuite/gdb.asm/spu.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-	comment "subroutine prologue"
-	.macro gdbasm_enter
-	stqd    $lr, 16($sp)
-	stqd    $sp, -32($sp)
-	ai      $sp, $sp, -32
-	.endm
-
-	comment "subroutine epilogue"
-	.macro gdbasm_leave
-	ai	$sp, $sp, 32
-	lqd     $lr, 16($sp)
-	bi	$lr	
-	.endm
-
-	.macro gdbasm_call subr
-	brsl	$lr, \subr
-	.endm
-
-	.macro gdbasm_several_nops
-	nop
-	nop
-	nop
-	nop
-	.endm
-
-	comment "exit (0)"
-	.macro gdbasm_exit0
-	stop	0x2000
-	stop 
-	stop 
-	stop 
-	.endm
-
-	comment "startup"
-	.macro gdbasm_startup
-	il	$0, 0
-	ila	$sp, 16368
-	stqd	$0, 0($sp)
-	stqd	$sp, -32($sp)
-	ai	$sp, $sp, -32
-	stqd	$0, 16($sp)
-	.endm
diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp
index 52ba5f8ebe..77db17936e 100644
--- a/gdb/testsuite/gdb.base/dump.exp
+++ b/gdb/testsuite/gdb.base/dump.exp
@@ -30,12 +30,6 @@ if [istarget "alpha*-*-*"] then {
     lappend options "additional_flags=-Wl,-taso"
 }
 
-if {[istarget "spu*-*-*"]} then {
-    # The internal address format used for the combined Cell/B.E.
-    # debugger requires 64-bit.
-    set is64bitonly "yes"
-}
-
 # Debian9/Ubuntu16.10 onwards default to PIE enabled. Ensure it is disabled as
 # this causes addresses to be out of range for IHEX.
 lappend options {nopie}
diff --git a/gdb/testsuite/gdb.base/overlays.exp b/gdb/testsuite/gdb.base/overlays.exp
index d8ac61921e..388b87f026 100644
--- a/gdb/testsuite/gdb.base/overlays.exp
+++ b/gdb/testsuite/gdb.base/overlays.exp
@@ -24,9 +24,6 @@ set data_overlays 1
 
 if [istarget "m32r-*-*"] then {
     set linker_script "${srcdir}/${subdir}/m32r.ld"
-} elseif [istarget "spu-*-*"] then {
-    set linker_script "${srcdir}/${subdir}/spu.ld"
-    set data_overlays 0
 } else {
     verbose "Skipping overlay test -- not implemented for this target."
     return 
diff --git a/gdb/testsuite/gdb.base/ovlymgr.c b/gdb/testsuite/gdb.base/ovlymgr.c
index 533606b036..f4958ed14a 100644
--- a/gdb/testsuite/gdb.base/ovlymgr.c
+++ b/gdb/testsuite/gdb.base/ovlymgr.c
@@ -5,18 +5,6 @@
 
 #include "ovlymgr.h"
 
-#ifdef __SPU__
-/* SPU tool chain provides its own overlay manager.  */
-bool
-OverlayLoad (unsigned long ovlyno)
-{
-}
-bool
-OverlayUnload (unsigned long ovlyno)
-{
-}
-#else /* __SPU__ */
-
 /* Local functions and data: */
 
 extern unsigned long _ovly_table[][4];
@@ -243,4 +231,3 @@ ovly_copy (unsigned long dst, unsigned long src, long size)
   return;
 }
 
-#endif /* __SPU__ */
diff --git a/gdb/testsuite/gdb.base/spu.ld b/gdb/testsuite/gdb.base/spu.ld
deleted file mode 100644
index 0cd5a85405..0000000000
--- a/gdb/testsuite/gdb.base/spu.ld
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Script for -z combreloc: combine and sort reloc sections */
-OUTPUT_FORMAT("elf32-spu", "elf32-spu",
-	      "elf32-spu")
-OUTPUT_ARCH(spu)
-ENTRY(_start)
-SEARCH_DIR("/usr/spu/lib");
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  PROVIDE (__executable_start = 0); . = 0;
-  .interrupt : { KEEP(*(.interrupt)) }
-  .interp         : { *(.interp) }
-  .hash           : { *(.hash) }
-  .dynsym         : { *(.dynsym) }
-  .dynstr         : { *(.dynstr) }
-  .gnu.version    : { *(.gnu.version) }
-  .gnu.version_d  : { *(.gnu.version_d) }
-  .gnu.version_r  : { *(.gnu.version_r) }
-  .rel.dyn        :
-    {
-      *(.rel.init)
-      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
-      *(.rel.fini)
-      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro*)
-      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
-      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
-      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
-      *(.rel.ctors)
-      *(.rel.dtors)
-      *(.rel.got)
-      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
-    }
-  .rela.dyn       :
-    {
-      *(.rela.init)
-      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
-      *(.rela.fini)
-      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
-      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
-      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
-      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
-      *(.rela.ctors)
-      *(.rela.dtors)
-      *(.rela.got)
-      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-    }
-  .rel.plt        : { *(.rel.plt) }
-  .rela.plt       : { *(.rela.plt) }
-  .init           :
-  {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .text           :
-  {
-    *(EXCLUDE_FILE (foo.o bar.o baz.o grbx.o) .text .stub .text.* .gnu.linkonce.t.*)
-    KEEP (*(.text.*personality*))
-    *(.spu.elf)
-    /* .gnu.warning sections are handled specially by elf32.em.  */
-    *(.gnu.warning)
-  } =0
-  .fini           :
-  {
-    KEEP (*(.fini))
-  } =0
-  PROVIDE (__etext = .);
-  PROVIDE (_etext = .);
-  PROVIDE (etext = .);
-  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
-  .rodata1        : { *(.rodata1) }
-  .eh_frame_hdr : { *(.eh_frame_hdr) }
-  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
-  .gcc_except_table   : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
-  . = ALIGN(0x80);
-  /* Exception handling  */
-  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
-  .gcc_except_table   : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
-  /* Thread Local Storage sections  */
-  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
-  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
-  /* Ensure the __preinit_array_start label is properly aligned.  We
-     could instead move the label definition inside the section, but
-     the linker would then create the section even if it turns out to
-     be empty, which isn't pretty.  */
-  . = ALIGN(16);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { KEEP (*(.preinit_array)) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { KEEP (*(.init_array)) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { KEEP (*(.fini_array)) }
-  PROVIDE (__fini_array_end = .);
-  .ctors          :
-  {
-    /* gcc uses crtbegin.o to find the start of
-       the constructors, so we make sure it is
-       first.  Because this is a wildcard, it
-       doesn't matter if the user does not
-       actually link against crtbegin.o; the
-       linker won't look for a file to match a
-       wildcard.  The wildcard also means that it
-       doesn't matter which directory crtbegin.o
-       is in.  */
-    KEEP (*crtbegin*.o(.ctors))
-    /* We don't want to include the .ctor section from
-       from the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last */
-    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors))
-  }
-  .dtors          :
-  {
-    KEEP (*crtbegin*.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors))
-  }
-  .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
-  .dynamic        : { *(.dynamic) }
-  .got            : { *(.got.plt) *(.got) }
-  .data           :
-  {
-    *(.data .data.* .gnu.linkonce.d.*)
-    KEEP (*(.gnu.linkonce.d.*personality*))
-    SORT(CONSTRUCTORS)
-  }
-  .data1          : { *(.data1) }
-  _edata = .;
-  PROVIDE (edata = .);
-  __bss_start = .;
-  .bss            :
-  {
-   *(.dynbss)
-   *(.bss .bss.* .gnu.linkonce.b.*)
-   *(COMMON)
-   /* Align here to ensure that the .bss section occupies space up to
-      _end.  Align after .bss to ensure correct alignment even if the
-      .bss section disappears because there are no input sections.  */
-   . = ALIGN(16);
-  }
-  .toe ALIGN(128) : { *(.toe) } = 0
-  . = ALIGN(16);
-  OVERLAY :
-    {
-      .ovly0 { foo.o(.text) }
-      .ovly1 { bar.o(.text) }
-    }
-  OVERLAY :
-    {
-      .ovly2 { baz.o(.text) }
-      .ovly3 { grbx.o(.text) }
-    }
-  _end = .;
-  PROVIDE (end = .);
-  /* Stabs debugging sections.  */
-  .stab          0 : { *(.stab) }
-  .stabstr       0 : { *(.stabstr) }
-  .stab.excl     0 : { *(.stab.excl) }
-  .stab.exclstr  0 : { *(.stab.exclstr) }
-  .stab.index    0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment       0 : { *(.comment) }
-  /* DWARF debug sections.
-     Symbols in the DWARF debugging sections are relative to the beginning
-     of the section so we begin them at 0.  */
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-  .note.spu_name 0 : { *(.note.spu_name) }
-  PROVIDE (__stack = 0x3fff0);
-  /DISCARD/ : { *(.note.GNU-stack) }
-}
-
diff --git a/gdb/testsuite/gdb.base/stack-checking.c b/gdb/testsuite/gdb.base/stack-checking.c
index e8af6a1c23..8f6dedbcec 100644
--- a/gdb/testsuite/gdb.base/stack-checking.c
+++ b/gdb/testsuite/gdb.base/stack-checking.c
@@ -36,11 +36,7 @@ void medium_frame ()
 
 void big_frame ()
 {
-#ifdef __SPU__
-  char S [131072];
-#else
   char S [524188];
-#endif
   small_frame ();
 }
 
diff --git a/gdb/testsuite/gdb.cell/arch.exp b/gdb/testsuite/gdb.cell/arch.exp
deleted file mode 100644
index dbfb20c379..0000000000
--- a/gdb/testsuite/gdb.cell/arch.exp
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcase checks if the "show architecture" command works properly.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-# No programm running, default architecture should be powerpc:common.
-gdb_test "show architecture" \
-	 "The target architecture is set automatically.*currently powerpc:common.*" \
-	 "startup architecture is powerpc:common"
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# In PPU thread, architecture should be powerpc:common.
-gdb_test "show architecture" \
-	 "The target architecture is set automatically.*currently powerpc:common.*" \
-	 "ppu architecture is powerpc:common"
-
-# Switch to SPU thread.
-cont_spu_main
-check_spu_arch ""
-
-# Remember thread ID of first thread to hit SPU main.
-send_gdb "thread\n"
-gdb_expect 10 {
-    -re "Current thread is (\[0-9\]*) .*\r\n$gdb_prompt $" {
-	pass "retrieve current thread"
-	set thread_id $expect_out(1,string)
-    }
-    -re "$gdb_prompt $" {
-	fail "retrieve current thread"
-	return 0
-    }
-    timeout {
-	fail "retrieve current thread (timed out)"
-	return 0
-    }
-}
-
-# Stress Test: Switching from PPU- to SPU-Thread and back 'rep' times.
-set rep 100
-for {set i 0} {$i < $rep} {incr i} {
-  # Switch to PPU Thread.
-  gdb_test "t 1" \
-	   "Switching to thread 1.*" \
-	   "switch back to thread 1 (PPU) #$i"
-  # In PPU Thread, architecture should again be powerpc:common.
-  gdb_test "show architecture" \
-	   "The target architecture is set automatically.*currently powerpc:common.*" \
-	   "ppu architecture is powerpc:common again #$i"
-  # Thread switching to SPU.
-  gdb_test "t $thread_id" \
-	   "Switching to thread $thread_id.*at.*$spu_file.c.*" \
-	   "switch back to thread $thread_id (spu) #$i"
-  # Standing in SPU thread again, architecture should be spu:256K again.
-  check_spu_arch "spu architecture is spu256K again #$i"
-}
-# End of Stress Test loop
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/break-spu.c b/gdb/testsuite/gdb.cell/break-spu.c
deleted file mode 100644
index f28a843c04..0000000000
--- a/gdb/testsuite/gdb.cell/break-spu.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-
-void foo (void);
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  int i;
-
-  printf ("Hello World! from spu\n");
-
-  i = 5;
-  foo ();
-  printf ("i = %d\n", i);
-
-  return 0;
-}
-
-void
-foo (void)
-{
-  printf ("in foo\n");
-}
diff --git a/gdb/testsuite/gdb.cell/break.c b/gdb/testsuite/gdb.cell/break.c
deleted file mode 100644
index 95108d7d50..0000000000
--- a/gdb/testsuite/gdb.cell/break.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t break_spu;
-#define nr_t 5
-
-void *
-spe_thread (void * arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &break_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  int thread_id[nr_t];
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-  int value = 1;
-  int cnt;
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    {
-      ctx[cnt] = spe_context_create (0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]);
-    }
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    pthread_join (pts[cnt], NULL);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_context_destroy (ctx[cnt]);
-
-  return 0;
-}
-
-void
-foo ()
-{
-  printf ("foo in break\n");
-  return;
-}
diff --git a/gdb/testsuite/gdb.cell/break.exp b/gdb/testsuite/gdb.cell/break.exp
deleted file mode 100644
index 73e60ad4c1..0000000000
--- a/gdb/testsuite/gdb.cell/break.exp
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests setting and deleting breakpoints on PPU and SPU.
-
-load_lib cell.exp
-
-set testfile "break"
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-# Delete breakpoints before starting the application. The debugger
-# shouldn't prompt for anything.
-gdb_test "delete breakpoints" \
-	 "" \
-	 "no prompt when deleting non-existing breakpoints"
-
-gdb_test "break main" \
-	 "Breakpoint.*at.* file .*$testfile.c, line.*" \
-	 "breakpoint main in ppu"
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-delete_breakpoints
-
-# Re-set breakpoint at main in PPU binary.
-gdb_test "break main" \
-	 "Breakpoint.*at.* file .*$testfile.c, line.*" \
-	 "breakpoint function"
-
-# Set breakpoint in SPU binary.
-send_gdb "break $spu_file.c:10\n"
-gdb_expect {
-  -re ".*$spu_file.c.*Make breakpoint pending.*y or \\\[n\\\]. $" {
-    gdb_test "y" "Breakpoint.*$spu_file.*pending." "set pending breakpoint"
-  }
-  timeout { fail "timeout while setting breakpoint in spu binary" }
-}
-
-# Check breakpoints.
-gdb_test "info break" \
-	 "Num\[ \]+Type\[ \]+Disp\[ \]+Enb\[ \]+Address\[ \]+What.*
-\[0-9\]+\[\t \]+breakpoint     keep y.*in main at.*$testfile.c.*
-\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*$spu_file.c:10.*" \
-	 "breakpoint info"
-
-gdb_test "continue" \
-	 "Continuing.*Switching to Thread.*Breakpoint.*main.*at.*$spu_file.c.*" \
-	 "continuing to spu thread"
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/bt-spu.c b/gdb/testsuite/gdb.cell/bt-spu.c
deleted file mode 100644
index 6e83361cd3..0000000000
--- a/gdb/testsuite/gdb.cell/bt-spu.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <sys/syscall.h>
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  __send_to_ppe (0x2111, 0, NULL);
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/bt.c b/gdb/testsuite/gdb.cell/bt.c
deleted file mode 100644
index 31fb4ea864..0000000000
--- a/gdb/testsuite/gdb.cell/bt.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t bt_spu;
-extern spe_program_handle_t bt2_spu;
-#define nr_t 5
-
-void *
-spe_thread (void * arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &bt_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-indirect_handler (unsigned char *base, unsigned long offset)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t ctx = spe_context_create (0, NULL);
-
-  spe_program_load (ctx, &bt2_spu);
-  spe_context_run (ctx, &entry, flags, NULL, NULL, NULL);
-
-  return 0;
-}
-
-static pthread_mutex_t crash_mutex = PTHREAD_MUTEX_INITIALIZER;
-static int crash_count = 0;
-
-int
-crash_handler (unsigned char *base, unsigned long offset)
-{
-  int count;
-
-  pthread_mutex_lock (&crash_mutex);
-  count = ++crash_count;
-  pthread_mutex_unlock (&crash_mutex);
-
-  while (count < nr_t)
-    ;
-
-  abort ();
-}
-
-int
-main (void)
-{
-  int thread_id[nr_t];
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-  int value = 1;
-  int cnt;
-
-  spe_callback_handler_register (indirect_handler, 0x11, SPE_CALLBACK_NEW);
-  spe_callback_handler_register (crash_handler, 0x12, SPE_CALLBACK_NEW);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    {
-      ctx[cnt] = spe_context_create (0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]);
-    }
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    pthread_join (pts[cnt], NULL);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_context_destroy (ctx[cnt]);
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/bt.exp b/gdb/testsuite/gdb.cell/bt.exp
deleted file mode 100644
index cacf7c2035..0000000000
--- a/gdb/testsuite/gdb.cell/bt.exp
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests mixed-architecture backtrace support
-
-load_lib cell.exp
-
-set testfile "bt"
-set ppu_file "bt"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "bt-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-set spu2_file "bt2-spu"
-set spu2_src ${srcdir}/${subdir}/${spu2_file}.c
-set spu2_bin [standard_output_file ${spu2_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binaries.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_spu $spu2_src $spu2_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_cell_embedspu $spu2_bin $spu2_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o $spu2_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-delete_breakpoints
-gdb_test "continue" ".*received signal SIGABRT, Aborted.*"
-
-gdb_test "backtrace" ".*abort.*crash_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu2_file.c.*<cross-architecture call>.*spe_context_run.*indirect_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu_file.c.*<cross-architecture call>.*spe_context_run.*spe_thread.*at.*$ppu_file.c.*"
-
-for {set thread_id 2} {$thread_id < 7} {incr thread_id} {
-  gdb_test "t $thread_id" \
-           "Switching to thread $thread_id.*" \
-           "switch to thread $thread_id"
-  gdb_test "backtrace" \
-	   ".*crash_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu2_file.c.*<cross-architecture call>.*spe_context_run.*indirect_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu_file.c.*<cross-architecture call>.*spe_context_run.*spe_thread.*at.*$ppu_file.c.*" \
-	   "backtrace in thread $thread_id"
-}
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/bt2-spu.c b/gdb/testsuite/gdb.cell/bt2-spu.c
deleted file mode 100644
index 67ed34c364..0000000000
--- a/gdb/testsuite/gdb.cell/bt2-spu.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <sys/syscall.h>
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  __send_to_ppe (0x2112, 0, NULL);
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/core.exp b/gdb/testsuite/gdb.cell/core.exp
deleted file mode 100644
index 2de7562926..0000000000
--- a/gdb/testsuite/gdb.cell/core.exp
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests mixed-architecture core file support
-
-load_lib cell.exp
-
-set testfile "coremaker"
-set ppu_file "coremaker"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "coremaker-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {![isnative]} then {
-    return 0
-}
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-# Run program to generate a core file -- see gdb.base/corefile.exp
-set found 0
-set coredir "${objdir}/${subdir}/coredir.[getpid]"
-file mkdir $coredir
-catch "system \"(cd ${coredir}; ulimit -c unlimited; ${ppu_bin}; true) >/dev/null 2>&1\""
-set names [glob -nocomplain -directory $coredir core.*]
-if {[llength $names] == 1} {
-    set corefile [file join $coredir [lindex $names 0]]
-    remote_exec build "mv $corefile ${objdir}/${subdir}/corefile"
-    set found 1
-}
-remote_exec build "rmdir $coredir"
-if { $found == 0  } {
-    warning "can't generate a core file - core tests suppressed - check ulimit -c"
-    return 0
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-send_gdb "core-file $objdir/$subdir/corefile\n"
-gdb_expect {
-    -re "Core was generated by .*coremaker.*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
-	pass "core-file command"
-    }
-    -re "Core was generated by .*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
-	pass "core-file command (with bad program name)"
-    }
-    -re ".*$gdb_prompt $"	{ fail "core-file command" }
-    timeout			{ fail "(timeout) core-file command" }
-}
-
-gdb_test "backtrace" ".*abort.*main.*at.*$ppu_file.c.*"
-
-for {set thread_id 2} {$thread_id < 7} {incr thread_id} {
-  gdb_test "t $thread_id" \
-           "Switching to thread $thread_id.*" \
-           "switch to thread $thread_id"
-  gdb_test "backtrace" \
-	   ".*terminal_func.*factorial_func.*value=1.*factorial_func.*value=2.*factorial_func.*value=3.*factorial_func.*value=4.*factorial_func.*value=5.*factorial_func.*value=6.*main.*speid.*argp.*envp.*at.*$spu_file.c.*<cross-architecture call>.*spe_context_run.*spe_thread.*at.*$ppu_file.c.*" \
-	   "backtrace in thread $thread_id"
-}
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/coremaker-spu.c b/gdb/testsuite/gdb.cell/coremaker-spu.c
deleted file mode 100644
index 472660d629..0000000000
--- a/gdb/testsuite/gdb.cell/coremaker-spu.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <spu_mfcio.h>
-
-void
-terminal_func ()
-{
-  spu_write_out_intr_mbox (0);
-  spu_read_in_mbox ();
-}
-
-int
-factorial_func (int value)
-{
-  if (value > 1)
-    value *= factorial_func (value - 1);
-
-  terminal_func ();
-  return value;
-}
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  factorial_func (6);
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/coremaker.c b/gdb/testsuite/gdb.cell/coremaker.c
deleted file mode 100644
index 741e9483b4..0000000000
--- a/gdb/testsuite/gdb.cell/coremaker.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t coremaker_spu;
-#define nr_t 5
-
-void *
-spe_thread (void * arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &coremaker_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  int thread_id[nr_t];
-  pthread_attr_t attr;
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-  unsigned int value;
-  int cnt;
-
-  /* Use small thread stacks to speed up writing out core file.  */
-  pthread_attr_init (&attr);
-  pthread_attr_setstacksize (&attr, 2*PTHREAD_STACK_MIN);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    {
-      ctx[cnt] = spe_context_create (0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], &attr, &spe_thread, &ctx[cnt]);
-    }
-
-  pthread_attr_destroy (&attr);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_out_intr_mbox_read (ctx[cnt], &value, 1, SPE_MBOX_ALL_BLOCKING);
-
-  abort ();
-}
-
diff --git a/gdb/testsuite/gdb.cell/data-spu.c b/gdb/testsuite/gdb.cell/data-spu.c
deleted file mode 100644
index 56efbbcc63..0000000000
--- a/gdb/testsuite/gdb.cell/data-spu.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  char var_char = 'c';
-  short var_short = 7;
-  int var_int = 1337;
-  long var_long = 123456;
-  long long var_longlong = 123456789;
-  float var_float = 1.23;
-  double var_double = 2.3456;
-  long double var_longdouble = 3.45678;
-  return 0; /* Marker SPU End */
-}
-
diff --git a/gdb/testsuite/gdb.cell/data.c b/gdb/testsuite/gdb.cell/data.c
deleted file mode 100644
index 7c38461181..0000000000
--- a/gdb/testsuite/gdb.cell/data.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t data_spu;
-#define nr_t 1
-
-void *
-spe_thread (void *arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &data_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int main (void)
-{
-  int thread_id[nr_t];
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-
-  int cnt;
-
-  char var_char = 'c';
-  short var_short = 7;
-  int var_int = 1337;
-  long var_long = 123456;
-  long long var_longlong = 123456789;
-  float var_float = 1.23;
-  double var_double = 2.3456;
-  long double var_longdouble = 3.45678;
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    {
-      ctx[cnt] = spe_context_create(0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]);
-    }
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    pthread_join (pts[cnt], NULL);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_context_destroy (ctx[cnt]);
-
-  return 0;
-}
diff --git a/gdb/testsuite/gdb.cell/data.exp b/gdb/testsuite/gdb.cell/data.exp
deleted file mode 100644
index f5c0d20788..0000000000
--- a/gdb/testsuite/gdb.cell/data.exp
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tries to read variables of each kind both on PPU and SPU.
-
-load_lib cell.exp
-
-set testfile "data"
-set ppu_file "data"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "data-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-proc check_var { name value } {
-  gdb_test "print $name" \
-	   ".*=.*$value" \
-	   "check_var $name = $value"
-}
-
-proc set_var { name value } {
-  gdb_test "set var $name = $value" \
-	   "" \
-	   "set var $name = $value"
-}
-
-proc dotest { name value } {
-  set_var $name $value
-  check_var $name $value
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Set values.
-dotest var_char 'z'
-dotest var_short 8
-dotest var_int 321
-dotest var_long 523442
-dotest var_longlong 235354533
-xfail "dotest var_float 33.2113"
-xfail "dotest var_double 2.3456"
-xfail "dotest var_longdouble 3.456789"
-
-gdb_test "break 55" \
-	 "Breakpoint.*at.*file.*$testfile.c, line 55.*" \
-	 "set breakpoint"
-gdb_test "continue" \
-	 "Breakpoint.*at.*$testfile.c.*55.*" \
-	 "continue to bp at line 55"
-
-# Lookup variables.
-check_var var_char 'c'
-check_var var_short 7
-check_var var_int 1337
-check_var var_long 123456
-check_var var_longlong 123456789
-xfail "check_var var_float 1.23"
-xfail "check_var var_double 2.3456"
-xfail "check_var var_longdouble 3.456789"
-
-cont_spu_main
-c_to "Marker SPU End" $spu_file.c
-
-# In SPU Thread, arch should now be spu:256K.
-check_spu_arch ""
-
-# Lookup variables.
-check_var var_char 'c'
-check_var var_short 7
-check_var var_int 1337
-check_var var_long 123456
-check_var var_longlong 123456789
-xfail "check_var var_float 1.23"
-xfail "check_var var_double 2.3456"
-xfail "check_var var_longdouble 3.456789"
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/dwarfaddr.S b/gdb/testsuite/gdb.cell/dwarfaddr.S
deleted file mode 100644
index 543da3d78d..0000000000
--- a/gdb/testsuite/gdb.cell/dwarfaddr.S
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Copyright 2010-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   This file is part of the gdb testsuite.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-   Tests for SPU addresses resulting from complex DWARF expressions.  */
-
-	.text
-main:
-.Ltext_s:
-.LFB1:
-	stqd        $1,-240($1)
-	ai          $1,$1,-240
-	ai          $2,$1,32
-	ai          $2,$2,127
-	il          $3,127
-	andc        $3,$2,$3
-	il          $2,1
-	lqd         $4,0($3)
-	cwd         $5,0($3)
-	shufb       $2,$2,$4,$5
-	stqd        $2,0($3)
-	lqd         $1,0($1)
-	bi          $0
-.LFE1:
-	.global main
-	.type	main,@function
-	.size	main,.LFE1-.LFB1
-.Ltext_e:
-
-	.section	.debug_info,"",@progbits
-.Ldebug_info_s:
-	.int	.debug_info_size-4
-	.short	0x2
-	.int	.Ldebug_abbrev_s
-	.byte	0x4
-.Ldie0:
-	.uleb128	0x1
-	.string	"test.c"
-	.int	.Ltext_s
-	.int	.Ltext_e
-	.byte	0x1
-.Ldie1:
-	.uleb128	0x2
-	.string	"int"
-	.byte	0x4
-	.byte	0x5
-.Ldie2:
-	.uleb128	0x3
-	.int	.Ldie4-.Ldebug_info_s
-	.int	.Ldie1-.Ldebug_info_s
-.Ldie3:
-	.uleb128	0x4
-	.byte	0
-	.byte	0xf
-	.uleb128	0
-.Ldie4:
-	.uleb128	0x5
-	.string	"main"
-	.int	.LFB1
-	.int	.LFE1
-	.byte	0x1
-	.byte	0x1
-	.byte	0x3
-	.byte	0x1
-	.byte	0x1
-	.byte	0x51
-.Ldie5:
-	.uleb128	0x6
-	.byte	0xe
-	.byte	0x91
-	.sleb128	0x20
-	.byte	0xd
-	.int	0x7f
-	.byte	0x22
-	.byte	0xd
-	.int	0xffffff80
-	.byte	0x1a
-	.string	"x"
-	.byte	0x1
-	.byte	0
-	.int	.Ldie2-.Ldebug_info_s
-	.uleb128	0
-	.uleb128	0
-.Ldebug_info_e:
-	.set	.debug_info_size,.Ldebug_info_e-.Ldebug_info_s
-
-
-	.section	.debug_abbrev,"",@progbits
-.Ldebug_abbrev_s:
-	.uleb128	0x1
-	.uleb128	0x11
-	.byte	0x1
-	.uleb128	0x3
-	.uleb128	0x8
-	.uleb128	0x11
-	.uleb128	0x1
-	.uleb128	0x12
-	.uleb128	0x1
-	.uleb128	0x13
-	.uleb128	0xb
-	.uleb128	0
-	.uleb128	0
-
-	.uleb128	0x2
-	.uleb128	0x24
-	.byte	0
-	.uleb128	0x3
-	.uleb128	0x8
-	.uleb128	0xb
-	.uleb128	0xb
-	.uleb128	0x3e
-	.uleb128	0xb
-	.uleb128	0
-	.uleb128	0
-
-	.uleb128	0x3
-	.uleb128	0x1
-	.byte	0x1
-	.uleb128	0x1
-	.uleb128	0x13
-	.uleb128	0x49
-	.uleb128	0x13
-	.uleb128	0
-	.uleb128	0
-
-	.uleb128	0x4
-	.uleb128	0x21
-	.byte	0
-	.uleb128	0x22
-	.uleb128	0xb
-	.uleb128	0x2f
-	.uleb128	0xb
-	.uleb128	0
-	.uleb128	0
-
-	.uleb128	0x5
-	.uleb128	0x2e
-	.byte	0x1
-	.uleb128	0x3
-	.uleb128	0x8
-	.uleb128	0x11
-	.uleb128	0x1
-	.uleb128	0x12
-	.uleb128	0x1
-	.uleb128	0x27
-	.uleb128	0xc
-	.uleb128	0x3a
-	.uleb128	0xb
-	.uleb128	0x3b
-	.uleb128	0xb
-	.uleb128	0x3f
-	.uleb128	0xc
-	.uleb128	0x40
-	.uleb128	0xa
-	.uleb128	0
-	.uleb128	0
-
-	.uleb128	0x6
-	.uleb128	0x34
-	.byte	0
-	.uleb128	0x2
-	.uleb128	0xa
-	.uleb128	0x3
-	.uleb128	0x8
-	.uleb128	0x3a
-	.uleb128	0xb
-	.uleb128	0x3b
-	.uleb128	0xb
-	.uleb128	0x49
-	.uleb128	0x13
-	.uleb128	0
-	.uleb128	0
-	.uleb128	0
-.Ldebug_abbrev_e:
-	.set	.debug_abbrev_size,.Ldebug_abbrev_e-.Ldebug_abbrev_s
-
diff --git a/gdb/testsuite/gdb.cell/dwarfaddr.exp b/gdb/testsuite/gdb.cell/dwarfaddr.exp
deleted file mode 100644
index b61cd53c2e..0000000000
--- a/gdb/testsuite/gdb.cell/dwarfaddr.exp
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2010-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# This file is part of the gdb testsuite.
-#
-# Contributed by Ulrich Weigand  <uweigand@de.ibm.com>.
-# Tests for SPU addresses resulting from complex DWARF expressions.
-
-load_lib cell.exp
-
-set testfile "dwarfaddr"
-set srcfile ${srcdir}/${subdir}/${testfile}.S
-set binary [standard_output_file ${testfile}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $srcfile $binary executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binary}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-gdb_test "print x" " = \\{0 <repeats 16 times>\\}" "print x"
-gdb_test "print &x" " = \\(int \\(\\*\\)\\\[16\\\]\\) 0x\[0-9a-f\]*" "print &x"
-gdb_test "info address x" "Symbol \"x\" is a complex DWARF expression.*DW_OP_and\[\r\n\]+\." "info address x"
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/ea-cache-spu.c b/gdb/testsuite/gdb.cell/ea-cache-spu.c
deleted file mode 100644
index 07b11c18d3..0000000000
--- a/gdb/testsuite/gdb.cell/ea-cache-spu.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <spu_mfcio.h>
-
-__ea int *ppe_int_ptr;
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  printf ("spe.c | argp = 0x%llx\n", argp);
-
-#ifdef __EA32__
-  ppe_int_ptr = (__ea int *)(unsigned long)argp;
-#else
-  ppe_int_ptr = (__ea int *)argp;
-#endif
-  printf ("spe.c | value = %d\n", *ppe_int_ptr);
-  *ppe_int_ptr = 42; /* Marker SPUEA */
-  printf ("spe.c | value = %d\n", *ppe_int_ptr);
-
-  return 0;
-}
diff --git a/gdb/testsuite/gdb.cell/ea-cache.c b/gdb/testsuite/gdb.cell/ea-cache.c
deleted file mode 100644
index a0a828b017..0000000000
--- a/gdb/testsuite/gdb.cell/ea-cache.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t ea_cache_spu;
-int int_var = 23;
-
-void *
-spe_thread (void *arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &ea_cache_spu);
-  spe_context_run (*ctx, &entry, flags, &int_var, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  spe_context_ptr_t ctx;
-  pthread_t pts;
-  int thread_id;
-
-  printf ("ppe.c | int_var vor %d | adr int_var %p\n", int_var, &int_var);
-
-  /* Create SPE context and pthread.  */
-  ctx = spe_context_create (0, NULL);
-  thread_id = pthread_create (&pts, NULL, &spe_thread, &ctx);
-
-  /* Join the pthread.  */
-  pthread_join (pts, NULL);
-
-  /* Destroy the SPE context.  */
-  spe_context_destroy (ctx);
-
-  printf ("ppe.c | int_var nach %d\n", int_var);
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/ea-cache.exp b/gdb/testsuite/gdb.cell/ea-cache.exp
deleted file mode 100644
index e9bb709155..0000000000
--- a/gdb/testsuite/gdb.cell/ea-cache.exp
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Testcase for ea software managed cache.
-
-load_lib cell.exp
-
-set ppu_file "ea-cache"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "ea-cache-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Set breakpoint in SPU binary.
-cont_spu_main
-c_to "Marker SPUEA" $spu_file.c
-
-gdb_test "p *ppe_int_ptr" \
-	 ".*=.*23.*" \
-	 "p *ppe_int_ptr"
-
-gdb_test "set *ppe_int_ptr=42" "" ""
-
-gdb_test "p *ppe_int_ptr" \
-	 ".*=.*42.*" \
-	 "p *ppe_int_ptr"
-
-# Now switch to thread 1 (PPU) and look at int_var.  ppe_int_ptr points to
-# int_var and should now also contain 42 (ea cache has been flushed).
-gdb_test "t 1" \
-	 ".*Switching to thread 1.*" \
-	 "switch to thread 1"
-
-gdb_test "p int_var" \
-	 ".*=.*42.*" \
-	 "p int_var on ppu"
-
-gdb_exit
-return 0
-
-
diff --git a/gdb/testsuite/gdb.cell/ea-standalone.c b/gdb/testsuite/gdb.cell/ea-standalone.c
deleted file mode 100644
index 20b9af3316..0000000000
--- a/gdb/testsuite/gdb.cell/ea-standalone.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <ea.h>
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  int a;
-  __ea int *myarray = malloc_ea (3 * sizeof (int));
-
-  memset_ea (myarray, 0, 3 * sizeof (int));
-  a = ++myarray[0]; /* Marker SPUEA1  */
-  printf("a: %d, myarray[0]: %d\n", a, myarray[0]); /* Marker SPUEA2  */
-  return 0;
-}
diff --git a/gdb/testsuite/gdb.cell/ea-standalone.exp b/gdb/testsuite/gdb.cell/ea-standalone.exp
deleted file mode 100644
index cae8e98cdf..0000000000
--- a/gdb/testsuite/gdb.cell/ea-standalone.exp
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Testcase for ea software managed cache in a standalone binary.
-
-load_lib cell.exp
-
-set testfile "ea-standalone"
-set srcfile ${srcdir}/${subdir}/${testfile}.c
-set binary [standard_output_file ${testfile}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $srcfile $binary executable {debug}]  != "" } {
-  unsupported "failed to compile"
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binary}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-c_to "Marker SPUEA1" $testfile.c
-gdb_test "p myarray\[0\]" \
-	 ".*= 0" \
-	 "p myarray\[0\]"
-
-c_to "Marker SPUEA2" $testfile.c
-gdb_test "p myarray\[0\]" \
-	 ".*= 1" \
-	 "p myarray\[0\]"
-gdb_test "call __cache_flush()" "" "call cache_flush()"
-gdb_test "p myarray\[0\]" \
-	 ".*= 1" \
-	 "p myarray\[0\]"
-
-gdb_exit
-return 0
-
-
diff --git a/gdb/testsuite/gdb.cell/ea-test.c b/gdb/testsuite/gdb.cell/ea-test.c
deleted file mode 100644
index efe49c5418..0000000000
--- a/gdb/testsuite/gdb.cell/ea-test.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-
-__ea int *ppe_pointer;
-int *normal_pointer;
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  static __ea int *local_ppe_pointer;
-  static int *local_normal_pointer;
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/ea-test.exp b/gdb/testsuite/gdb.cell/ea-test.exp
deleted file mode 100644
index cbb02f120a..0000000000
--- a/gdb/testsuite/gdb.cell/ea-test.exp
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Testcase for __ea pointer
-
-load_lib cell.exp
-
-set testfile "ea-test"
-set source ${srcdir}/${subdir}/${testfile}.c
-set binary [standard_output_file ${testfile}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $source $binary executable {debug}]  != "" } {
-  unsupported "failed to compile"
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binary}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# p
-gdb_test "p ppe_pointer" \
-	 "(int.*@__ea).*0x0.*" \
-	 "p ppe_pointer"
-
-gdb_test "p normal_pointer" \
-	 "(int.*).*0x0.*" \
-	 "p normal_pointer"
-
-gdb_test "p local_ppe_pointer" \
-	 "(int.*@__ea).*0x0.*" \
-	 "p local_ppe_pointer"
-
-gdb_test "p local_normal_pointer" \
-	 "(int.*).*0x0.*" \
-	 "p local_normal_pointer"
-
-# ptype
-gdb_test "ptype ppe_pointer" \
-	 "type = int.*@__ea" \
-	 "ptype ppe_pointer"
-
-gdb_test "ptype normal_pointer" \
-	 "type = int.*" \
-	 "ptype normal_pointer"
-
-gdb_test "ptype local_ppe_pointer" \
-	 "type = int.*@__ea" \
-	 "ptype local_ppe_pointer"
-
-gdb_test "ptype local_normal_pointer" \
-	 "type = int.*" \
-	 "ptype local_normal_pointer"
-
-# info locals
-gdb_test "info locals" \
-	 ".*local_ppe_pointer =.*0x0.*local_normal_pointer =.*0x0.*" \
-	 "info locals"
-
-# p &
-gdb_test "p &ppe_pointer" \
-	 ".*=.*(int.*@__ea.*).*0x.*" \
-	 "p &ppe_pointer"
-
-gdb_test "p &normal_pointer" \
-	 ".*=.*(int.*).*0x.*" \
-	 "p &normal_pointer"
-
-gdb_test "p &local_ppe_pointer" \
-	 ".*=.*(int.*@__ea.*).*0x.*" \
-	 "p &local_ppe_pointer"
-
-gdb_test "p &local_normal_pointer" \
-	 ".*=.*(int.*).*0x.*" \
-	 "p &local_normal_pointer"
-
-# ptype *
-gdb_test "ptype *ppe_pointer" \
-	 "type = int" \
-	 "ptype *ppe_pointer"
-
-gdb_test "ptype *normal_pointer" \
-	 "type = int" \
-	 "ptype *normal_pointer"
-
-gdb_test "ptype *local_ppe_pointer" \
-	 "type = int" \
-	 "ptype *local_ppe_pointer"
-
-gdb_test "ptype *local_normal_pointer" \
-	 "type = int" \
-	 "ptype *local_normal_pointer"
-
-gdb_exit
-
-return 0
-
-
diff --git a/gdb/testsuite/gdb.cell/f-regs.exp b/gdb/testsuite/gdb.cell/f-regs.exp
deleted file mode 100644
index a37c77afe5..0000000000
--- a/gdb/testsuite/gdb.cell/f-regs.exp
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcase tests access to SPU vector registers while language is fortran.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-proc check_vector_regs {} {
-  for {set check_reg 0} {$check_reg < 128} {incr check_reg} {
-
-    gdb_test "p \$r$check_reg" \
-	     "r$check_reg.*=.*\(.*\).*" \
-	     "p \$r$check_reg"
-
-    gdb_test "ptype \$r$check_reg" \
-	     "type = Type,.*C_Union :: __spu_builtin_type_vec128.*int128_t :: uint128.*int64_t :: v2_int64.*int32_t :: v4_int32\(.*\).*int16_t :: v8_int16\(.*\).*int8_t :: v16_int8\(.*\).*double :: v2_double\(.*\).*float :: v4_float\(.*\).*End Type __spu_builtin_type_vec128.*" \
-	     "ptype \$r$check_reg"
-  }
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-# No programm running, no registers should be available.
-gdb_test "info all-registers" \
-         "The program has no registers now." \
-         "info all-registers"
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-cont_spu_main
-gdb_test "set language fortran" \
-	 "Warning: the current language does not match this frame.*" \
-	 "set language fortran"
-check_vector_regs
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/fork-spu.c b/gdb/testsuite/gdb.cell/fork-spu.c
deleted file mode 100644
index 7777165d97..0000000000
--- a/gdb/testsuite/gdb.cell/fork-spu.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2010-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>  */
-
-#include <spu_mfcio.h>
-
-int var;
-
-void
-func (void)
-{
-}
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  /* Signal to PPU side that it should fork now.  */
-  spu_write_out_intr_mbox (0);
-
-  /* Wait until fork completed.  */
-  spu_read_in_mbox ();
-
-  /* Trigger watchpoint.  */
-  var = 1;
-
-  /* Now call some function to trigger breakpoint.  */
-  func ();
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/fork.c b/gdb/testsuite/gdb.cell/fork.c
deleted file mode 100644
index 240af47089..0000000000
--- a/gdb/testsuite/gdb.cell/fork.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2010-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Ulrich Weigand <uweigand@de.ibm.com>  */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-extern spe_program_handle_t fork_spu;
-
-void *
-spe_thread (void * arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &fork_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  pthread_t pts;
-  spe_context_ptr_t ctx;
-  unsigned int value;
-  unsigned int pid;
-
-  ctx = spe_context_create (0, NULL);
-  pthread_create (&pts, NULL, &spe_thread, &ctx);
-
-  /* Wait until the SPU thread is running.  */
-  spe_out_intr_mbox_read (ctx, &value, 1, SPE_MBOX_ALL_BLOCKING);
-
-  pid = fork ();
-  if (pid == 0)
-    {
-      /* This is the child.  Just exit immediately.  */
-      exit (0);
-    }
-  else
-    {
-      /* This is the parent.  Wait for the child to exit.  */
-      waitpid (pid, NULL, 0);
-    }
-
-  /* Tell SPU to continue.  */
-  spe_in_mbox_write (ctx, &value, 1, SPE_MBOX_ALL_BLOCKING);
-  
-  pthread_join (pts, NULL);
-  spe_context_destroy (ctx);
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/fork.exp b/gdb/testsuite/gdb.cell/fork.exp
deleted file mode 100644
index 009219180f..0000000000
--- a/gdb/testsuite/gdb.cell/fork.exp
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 2010-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests support for PPU-side fork during SPU debugging
-
-load_lib cell.exp
-
-set testfile "fork"
-set ppu_file "fork"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "fork-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-delete_breakpoints
-
-gdb_test_no_output "set spu stop-on-load" "set spu stop-on-load"
-
-gdb_test "continue" "Continuing\\..*Temporary breakpoint \[0-9\]+, main \\(speid=.*, argp=.*, envp=.*\\) at .*$spu_file\\.c:.*spu_write_out_intr_mbox.*" \
-	 "run until SPU main"
-
-gdb_test "break func" "Breakpoint \[0-9\]+ at.* file .*$spu_file.c, line \[0-9\]+\\." "break func"
-gdb_test "watch var" "Watchpoint \[0-9\]+: var" "watch var"
-
-gdb_test "continue" "Continuing\\..*Watchpoint.*Old value = 0.*New value = 1.*" \
-	 "run until watchpoint hit"
-
-gdb_test_no_output "delete \$bpnum" "delete watchpoint"
-
-gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, func \\(\\) at .*$spu_file.c:.*" \
-	 "run until breakpoint hit"
-
-gdb_continue_to_end "" continue 1
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/gcore.exp b/gdb/testsuite/gdb.cell/gcore.exp
deleted file mode 100644
index f586b7553a..0000000000
--- a/gdb/testsuite/gdb.cell/gcore.exp
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests mixed-architecture core file support
-
-load_lib cell.exp
-
-set testfile "coremaker"
-set ppu_file "coremaker"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "coremaker-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {![isnative]} then {
-    return 0
-}
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-delete_breakpoints
-
-gdb_test "continue" ".*Aborted.*"
-
-if {![gdb_gcore_cmd "${objdir}/${subdir}/gcore.test" \
-	  "save a corefile"]} {
-    return -1
-}
-
-# Now restart gdb and load the corefile.
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-send_gdb "core-file $objdir/$subdir/gcore.test\n"
-gdb_expect {
-    -re "Core was generated by .*coremaker.*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
-	pass "core-file command"
-    }
-    -re "Core was generated by .*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
-	pass "core-file command (with bad program name)"
-    }
-    -re ".*$gdb_prompt $"	{ fail "core-file command" }
-    timeout			{ fail "(timeout) core-file command" }
-}
-
-gdb_test "backtrace" ".*abort.*main.*at.*$ppu_file.c.*"
-
-for {set thread_id 2} {$thread_id < 7} {incr thread_id} {
-  gdb_test "t $thread_id" \
-           "Switching to thread $thread_id.*" \
-           "switch to thread $thread_id"
-  gdb_test "backtrace" \
-	   ".*terminal_func.*factorial_func.*value=1.*factorial_func.*value=2.*factorial_func.*value=3.*factorial_func.*value=4.*factorial_func.*value=5.*factorial_func.*value=6.*main.*speid.*argp.*envp.*at.*$spu_file.c.*<cross-architecture call>.*spe_context_run.*spe_thread.*at.*$ppu_file.c.*" \
-	   "backtrace in thread $thread_id"
-}
-
-gdb_exit
-
-return 0
diff --git a/gdb/testsuite/gdb.cell/mem-access-spu.c b/gdb/testsuite/gdb.cell/mem-access-spu.c
deleted file mode 100644
index 3baa3a2cc1..0000000000
--- a/gdb/testsuite/gdb.cell/mem-access-spu.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  int i;
-  static int test_var;
-
-  printf ("Hello World! from spu\n");
-
-  test_var = 5;
-  i = 5; /* Marker SPUEA */
-  printf ("i = %d\n", i);
-
-  return 0;
-}
diff --git a/gdb/testsuite/gdb.cell/mem-access.c b/gdb/testsuite/gdb.cell/mem-access.c
deleted file mode 100644
index 442e8a245d..0000000000
--- a/gdb/testsuite/gdb.cell/mem-access.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t mem_access_spu;
-#define nr_t 1
-
-void *
-spe_thread (void *arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &mem_access_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  int thread_id[nr_t];
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-  int value = 1;
-  int cnt;
-  static int test_var;
-
-  test_var = 5;
-  for (cnt = 0; cnt < nr_t; cnt++) /* Marker PPUEA */
-    {
-      ctx[cnt] = spe_context_create (0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]);
-    }
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    pthread_join (pts[cnt], NULL);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_context_destroy (ctx[cnt]);
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/mem-access.exp b/gdb/testsuite/gdb.cell/mem-access.exp
deleted file mode 100644
index 86d22941ac..0000000000
--- a/gdb/testsuite/gdb.cell/mem-access.exp
+++ /dev/null
@@ -1,170 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcases tests on PPU and SPU if variables and registers are accessible
-# via print and set by using names and adresses.
-
-load_lib cell.exp
-
-set ppu_file "mem-access"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "mem-access-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-# Get the adress to symbol name. If $reg
-# is set to 1, get address from a register.
-proc get_adress_from_name { name reg } {
-  global gdb_prompt
-  set adr ""
-
-  if { $reg == 1 } {
-    set q "x/x $name"
-  } else {
-    set q "x/x &$name"
-  }
-
-  gdb_test_multiple $q "get address from $name" {
-    -re "(0x.....):.*$gdb_prompt $" { # Registers.
-      set adr $expect_out(1,string)
-      pass "get adress from $name = $adr"
-    }
-    -re "(0x........) <.*$gdb_prompt $" { # PPU address.
-      set adr $expect_out(1,string)
-      pass "get adress from $name = $adr"
-    }
-    -re "(0x....) <.*$gdb_prompt $" { # SPU address.
-      set adr $expect_out(1,string)
-      pass "get adress from $name = $adr"
-    }
-    -re "(0x...) <.*$gdb_prompt $" { # SPU address.
-      set adr $expect_out(1,string)
-      pass "get adress from $name = $adr"
-    }
-  }
-
-  return ${adr}
-}
-
-# Try to set a $value at adress $adr.
-proc set_adr_content { adr value } {
-  gdb_test "set *$adr=$value" \
-	   "" \
-	   "set *$adr=$value"
-}
-
-# Try to set a $value for $symbol.
-proc set_symbol_content { symbol value } {
-  gdb_test "set $symbol=$value" \
-	   "" \
-	   "set *$symbol=$value"
-}
-
-# Check if $value is at *adr
-proc test_adr_content { adr value } {
-  gdb_test "p *$adr" \
-           ".*=.*$value.*" \
-           "(ptr) *$adr==$value"
-}
-
-proc test_symbol_content { symbol value } {
-  gdb_test "p $symbol" \
-	   ".*=.*$value.*" \
-	   "(symbol) $symbol==$value"
-}
-
-# Check VARNAME. Check if it has the inital
-# value INITIALVALUE. Set it to NEWVALUE.
-# Check if set properly. Do it via symbols and
-# pointers.
-proc check_var { varname initalvalue newvalue } {
-
-  # Initial value should be $initalvalue.
-  test_symbol_content $varname $initalvalue
-
-  # Get pointer to symbol and check if the
-  # initial value is found.
-  set adr [get_adress_from_name $varname 0]
-  test_adr_content $adr $initalvalue
-
-  # Re-set value using the pointer.
-  set_adr_content $adr $newvalue
-
-  # Test values by pointer and by symbol.
-  test_adr_content $adr $newvalue
-  test_symbol_content $varname $newvalue
-
-  # Set value back to initalvalue using symbol
-  # name and check it.
-  set_symbol_content $varname $initalvalue
-  test_adr_content $adr $initalvalue
-  test_symbol_content $varname $initalvalue
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Check in PPU thread.
-c_to "Marker PPUEA" $ppu_file.c
-check_var "test_var" 5 7
-
-# Go to SPU thread.
-cont_spu_main
-c_to "Marker SPUEA" $spu_file.c
-check_spu_arch ""
-
-# Check in SPU thread.
-check_var "test_var" 5 7
-# Check $sp register.
-set adr [get_adress_from_name "\$sp" 1]
-set_adr_content $adr 8
-test_adr_content $adr 8
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/ptype.exp b/gdb/testsuite/gdb.cell/ptype.exp
deleted file mode 100644
index 39311e78d9..0000000000
--- a/gdb/testsuite/gdb.cell/ptype.exp
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Test ptype and print/set of SPU-side registers.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Continue to SPU
-cont_spu_main
-
-gdb_test "info registers r2"  \
-	 "r2.*\{uint128 =.*v2_int64 =.*v4_int32 =.*v8_int16 =.*v16_int8 =.*v2_double =.*v4_float =.*\}.*" \
-	 "info registers r2"
-
-for {set check_reg 10} {$check_reg < 12} {incr check_reg} {
-  gdb_test "print \$r$check_reg\.v4_int32" \
-	   ".*= \{.*,.*,.*,.*\}" \
-	   "print \$r$check_reg\.v4_int32"
-
-  gdb_test "ptype \$r$check_reg" \
-	   "type = union __spu_builtin_type_vec128.*\{.*int128_t uint128.* \
-	    int64_t v2_int64.*int32_t v4_int32.*int16_t v8_int16.* \
-	    int8_t v16_int8.*double v2_double.*float v4_float.*\}" \
-	   "ptype \$r$check_reg"
-
-  gdb_test "set \$r$check_reg\.v4_int32 = {1,2,3,4}" \
-	   "" \
-	   "set \$r$check_reg\.v4_int32 = {1,2,3,4}"
-
-  gdb_test "print \$r$check_reg\.v4_int32" \
-	   ".*= \{.*1, 2, 3, 4.*\}" \
-	   "print \$r$check_reg\.v4_int32"
-
-  gdb_test "print \$r$check_reg.v4_int32\[0\]" \
-	   ".*= 1.*" \
-	   "print \$r$check_reg.v4_int32\[0\]"
-
-  gdb_test "print \$r$check_reg.v4_int32\[1\]" \
-	   ".*= 2.*" \
-	   "print \$r$check_reg.v4_int32\[1\]"
-
-  gdb_test "print \$r$check_reg.v4_int32\[2\]" \
-	   ".*= 3.*" \
-	   "print \$r$check_reg.v4_int32\[2\]"
-
-  gdb_test "print \$r$check_reg.v4_int32\[3\]" \
-	   ".*= 4.*" \
-	   "print \$r$check_reg.v4_int32\[3\]"
-
-  gdb_test "print \$r$check_reg.v4_int32\[4\]" \
-	   "no such vector element" \
-	   "print \$r$check_reg.v4_int32\[4\]"
-
-  # Set single array elements to other values and check the results.
-  gdb_test "set \$r$check_reg\.v4_int32\[0\] = 5" \
-	   "" \
-	   "set \$r$check_reg\.v4_int32\[0\] = 5"
-  gdb_test "print \$r$check_reg.v4_int32\[0\]" \
-	   ".*= 5.*" \
-	   "print \$r$check_reg.v4_int32\[0\]"
-
-  gdb_test "set \$r$check_reg\.v4_int32\[1\] = 6" \
-	   "" \
-	   "set \$r$check_reg\.v4_int32\[1\] = 6"
-  gdb_test "print \$r$check_reg.v4_int32\[1\]" \
-	   ".*= 6.*" \
-	   "print \$r$check_reg.v4_int32\[1\]"
-
-  gdb_test "set \$r$check_reg\.v4_int32\[2\] = 7" \
-	   "" \
-	   "set \$r$check_reg\.v4_int32\[2\] = 7"
-  gdb_test "print \$r$check_reg.v4_int32\[2\]" \
-	   ".*= 7.*" \
-	   "print \$r$check_reg.v4_int32\[2\]"
-
-  gdb_test "set \$r$check_reg\.v4_int32\[3\] = 8" \
-	   "" \
-	   "set \$r$check_reg\.v4_int32\[3\] = 8"
-  gdb_test "print \$r$check_reg.v4_int32\[3\]" \
-	   ".*= 8.*" \
-	   "print \$r$check_reg.v4_int32\[3\]"
-
-  # Now there should be {5, 6, 7, 8} in that array.
-  gdb_test "print \$r$check_reg\.v4_int32" \
-	   ".*= \{.*5, 6, 7, 8.*\}" \
-	   "print \$r$check_reg\.v4_int32"
-}
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/registers.exp b/gdb/testsuite/gdb.cell/registers.exp
deleted file mode 100644
index c4d271098b..0000000000
--- a/gdb/testsuite/gdb.cell/registers.exp
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcase tests registers on PPU and SPU.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-# No programm running, no registers should be available.
-gdb_test "info all-registers" \
-	  "The program has no registers now." \
-	  "info all-registers"
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Check registers in PPU thread.
-gdb_test "info reg r0" "r0.*" "info register r0"
-gdb_test "info reg r31" "r31.*" "info register r31"
-gdb_test "info reg r32" "Invalid register.*r32.*" "(invalid) info register r32"
-gdb_test "info reg pc" "pc.*" "info register pc"
-gdb_test "info reg cr" "cr.*" "info register cr"
-gdb_test "info reg lr" "lr.*" "info register lr"
-gdb_test "info reg ctr" "ctr.*" "info register ctr"
-gdb_test "info reg xer" "xer.*" "info register xer"
-
-# Continue to SPU thread.
-cont_spu_main
-
-# In SPU thread, check SPU registers.
-for {set check_reg 0} {$check_reg < 128} {incr check_reg} {
-  gdb_test "info reg r$check_reg" \
-	   "r$check_reg.*uint128.*=.*v2\_int64.*v4\_int32.*v8\_int16.*v16\_int8.*v2\_double.*v4\_float.*" \
-	   "info register r$check_reg"
-}
-gdb_test "info reg r128" \
-	 "Invalid register.*r128.*" \
-	 "(invalid) info register r128"
-
-gdb_test "info reg pc" "pc.*main.*" "info register pc"
-gdb_test "info reg id" "id.*" "info register id"
-gdb_test "info reg sp" "sp.*" "info register sp"
-gdb_test "info reg fpscr" "fpscr.*" "info register fpscr"
-gdb_test "info reg srr0" "srr0.*" "info register srr0"
-gdb_test "info reg lslr" "lslr.*" "info register lslr"
-gdb_test "info reg decr" "decr.*" "info register decr"
-gdb_test "info reg decr_status" "decr_status.*" "info register decr-status"
-
-gdb_test "info reg cr" "Invalid register.*cr.*" "info register cr"
-gdb_test "info reg lr" "Invalid register.*lr.*" "info register lr"
-gdb_test "info reg ctr" "Invalid register.*ctr.*" "info register ctr"
-gdb_test "info reg xer" "Invalid register.*xer.*" "info register xer"
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/size-spu.c b/gdb/testsuite/gdb.cell/size-spu.c
deleted file mode 100644
index 4d8b8815e8..0000000000
--- a/gdb/testsuite/gdb.cell/size-spu.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-
-
-int
-main (unsigned long long speid, unsigned long long argp,
-      unsigned long long envp)
-{
-  int c  = sizeof (char); /* Break here.  */
-  printf ("sizeof(char)=%d\n", c);
-
-  int s  = sizeof (short);
-  printf ("sizeof(short)=%d\n", s);
-
-  int i  = sizeof (int);
-  printf ("sizeof(int)=%d\n", i);
-
-  int l  = sizeof (long);
-  printf ("sizeof(long)=%d\n", l);
-
-  int ll = sizeof (long long);
-  printf ("sizeof(long long)=%d\n", ll);
-
-  int f  = sizeof (float);
-  printf ("sizeof(float)=%d\n", f);
-
-  int d  = sizeof (double);
-  printf ("sizeof(double)=%d\n", d);
-
-  int ld = sizeof (long double);
-  printf ("sizeof(long double)=%d\n", ld);
-
-  return 0;
-}
-
diff --git a/gdb/testsuite/gdb.cell/size.c b/gdb/testsuite/gdb.cell/size.c
deleted file mode 100644
index be9c8d33b2..0000000000
--- a/gdb/testsuite/gdb.cell/size.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2009-2019 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-   Contributed by Markus Deuling <deuling@de.ibm.com>  */
-
-#include <stdio.h>
-#include <libspe2.h>
-#include <pthread.h>
-#include <sys/wait.h>
-
-extern spe_program_handle_t size_spu;
-#define nr_t 1
-
-void *
-spe_thread (void *arg)
-{
-  int flags = 0;
-  unsigned int entry = SPE_DEFAULT_ENTRY;
-  spe_context_ptr_t *ctx = (spe_context_ptr_t *) arg;
-
-  spe_program_load (*ctx, &size_spu);
-  spe_context_run (*ctx, &entry, flags, NULL, NULL, NULL);
-
-  pthread_exit (NULL);
-}
-
-int
-main (void)
-{
-  int thread_id[nr_t];
-  pthread_t pts[nr_t];
-  spe_context_ptr_t ctx[nr_t];
-  int cnt;
-
-  int c  = sizeof (char);
-  printf ("sizeof(char)=%d\n", c);
-
-  int s  = sizeof (short);
-  printf ("sizeof(short)=%d\n", s);
-
-  int i  = sizeof (int);
-  printf ("sizeof(int)=%d\n", i);
-
-  int l  = sizeof (long);
-  printf ("sizeof(long)=%d\n", l);
-
-  int ll = sizeof (long long);
-  printf ("sizeof(long long)=%d\n", ll);
-
-  int f  = sizeof (float);
-  printf ("sizeof(float)=%d\n", f);
-
-  int d  = sizeof (double);
-  printf ("sizeof(double)=%d\n", d);
-
-  int ld = sizeof (long double);
-  printf ("sizeof(long double)=%d\n", ld);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    {
-      ctx[cnt] = spe_context_create (0, NULL);
-      thread_id[cnt]
-	= pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]);
-    }
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    pthread_join (pts[cnt], NULL);
-
-  for (cnt = 0; cnt < nr_t; cnt++)
-    spe_context_destroy (ctx[cnt]);
-
-  return 0;
-}
diff --git a/gdb/testsuite/gdb.cell/sizeof.exp b/gdb/testsuite/gdb.cell/sizeof.exp
deleted file mode 100644
index 8ea69e67fa..0000000000
--- a/gdb/testsuite/gdb.cell/sizeof.exp
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Check size of data types both on PPU and SPU.
-
-load_lib cell.exp
-
-set ppu_file "size"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "size-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-
-# Ask GDB about the sizes of data types.  This has
-# to be done in PPU thread and SPU thread.
-proc get_gdb_size { type } {
-  global gdb_prompt
-
-  set val "0"
-  gdb_test_multiple "print/d sizeof(${type})" "get sizeof(${type})" {
-    -re "\\$\[0-9\]* = (\[-\]*\[0-9\]*).*$gdb_prompt $" {
-	set val $expect_out(1,string)
-	pass "get sizeof ($type) = $val"
-    }
-  }
-  return ${val}
-}
-
-# Compare sizes from GDB and sizeof().
-proc size_compare { type gdb_size } {
-  set expr [string_to_regexp "sizeof(${type})=${gdb_size}"]
-  gdb_test "next" \
-           ".*" \
-           "next"
-  # Checks against string_to_regexp fails in remote testing.
-  if ![is_remote target] {
-    gdb_test "next" \
-             "${expr}.*" \
-             "check sizeof \"$type\" \"$gdb_size\" "
-  } else {
-    gdb_test "next" ".*" "check sizeof deactivate in remote testing"
-  }
-}
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Compare sizes.
-size_compare "char" [get_gdb_size "char"]
-size_compare "short" [get_gdb_size "short"]
-size_compare "int" [get_gdb_size "int"]
-size_compare "long" [get_gdb_size "long"]
-size_compare "long long" [get_gdb_size "long long"]
-size_compare "float" [get_gdb_size "float"]
-size_compare "double" [get_gdb_size "double"]
-size_compare "long double" [get_gdb_size "long double"]
-
-# Continue to SPU thread.
-cont_spu_main
-check_spu_arch ""
-
-# Compare sizes in SPU thread.
-size_compare "char" [get_gdb_size "char"]
-size_compare "short" [get_gdb_size "short"]
-size_compare "int" [get_gdb_size "int"]
-size_compare "long" [get_gdb_size "long"]
-size_compare "long long" [get_gdb_size "long long"]
-size_compare "float" [get_gdb_size "float"]
-size_compare "double" [get_gdb_size "double"]
-size_compare "long double" [get_gdb_size "long double"]
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/solib-symbol.exp b/gdb/testsuite/gdb.cell/solib-symbol.exp
deleted file mode 100644
index 685ccf5c14..0000000000
--- a/gdb/testsuite/gdb.cell/solib-symbol.exp
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# Testcase for multiple symbol disambiguation patch.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Symbol resolved in PPU thread.
-gdb_test "info symbol foo" \
-	 "foo in section \.text of .*$ppu_file\[\r\n\]+.*" \
-	 "info symbol foo in break"
-
-# Continue to SPU
-cont_spu_main
-check_spu_arch ""
-
-# Symbol resolved in SPU thread.
-gdb_test "info symbol foo" \
-	 "foo in section \.text of .*$spu_file@.*" \
-	 "info symbol foo in break-spu"
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cell/solib.exp b/gdb/testsuite/gdb.cell/solib.exp
deleted file mode 100644
index d6ed65daf2..0000000000
--- a/gdb/testsuite/gdb.cell/solib.exp
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Testsuite for Cell Broadband Engine combined debugger
-# This testcase checks 'info sharedlibrary ' command.
-
-load_lib cell.exp
-
-set ppu_file "break"
-set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin [standard_output_file ${ppu_file}]
-set spu_file "break-spu"
-set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin [standard_output_file ${spu_file}]
-
-if {[skip_cell_tests]} {
-    return 0
-}
-
-# Compile SPU binary.
-if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
-  unsupported "compiling spu binary failed."
-  return -1
-}
-# Compile PPU binary.
-if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
-  unsupported "embedding spu binary failed."
-  return -1
-}
-if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
-  unsupported "compiling ppu binary failed."
-  return -1
-}
-
-if [get_compiler_info] {
-  return -1
-}
-
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${ppu_bin}
-
-# No programm running, no libraries should be loaded.
-gdb_test "info sharedlibrary" \
-	 "No shared libraries loaded at this time." \
-	 "no shared library is loaded"
-
-if ![runto_main] then {
-  fail "can't run to main"
-  return 0
-}
-
-# Standing in PPU thread, now some libs should be loaded
-# including libspe library.
-gdb_test "info sharedlibrary" \
-	 "From.*To.*Syms Read.*Shared Object Library.*libspe.*" \
-	 "binary started, some libraries loaded"
-
-# Continue to SPU
-cont_spu_main
-check_spu_arch ""
-
-# In SPU thread now, the SPU binary should now appear in the list
-# of shared libraries.
-gdb_test "info sharedlibrary" \
-	 "From.*To.*Syms Read.*Shared Object Library.*libspe.*$spu_bin.*@.*x.*" \
-	 "spu thread, spu binary as shared library"
-
-gdb_exit
-return 0
diff --git a/gdb/testsuite/gdb.cp/bs15503.exp b/gdb/testsuite/gdb.cp/bs15503.exp
index 920b02a84a..f238f5188a 100644
--- a/gdb/testsuite/gdb.cp/bs15503.exp
+++ b/gdb/testsuite/gdb.cp/bs15503.exp
@@ -19,11 +19,6 @@
 
 if { [skip_stl_tests] } { continue }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 standard_testfile .cc
 
 if [get_compiler_info] {
diff --git a/gdb/testsuite/gdb.cp/cpexprs.exp b/gdb/testsuite/gdb.cp/cpexprs.exp
index ecf3a2fbc8..d7decaf542 100644
--- a/gdb/testsuite/gdb.cp/cpexprs.exp
+++ b/gdb/testsuite/gdb.cp/cpexprs.exp
@@ -681,11 +681,6 @@ add {policyd5::function} \
 # Start the test
 if {[skip_cplus_tests]} { continue }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 #
 # test running programs
 #
diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp
index 0be382ba98..13631df129 100644
--- a/gdb/testsuite/gdb.cp/exception.exp
+++ b/gdb/testsuite/gdb.cp/exception.exp
@@ -35,11 +35,6 @@ set nl	"\[\r\n\]+"
 
 if { [skip_stl_tests] } { continue }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 standard_testfile .cc
  
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
diff --git a/gdb/testsuite/gdb.cp/gdb2495.exp b/gdb/testsuite/gdb.cp/gdb2495.exp
index bcb6c5eb6d..a7de2ccbc2 100644
--- a/gdb/testsuite/gdb.cp/gdb2495.exp
+++ b/gdb/testsuite/gdb.cp/gdb2495.exp
@@ -38,11 +38,6 @@ if [target_info exists gdb,nosignals] {
     continue
 }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 standard_testfile .cc
 
 # Create and source the file that provides information about the compiler
diff --git a/gdb/testsuite/gdb.cp/mb-templates.exp b/gdb/testsuite/gdb.cp/mb-templates.exp
index ad42ef6e39..5946c0b25c 100644
--- a/gdb/testsuite/gdb.cp/mb-templates.exp
+++ b/gdb/testsuite/gdb.cp/mb-templates.exp
@@ -18,11 +18,6 @@
 
 if { [skip_stl_tests] } { continue }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 
 standard_testfile .cc
 
diff --git a/gdb/testsuite/gdb.cp/pr9167.exp b/gdb/testsuite/gdb.cp/pr9167.exp
index e8a7722cb4..214225233a 100644
--- a/gdb/testsuite/gdb.cp/pr9167.exp
+++ b/gdb/testsuite/gdb.cp/pr9167.exp
@@ -13,11 +13,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 standard_testfile .cc
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
diff --git a/gdb/testsuite/gdb.cp/userdef.exp b/gdb/testsuite/gdb.cp/userdef.exp
index dad9be36ad..7907593ec3 100644
--- a/gdb/testsuite/gdb.cp/userdef.exp
+++ b/gdb/testsuite/gdb.cp/userdef.exp
@@ -21,11 +21,6 @@
 
 if { [skip_stl_tests] } { continue }
 
-# On SPU this test fails because the executable exceeds local storage size.
-if { [istarget "spu*-*-*"] } {
-        return 0
-}
-
 standard_testfile .cc
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
diff --git a/gdb/testsuite/gdb.xml/tdesc-regs.exp b/gdb/testsuite/gdb.xml/tdesc-regs.exp
index 35fcc0005d..efd2227dd5 100644
--- a/gdb/testsuite/gdb.xml/tdesc-regs.exp
+++ b/gdb/testsuite/gdb.xml/tdesc-regs.exp
@@ -69,16 +69,6 @@ switch -glob -- [istarget] {
 	set regdir "sparc/"
         set core-regs {sparc64-cpu.xml sparc64-fpu.xml sparc64-cp0.xml}
     }
-    "spu*-*-*" {
-	# This may be either the spu-linux-nat target, or the Cell/B.E.
-	# multi-architecture debugger in SPU standalone executable mode.
-	# We do not support XML register sets on SPU in either case.
-	# However, the multi-arch debugger will accept XML registers sets
-	# (on the PowerPC side), hence the test below would fail.
-	# Simply return unconditionally here.
-	unsupported "register tests"
-	return 0
-    }
     "tic6x-*-*" {
 	set core-regs {tic6x-core.xml}
     }
diff --git a/gdb/testsuite/lib/cell.exp b/gdb/testsuite/lib/cell.exp
deleted file mode 100644
index 4a32805ead..0000000000
--- a/gdb/testsuite/lib/cell.exp
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright 2009-2019 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contributed by Markus Deuling <deuling@de.ibm.com>.
-#
-# Support library for testing the combined debugger for Linux
-# on the Cell Broadband Engine.
-
-# Compile SPU objects.
-proc gdb_compile_cell_spu {source dest type options} {
-  global board
-
-  # Save and unset multilib flags; these are not appropriate
-  # for the SPU compiler.
-  set board [target_info name]
-  set save_multilib_flag [board_info $board multilib_flags]
-  unset_board_info "multilib_flags"
-
-  set options_spu [concat $options [list compiler=spu-gcc]]
-  set ccout [gdb_compile $source $dest $type $options_spu]
-
-  set_board_info multilib_flags $save_multilib_flag
-  return $ccout
-}
-
-# Compile PPU objects.  This is just like gdb_compile_pthreads, except that we
-# always add the libspe2 library for compiling Cell/B.E. programs.
-proc gdb_compile_cell_ppu {source dest type options} {
-    # We do not need to try multiple names for the pthread library
-    # -lpthread works on all Cell/B.E. systems
-    set lib "-lspe2 -lpthread"
-    set options_ppu [concat $options [list libs=$lib]]
-    return [gdb_compile $source $dest $type $options_ppu]
-}
-
-# Embed SPU executable into a PPU object.
-proc gdb_cell_embedspu {source dest options} {
-    global CC_FOR_TARGET
-
-    if [info exists CC_FOR_TARGET] {
-        set compiler $CC_FOR_TARGET
-    } else {
-	set compiler [board_info [target_info name] compiler]
-    }
-
-    # We assume the PPU compiler is called gcc or ppu-gcc,
-    # and find the appropriate embedspu based on that.
-    regsub gcc "$compiler" embedspu embedspu
-
-    # Determine default embedded symbol name from source filename.
-    set path [split "$source" /]
-    set filename [lindex $path [expr [llength $path] - 1]]
-    regsub -all -- "\[-\.\]" "$filename" "_" symbol
-
-    set options_embed [concat $options [list compiler=$embedspu]]
-    return [gdb_compile "$symbol $source $dest" "" none $options_embed]
-}
-
-# Run a test on the target to see if it supports Cell/B.E. hardware.
-# Return 0 if so, 1 if it does not.
-gdb_caching_proc skip_cell_tests {
-    global srcdir subdir gdb_prompt inferior_exited_re
-
-    set me "skip_cell_tests"
-
-    # Set up, compile, and execute a combined Cell/B.E. test program.
-    # Include the current process ID in the file names to prevent conflicts
-    # with invocations for multiple testsuites.
-    set src [standard_temp_file cell[pid].c]
-    set exe [standard_temp_file cell[pid].x]
-    set src_spu [standard_temp_file cell[pid]-spu.c]
-    set exe_spu [standard_temp_file cell[pid]-spu.x]
-
-    set f [open $src "w"]
-    puts $f "#include <libspe2.h>"
-    puts $f "extern spe_program_handle_t cell[pid]_spu_x;"
-    puts $f "int main (void) {"
-    puts $f "unsigned int entry = SPE_DEFAULT_ENTRY;"
-    puts $f "spe_context_ptr_t ctx = spe_context_create (0, NULL);"
-    puts $f "spe_program_load (ctx, &cell[pid]_spu_x);"
-    puts $f "return spe_context_run (ctx, &entry, 0, NULL, NULL, NULL); }"
-    close $f
-
-    set f [open $src_spu "w"]
-    puts $f "int main (void) { return 0; }"
-    close $f
-
-    verbose "$me:  compiling testfile $src" 2
-    set compile_flags {debug nowarnings quiet}
-
-    set skip 0
-    if { [gdb_compile_cell_spu $src_spu $exe_spu executable $compile_flags] != "" } {
-        verbose "$me:  compiling spu binary failed, returning 1" 2
-	set skip 1
-    }
-    if { ! $skip && [gdb_cell_embedspu $exe_spu $exe_spu-embed.o $compile_flags]  != "" } {
-        verbose "$me:  embedding spu binary failed, returning 1" 2
-	set skip 1
-    }
-    if { ! $skip && [gdb_compile_cell_ppu [list $src $exe_spu-embed.o] $exe executable $compile_flags] != "" } {
-        verbose "$me:  compiling ppu binary failed, returning 1" 2
-	set skip 1
-    }
-    file delete $src
-    file delete $src_spu
-    file delete $exe_spu
-    file delete $exe_spu-embed.o
-
-    if { $skip } {
-        return 1
-    }
-
-    # Compilation succeeded so now run it via gdb.
-
-    gdb_exit
-    gdb_start
-    gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load "$exe"
-    gdb_run_cmd
-    gdb_expect {
-        -re ".*$inferior_exited_re normally.*${gdb_prompt} $" {
-            verbose -log "\n$me: Cell/B.E. hardware detected"
-            set result 0
-        }
-        -re ".*$inferior_exited_re with code.*${gdb_prompt} $" {
-            verbose -log "\n$me: Cell/B.E. hardware not detected"
-            set result 1
-        }
-        default {
-            unresolved "$me: unexpected failure"
-            set result 1
-        }
-    }
-    gdb_exit
-    remote_file build delete $exe
-
-    verbose "$me:  returning $result" 2
-    return $result
-}
-
-# Delete all breakpoints and stop on the next new SPU thread
-proc cont_spu_main { } {
-  delete_breakpoints
-  gdb_test "set spu stop-on-load on"
-  gdb_test "continue" \
-           "Continuing.*Temporary breakpoint .*main .*" \
-           "continue to SPU main"
-}
-
-# Continue to MARKER
-proc c_to { marker srcfile } {
-  set line [gdb_get_line_number $marker $srcfile]
-  gdb_test "break $line" \
-	   "Breakpoint.*at.*file.*$srcfile.*line $line.*" \
-	   "break $line"
-  gdb_test "continue" \
-	   "Continuing.*Breakpoint.*at.*$srcfile.*$line.*" \
-	   "continue to $line"
-}
-
-# Check if the current thread has SPU architecture
-proc check_spu_arch { msg } {
-  if { $msg == "" } {
-    set msg "spu architecture is spu256K"
-  }
-  gdb_test "show architecture" \
-	   "The target architecture is set automatically.*currently spu:256K.*" \
-	   $msg
-}


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] RISC-V: Optimize lui and auipc relaxations for undefweak symbol.
@ 2019-09-21  1:31 gdb-buildbot
  2019-09-21 19:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  1:31 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9d1da81b261a20050ef2ad01a5b4c8cf78404222 ***

commit 9d1da81b261a20050ef2ad01a5b4c8cf78404222
Author:     Jim Wilson <jimw@sifive.com>
AuthorDate: Fri Sep 20 15:01:20 2019 -0700
Commit:     Jim Wilson <jimw@sifive.com>
CommitDate: Fri Sep 20 15:01:20 2019 -0700

    RISC-V: Optimize lui and auipc relaxations for undefweak symbol.
    
    For the lui and auipc relaxations, since the symbol value of an undefined weak
    symbol is always be zero, we can optimize the patterns into a single LI/MV/ADDI
    instruction.
    
            bfd/
            * elfnn-riscv.c (riscv_pcgp_hi_reloc): Add new field undefined_weak.
            (riscv_record_pcgp_hi_reloc): New parameter undefined_weak.
            Set undefined_weak field from it.
            (relax_func_t): New parameter undefined_weak.
            (_bfd_riscv_relax_call): New ignored parameter undefined_weak.
            (_bfd_riscv_relax_tls_le): Likewise.
            (_bfd_riscv_relax_align): Likewise.
            (_bfd_riscv_relax_delete): Likewise.
            (_bfd_riscv_relax_lui): New parameter undefined_weak.  If true,
            allow relaxing.  For LO12* relocs, set rs1 to x0 when undefined_weak.
            (_bfd_riscv_relax_pc): New parameter undefined_weak.  For LO12* relocs,
            set undefined_weak from hi_reloc.  If true, allow relaxing.  For LO12*
            relocs, set rs1 to x0 when undefined_weak and change to non-pcrel
            reloc.
            (_bfd_riscv_relax_section): New local undefined_weak.  Set for
            undef weak relocs that can be relaxed.  Pass to relax_func call.
    
            ld/
            * testsuite/ld-riscv-elf/weakref32.s: Add relaxable undef weak code.
            * testsuite/ld-riscv-elf/weakref64.s: Likewise.
            * testsuite/ld-riscv-elf/weakref32.d: Updated.
            * testsuite/ld-riscv-elf/weakref64.d: Updated.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 080c628fee..b1a4aebd21 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,22 @@
+2019-09-20  Nelson Chu <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_pcgp_hi_reloc): Add new field undefined_weak.
+	(riscv_record_pcgp_hi_reloc): New parameter undefined_weak.
+	Set undefined_weak field from it.
+	(relax_func_t): New parameter undefined_weak.
+	(_bfd_riscv_relax_call): New ignored parameter undefined_weak.
+	(_bfd_riscv_relax_tls_le): Likewise.
+	(_bfd_riscv_relax_align): Likewise.
+	(_bfd_riscv_relax_delete): Likewise.
+	(_bfd_riscv_relax_lui): New parameter undefined_weak.  If true,
+	allow relaxing.  For LO12* relocs, set rs1 to x0 when undefined_weak.
+	(_bfd_riscv_relax_pc): New parameter undefined_weak.  For LO12* relocs,
+	set undefined_weak from hi_reloc.  If true, allow relaxing.  For LO12*
+	relocs, set rs1 to x0 when undefined_weak and change to non-pcrel
+	reloc.
+	(_bfd_riscv_relax_section): New local undefined_weak.  Set for
+	undef weak relocs that can be relaxed.  Pass to relax_func call.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index ccf904af1b..4ffe6a36e6 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -3319,6 +3319,7 @@ struct riscv_pcgp_hi_reloc
   bfd_vma hi_addr;
   unsigned hi_sym;
   asection *sym_sec;
+  bfd_boolean undefined_weak;
   riscv_pcgp_hi_reloc *next;
 };
 
@@ -3377,7 +3378,8 @@ riscv_free_pcgp_relocs (riscv_pcgp_relocs *p,
 static bfd_boolean
 riscv_record_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off,
 			    bfd_vma hi_addend, bfd_vma hi_addr,
-			    unsigned hi_sym, asection *sym_sec)
+			    unsigned hi_sym, asection *sym_sec,
+			    bfd_boolean undefined_weak)
 {
   riscv_pcgp_hi_reloc *new = bfd_malloc (sizeof(*new));
   if (!new)
@@ -3387,6 +3389,7 @@ riscv_record_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off,
   new->hi_addr = hi_addr;
   new->hi_sym = hi_sym;
   new->sym_sec = sym_sec;
+  new->undefined_weak = undefined_weak;
   new->next = p->hi;
   p->hi = new;
   return TRUE;
@@ -3439,7 +3442,8 @@ typedef bfd_boolean (*relax_func_t) (bfd *, asection *, asection *,
 				     struct bfd_link_info *,
 				     Elf_Internal_Rela *,
 				     bfd_vma, bfd_vma, bfd_vma, bfd_boolean *,
-				     riscv_pcgp_relocs *);
+				     riscv_pcgp_relocs *,
+				     bfd_boolean undefined_weak);
 
 /* Relax AUIPC + JALR into JAL.  */
 
@@ -3451,7 +3455,8 @@ _bfd_riscv_relax_call (bfd *abfd, asection *sec, asection *sym_sec,
 		       bfd_vma max_alignment,
 		       bfd_vma reserve_size ATTRIBUTE_UNUSED,
 		       bfd_boolean *again,
-		       riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED)
+		       riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
+		       bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
 {
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
   bfd_signed_vma foff = symval - (sec_addr (sec) + rel->r_offset);
@@ -3539,7 +3544,8 @@ _bfd_riscv_relax_lui (bfd *abfd,
 		      bfd_vma max_alignment,
 		      bfd_vma reserve_size,
 		      bfd_boolean *again,
-		      riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED)
+		      riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
+		      bfd_boolean undefined_weak)
 {
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
   bfd_vma gp = riscv_global_pointer_value (link_info);
@@ -3561,21 +3567,38 @@ _bfd_riscv_relax_lui (bfd *abfd,
 
   /* Is the reference in range of x0 or gp?
      Valid gp range conservatively because of alignment issue.  */
-  if (VALID_ITYPE_IMM (symval)
-      || (symval >= gp
-	  && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
-      || (symval < gp
-	  && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size)))
+  if (undefined_weak
+      || (VALID_ITYPE_IMM (symval)
+	  || (symval >= gp
+	      && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
+	  || (symval < gp
+	      && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size))))
     {
       unsigned sym = ELFNN_R_SYM (rel->r_info);
       switch (ELFNN_R_TYPE (rel->r_info))
 	{
 	case R_RISCV_LO12_I:
-	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
+	  if (undefined_weak)
+	    {
+	      /* Change the RS1 to zero.  */
+	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
+	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
+	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
+	    }
+	  else
+	    rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
 	  return TRUE;
 
 	case R_RISCV_LO12_S:
-	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
+	  if (undefined_weak)
+	    {
+	      /* Change the RS1 to zero.  */
+	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
+	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
+	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
+	    }
+	  else
+	    rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
 	  return TRUE;
 
 	case R_RISCV_HI20:
@@ -3634,7 +3657,8 @@ _bfd_riscv_relax_tls_le (bfd *abfd,
 			 bfd_vma max_alignment ATTRIBUTE_UNUSED,
 			 bfd_vma reserve_size ATTRIBUTE_UNUSED,
 			 bfd_boolean *again,
-			 riscv_pcgp_relocs *prcel_relocs ATTRIBUTE_UNUSED)
+			 riscv_pcgp_relocs *prcel_relocs ATTRIBUTE_UNUSED,
+			 bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
 {
   /* See if this symbol is in range of tp.  */
   if (RISCV_CONST_HIGH_PART (tpoff (link_info, symval)) != 0)
@@ -3674,7 +3698,8 @@ _bfd_riscv_relax_align (bfd *abfd, asection *sec,
 			bfd_vma max_alignment ATTRIBUTE_UNUSED,
 			bfd_vma reserve_size ATTRIBUTE_UNUSED,
 			bfd_boolean *again ATTRIBUTE_UNUSED,
-			riscv_pcgp_relocs *pcrel_relocs ATTRIBUTE_UNUSED)
+			riscv_pcgp_relocs *pcrel_relocs ATTRIBUTE_UNUSED,
+			bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
 {
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
   bfd_vma alignment = 1, pos;
@@ -3732,8 +3757,10 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
 		      bfd_vma max_alignment,
 		      bfd_vma reserve_size,
 		      bfd_boolean *again ATTRIBUTE_UNUSED,
-		      riscv_pcgp_relocs *pcgp_relocs)
+		      riscv_pcgp_relocs *pcgp_relocs,
+		      bfd_boolean undefined_weak)
 {
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
   bfd_vma gp = riscv_global_pointer_value (link_info);
 
   BFD_ASSERT (rel->r_offset + 4 <= sec->size);
@@ -3763,12 +3790,19 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
 	hi_reloc = *hi;
 	symval = hi_reloc.hi_addr;
 	sym_sec = hi_reloc.sym_sec;
+
+	/* We can not know whether the undefined weak symbol is referenced
+	   according to the information of R_RISCV_PCREL_LO12_I/S.  Therefore,
+	   we have to record the 'undefined_weak' flag when handling the
+	   corresponding R_RISCV_HI20 reloc in riscv_record_pcgp_hi_reloc.  */
+	undefined_weak = hi_reloc.undefined_weak;
       }
       break;
 
     case R_RISCV_PCREL_HI20:
       /* Mergeable symbols and code might later move out of range.  */
-      if (sym_sec->flags & (SEC_MERGE | SEC_CODE))
+      if (! undefined_weak
+	  && sym_sec->flags & (SEC_MERGE | SEC_CODE))
 	return TRUE;
 
       /* If the cooresponding lo relocation has already been seen then it's not
@@ -3796,23 +3830,50 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
 
   /* Is the reference in range of x0 or gp?
      Valid gp range conservatively because of alignment issue.  */
-  if (VALID_ITYPE_IMM (symval)
-      || (symval >= gp
-	  && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
-      || (symval < gp
-	  && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size)))
+  if (undefined_weak
+      || (VALID_ITYPE_IMM (symval)
+	  || (symval >= gp
+	      && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
+	  || (symval < gp
+	      && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size))))
     {
       unsigned sym = hi_reloc.hi_sym;
       switch (ELFNN_R_TYPE (rel->r_info))
 	{
 	case R_RISCV_PCREL_LO12_I:
-	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
-	  rel->r_addend += hi_reloc.hi_addend;
+	  if (undefined_weak)
+	    {
+	      /* Change the RS1 to zero, and then modify the relocation
+		 type to R_RISCV_LO12_I.  */
+	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
+	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
+	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
+	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_LO12_I);
+	      rel->r_addend = hi_reloc.hi_addend;
+	    }
+	  else
+	    {
+	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
+	      rel->r_addend += hi_reloc.hi_addend;
+	    }
 	  return TRUE;
 
 	case R_RISCV_PCREL_LO12_S:
-	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
-	  rel->r_addend += hi_reloc.hi_addend;
+	  if (undefined_weak)
+	    {
+	      /* Change the RS1 to zero, and then modify the relocation
+		 type to R_RISCV_LO12_S.  */
+	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
+	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
+	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
+	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_LO12_S);
+	      rel->r_addend = hi_reloc.hi_addend;
+	    }
+	  else
+	    {
+	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
+	      rel->r_addend += hi_reloc.hi_addend;
+	    }
 	  return TRUE;
 
 	case R_RISCV_PCREL_HI20:
@@ -3821,7 +3882,8 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
 				      rel->r_addend,
 				      symval,
 				      ELFNN_R_SYM(rel->r_info),
-				      sym_sec);
+				      sym_sec,
+				      undefined_weak);
 	  /* We can delete the unnecessary AUIPC and reloc.  */
 	  rel->r_info = ELFNN_R_INFO (0, R_RISCV_DELETE);
 	  rel->r_addend = 4;
@@ -3847,7 +3909,8 @@ _bfd_riscv_relax_delete (bfd *abfd,
 			 bfd_vma max_alignment ATTRIBUTE_UNUSED,
 			 bfd_vma reserve_size ATTRIBUTE_UNUSED,
 			 bfd_boolean *again ATTRIBUTE_UNUSED,
-			 riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED)
+			 riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
+			 bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
 {
   if (!riscv_relax_delete_bytes(abfd, sec, rel->r_offset, rel->r_addend,
 				link_info))
@@ -3914,6 +3977,7 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec,
       int type = ELFNN_R_TYPE (rel->r_info);
       bfd_vma symval;
       char symtype;
+      bfd_boolean undefined_weak = FALSE;
 
       relax_func = NULL;
       if (info->relax_pass == 0)
@@ -4008,11 +4072,36 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec,
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
+	  if (h->root.type == bfd_link_hash_undefweak
+	      && (relax_func == _bfd_riscv_relax_lui
+		  || relax_func == _bfd_riscv_relax_pc))
+	    {
+	      /* For the lui and auipc relaxations, since the symbol
+		 value of an undefined weak symbol is always be zero,
+		 we can optimize the patterns into a single LI/MV/ADDI
+		 instruction.
+
+		 Note that, creating shared libraries and pie output may
+		 break the rule above.  Fortunately, since we do not relax
+		 pc relocs when creating shared libraries and pie output,
+		 and the absolute address access for R_RISCV_HI20 isn't
+		 allowed when "-fPIC" is set, the problem of creating shared
+		 libraries can not happen currently.  Once we support the
+		 auipc relaxations when creating shared libraries, then we will
+		 need the more rigorous checking for this optimization.  */
+	      undefined_weak = TRUE;
+	    }
+
 	  if (h->plt.offset != MINUS_ONE)
 	    {
 	      sym_sec = htab->elf.splt;
 	      symval = h->plt.offset;
 	    }
+	  else if (undefined_weak)
+	    {
+	      symval = 0;
+	      sym_sec = bfd_und_section_ptr;
+	    }
 	  else if (h->root.u.def.section->output_section == NULL
 		   || (h->root.type != bfd_link_hash_defined
 		       && h->root.type != bfd_link_hash_defweak))
@@ -4065,7 +4154,7 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec,
 
       if (!relax_func (abfd, sec, sym_sec, info, rel, symval,
 		       max_alignment, reserve_size, again,
-		       &pcgp_relocs))
+		       &pcgp_relocs, undefined_weak))
 	goto fail;
     }
 
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3f62dad9cc..57d4df713a 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20  Nelson Chu <nelson.chu@sifive.com>
+
+	* testsuite/ld-riscv-elf/weakref32.s: Add relaxable undef weak code.
+	* testsuite/ld-riscv-elf/weakref64.s: Likewise.
+	* testsuite/ld-riscv-elf/weakref32.d: Updated.
+	* testsuite/ld-riscv-elf/weakref64.d: Updated.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/xtensaelf.em (xtensa_get_section_deps): Comment.
diff --git a/ld/testsuite/ld-riscv-elf/weakref32.d b/ld/testsuite/ld-riscv-elf/weakref32.d
index 5ede7cb7f6..eaeb6dae7e 100644
--- a/ld/testsuite/ld-riscv-elf/weakref32.d
+++ b/ld/testsuite/ld-riscv-elf/weakref32.d
@@ -5,15 +5,16 @@
 Disassembly of section \.text:
 
 90000000 <_start>:
-90000000:	70000797          	auipc	a5,0x70000
-90000004:	00078793          	mv	a5,a5
-90000008:	02078263          	beqz	a5,9000002c <_start\+0x2c>
-9000000c:	ff010113          	addi	sp,sp,-16
-90000010:	00112623          	sw	ra,12\(sp\)
-90000014:	00000097          	auipc	ra,0x0
-90000018:	000000e7          	jalr	zero # 0 <_start\-0x90000000>
-9000001c:	00c12083          	lw	ra,12\(sp\)
-90000020:	01010113          	addi	sp,sp,16
-90000024:	00000317          	auipc	t1,0x0
-90000028:	00000067          	jr	zero # 0 <_start\-0x90000000>
-9000002c:	00008067          	ret
+90000000:	00000793          	li	a5,0
+90000004:	02078663          	beqz	a5,90000030 <_start\+0x30>
+90000008:	00000793          	li	a5,0
+9000000c:	02078263          	beqz	a5,90000030 <_start\+0x30>
+90000010:	ff010113          	addi	sp,sp,-16
+90000014:	00112623          	sw	ra,12\(sp\)
+90000018:	00000097          	auipc	ra,0x0
+9000001c:	000000e7          	jalr	zero # 0 <_start\-0x90000000>
+90000020:	00c12083          	lw	ra,12\(sp\)
+90000024:	01010113          	addi	sp,sp,16
+90000028:	00000317          	auipc	t1,0x0
+9000002c:	00000067          	jr	zero # 0 <_start\-0x90000000>
+90000030:	00008067          	ret
diff --git a/ld/testsuite/ld-riscv-elf/weakref32.s b/ld/testsuite/ld-riscv-elf/weakref32.s
index 14df041218..6c3d84de5f 100644
--- a/ld/testsuite/ld-riscv-elf/weakref32.s
+++ b/ld/testsuite/ld-riscv-elf/weakref32.s
@@ -4,6 +4,9 @@
 	.globl	_start
 	.type	_start, @function
 _start:
+	lui	a5,%hi(f)
+	addi	a5,a5,%lo(f)
+	beq	a5,zero,.L1
 	lla	a5,f
 	beqz	a5,.L1
 	addi	sp,sp,-16
diff --git a/ld/testsuite/ld-riscv-elf/weakref64.d b/ld/testsuite/ld-riscv-elf/weakref64.d
index 52db9c2d0c..cc718a91a3 100644
--- a/ld/testsuite/ld-riscv-elf/weakref64.d
+++ b/ld/testsuite/ld-riscv-elf/weakref64.d
@@ -5,15 +5,16 @@
 Disassembly of section \.text:
 
 0000000090000000 <_start>:
-    90000000:	000007b7          	lui	a5,0x0
-    90000004:	00078793          	mv	a5,a5
-    90000008:	02078263          	beqz	a5,9000002c <_start\+0x2c>
-    9000000c:	ff010113          	addi	sp,sp,-16
-    90000010:	00113423          	sd	ra,8\(sp\)
-    90000014:	00000097          	auipc	ra,0x0
-    90000018:	000000e7          	jalr	zero # 0 <_start\-0x90000000>
-    9000001c:	00813083          	ld	ra,8\(sp\)
-    90000020:	01010113          	addi	sp,sp,16
-    90000024:	00000317          	auipc	t1,0x0
-    90000028:	00000067          	jr	zero # 0 <_start\-0x90000000>
-    9000002c:	00008067          	ret
+    90000000:	00000793          	li	a5,0
+    90000004:	02078663          	beqz	a5,90000030 <_start\+0x30>
+    90000008:	00000793          	li	a5,0
+    9000000c:	02078263          	beqz	a5,90000030 <_start\+0x30>
+    90000010:	ff010113          	addi	sp,sp,-16
+    90000014:	00113423          	sd	ra,8\(sp\)
+    90000018:	00000097          	auipc	ra,0x0
+    9000001c:	000000e7          	jalr	zero # 0 <_start\-0x90000000>
+    90000020:	00813083          	ld	ra,8\(sp\)
+    90000024:	01010113          	addi	sp,sp,16
+    90000028:	00000317          	auipc	t1,0x0
+    9000002c:	00000067          	jr	zero # 0 <_start\-0x90000000>
+    90000030:	00008067          	ret
diff --git a/ld/testsuite/ld-riscv-elf/weakref64.s b/ld/testsuite/ld-riscv-elf/weakref64.s
index 5872626665..83bcd28563 100644
--- a/ld/testsuite/ld-riscv-elf/weakref64.s
+++ b/ld/testsuite/ld-riscv-elf/weakref64.s
@@ -4,6 +4,9 @@
 	.globl	_start
 	.type	_start, @function
 _start:
+	lui	a5,%hi(f)
+	addi	a5,a5,%lo(f)
+	beq	a5,zero,.L1
 	lla	a5,f
 	beqz	a5,.L1
 	addi	sp,sp,-16


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/NEWS: Move entries about MI v3 and multi-loc breakpoints after GDB 8.3
@ 2019-09-21  2:11 gdb-buildbot
  2019-09-21 22:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  2:11 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5a3a0d6304b400f55d60b2e9199da04fe1c7d8e4 ***

commit 5a3a0d6304b400f55d60b2e9199da04fe1c7d8e4
Author:     Joel Brobecker <brobecker@adacore.com>
AuthorDate: Fri Sep 20 16:23:15 2019 -0700
Commit:     Joel Brobecker <brobecker@adacore.com>
CommitDate: Fri Sep 20 16:23:15 2019 -0700

    gdb/NEWS: Move entries about MI v3 and multi-loc breakpoints after GDB 8.3
    
    This is a followup on the following commit...
    
        commit b4be1b0648608a2578bbed39841c8ee411773edd
        Date:   Wed Mar 13 15:13:03 2019 -0400
        Subject: Fix MI output for multi-location breakpoints
    
    ... which mistakenly added NEWS entries in the "in gdb-8.3" section,
    rather than in the "since gdb-8.3" one.
    
    gdb/ChangeLog:
    
            * NEWS: Move entries about default MI version now being
            version 3, and about the GDB/MI fix for multi-location
            breakpoints to the "since GDB 8.3" section.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5ac98cd0c2..67aba3ed2d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-20  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Move entries about default MI version now being
+	version 3, and about the GDB/MI fix for multi-location
+	breakpoints to the "since GDB 8.3" section.
+
 2019-09-20  Joel Brobecker  <brobecker@adacore.com>
 
 	GDB 8.3.1 released.
diff --git a/gdb/NEWS b/gdb/NEWS
index 35b48d9cb3..8f9b1d8ac4 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -304,6 +304,20 @@ focus, winheight, +, -, >, <
 
 * Other MI changes
 
+ ** The default version of the MI interpreter is now 3 (-i=mi3).
+
+  ** The output of information about multi-location breakpoints (which is
+     syntactically incorrect in MI 2) has changed in MI 3.  This affects
+     the following commands and events:
+
+	- -break-insert
+	- -break-info
+	- =breakpoint-created
+	- =breakpoint-modified
+
+     The -fix-multi-location-breakpoint-output command can be used to enable
+     this behavior with previous MI versions.
+
  ** Backtraces and frames include a new optional field addr_flags which is
     given after the addr field.  On AArch64 this contains PAC if the address
     has been masked in the frame.  On all other targets the field is not
@@ -501,8 +515,6 @@ set style address intensity VALUE
 
 * MI changes
 
-  ** The default version of the MI interpreter is now 3 (-i=mi3).
-
   ** The '-data-disassemble' MI command now accepts an '-a' option to
      disassemble the whole function surrounding the given program
      counter value or function name.  Support for this feature can be
@@ -512,18 +524,6 @@ set style address intensity VALUE
   ** Command responses and notifications that include a frame now include
      the frame's architecture in a new "arch" attribute.
 
-  ** The output of information about multi-location breakpoints (which is
-     syntactically incorrect in MI 2) has changed in MI 3.  This affects
-     the following commands and events:
-
-	- -break-insert
-	- -break-info
-	- =breakpoint-created
-	- =breakpoint-modified
-
-     The -fix-multi-location-breakpoint-output command can be used to enable
-     this behavior with previous MI versions.
-
 * New native configurations
 
 GNU/Linux/RISC-V		riscv*-*-linux*


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Move declarations of debug_threads and using_threads to header
@ 2019-09-21  2:32 gdb-buildbot
  2019-09-21 23:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  2:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f9d949fb7b85323e3f307884a4a3cef6ba52607b ***

commit f9d949fb7b85323e3f307884a4a3cef6ba52607b
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Fri Sep 20 11:40:09 2019 +0900
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Sat Sep 21 11:00:50 2019 +0900

    Move declarations of debug_threads and using_threads to header
    
    Instead of declaring debug_threads and using_threads in several
    .c files, declare them in debug.h.
    
    gdb/gdbserver/ChangeLog:
    
    2019-09-20  Christian Biesinger  <cbiesinger@google.com>
    
            * debug.c (debug_threads): Remove comment in favor of the header.
            * debug.h (using_threads): Add declaration.
            (debug_threads): Add comment.
            * linux-aarch64-low.c: Include debug.h and remove declaration of
            debug_threads.
            * nto-low.c: Likewise.
            * remote-utils.c: Likewise.
            * thread-db.c: Likewise.

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 5c76167014..c0c6f51a06 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-20  Christian Biesinger  <cbiesinger@google.com>
+
+	* debug.c (debug_threads): Remove comment in favor of the header.
+	* debug.h (using_threads): Add declaration.
+	(debug_threads): Add comment.
+	* linux-aarch64-low.c: Include debug.h and remove declaration of
+	debug_threads.
+	* nto-low.c: Likewise.
+	* remote-utils.c: Likewise.
+	* thread-db.c: Likewise.
+
 2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
 
 	* configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
diff --git a/gdb/gdbserver/debug.c b/gdb/gdbserver/debug.c
index 19f11fc17c..a764df7688 100644
--- a/gdb/gdbserver/debug.c
+++ b/gdb/gdbserver/debug.c
@@ -26,8 +26,7 @@ int remote_debug = 0;
 /* Output file for debugging.  Default to standard error.  */
 FILE *debug_file = stderr;
 
-/* Enable miscellaneous debugging output.  The name is historical - it
-   was originally used to debug LinuxThreads support.  */
+/* See debug.h.  */
 int debug_threads;
 
 /* Include timestamps in debugging output.  */
diff --git a/gdb/gdbserver/debug.h b/gdb/gdbserver/debug.h
index 07e94eac6e..c136b9c224 100644
--- a/gdb/gdbserver/debug.h
+++ b/gdb/gdbserver/debug.h
@@ -28,7 +28,13 @@ extern int remote_debug;
 void debug_set_output (const char *debug_file);
 #endif
 
+extern int using_threads;
+
+/* Enable miscellaneous debugging output.  The name is historical - it
+   was originally used to debug LinuxThreads support.  */
+
 extern int debug_threads;
+
 extern int debug_timestamp;
 
 void debug_flush (void);
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index 33095ea752..ad04817145 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -28,6 +28,7 @@
 #include "elf/common.h"
 #include "ax.h"
 #include "tracepoint.h"
+#include "debug.h"
 
 #include <signal.h>
 #include <sys/user.h>
@@ -153,10 +154,6 @@ aarch64_store_pauthregset (struct regcache *regcache, const void *buf)
 		   &pauth_regset[1]);
 }
 
-/* Enable miscellaneous debugging output.  The name is historical - it
-   was originally used to debug LinuxThreads support.  */
-extern int debug_threads;
-
 /* Implementation of linux_target_ops method "get_pc".  */
 
 static CORE_ADDR
diff --git a/gdb/gdbserver/nto-low.c b/gdb/gdbserver/nto-low.c
index 3c1130680f..d77fda54b8 100644
--- a/gdb/gdbserver/nto-low.c
+++ b/gdb/gdbserver/nto-low.c
@@ -22,6 +22,7 @@
 #include "gdbthread.h"
 #include "nto-low.h"
 #include "hostio.h"
+#include "debug.h"
 
 #include <limits.h>
 #include <fcntl.h>
@@ -32,7 +33,6 @@
 #include <sys/neutrino.h>
 
 
-extern int using_threads;
 int using_threads = 1;
 
 const struct target_desc *nto_tdesc;
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index 665fc66c53..d7da4b7aed 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -23,6 +23,7 @@
 #include "target.h"
 #include "gdbthread.h"
 #include "tdesc.h"
+#include "debug.h"
 #include "dll.h"
 #include "gdbsupport/rsp-low.h"
 #include "gdbsupport/netstuff.h"
@@ -109,10 +110,6 @@ static int remote_is_stdio = 0;
 static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR;
 static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR;
 
-/* FIXME headerize? */
-extern int using_threads;
-extern int debug_threads;
-
 #ifdef USE_WIN32API
 # define read(fd, buf, len) recv (fd, (char *) buf, len, 0)
 # define write(fd, buf, len) send (fd, (char *) buf, len, 0)
diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c
index b2791b0513..c6b43a06cc 100644
--- a/gdb/gdbserver/thread-db.c
+++ b/gdb/gdbserver/thread-db.c
@@ -22,8 +22,7 @@
 
 #include "linux-low.h"
 
-extern int debug_threads;
-
+#include "debug.h"
 #include "gdb_proc_service.h"
 #include "nat/gdb_thread_db.h"
 #include "gdbsupport/gdb_vecs.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Replace solib_global_lookup with gdbarch_iterate_over_objfiles_in_search_order
@ 2019-09-21  2:52 gdb-buildbot
  2019-09-22  0:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-21  2:52 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 626ca2c06f7b5a5441d512ce334bb2daf5587259 ***

commit 626ca2c06f7b5a5441d512ce334bb2daf5587259
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Thu Aug 1 11:53:03 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Fri Sep 20 21:09:15 2019 -0500

    Replace solib_global_lookup with gdbarch_iterate_over_objfiles_in_search_order
    
    All implementations of either function use it for the same purpose (except
    Darwin, which is a no-op): to prefer a symbol in the current objfile over
    symbols with the same name in other objfiles. There does not seem to be a
    reason to have both mechanisms for that purpose.
    
    gdb/ChangeLog:
    
    2019-09-20  Christian Biesinger  <cbiesinger@google.com>
    
            * solib-darwin.c (darwin_lookup_lib_symbol): Remove.
            (_initialize_darwin_solib): Don't set
            darwin_so_ops.lookup_lib_global_symbol.
            * solib-svr4.c (set_solib_svr4_fetch_link_map_offsets): Call
            set_gdbarch_iterate_over_objfiles_in_search_order.
            (elf_lookup_lib_symbol): Rename to...
            (svr4_iterate_over_objfiles_in_search_order): this, and update
            to iterate semantics.
            (_initialize_svr4_solib): Don't set lookup_lib_global_symbol.
            * solib.c (solib_global_lookup): Remove.
            * solist.h (struct target_so_ops): Remove lookup_lib_global_symbol.
            (solib_global_lookup): Remove.
            * symtab.c (lookup_global_or_static_symbol): Remove call to
            solib_global_lookup.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 67aba3ed2d..3d0975afd8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,20 @@
+2019-09-20  Christian Biesinger  <cbiesinger@google.com>
+
+	* solib-darwin.c (darwin_lookup_lib_symbol): Remove.
+	(_initialize_darwin_solib): Don't set
+	darwin_so_ops.lookup_lib_global_symbol.
+	* solib-svr4.c (set_solib_svr4_fetch_link_map_offsets): Call
+	set_gdbarch_iterate_over_objfiles_in_search_order.
+	(elf_lookup_lib_symbol): Rename to...
+	(svr4_iterate_over_objfiles_in_search_order): this, and update
+	to iterate semantics.
+	(_initialize_svr4_solib): Don't set lookup_lib_global_symbol.
+	* solib.c (solib_global_lookup): Remove.
+	* solist.h (struct target_so_ops): Remove lookup_lib_global_symbol.
+	(solib_global_lookup): Remove.
+	* symtab.c (lookup_global_or_static_symbol): Remove call to
+	solib_global_lookup.
+
 2019-09-20  Joel Brobecker  <brobecker@adacore.com>
 
 	* NEWS: Move entries about default MI version now being
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 778c6d9f61..286e38558f 100644
--- a/gdb/solib-darwin.c
+++ b/gdb/solib-darwin.c
@@ -638,14 +638,6 @@ darwin_relocate_section_addresses (struct so_list *so,
     so->addr_low = sec->addr;
 }
 \f
-static struct block_symbol
-darwin_lookup_lib_symbol (struct objfile *objfile,
-			  const char *name,
-			  const domain_enum domain)
-{
-  return {};
-}
-
 static gdb_bfd_ref_ptr
 darwin_bfd_open (const char *pathname)
 {
@@ -687,6 +679,5 @@ _initialize_darwin_solib (void)
   darwin_so_ops.current_sos = darwin_current_sos;
   darwin_so_ops.open_symbol_file_object = open_symbol_file_object;
   darwin_so_ops.in_dynsym_resolve_code = darwin_in_dynsym_resolve_code;
-  darwin_so_ops.lookup_lib_global_symbol = darwin_lookup_lib_symbol;
   darwin_so_ops.bfd_open = darwin_bfd_open;
 }
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index e04fde942d..dc63549105 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -51,6 +51,10 @@ static int svr4_have_link_map_offsets (void);
 static void svr4_relocate_main_executable (void);
 static void svr4_free_library_list (void *p_list);
 static void probes_table_remove_objfile_probes (struct objfile *objfile);
+static void svr4_iterate_over_objfiles_in_search_order (
+  struct gdbarch *gdbarch, iterate_over_objfiles_in_search_order_cb_ftype *cb,
+  void *cb_data, struct objfile *objfile);
+
 
 /* On SVR4 systems, a list of symbols in the dynamic linker where
    GDB can try to place a breakpoint to monitor shared library
@@ -3102,6 +3106,8 @@ set_solib_svr4_fetch_link_map_offsets (struct gdbarch *gdbarch,
   ops->fetch_link_map_offsets = flmo;
 
   set_solib_ops (gdbarch, &svr4_so_ops);
+  set_gdbarch_iterate_over_objfiles_in_search_order
+    (gdbarch, svr4_iterate_over_objfiles_in_search_order);
 }
 
 /* Fetch a link_map_offsets structure using the architecture-specific
@@ -3200,32 +3206,45 @@ svr4_lp64_fetch_link_map_offsets (void)
 
 struct target_so_ops svr4_so_ops;
 
-/* Lookup global symbol for ELF DSOs linked with -Bsymbolic.  Those DSOs have a
+/* Search order for ELF DSOs linked with -Bsymbolic.  Those DSOs have a
    different rule for symbol lookup.  The lookup begins here in the DSO, not in
    the main executable.  */
 
-static struct block_symbol
-elf_lookup_lib_symbol (struct objfile *objfile,
-		       const char *name,
-		       const domain_enum domain)
+static void
+svr4_iterate_over_objfiles_in_search_order
+  (struct gdbarch *gdbarch,
+   iterate_over_objfiles_in_search_order_cb_ftype *cb,
+   void *cb_data, struct objfile *current_objfile)
 {
-  bfd *abfd;
-
-  if (objfile == symfile_objfile)
-    abfd = exec_bfd;
-  else
+  bool checked_current_objfile = false;
+  if (current_objfile != nullptr)
     {
-      /* OBJFILE should have been passed as the non-debug one.  */
-      gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
+      bfd *abfd;
 
-      abfd = objfile->obfd;
-    }
+      if (current_objfile->separate_debug_objfile_backlink != nullptr)
+        current_objfile = current_objfile->separate_debug_objfile_backlink;
 
-  if (abfd == NULL || scan_dyntag (DT_SYMBOLIC, abfd, NULL, NULL) != 1)
-    return {};
+      if (current_objfile == symfile_objfile)
+	abfd = exec_bfd;
+      else
+	abfd = current_objfile->obfd;
+
+      if (abfd != nullptr &&
+	  scan_dyntag (DT_SYMBOLIC, abfd, nullptr, nullptr) == 1)
+	{
+	  checked_current_objfile = true;
+	  if (cb (current_objfile, cb_data) != 0)
+	    return;
+	}
+    }
 
-  return lookup_global_symbol_from_objfile (objfile, GLOBAL_BLOCK, name,
-					    domain);
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      if (checked_current_objfile && objfile == current_objfile)
+	continue;
+      if (cb (objfile, cb_data) != 0)
+	return;
+    }
 }
 
 void
@@ -3242,7 +3261,6 @@ _initialize_svr4_solib (void)
   svr4_so_ops.open_symbol_file_object = open_symbol_file_object;
   svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code;
   svr4_so_ops.bfd_open = solib_bfd_open;
-  svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol;
   svr4_so_ops.same = svr4_same;
   svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core;
   svr4_so_ops.update_breakpoints = svr4_update_solib_event_breakpoints;
diff --git a/gdb/solib.c b/gdb/solib.c
index b9a61e265b..5b1246929b 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -1441,21 +1441,6 @@ show_auto_solib_add (struct ui_file *file, int from_tty,
 }
 
 
-/* Handler for library-specific lookup of global symbol NAME in OBJFILE.  Call
-   the library-specific handler if it is installed for the current target.  */
-
-struct block_symbol
-solib_global_lookup (struct objfile *objfile,
-		     const char *name,
-		     const domain_enum domain)
-{
-  const struct target_so_ops *ops = solib_ops (target_gdbarch ());
-
-  if (ops->lookup_lib_global_symbol != NULL)
-    return ops->lookup_lib_global_symbol (objfile, name, domain);
-  return {};
-}
-
 /* Lookup the value for a specific symbol from dynamic symbol table.  Look
    up symbol from ABFD.  MATCH_SYM is a callback function to determine
    whether to pick up a symbol.  DATA is the input of this callback
diff --git a/gdb/solist.h b/gdb/solist.h
index e1410c2b79..ee99fc815b 100644
--- a/gdb/solist.h
+++ b/gdb/solist.h
@@ -139,12 +139,6 @@ struct target_so_ops
 			      unsigned o_flags,
 			      gdb::unique_xmalloc_ptr<char> *temp_pathname);
 
-  /* Hook for looking up global symbols in a library-specific way.  */
-  struct block_symbol (*lookup_lib_global_symbol)
-    (struct objfile *objfile,
-     const char *name,
-     const domain_enum domain);
-
   /* Given two so_list objects, one from the GDB thread list
      and another from the list returned by current_sos, return 1
      if they represent the same library.
@@ -209,9 +203,4 @@ extern gdb_bfd_ref_ptr solib_bfd_open (const char *in_pathname);
 /* FIXME: gdbarch needs to control this variable.  */
 extern struct target_so_ops *current_target_so_ops;
 
-/* Handler for library-specific global symbol lookup in solib.c.  */
-struct block_symbol solib_global_lookup (struct objfile *objfile,
-					    const char *name,
-					    const domain_enum domain);
-
 #endif
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 35eab08cb3..54c7ed9c7c 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2634,11 +2634,7 @@ lookup_global_or_static_symbol (const char *name,
       return result;
     }
 
-  /* Call library-specific lookup procedure.  */
-  if (objfile != NULL)
-    result = solib_global_lookup (objfile, name, domain);
-
-  /* If that didn't work go a global search (of global blocks, heh).  */
+  /* Do a global search (of global blocks, heh).  */
   if (result.symbol == NULL)
     {
       memset (&lookup_data, 0, sizeof (lookup_data));


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: change "nonzero" to "true" in comments
@ 2019-09-22  0:17 gdb-buildbot
  2019-09-22  1:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-22  0:17 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 9252448ba984203cb5d0f15494ce9d942bb20c74 ***

commit 9252448ba984203cb5d0f15494ce9d942bb20c74
Author:     Simon Marchi <simon.marchi@polymtl.ca>
AuthorDate: Sat Sep 21 19:45:12 2019 -0400
Commit:     Simon Marchi <simon.marchi@polymtl.ca>
CommitDate: Sat Sep 21 19:47:22 2019 -0400

    gdb: change "nonzero" to "true" in comments
    
    These int fields have been converted to bool, so their doc should say
    "true" and not "nonzero".
    
    gdb/ChangeLog:
    
            * breakpoint.h (bp_location) <inserted, permanent, duplicate>:
            Change "nonzero" to "true" in documentation.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3d0975afd8..48f90186ff 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (bp_location) <inserted, permanent, duplicate>:
+	Change "nonzero" to "true" in documentation.
+
 2019-09-20  Christian Biesinger  <cbiesinger@google.com>
 
 	* solib-darwin.c (darwin_lookup_lib_symbol): Remove.
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 49380e30c2..80bb11c141 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -387,17 +387,17 @@ public:
   /* Is this particular location enabled.  */
   bool enabled = false;
   
-  /* Nonzero if this breakpoint is now inserted.  */
+  /* True if this breakpoint is now inserted.  */
   bool inserted = false;
 
-  /* Nonzero if this is a permanent breakpoint.  There is a breakpoint
+  /* True if this is a permanent breakpoint.  There is a breakpoint
      instruction hard-wired into the target's code.  Don't try to
      write another breakpoint instruction on top of it, or restore its
      value.  Step over it using the architecture's
      gdbarch_skip_permanent_breakpoint method.  */
   bool permanent = false;
 
-  /* Nonzero if this is not the first breakpoint in the list
+  /* True if this is not the first breakpoint in the list
      for the given address.  location of tracepoint can _never_
      be duplicated with other locations of tracepoints and other
      kinds of breakpoints, because two locations at the same


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: make watchpoint::val_valid a bool
@ 2019-09-22  0:41 gdb-buildbot
  2019-09-22  2:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-22  0:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4c1d86d9a8f7ddfbf7ff095a88a59497c8f6ddc9 ***

commit 4c1d86d9a8f7ddfbf7ff095a88a59497c8f6ddc9
Author:     Simon Marchi <simon.marchi@polymtl.ca>
AuthorDate: Sat Sep 21 19:50:40 2019 -0400
Commit:     Simon Marchi <simon.marchi@polymtl.ca>
CommitDate: Sat Sep 21 20:03:08 2019 -0400

    gdb: make watchpoint::val_valid a bool
    
    gdb/ChangeLog:
    
            * breakpoint.h (struct watchpoint) <val_valid>: Change type to
            bool.
            * breakpoint.c (update_watchpoint): Assign false instead of 0,
            true instead of 1.
            (breakpoint_init_inferior): Likewise.
            (watchpoint_check): Likewise.
            (watch_command_1): Likewise.
            (invalidate_bp_value_on_memory_change): Likewise.

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 8ef3aac0c1..838c9d136f 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -1727,7 +1727,7 @@ update_watchpoint (struct watchpoint *b, int reparse)
 	 to the user when the old value and the new value may actually
 	 be completely different objects.  */
       b->val = NULL;
-      b->val_valid = 0;
+      b->val_valid = false;
 
       /* Note that unlike with breakpoints, the watchpoint's condition
 	 expression is stored in the breakpoint object, not in the
@@ -1780,7 +1780,7 @@ update_watchpoint (struct watchpoint *b, int reparse)
 	  if (b->val_bitsize != 0)
 	    v = extract_bitfield_from_watchpoint_value (b, v);
 	  b->val = release_value (v);
-	  b->val_valid = 1;
+	  b->val_valid = true;
 	}
 
       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
@@ -3900,7 +3900,7 @@ breakpoint_init_inferior (enum inf_context context)
 		  /* Reset val field to force reread of starting value in
 		     insert_breakpoints.  */
 		  w->val.reset (nullptr);
-		  w->val_valid = 0;
+		  w->val_valid = false;
 		}
 	    }
 	}
@@ -4877,7 +4877,7 @@ watchpoint_check (bpstat bs)
 	{
 	  bs->old_val = b->val;
 	  b->val = release_value (new_val);
-	  b->val_valid = 1;
+	  b->val_valid = true;
 	  if (new_val != NULL)
 	    value_free_to_mark (mark);
 	  return WP_VALUE_CHANGED;
@@ -10717,7 +10717,7 @@ watch_command_1 (const char *arg, int accessflag, int from_tty,
       w->val = val;
       w->val_bitpos = saved_bitpos;
       w->val_bitsize = saved_bitsize;
-      w->val_valid = 1;
+      w->val_valid = true;
     }
 
   if (cond_start)
@@ -14375,7 +14375,7 @@ invalidate_bp_value_on_memory_change (struct inferior *inferior,
 		  && addr + len > loc->address)
 		{
 		  wp->val = NULL;
-		  wp->val_valid = 0;
+		  wp->val_valid = false;
 		}
 	  }
       }
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 80bb11c141..9791032c5e 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -817,9 +817,10 @@ struct watchpoint : public breakpoint
      we do not know the value yet or the value was not readable.  VAL
      is never lazy.  */
   value_ref_ptr val;
-  /* Nonzero if VAL is valid.  If VAL_VALID is set but VAL is NULL,
+
+  /* True if VAL is valid.  If VAL_VALID is set but VAL is NULL,
      then an error occurred reading the value.  */
-  int val_valid;
+  bool val_valid;
 
   /* When watching the location of a bitfield, contains the offset and size of
      the bitfield.  Otherwise contains 0.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb: fix formatting in solib-svr4.c
@ 2019-09-22  2:47 gdb-buildbot
  2019-09-22  3:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-22  2:47 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7ab78ccbbb0d0918c293ade07bea59d789ea7d63 ***

commit 7ab78ccbbb0d0918c293ade07bea59d789ea7d63
Author:     Simon Marchi <simon.marchi@polymtl.ca>
AuthorDate: Sat Sep 21 22:13:49 2019 -0400
Commit:     Simon Marchi <simon.marchi@polymtl.ca>
CommitDate: Sat Sep 21 22:13:49 2019 -0400

    gdb: fix formatting in solib-svr4.c
    
    gdb/ChangeLog:
    
            * solib-svr4.c (svr4_iterate_over_objfiles_in_search_order): Fix
            formatting.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 48f90186ff..4374348c8d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* solib-svr4.c (svr4_iterate_over_objfiles_in_search_order): Fix
+	formatting.
+
 2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* breakpoint.h (bp_location) <inserted, permanent, duplicate>:
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index dc63549105..aa4af346b4 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -3229,8 +3229,8 @@ svr4_iterate_over_objfiles_in_search_order
       else
 	abfd = current_objfile->obfd;
 
-      if (abfd != nullptr &&
-	  scan_dyntag (DT_SYMBOLIC, abfd, nullptr, nullptr) == 1)
+      if (abfd != nullptr
+	  && scan_dyntag (DT_SYMBOLIC, abfd, nullptr, nullptr) == 1)
 	{
 	  checked_current_objfile = true;
 	  if (cb (current_objfile, cb_data) != 0)


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/testsuite] Allow some tests in gdb.base/restore.exp to be unsupported
@ 2019-09-22  5:10 gdb-buildbot
  2019-09-22  5:48 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-22  5:10 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 77d036789aab73c90dc7f4c798f34748b03de726 ***

commit 77d036789aab73c90dc7f4c798f34748b03de726
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Sun Sep 22 06:14:29 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Sun Sep 22 06:14:29 2019 +0200

    [gdb/testsuite] Allow some tests in gdb.base/restore.exp to be unsupported
    
    We currently run into:
    ...
    248       n = callee1 (n + l5);
    (gdb) PASS: gdb.base/restore.exp: caller5 calls callee1; return callee now
    print l1
    $51 = <optimized out>
    (gdb) FAIL: gdb.base/restore.exp: caller5 calls callee1; return restored l1 \
      to 32492
    ...
    
    The problem is that we try to access the value of l1 in function caller5, but
    variable l1 has no DW_AT_location attribute.  Since l1 is declared using the
    register keyword, it's valid for gcc to emit no DW_AT_location at -O0.
    
    Change the FAIL into an UNSUPPORTED.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-22  Tom de Vries  <tdevries@suse.de>
    
            * gdb.base/restore.exp: Allow register variables to be optimized out at
            -O0.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 64c7d38861..37e323f747 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-22  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/restore.exp: Allow register variables to be optimized out at
+	-O0.
+
 2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
 
 	* gdb.arch/spu-info.exp: Remove file.
diff --git a/gdb/testsuite/gdb.base/restore.exp b/gdb/testsuite/gdb.base/restore.exp
index 947fe58be4..56c2f5e3dc 100644
--- a/gdb/testsuite/gdb.base/restore.exp
+++ b/gdb/testsuite/gdb.base/restore.exp
@@ -73,8 +73,17 @@ proc restore_tests { } {
 	    # they should be.
             for {set var 1} {$var <= $c} {incr var} {
                 set expected [expr 0x7eeb + $var]
-	        gdb_test "print l$var" " = $expected" \
-		    "caller$c calls callee$e; return restored l$var to $expected"
+		set test "caller$c calls callee$e; return restored l$var to $expected"
+		set pass_pattern " = $expected"
+		set unsupported_pattern " = <optimized out>"
+	        gdb_test_multiple "print l$var" $test {
+		    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+			pass $test
+		    }
+		    -re "\[\r\n\]*(?:$unsupported_pattern)\[\r\n\]+$gdb_prompt $" {
+			unsupported $test
+		    }
+		}
             }
         }
     }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] csky bfd.h tidy
@ 2019-09-23  1:25 gdb-buildbot
  2019-09-23  1:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  1:25 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6e67e6b05abcb29148cda042c1297ad63e6c75f2 ***

commit 6e67e6b05abcb29148cda042c1297ad63e6c75f2
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 09:58:42 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:20 2019 +0930

    csky bfd.h tidy
    
    bfd/
            * bfd-in.h: Move csky function declarations to..
            * elf32-csky.h: ..here, new file.
            * elf32-csky.c: Include elf32-csky.h.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/cskyelf.em: Include elf32-csky.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b1a4aebd21..906ff1d2b4 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move csky function declarations to..
+	* elf32-csky.h: ..here, new file.
+	* elf32-csky.c: Include elf32-csky.h.
+	* bfd-in2.h: Regenerate.
+
 2019-09-20  Nelson Chu <nelson.chu@sifive.com>
 
 	* elfnn-riscv.c (riscv_pcgp_hi_reloc): Add new field undefined_weak.
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 969a965796..56a006e9cc 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1023,15 +1023,3 @@ extern bfd_boolean v850_elf_set_note
 /* MIPS ABI flags data access.  For the disassembler.  */
 struct elf_internal_abiflags_v0;
 extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
-
-/* C-SKY functions.  */
-extern bfd_boolean elf32_csky_build_stubs
-  (struct bfd_link_info *);
-extern bfd_boolean elf32_csky_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section *(*) (const char*, struct bfd_section*),
-   void (*) (void));
-extern void elf32_csky_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern int elf32_csky_setup_section_lists
-  (bfd *, struct bfd_link_info *);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 44bce06191..1aa2975bd4 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1030,18 +1030,6 @@ extern bfd_boolean v850_elf_set_note
 /* MIPS ABI flags data access.  For the disassembler.  */
 struct elf_internal_abiflags_v0;
 extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
-
-/* C-SKY functions.  */
-extern bfd_boolean elf32_csky_build_stubs
-  (struct bfd_link_info *);
-extern bfd_boolean elf32_csky_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section *(*) (const char*, struct bfd_section*),
-   void (*) (void));
-extern void elf32_csky_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern int elf32_csky_setup_section_lists
-  (bfd *, struct bfd_link_info *);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
index 16897b3930..85fddf8681 100644
--- a/bfd/elf32-csky.c
+++ b/bfd/elf32-csky.c
@@ -28,6 +28,7 @@
 #include "opcode/csky.h"
 #include <assert.h>
 #include "libiberty.h"
+#include "elf32-csky.h"
 
 /* Data structures used for merging different arch variants.
    V1 (510/610) and V2 (8xx) processors are incompatible, but
diff --git a/bfd/elf32-csky.h b/bfd/elf32-csky.h
new file mode 100644
index 0000000000..2ca07497f8
--- /dev/null
+++ b/bfd/elf32-csky.h
@@ -0,0 +1,30 @@
+/* 32-bit ELF support for C-SKY.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean elf32_csky_build_stubs
+  (struct bfd_link_info *);
+extern bfd_boolean elf32_csky_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section *(*) (const char*, struct bfd_section*),
+   void (*) (void));
+extern void elf32_csky_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern int elf32_csky_setup_section_lists
+  (bfd *, struct bfd_link_info *);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index eb7981ea48..56fc0a2d92 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/cskyelf.em: Include elf32-csky.h.
+
 2019-09-22  Alan Modra  <amodra@gmail.com>
 
 	* testsuite/ld-srec/sr3.cc (FOO_MSG_LEN): Set to 4.
diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
index 9184808655..9215824c34 100644
--- a/ld/emultempl/cskyelf.em
+++ b/ld/emultempl/cskyelf.em
@@ -25,6 +25,7 @@ fragment <<EOF
 
 #include "ldctor.h"
 #include "elf/csky.h"
+#include "elf32-csky.h"
 
 /* To use branch stub or not.  */
 extern bfd_boolean use_branch_stub;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] mips bfd.h tidy
@ 2019-09-23  1:37 gdb-buildbot
  2019-09-23  2:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  1:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 7beeaeb8c6d84ecc899b9454d9b92521e515fe4a ***

commit 7beeaeb8c6d84ecc899b9454d9b92521e515fe4a
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:00:21 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:20 2019 +0930

    mips bfd.h tidy
    
    bfd/
            * bfd-in.h: Move mips function declaration to..
            * elfxx-mips.h: ..here.
            * bfd-in2.h: Regenerate.
    opcodes/
            * mips-dis.c: Include elfxx-mips.h.  Move "elf-bfd.h" and
            "elf/mips.h" earlier.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 906ff1d2b4..d5521fb6dc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move mips function declaration to..
+	* elfxx-mips.h: ..here.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move csky function declarations to..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 56a006e9cc..c2105e3a94 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1019,7 +1019,3 @@ extern bfd_boolean v850_elf_create_sections
 
 extern bfd_boolean v850_elf_set_note
   (bfd *, unsigned int, unsigned int);
-
-/* MIPS ABI flags data access.  For the disassembler.  */
-struct elf_internal_abiflags_v0;
-extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 1aa2975bd4..9960163e27 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1026,10 +1026,6 @@ extern bfd_boolean v850_elf_create_sections
 
 extern bfd_boolean v850_elf_set_note
   (bfd *, unsigned int, unsigned int);
-
-/* MIPS ABI flags data access.  For the disassembler.  */
-struct elf_internal_abiflags_v0;
-extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/elfxx-mips.h b/bfd/elfxx-mips.h
index 8e796a99d9..fe0e50ff39 100644
--- a/bfd/elfxx-mips.h
+++ b/bfd/elfxx-mips.h
@@ -176,6 +176,9 @@ extern int _bfd_mips_elf_cant_unwind_opcode (struct bfd_link_info *);
 extern void _bfd_mips_elf_record_xhash_symbol
   (struct elf_link_hash_entry *h, bfd_vma xlat_loc);
 
+/* MIPS ABI flags data access.  For the disassembler.  */
+extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
+
 static inline bfd_boolean
 gprel16_reloc_p (unsigned int r_type)
 {
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 0043d4eb16..91b084ef8a 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* mips-dis.c: Include elfxx-mips.h.  Move "elf-bfd.h" and
+	"elf/mips.h" earlier.
+
 2018-09-20  Jan Beulich  <jbeulich@suse.com>
 
 	PR gas/25012
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
index 5bf33d9f8f..8418841842 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
@@ -24,6 +24,9 @@
 #include "libiberty.h"
 #include "opcode/mips.h"
 #include "opintl.h"
+#include "elf-bfd.h"
+#include "elf/mips.h"
+#include "elfxx-mips.h"
 
 /* FIXME: These are needed to figure out if the code is mips16 or
    not. The low bit of the address is often a good indicator.  No
@@ -32,8 +35,6 @@
 
 #if !defined(EMBEDDED_ENV)
 #define SYMTAB_AVAILABLE 1
-#include "elf-bfd.h"
-#include "elf/mips.h"
 #endif
 
 /* Mips instructions are at maximum this many bytes long.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] v850 bfd.h tidy
@ 2019-09-23  1:59 gdb-buildbot
  2019-09-23  3:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  1:59 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT d48d68b618f0950f63bdf2842a550384c0c58bc3 ***

commit d48d68b618f0950f63bdf2842a550384c0c58bc3
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:01:31 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:20 2019 +0930

    v850 bfd.h tidy
    
    bfd/
            * bfd-in.h: Move v850 function declarations..
            * elf32-v850.h: ..to here, new file.
            * elf32-v850.c: Include elf32-v850.h.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/v850elf.em: Include elf32-v850.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d5521fb6dc..61d31aaf97 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move v850 function declarations..
+	* elf32-v850.h: ..to here, new file.
+	* elf32-v850.c: Include elf32-v850.h.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move mips function declaration to..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index c2105e3a94..fe5e168128 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1012,10 +1012,3 @@ extern void bfd_elf32_ia64_after_parse
 
 extern void bfd_elf64_ia64_after_parse
   (int);
-
-/* V850 Note manipulation routines.  */
-extern bfd_boolean v850_elf_create_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean v850_elf_set_note
-  (bfd *, unsigned int, unsigned int);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 9960163e27..6d92b89e2a 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1019,13 +1019,6 @@ extern void bfd_elf32_ia64_after_parse
 
 extern void bfd_elf64_ia64_after_parse
   (int);
-
-/* V850 Note manipulation routines.  */
-extern bfd_boolean v850_elf_create_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean v850_elf_set_note
-  (bfd *, unsigned int, unsigned int);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 21df3c8b9a..c8a97ed129 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -29,6 +29,7 @@
 #include "elf-bfd.h"
 #include "elf/v850.h"
 #include "libiberty.h"
+#include "elf32-v850.h"
 
 /* Sign-extend a 17-bit number.  */
 #define SEXT17(x)	((((x) & 0x1ffff) ^ 0x10000) - 0x10000)
diff --git a/bfd/elf32-v850.h b/bfd/elf32-v850.h
new file mode 100644
index 0000000000..0ed5871cce
--- /dev/null
+++ b/bfd/elf32-v850.h
@@ -0,0 +1,25 @@
+/* V850 Note manipulation routines.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean v850_elf_create_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean v850_elf_set_note
+  (bfd *, unsigned int, unsigned int);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 56fc0a2d92..fa5913e7be 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/v850elf.em: Include elf32-v850.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/cskyelf.em: Include elf32-csky.h.
diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em
index ac7051f3b7..3e3e09d4bb 100644
--- a/ld/emultempl/v850elf.em
+++ b/ld/emultempl/v850elf.em
@@ -24,6 +24,7 @@
 #
 fragment <<EOF
 #include "ldctor.h"
+#include "elf32-v850.h"
 
 static bfd_boolean
 is_v850_target (void)


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ia64 bfd.h tidy
@ 2019-09-23  2:01 gdb-buildbot
  2019-09-23  4:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  2:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3352ae9900037b231f9838e088af450a19bade17 ***

commit 3352ae9900037b231f9838e088af450a19bade17
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:02:25 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    ia64 bfd.h tidy
    
    bfd/
            * bfd-in.h: Move ia64 function declarations..
            * elfxx-ia64.h: ..to here.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/ia64elf.em: Include elfxx-ia64.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 61d31aaf97..a08cd7e20f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move ia64 function declarations..
+	* elfxx-ia64.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move v850 function declarations..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index fe5e168128..1d0262ffae 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1005,10 +1005,3 @@ extern int bfd_ticoff_get_section_load_page
 /* H8/300 functions.  */
 extern bfd_vma bfd_h8300_pad_address
   (bfd *, bfd_vma);
-
-/* IA64 Itanium code generation.  Called from linker.  */
-extern void bfd_elf32_ia64_after_parse
-  (int);
-
-extern void bfd_elf64_ia64_after_parse
-  (int);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 6d92b89e2a..88ca55011a 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1012,13 +1012,6 @@ extern int bfd_ticoff_get_section_load_page
 /* H8/300 functions.  */
 extern bfd_vma bfd_h8300_pad_address
   (bfd *, bfd_vma);
-
-/* IA64 Itanium code generation.  Called from linker.  */
-extern void bfd_elf32_ia64_after_parse
-  (int);
-
-extern void bfd_elf64_ia64_after_parse
-  (int);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/elfxx-ia64.h b/bfd/elfxx-ia64.h
index 915df82089..628cbf6a13 100644
--- a/bfd/elfxx-ia64.h
+++ b/bfd/elfxx-ia64.h
@@ -31,3 +31,10 @@ void ia64_elf_relax_ldxmov (bfd_byte *contents, bfd_vma off);
 
 bfd_reloc_status_type ia64_elf_install_value (bfd_byte *hit_addr, bfd_vma v,
 					      unsigned int r_type);
+
+/* IA64 Itanium code generation.  Called from linker.  */
+extern void bfd_elf32_ia64_after_parse
+  (int);
+
+extern void bfd_elf64_ia64_after_parse
+  (int);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index fa5913e7be..3eddd55ddf 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/ia64elf.em: Include elfxx-ia64.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/v850elf.em: Include elf32-v850.h.
diff --git a/ld/emultempl/ia64elf.em b/ld/emultempl/ia64elf.em
index 59e1d8da79..ae45956d77 100644
--- a/ld/emultempl/ia64elf.em
+++ b/ld/emultempl/ia64elf.em
@@ -27,6 +27,8 @@
 #
 fragment <<EOF
 
+#include "elfxx-ia64.h"
+
 /* None zero if generating binary for Intel Itanium processor.  */
 static int itanium = 0;
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] h8300 bfd.h tidy
@ 2019-09-23  2:13 gdb-buildbot
  2019-09-23  6:18 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  2:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ca437b1b5fe3d3dd7987ddf6c373bc2221c0726e ***

commit ca437b1b5fe3d3dd7987ddf6c373bc2221c0726e
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:03:04 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    h8300 bfd.h tidy
    
            * bfd-in.h: Move h8300 function declaration to..
            * cpu-h8300.h: ..here, new file.
            * cpu-h8300.c: Include cpu-h8300.h.
            * elf32-h8300.c: Likewise.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a08cd7e20f..9130fd510b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move h8300 function declaration to..
+	* cpu-h8300.h: ..here, new file.
+	* cpu-h8300.c: Include cpu-h8300.h.
+	* elf32-h8300.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move ia64 function declarations..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 1d0262ffae..4216808c2a 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1001,7 +1001,3 @@ extern void bfd_ticoff_set_section_load_page
 
 extern int bfd_ticoff_get_section_load_page
   (struct bfd_section *);
-
-/* H8/300 functions.  */
-extern bfd_vma bfd_h8300_pad_address
-  (bfd *, bfd_vma);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 88ca55011a..a5c0f5806d 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1008,10 +1008,6 @@ extern void bfd_ticoff_set_section_load_page
 
 extern int bfd_ticoff_get_section_load_page
   (struct bfd_section *);
-
-/* H8/300 functions.  */
-extern bfd_vma bfd_h8300_pad_address
-  (bfd *, bfd_vma);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/cpu-h8300.c b/bfd/cpu-h8300.c
index 53dd4ec52b..3dc2ac7c1b 100644
--- a/bfd/cpu-h8300.c
+++ b/bfd/cpu-h8300.c
@@ -22,6 +22,7 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
+#include "cpu-h8300.h"
 
 static bfd_boolean
 h8300_scan (const struct bfd_arch_info *info, const char *string)
diff --git a/bfd/cpu-h8300.h b/bfd/cpu-h8300.h
new file mode 100644
index 0000000000..9a51089c93
--- /dev/null
+++ b/bfd/cpu-h8300.h
@@ -0,0 +1,22 @@
+/* H8/300 functions.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_vma bfd_h8300_pad_address
+  (bfd *, bfd_vma);
diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c
index ba7c8b2062..f0a04e222d 100644
--- a/bfd/elf32-h8300.c
+++ b/bfd/elf32-h8300.c
@@ -23,6 +23,7 @@
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "elf/h8.h"
+#include "cpu-h8300.h"
 
 static reloc_howto_type *elf32_h8_reloc_type_lookup
   (bfd *abfd, bfd_reloc_code_real_type code);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] tic54x bfd.h tidy
@ 2019-09-23  2:32 gdb-buildbot
  2019-09-23  6:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  2:32 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT c348479ddd10079b8b8714598d8e1458d25e095d ***

commit c348479ddd10079b8b8714598d8e1458d25e095d
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:03:37 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    tic54x bfd.h tidy
    
            * bfd-in.h: Delete ticoff function declarations.
            * coff-tic54x.c (bfd_ticoff_set_section_load_page),
            (bfd_ticoff_get_section_load_page): Make static.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9130fd510b..d42ead0b57 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Delete ticoff function declarations.
+	* coff-tic54x.c (bfd_ticoff_set_section_load_page),
+	(bfd_ticoff_get_section_load_page): Make static.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move h8300 function declaration to..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 4216808c2a..7080fbe970 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -993,11 +993,3 @@ extern bfd_boolean elf32_aarch64_size_stubs
    void (*) (void));
 extern bfd_boolean elf32_aarch64_build_stubs
   (struct bfd_link_info *);
-
-
-/* TI COFF load page support.  */
-extern void bfd_ticoff_set_section_load_page
-  (struct bfd_section *, int);
-
-extern int bfd_ticoff_get_section_load_page
-  (struct bfd_section *);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index a5c0f5806d..90d9fc9c07 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1000,14 +1000,6 @@ extern bfd_boolean elf32_aarch64_size_stubs
    void (*) (void));
 extern bfd_boolean elf32_aarch64_build_stubs
   (struct bfd_link_info *);
-
-
-/* TI COFF load page support.  */
-extern void bfd_ticoff_set_section_load_page
-  (struct bfd_section *, int);
-
-extern int bfd_ticoff_get_section_load_page
-  (struct bfd_section *);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/coff-tic54x.c b/bfd/coff-tic54x.c
index 6c7acb4045..0c3e56ad8d 100644
--- a/bfd/coff-tic54x.c
+++ b/bfd/coff-tic54x.c
@@ -82,14 +82,14 @@ tic54x_getl_signed_32 (const void *p)
 #define coff_get_section_load_page bfd_ticoff_get_section_load_page
 #define coff_set_section_load_page bfd_ticoff_set_section_load_page
 
-void
+static void
 bfd_ticoff_set_section_load_page (asection *sect,
 				  int page)
 {
   sect->lma = (sect->lma & ADDR_MASK) | PG_TO_FLAG(page);
 }
 
-int
+static int
 bfd_ticoff_get_section_load_page (asection *sect)
 {
   int page;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] aarch64 bfd.h tidy
@ 2019-09-23  2:37 gdb-buildbot
  2019-09-23  7:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  2:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT a8bfaadbb40406dc795d410d198a4be9d452c177 ***

commit a8bfaadbb40406dc795d410d198a4be9d452c177
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:04:50 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    aarch64 bfd.h tidy
    
    bfd/
            * bfd-in.h: Move aarch64 declarations and defines..
            * cpu-aarch64.h: ..to here, new file..
            * elfxx-aarch64.h: ..and here.
            * cpu-aarch64.c: Include cpu-aarch64.h.
            * elfnn-aarch64.c: Likewise.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/aarch64elf.em: Include elfxx-aarch64.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d42ead0b57..a72a63dbb5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move aarch64 declarations and defines..
+	* cpu-aarch64.h: ..to here, new file..
+	* elfxx-aarch64.h: ..and here.
+	* cpu-aarch64.c: Include cpu-aarch64.h.
+	* elfnn-aarch64.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Delete ticoff function declarations.
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 7080fbe970..ed8e47f8a4 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -907,89 +907,3 @@ extern bfd_boolean elf32_arm_fix_exidx_coverage
 /* C6x unwind section editing support.  */
 extern bfd_boolean elf32_tic6x_fix_exidx_coverage
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
-
-extern void bfd_elf64_aarch64_init_maps
-  (bfd *);
-
-extern void bfd_elf32_aarch64_init_maps
-  (bfd *);
-
-/* Types of PLTs based on the level of security.  This would be a
-   bit-mask to denote which of the combinations of security features
-   are enabled:
-   - No security feature PLTs
-   - PLTs with BTI instruction
-   - PLTs with PAC instruction
-*/
-typedef enum
-{
-  PLT_NORMAL	= 0x0,  /* Normal plts.  */
-  PLT_BTI	= 0x1,  /* plts with bti.  */
-  PLT_PAC	= 0x2,  /* plts with pointer authentication.  */
-  PLT_BTI_PAC	= PLT_BTI | PLT_PAC
-} aarch64_plt_type;
-
-/* To indicate if BTI is enabled with/without warning.  */
-typedef enum
-{
-  BTI_NONE	= 0,  /* BTI is not enabled.  */
-  BTI_WARN	= 1,  /* BTI is enabled with -z force-bti.  */
-} aarch64_enable_bti_type;
-
-/* A structure to encompass all information coming from BTI or PAC
-   related command line options.  This involves the "PLT_TYPE" to determine
-   which version of PLTs to pick and "BTI_TYPE" to determine if
-   BTI should be turned on with any warnings.   */
-typedef struct
-{
-  aarch64_plt_type plt_type;
-  aarch64_enable_bti_type bti_type;
-} aarch64_bti_pac_info;
-
-/* An enum to define what kind of erratum fixes we should apply.  This gives the
-   user a bit more control over the sequences we generate.  */
-typedef enum
-{
-  ERRAT_NONE  = (1 << 0),  /* No erratum workarounds allowed.  */
-  ERRAT_ADR   = (1 << 1),  /* Erratum workarounds using ADR allowed.  */
-  ERRAT_ADRP  = (1 << 2),  /* Erratum workarounds using ADRP are allowed.  */
-} erratum_84319_opts;
-
-extern void bfd_elf64_aarch64_set_options
-  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
-
-extern void bfd_elf32_aarch64_set_options
-  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
-
-/* ELF AArch64 mapping symbol support.  */
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
-extern bfd_boolean bfd_is_aarch64_special_symbol_name
-  (const char * name, int type);
-
-/* AArch64 stub generation support for ELF64.  Called from the linker.  */
-extern int elf64_aarch64_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf64_aarch64_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf64_aarch64_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *),
-   void (*) (void));
-extern bfd_boolean elf64_aarch64_build_stubs
-  (struct bfd_link_info *);
-/* AArch64 stub generation support for ELF32.  Called from the linker.  */
-extern int elf32_aarch64_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf32_aarch64_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_aarch64_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *),
-   void (*) (void));
-extern bfd_boolean elf32_aarch64_build_stubs
-  (struct bfd_link_info *);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 90d9fc9c07..8cc6201644 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -914,92 +914,6 @@ extern bfd_boolean elf32_arm_fix_exidx_coverage
 /* C6x unwind section editing support.  */
 extern bfd_boolean elf32_tic6x_fix_exidx_coverage
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
-
-extern void bfd_elf64_aarch64_init_maps
-  (bfd *);
-
-extern void bfd_elf32_aarch64_init_maps
-  (bfd *);
-
-/* Types of PLTs based on the level of security.  This would be a
-   bit-mask to denote which of the combinations of security features
-   are enabled:
-   - No security feature PLTs
-   - PLTs with BTI instruction
-   - PLTs with PAC instruction
-*/
-typedef enum
-{
-  PLT_NORMAL	= 0x0,  /* Normal plts.  */
-  PLT_BTI	= 0x1,  /* plts with bti.  */
-  PLT_PAC	= 0x2,  /* plts with pointer authentication.  */
-  PLT_BTI_PAC	= PLT_BTI | PLT_PAC
-} aarch64_plt_type;
-
-/* To indicate if BTI is enabled with/without warning.  */
-typedef enum
-{
-  BTI_NONE	= 0,  /* BTI is not enabled.  */
-  BTI_WARN	= 1,  /* BTI is enabled with -z force-bti.  */
-} aarch64_enable_bti_type;
-
-/* A structure to encompass all information coming from BTI or PAC
-   related command line options.  This involves the "PLT_TYPE" to determine
-   which version of PLTs to pick and "BTI_TYPE" to determine if
-   BTI should be turned on with any warnings.   */
-typedef struct
-{
-  aarch64_plt_type plt_type;
-  aarch64_enable_bti_type bti_type;
-} aarch64_bti_pac_info;
-
-/* An enum to define what kind of erratum fixes we should apply.  This gives the
-   user a bit more control over the sequences we generate.  */
-typedef enum
-{
-  ERRAT_NONE  = (1 << 0),  /* No erratum workarounds allowed.  */
-  ERRAT_ADR   = (1 << 1),  /* Erratum workarounds using ADR allowed.  */
-  ERRAT_ADRP  = (1 << 2),  /* Erratum workarounds using ADRP are allowed.  */
-} erratum_84319_opts;
-
-extern void bfd_elf64_aarch64_set_options
-  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
-
-extern void bfd_elf32_aarch64_set_options
-  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
-
-/* ELF AArch64 mapping symbol support.  */
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
-#define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
-extern bfd_boolean bfd_is_aarch64_special_symbol_name
-  (const char * name, int type);
-
-/* AArch64 stub generation support for ELF64.  Called from the linker.  */
-extern int elf64_aarch64_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf64_aarch64_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf64_aarch64_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *),
-   void (*) (void));
-extern bfd_boolean elf64_aarch64_build_stubs
-  (struct bfd_link_info *);
-/* AArch64 stub generation support for ELF32.  Called from the linker.  */
-extern int elf32_aarch64_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf32_aarch64_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_aarch64_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *),
-   void (*) (void));
-extern bfd_boolean elf32_aarch64_build_stubs
-  (struct bfd_link_info *);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/cpu-aarch64.c b/bfd/cpu-aarch64.c
index fbffb79b63..617b7e66c9 100644
--- a/bfd/cpu-aarch64.c
+++ b/bfd/cpu-aarch64.c
@@ -22,6 +22,7 @@
 #include "bfd.h"
 #include "libbfd.h"
 #include "libiberty.h"
+#include "cpu-aarch64.h"
 
 /* This routine is provided two arch_infos and works out which Aarch64
    machine which would be compatible with both and returns a pointer
diff --git a/bfd/cpu-aarch64.h b/bfd/cpu-aarch64.h
new file mode 100644
index 0000000000..01acb1ffe2
--- /dev/null
+++ b/bfd/cpu-aarch64.h
@@ -0,0 +1,25 @@
+/* ELF AArch64 mapping symbol support
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
+#define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
+#define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
+#define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
+extern bfd_boolean bfd_is_aarch64_special_symbol_name
+  (const char * name, int type);
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 6f3bd0d565..666f6a75f6 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -144,6 +144,7 @@
 #include "objalloc.h"
 #include "elf/aarch64.h"
 #include "elfxx-aarch64.h"
+#include "cpu-aarch64.h"
 
 #define ARCH_SIZE	NN
 
diff --git a/bfd/elfxx-aarch64.h b/bfd/elfxx-aarch64.h
index f5988529d7..0d91dae261 100644
--- a/bfd/elfxx-aarch64.h
+++ b/bfd/elfxx-aarch64.h
@@ -18,6 +18,84 @@
    along with this program; see the file COPYING3. If not,
    see <http://www.gnu.org/licenses/>.  */
 
+extern void bfd_elf64_aarch64_init_maps
+  (bfd *);
+
+extern void bfd_elf32_aarch64_init_maps
+  (bfd *);
+
+/* Types of PLTs based on the level of security.  This would be a
+   bit-mask to denote which of the combinations of security features
+   are enabled:
+   - No security feature PLTs
+   - PLTs with BTI instruction
+   - PLTs with PAC instruction
+*/
+typedef enum
+{
+  PLT_NORMAL	= 0x0,  /* Normal plts.  */
+  PLT_BTI	= 0x1,  /* plts with bti.  */
+  PLT_PAC	= 0x2,  /* plts with pointer authentication.  */
+  PLT_BTI_PAC	= PLT_BTI | PLT_PAC
+} aarch64_plt_type;
+
+/* To indicate if BTI is enabled with/without warning.  */
+typedef enum
+{
+  BTI_NONE	= 0,  /* BTI is not enabled.  */
+  BTI_WARN	= 1,  /* BTI is enabled with -z force-bti.  */
+} aarch64_enable_bti_type;
+
+/* A structure to encompass all information coming from BTI or PAC
+   related command line options.  This involves the "PLT_TYPE" to determine
+   which version of PLTs to pick and "BTI_TYPE" to determine if
+   BTI should be turned on with any warnings.   */
+typedef struct
+{
+  aarch64_plt_type plt_type;
+  aarch64_enable_bti_type bti_type;
+} aarch64_bti_pac_info;
+
+/* An enum to define what kind of erratum fixes we should apply.  This gives the
+   user a bit more control over the sequences we generate.  */
+typedef enum
+{
+  ERRAT_NONE  = (1 << 0),  /* No erratum workarounds allowed.  */
+  ERRAT_ADR   = (1 << 1),  /* Erratum workarounds using ADR allowed.  */
+  ERRAT_ADRP  = (1 << 2),  /* Erratum workarounds using ADRP are allowed.  */
+} erratum_84319_opts;
+
+extern void bfd_elf64_aarch64_set_options
+  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
+   aarch64_bti_pac_info);
+
+extern void bfd_elf32_aarch64_set_options
+  (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
+   aarch64_bti_pac_info);
+
+/* AArch64 stub generation support for ELF64.  Called from the linker.  */
+extern int elf64_aarch64_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf64_aarch64_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bfd_boolean elf64_aarch64_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bfd_boolean elf64_aarch64_build_stubs
+  (struct bfd_link_info *);
+/* AArch64 stub generation support for ELF32.  Called from the linker.  */
+extern int elf32_aarch64_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf32_aarch64_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bfd_boolean elf32_aarch64_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bfd_boolean elf32_aarch64_build_stubs
+  (struct bfd_link_info *);
+
 /* Take the PAGE component of an address or offset.  */
 #define PG(x)	     ((x) & ~ (bfd_vma) 0xfff)
 #define PG_OFFSET(x) ((x) &   (bfd_vma) 0xfff)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3eddd55ddf..378fcea064 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/aarch64elf.em: Include elfxx-aarch64.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/ia64elf.em: Include elfxx-ia64.h.
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index 208d169404..f4baf50895 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -26,6 +26,7 @@ fragment <<EOF
 
 #include "ldctor.h"
 #include "elf/aarch64.h"
+#include "elfxx-aarch64.h"
 
 static int no_enum_size_warning = 0;
 static int no_wchar_size_warning = 0;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] tic6x bfd.h tidy
@ 2019-09-23  2:50 gdb-buildbot
  2019-09-23  8:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  2:50 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 79c2ce54e1e52e5d63d96af56c544de778036a12 ***

commit 79c2ce54e1e52e5d63d96af56c544de778036a12
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:05:43 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    tic6x bfd.h tidy
    
            * bfd-in.h: Move tic6x function declaration..
            * elf32-tic6x.h: ..to here.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a72a63dbb5..06b09a16ab 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move tic6x function declaration..
+	* elf32-tic6x.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move aarch64 declarations and defines..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index ed8e47f8a4..c923e54f5d 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -903,7 +903,3 @@ extern bfd_boolean elf32_arm_build_stubs
 /* ARM unwind section editing support.  */
 extern bfd_boolean elf32_arm_fix_exidx_coverage
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
-
-/* C6x unwind section editing support.  */
-extern bfd_boolean elf32_tic6x_fix_exidx_coverage
-(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 8cc6201644..74aaf3c5aa 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -910,10 +910,6 @@ extern bfd_boolean elf32_arm_build_stubs
 /* ARM unwind section editing support.  */
 extern bfd_boolean elf32_arm_fix_exidx_coverage
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
-
-/* C6x unwind section editing support.  */
-extern bfd_boolean elf32_tic6x_fix_exidx_coverage
-(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/elf32-tic6x.h b/bfd/elf32-tic6x.h
index 2198f67cae..24a280fbb7 100644
--- a/bfd/elf32-tic6x.h
+++ b/bfd/elf32-tic6x.h
@@ -37,6 +37,11 @@ struct elf32_tic6x_params
 extern void elf32_tic6x_setup (struct bfd_link_info *,
 			       struct elf32_tic6x_params *);
 
+/* C6x unwind section editing support.  */
+extern bfd_boolean elf32_tic6x_fix_exidx_coverage (struct bfd_section **,
+						   unsigned int,
+						   struct bfd_link_info *,
+						   bfd_boolean);
 #ifdef __cplusplus
 }
 #endif


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] arm bfd.h tidy
@ 2019-09-23  3:03 gdb-buildbot
  2019-09-23  9:23 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  3:03 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f37164d78b0d9600862b7038b896922127749b52 ***

commit f37164d78b0d9600862b7038b896922127749b52
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:06:45 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    arm bfd.h tidy
    
    bfd/
            * bfd-in.h: Move arm declaraions..
            * cpu-arm.h: ..to here, new file..
            * coff-arm.h: ..and here, new file..
            * elf32-arm.h: ..and here, new file.
            * cpu-arm.c: Include cpu-arm.h.
            * coff-arm.c: Include cpu-arm.h and coff-arm.h.
            * elf32-arm.c: Include cpu-arm.h and elf32-arm.h.
            * pe-arm.c: Move function rename defines later.
            * pe-arm-wince.c: Likewise and include sysdep.h and bfd.h early.
            * bfd-in2.h: Regenerate.
    gas/
            * config/tc-arm.c: Include cpu-arm.h.
    ld/
            * emultempl/armelf.em: Include elf32-arm.h.
            * emultempl/pe.em: Move func defines later and include coff-arm.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 06b09a16ab..c1f82cda92 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,16 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move arm declaraions..
+	* cpu-arm.h: ..to here, new file..
+	* coff-arm.h: ..and here, new file..
+	* elf32-arm.h: ..and here, new file.
+	* cpu-arm.c: Include cpu-arm.h.
+	* coff-arm.c: Include cpu-arm.h and coff-arm.h.
+	* elf32-arm.c: Include cpu-arm.h and elf32-arm.h.
+	* pe-arm.c: Move function rename defines later.
+	* pe-arm-wince.c: Likewise and include sysdep.h and bfd.h early.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move tic6x function declaration..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index c923e54f5d..124a0c2b81 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -763,143 +763,3 @@ union internal_auxent;
 
 extern bfd_boolean bfd_coff_set_symbol_class
   (bfd *, struct bfd_symbol *, unsigned int);
-
-/* ARM VFP11 erratum workaround support.  */
-typedef enum
-{
-  BFD_ARM_VFP11_FIX_DEFAULT,
-  BFD_ARM_VFP11_FIX_NONE,
-  BFD_ARM_VFP11_FIX_SCALAR,
-  BFD_ARM_VFP11_FIX_VECTOR
-} bfd_arm_vfp11_fix;
-
-extern void bfd_elf32_arm_init_maps
-  (bfd *);
-
-extern void bfd_elf32_arm_set_vfp11_fix
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_set_cortex_a8_fix
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_vfp11_fix_veneer_locations
-  (bfd *, struct bfd_link_info *);
-
-/* ARM STM STM32L4XX erratum workaround support.  */
-typedef enum
-{
-  BFD_ARM_STM32L4XX_FIX_NONE,
-  BFD_ARM_STM32L4XX_FIX_DEFAULT,
-  BFD_ARM_STM32L4XX_FIX_ALL
-} bfd_arm_stm32l4xx_fix;
-
-extern void bfd_elf32_arm_set_stm32l4xx_fix
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
-  (bfd *, struct bfd_link_info *);
-
-/* ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_arm_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_arm_process_before_allocation
-  (bfd *, struct bfd_link_info *, int);
-
-extern bfd_boolean bfd_arm_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-/* PE ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_arm_pe_process_before_allocation
-  (bfd *, struct bfd_link_info *, int);
-
-extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-/* ELF ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_process_before_allocation
-  (bfd *, struct bfd_link_info *);
-
-struct elf32_arm_params {
-  char *thumb_entry_symbol;
-  int byteswap_code;
-  int target1_is_rel;
-  char * target2_type;
-  int fix_v4bx;
-  int use_blx;
-  bfd_arm_vfp11_fix vfp11_denorm_fix;
-  bfd_arm_stm32l4xx_fix stm32l4xx_fix;
-  int no_enum_size_warning;
-  int no_wchar_size_warning;
-  int pic_veneer;
-  int fix_cortex_a8;
-  int fix_arm1176;
-  int merge_exidx_entries;
-  int cmse_implib;
-  bfd *in_implib_bfd;
-};
-
-void bfd_elf32_arm_set_target_params
-  (bfd *, struct bfd_link_info *, struct elf32_arm_params *);
-
-extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_keep_private_stub_output_sections
-  (struct bfd_link_info *);
-
-/* ELF ARM mapping symbol support.  */
-#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
-#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
-#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
-#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
-
-extern bfd_boolean bfd_is_arm_special_symbol_name
-  (const char *, int);
-
-extern void bfd_elf32_arm_set_byteswap_code
-  (struct bfd_link_info *, int);
-
-extern void bfd_elf32_arm_use_long_plt (void);
-
-/* ARM Note section processing.  */
-extern bfd_boolean bfd_arm_merge_machines
-  (bfd *, bfd *);
-
-extern bfd_boolean bfd_arm_update_notes
-  (bfd *, const char *);
-
-extern unsigned int bfd_arm_get_mach_from_notes
-  (bfd *, const char *);
-
-/* ARM stub generation support.  Called from the linker.  */
-extern int elf32_arm_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf32_arm_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_arm_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *,
-			     struct bfd_section *, unsigned int),
-   void (*) (void));
-extern bfd_boolean elf32_arm_build_stubs
-  (struct bfd_link_info *);
-
-/* ARM unwind section editing support.  */
-extern bfd_boolean elf32_arm_fix_exidx_coverage
-(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 74aaf3c5aa..052a826176 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -770,146 +770,6 @@ union internal_auxent;
 
 extern bfd_boolean bfd_coff_set_symbol_class
   (bfd *, struct bfd_symbol *, unsigned int);
-
-/* ARM VFP11 erratum workaround support.  */
-typedef enum
-{
-  BFD_ARM_VFP11_FIX_DEFAULT,
-  BFD_ARM_VFP11_FIX_NONE,
-  BFD_ARM_VFP11_FIX_SCALAR,
-  BFD_ARM_VFP11_FIX_VECTOR
-} bfd_arm_vfp11_fix;
-
-extern void bfd_elf32_arm_init_maps
-  (bfd *);
-
-extern void bfd_elf32_arm_set_vfp11_fix
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_set_cortex_a8_fix
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_vfp11_fix_veneer_locations
-  (bfd *, struct bfd_link_info *);
-
-/* ARM STM STM32L4XX erratum workaround support.  */
-typedef enum
-{
-  BFD_ARM_STM32L4XX_FIX_NONE,
-  BFD_ARM_STM32L4XX_FIX_DEFAULT,
-  BFD_ARM_STM32L4XX_FIX_ALL
-} bfd_arm_stm32l4xx_fix;
-
-extern void bfd_elf32_arm_set_stm32l4xx_fix
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
-  (bfd *, struct bfd_link_info *);
-
-/* ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_arm_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_arm_process_before_allocation
-  (bfd *, struct bfd_link_info *, int);
-
-extern bfd_boolean bfd_arm_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-/* PE ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_arm_pe_process_before_allocation
-  (bfd *, struct bfd_link_info *, int);
-
-extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-/* ELF ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
-  (struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_process_before_allocation
-  (bfd *, struct bfd_link_info *);
-
-struct elf32_arm_params {
-  char *thumb_entry_symbol;
-  int byteswap_code;
-  int target1_is_rel;
-  char * target2_type;
-  int fix_v4bx;
-  int use_blx;
-  bfd_arm_vfp11_fix vfp11_denorm_fix;
-  bfd_arm_stm32l4xx_fix stm32l4xx_fix;
-  int no_enum_size_warning;
-  int no_wchar_size_warning;
-  int pic_veneer;
-  int fix_cortex_a8;
-  int fix_arm1176;
-  int merge_exidx_entries;
-  int cmse_implib;
-  bfd *in_implib_bfd;
-};
-
-void bfd_elf32_arm_set_target_params
-  (bfd *, struct bfd_link_info *, struct elf32_arm_params *);
-
-extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
-  (bfd *, struct bfd_link_info *);
-
-extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
-  (bfd *, struct bfd_link_info *);
-
-extern void bfd_elf32_arm_keep_private_stub_output_sections
-  (struct bfd_link_info *);
-
-/* ELF ARM mapping symbol support.  */
-#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
-#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
-#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
-#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
-
-extern bfd_boolean bfd_is_arm_special_symbol_name
-  (const char *, int);
-
-extern void bfd_elf32_arm_set_byteswap_code
-  (struct bfd_link_info *, int);
-
-extern void bfd_elf32_arm_use_long_plt (void);
-
-/* ARM Note section processing.  */
-extern bfd_boolean bfd_arm_merge_machines
-  (bfd *, bfd *);
-
-extern bfd_boolean bfd_arm_update_notes
-  (bfd *, const char *);
-
-extern unsigned int bfd_arm_get_mach_from_notes
-  (bfd *, const char *);
-
-/* ARM stub generation support.  Called from the linker.  */
-extern int elf32_arm_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-extern void elf32_arm_next_input_section
-  (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_arm_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
-   struct bfd_section * (*) (const char *, struct bfd_section *,
-			     struct bfd_section *, unsigned int),
-   void (*) (void));
-extern bfd_boolean elf32_arm_build_stubs
-  (struct bfd_link_info *);
-
-/* ARM unwind section editing support.  */
-extern bfd_boolean elf32_arm_fix_exidx_coverage
-(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index cbc5257e9f..c9a7c098f5 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -24,6 +24,8 @@
 #include "libbfd.h"
 #include "coff/arm.h"
 #include "coff/internal.h"
+#include "cpu-arm.h"
+#include "coff-arm.h"
 
 #ifdef COFF_WITH_PE
 #include "coff/pe.h"
diff --git a/bfd/coff-arm.h b/bfd/coff-arm.h
new file mode 100644
index 0000000000..e0a93d6182
--- /dev/null
+++ b/bfd/coff-arm.h
@@ -0,0 +1,29 @@
+/* BFD back-end for ARM COFF files.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+/* ARM Interworking support.  Called from linker.  */
+extern bfd_boolean bfd_arm_allocate_interworking_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean bfd_arm_process_before_allocation
+  (bfd *, struct bfd_link_info *, int);
+
+extern bfd_boolean bfd_arm_get_bfd_for_interworking
+  (bfd *, struct bfd_link_info *);
diff --git a/bfd/cpu-arm.c b/bfd/cpu-arm.c
index 71a78daf11..4a8c340f70 100644
--- a/bfd/cpu-arm.c
+++ b/bfd/cpu-arm.c
@@ -23,6 +23,7 @@
 #include "bfd.h"
 #include "libbfd.h"
 #include "libiberty.h"
+#include "cpu-arm.h"
 
 /* This routine is provided two arch_infos and works out which ARM
    machine which would be compatible with both and returns a pointer
diff --git a/bfd/cpu-arm.h b/bfd/cpu-arm.h
new file mode 100644
index 0000000000..116b040e12
--- /dev/null
+++ b/bfd/cpu-arm.h
@@ -0,0 +1,39 @@
+/* BFD support for the ARM processor
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+/* ARM Note section processing.  */
+extern bfd_boolean bfd_arm_merge_machines
+  (bfd *, bfd *);
+
+extern bfd_boolean bfd_arm_update_notes
+  (bfd *, const char *);
+
+extern unsigned int bfd_arm_get_mach_from_notes
+  (bfd *, const char *);
+
+/* ELF ARM mapping symbol support.  */
+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
+
+extern bfd_boolean bfd_is_arm_special_symbol_name
+  (const char *, int);
+
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 1c4887a034..bb53e039e3 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -28,6 +28,8 @@
 #include "elf-nacl.h"
 #include "elf-vxworks.h"
 #include "elf/arm.h"
+#include "elf32-arm.h"
+#include "cpu-arm.h"
 
 /* Return the relocation section associated with NAME.  HTAB is the
    bfd's elf32_arm_link_hash_entry.  */
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
new file mode 100644
index 0000000000..ba6c2367c4
--- /dev/null
+++ b/bfd/elf32-arm.h
@@ -0,0 +1,121 @@
+/* 32-bit ELF support for ARM
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+
+/* ARM VFP11 erratum workaround support.  */
+typedef enum
+{
+  BFD_ARM_VFP11_FIX_DEFAULT,
+  BFD_ARM_VFP11_FIX_NONE,
+  BFD_ARM_VFP11_FIX_SCALAR,
+  BFD_ARM_VFP11_FIX_VECTOR
+} bfd_arm_vfp11_fix;
+
+extern void bfd_elf32_arm_init_maps
+  (bfd *);
+
+extern void bfd_elf32_arm_set_vfp11_fix
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_set_cortex_a8_fix
+  (bfd *, struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
+  (bfd *, struct bfd_link_info *);
+
+/* ARM STM STM32L4XX erratum workaround support.  */
+typedef enum
+{
+  BFD_ARM_STM32L4XX_FIX_NONE,
+  BFD_ARM_STM32L4XX_FIX_DEFAULT,
+  BFD_ARM_STM32L4XX_FIX_ALL
+} bfd_arm_stm32l4xx_fix;
+
+extern void bfd_elf32_arm_set_stm32l4xx_fix
+  (bfd *, struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
+  (bfd *, struct bfd_link_info *);
+
+/* ELF ARM Interworking support.  Called from linker.  */
+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_process_before_allocation
+  (bfd *, struct bfd_link_info *);
+
+struct elf32_arm_params {
+  char *thumb_entry_symbol;
+  int byteswap_code;
+  int target1_is_rel;
+  char * target2_type;
+  int fix_v4bx;
+  int use_blx;
+  bfd_arm_vfp11_fix vfp11_denorm_fix;
+  bfd_arm_stm32l4xx_fix stm32l4xx_fix;
+  int no_enum_size_warning;
+  int no_wchar_size_warning;
+  int pic_veneer;
+  int fix_cortex_a8;
+  int fix_arm1176;
+  int merge_exidx_entries;
+  int cmse_implib;
+  bfd *in_implib_bfd;
+};
+
+void bfd_elf32_arm_set_target_params
+  (bfd *, struct bfd_link_info *, struct elf32_arm_params *);
+
+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
+  (bfd *, struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_keep_private_stub_output_sections
+  (struct bfd_link_info *);
+
+extern void bfd_elf32_arm_set_byteswap_code
+  (struct bfd_link_info *, int);
+
+extern void bfd_elf32_arm_use_long_plt (void);
+
+/* ARM stub generation support.  Called from the linker.  */
+extern int elf32_arm_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf32_arm_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bfd_boolean elf32_arm_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *,
+			     struct bfd_section *, unsigned int),
+   void (*) (void));
+extern bfd_boolean elf32_arm_build_stubs
+  (struct bfd_link_info *);
+
+/* ARM unwind section editing support.  */
+extern bfd_boolean elf32_arm_fix_exidx_coverage
+(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
diff --git a/bfd/pe-arm-wince.c b/bfd/pe-arm-wince.c
index d3d52ee520..733b8380f5 100644
--- a/bfd/pe-arm-wince.c
+++ b/bfd/pe-arm-wince.c
@@ -18,6 +18,9 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
+#include "sysdep.h"
+#include "bfd.h"
+
 #define TARGET_UNDERSCORE    0
 #define USER_LABEL_PREFIX    ""
 
@@ -26,6 +29,11 @@
 #define TARGET_BIG_SYM       arm_pe_wince_be_vec
 #define TARGET_BIG_NAME      "pe-arm-wince-big"
 
+#define LOCAL_LABEL_PREFIX "."
+
+#undef  bfd_pe_print_pdata
+#define	bfd_pe_print_pdata   _bfd_pe_print_ce_compressed_pdata
+
 #define bfd_arm_allocate_interworking_sections \
   bfd_arm_wince_pe_allocate_interworking_sections
 #define bfd_arm_get_bfd_for_interworking \
@@ -33,13 +41,4 @@
 #define bfd_arm_process_before_allocation \
   bfd_arm_wince_pe_process_before_allocation
 
-#define LOCAL_LABEL_PREFIX "."
-
-#include "sysdep.h"
-#include "bfd.h"
-
-#undef  bfd_pe_print_pdata
-#define	bfd_pe_print_pdata   _bfd_pe_print_ce_compressed_pdata
-
 #include "pe-arm.c"
-
diff --git a/bfd/pe-arm.c b/bfd/pe-arm.c
index 2d1b7ead1f..4667046108 100644
--- a/bfd/pe-arm.c
+++ b/bfd/pe-arm.c
@@ -18,18 +18,6 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-
-/* Do this before including bfd.h, so we prototype the right functions.  */
-
-#ifndef bfd_arm_allocate_interworking_sections
-#define bfd_arm_allocate_interworking_sections \
-  bfd_armpe_allocate_interworking_sections
-#define bfd_arm_get_bfd_for_interworking \
-  bfd_armpe_get_bfd_for_interworking
-#define bfd_arm_process_before_allocation \
-  bfd_armpe_process_before_allocation
-#endif
-
 #include "sysdep.h"
 #include "bfd.h"
 
@@ -64,4 +52,13 @@
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
 
+#ifndef bfd_arm_allocate_interworking_sections
+#define bfd_arm_allocate_interworking_sections \
+  bfd_armpe_allocate_interworking_sections
+#define bfd_arm_get_bfd_for_interworking \
+  bfd_armpe_get_bfd_for_interworking
+#define bfd_arm_process_before_allocation \
+  bfd_armpe_process_before_allocation
+#endif
+
 #include "coff-arm.c"
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 39537f8129..cab918a49c 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* config/tc-arm.c: Include cpu-arm.h.
+
 2019-09-21  Alan Modra  <amodra@gmail.com>
 
 	* config/tc-i386.c (md_parse_option): Fix warning on vexwig assignment.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index b0f1507c36..7760d1807d 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -32,6 +32,7 @@
 #include "obstack.h"
 #include "libiberty.h"
 #include "opcode/arm.h"
+#include "cpu-arm.h"
 
 #ifdef OBJ_ELF
 #include "elf/arm.h"
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 378fcea064..f0fcd202e9 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/armelf.em: Include elf32-arm.h.
+	* emultempl/pe.em: Move func defines later and include coff-arm.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/aarch64elf.em: Include elfxx-aarch64.h.
diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
index 0cbfcc70b3..9a1bc9a04b 100644
--- a/ld/emultempl/armelf.em
+++ b/ld/emultempl/armelf.em
@@ -27,6 +27,7 @@ fragment <<EOF
 
 #include "ldctor.h"
 #include "elf/arm.h"
+#include "elf32-arm.h"
 
 static struct elf32_arm_params params =
 {
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index 150c98296f..c1932d79ad 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -37,18 +37,6 @@ fragment <<EOF
 
 #define TARGET_IS_${EMULATION_NAME}
 
-/* Do this before including bfd.h, so we prototype the right functions.  */
-
-#if defined(TARGET_IS_armpe) \
-    || defined(TARGET_IS_arm_wince_pe)
-#define bfd_arm_allocate_interworking_sections \
-	bfd_${EMULATION_NAME}_allocate_interworking_sections
-#define bfd_arm_get_bfd_for_interworking \
-	bfd_${EMULATION_NAME}_get_bfd_for_interworking
-#define bfd_arm_process_before_allocation \
-	bfd_${EMULATION_NAME}_process_before_allocation
-#endif
-
 #include "sysdep.h"
 #include "bfd.h"
 #include "bfdlink.h"
@@ -78,6 +66,17 @@ fragment <<EOF
 #include "../bfd/libcoff.h"
 #include "../bfd/libpei.h"
 
+#if defined(TARGET_IS_armpe) \
+    || defined(TARGET_IS_arm_wince_pe)
+#define bfd_arm_allocate_interworking_sections \
+	bfd_${EMULATION_NAME}_allocate_interworking_sections
+#define bfd_arm_get_bfd_for_interworking \
+	bfd_${EMULATION_NAME}_get_bfd_for_interworking
+#define bfd_arm_process_before_allocation \
+	bfd_${EMULATION_NAME}_process_before_allocation
+#include "coff-arm.h"
+#endif
+
 #include "deffile.h"
 #include "pe-dll.h"
 #include "safe-ctype.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] coff bfd.h tidy
@ 2019-09-23  3:14 gdb-buildbot
  2019-09-23 10:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  3:14 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT aa739c59d3db95d1709b0417cdf7d082bfdea911 ***

commit aa739c59d3db95d1709b0417cdf7d082bfdea911
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:07:40 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    coff bfd.h tidy
    
    bfd/
            * bfd-in.h: Delete coff forward refs and move coff declaration..
            * coff-bfd.h: ..to here.
            * bfd-in2.h: Regenerate.
    binutils/
            * dlltool.c: Include coff-bfd.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c1f82cda92..696eeacc55 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Delete coff forward refs and move coff declaration..
+	* coff-bfd.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move arm declaraions..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 124a0c2b81..a629a8430d 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -753,13 +753,3 @@ extern bfd_boolean bfd_xcoff_link_generate_rtinit
 /* XCOFF support routines for ar.  */
 extern bfd_boolean bfd_xcoff_ar_archive_set_magic
   (bfd *, char *);
-
-/* Externally visible COFF routines.  */
-
-#if defined(__STDC__) || defined(ALMOST_STDC)
-struct internal_syment;
-union internal_auxent;
-#endif
-
-extern bfd_boolean bfd_coff_set_symbol_class
-  (bfd *, struct bfd_symbol *, unsigned int);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 052a826176..e7537f7eaf 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -760,16 +760,6 @@ extern bfd_boolean bfd_xcoff_link_generate_rtinit
 /* XCOFF support routines for ar.  */
 extern bfd_boolean bfd_xcoff_ar_archive_set_magic
   (bfd *, char *);
-
-/* Externally visible COFF routines.  */
-
-#if defined(__STDC__) || defined(ALMOST_STDC)
-struct internal_syment;
-union internal_auxent;
-#endif
-
-extern bfd_boolean bfd_coff_set_symbol_class
-  (bfd *, struct bfd_symbol *, unsigned int);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/coff-bfd.h b/bfd/coff-bfd.h
index 20c2a44e33..b88c5bee02 100644
--- a/bfd/coff-bfd.h
+++ b/bfd/coff-bfd.h
@@ -86,3 +86,6 @@ extern bfd_boolean bfd_coff_get_syment
 
 extern bfd_boolean bfd_coff_get_auxent
   (bfd *, struct bfd_symbol *, int, union internal_auxent *);
+
+extern bfd_boolean bfd_coff_set_symbol_class
+  (bfd *, struct bfd_symbol *, unsigned int);
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a2ac2b752d..45817f41ec 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* dlltool.c: Include coff-bfd.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	PR 25018
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 85304d0c37..6c4737e709 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -240,6 +240,7 @@
 #include "bucomm.h"
 #include "dlltool.h"
 #include "safe-ctype.h"
+#include "coff-bfd.h"
 
 #include <time.h>
 #include <assert.h>


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] xcoff bfd.h tidy
@ 2019-09-23  3:27 gdb-buildbot
  2019-09-23 11:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  3:27 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 6ea7de3237f0780065e6c17cd2d123792410c16b ***

commit 6ea7de3237f0780065e6c17cd2d123792410c16b
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:08:33 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    xcoff bfd.h tidy
    
    bfd/
            * bfd-in.h: Move xcoff function declarations..
            * xcofflink.h: ..to here, new file.
            * xcofflink.c: Include xcofflink.h.
            * coff-rs6000.c (bfd_xcoff_ar_archive_set_magic): Delete unused func.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/aix.em: Include xcofflink.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 696eeacc55..3d30d759a1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move xcoff function declarations..
+	* xcofflink.h: ..to here, new file.
+	* xcofflink.c: Include xcofflink.h.
+	* coff-rs6000.c (bfd_xcoff_ar_archive_set_magic): Delete unused func.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Delete coff forward refs and move coff declaration..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index a629a8430d..45858e08b9 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -725,31 +725,3 @@ extern void bfd_free_window
   (bfd_window *);
 extern bfd_boolean bfd_get_file_window
   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
-
-/* XCOFF support routines for the linker.  */
-
-extern bfd_boolean bfd_xcoff_split_import_path
-  (bfd *, const char *, const char **, const char **);
-extern bfd_boolean bfd_xcoff_set_archive_import_path
-  (struct bfd_link_info *, bfd *, const char *);
-extern bfd_boolean bfd_xcoff_link_record_set
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
-extern bfd_boolean bfd_xcoff_import_symbol
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
-   const char *, const char *, const char *, unsigned int);
-extern bfd_boolean bfd_xcoff_export_symbol
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean bfd_xcoff_link_count_reloc
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_size_dynamic_sections
-  (bfd *, struct bfd_link_info *, const char *, const char *,
-   unsigned long, unsigned long, unsigned long, bfd_boolean,
-   int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
-extern bfd_boolean bfd_xcoff_link_generate_rtinit
-  (bfd *, const char *, const char *, bfd_boolean);
-
-/* XCOFF support routines for ar.  */
-extern bfd_boolean bfd_xcoff_ar_archive_set_magic
-  (bfd *, char *);
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index e7537f7eaf..d78fab3b6c 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -732,34 +732,6 @@ extern void bfd_free_window
   (bfd_window *);
 extern bfd_boolean bfd_get_file_window
   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
-
-/* XCOFF support routines for the linker.  */
-
-extern bfd_boolean bfd_xcoff_split_import_path
-  (bfd *, const char *, const char **, const char **);
-extern bfd_boolean bfd_xcoff_set_archive_import_path
-  (struct bfd_link_info *, bfd *, const char *);
-extern bfd_boolean bfd_xcoff_link_record_set
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
-extern bfd_boolean bfd_xcoff_import_symbol
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
-   const char *, const char *, const char *, unsigned int);
-extern bfd_boolean bfd_xcoff_export_symbol
-  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean bfd_xcoff_link_count_reloc
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_size_dynamic_sections
-  (bfd *, struct bfd_link_info *, const char *, const char *,
-   unsigned long, unsigned long, unsigned long, bfd_boolean,
-   int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
-extern bfd_boolean bfd_xcoff_link_generate_rtinit
-  (bfd *, const char *, const char *, bfd_boolean);
-
-/* XCOFF support routines for ar.  */
-extern bfd_boolean bfd_xcoff_ar_archive_set_magic
-  (bfd *, char *);
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index bdbb499a4a..86cf9e3e2a 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -1169,20 +1169,6 @@ _bfd_xcoff_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
    to take care that we are not generating the new form of archives
    on AIX 4.2 or earlier systems.  */
 
-/* XCOFF archives use this as a magic string.  Note that both strings
-   have the same length.  */
-
-/* Set the magic for archive.  */
-
-bfd_boolean
-bfd_xcoff_ar_archive_set_magic (bfd *abfd ATTRIBUTE_UNUSED,
-				char *magic ATTRIBUTE_UNUSED)
-{
-  /* Not supported yet.  */
-  return FALSE;
- /* bfd_xcoff_archive_set_magic (abfd, magic); */
-}
-
 /* PR 21786:  The PE/COFF standard does not require NUL termination for any of
    the ASCII fields in the archive headers.  So in order to be able to extract
    numerical values we provide our own versions of strtol and strtoll which
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 52691720ae..91e0041ea1 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -28,6 +28,7 @@
 #include "libcoff.h"
 #include "libxcoff.h"
 #include "libiberty.h"
+#include "xcofflink.h"
 
 /* This file holds the XCOFF linker code.  */
 
diff --git a/bfd/xcofflink.h b/bfd/xcofflink.h
new file mode 100644
index 0000000000..5d1792e962
--- /dev/null
+++ b/bfd/xcofflink.h
@@ -0,0 +1,41 @@
+/* POWER/PowerPC XCOFF linker support.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean bfd_xcoff_split_import_path
+  (bfd *, const char *, const char **, const char **);
+extern bfd_boolean bfd_xcoff_set_archive_import_path
+  (struct bfd_link_info *, bfd *, const char *);
+extern bfd_boolean bfd_xcoff_link_record_set
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
+extern bfd_boolean bfd_xcoff_import_symbol
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
+   const char *, const char *, const char *, unsigned int);
+extern bfd_boolean bfd_xcoff_export_symbol
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
+extern bfd_boolean bfd_xcoff_link_count_reloc
+  (bfd *, struct bfd_link_info *, const char *);
+extern bfd_boolean bfd_xcoff_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *);
+extern bfd_boolean bfd_xcoff_size_dynamic_sections
+  (bfd *, struct bfd_link_info *, const char *, const char *,
+   unsigned long, unsigned long, unsigned long, bfd_boolean,
+   int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
+extern bfd_boolean bfd_xcoff_link_generate_rtinit
+  (bfd *, const char *, const char *, bfd_boolean);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index f0fcd202e9..5a20bf06cc 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/aix.em: Include xcofflink.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/armelf.em: Include elf32-arm.h.
diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
index 1ce8376a52..96e84f9e62 100644
--- a/ld/emultempl/aix.em
+++ b/ld/emultempl/aix.em
@@ -55,6 +55,7 @@ fragment <<EOF
 #include "coff/xcoff.h"
 #include "libcoff.h"
 #include "libxcoff.h"
+#include "xcofflink.h"
 
 static void gld${EMULATION_NAME}_read_file (const char *, bfd_boolean);
 static void gld${EMULATION_NAME}_free (void *);


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] obsoleted bfd.h tidy
@ 2019-09-23  3:37 gdb-buildbot
  2019-09-23 12:06 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  3:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 530f61204cdba76413645c22065d453e814c7cd4 ***

commit 530f61204cdba76413645c22065d453e814c7cd4
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:09:07 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    obsoleted bfd.h tidy
    
            * bfd-in.h (bfd_sunos_get_needed_list),
            (bfd_sunos_record_link_assignment),
            (bfd_sunos_size_dynamic_sections),
            (bfd_i386linux_size_dynamic_sections),
            (bfd_sparclinux_size_dynamic_sections): Delete obsolete decls.
            * bfd-in2.h: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3d30d759a1..57cefe1f78 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_sunos_get_needed_list),
+	(bfd_sunos_record_link_assignment),
+	(bfd_sunos_size_dynamic_sections),
+	(bfd_i386linux_size_dynamic_sections),
+	(bfd_sparclinux_size_dynamic_sections): Delete obsolete decls.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move xcoff function declarations..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 45858e08b9..a01f80d023 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -682,23 +682,6 @@ extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    char **);
 
-/* SunOS shared library support routines for the linker.  */
-
-extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_sunos_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_sunos_size_dynamic_sections
-  (bfd *, struct bfd_link_info *, struct bfd_section **,
-   struct bfd_section **, struct bfd_section **);
-
-/* Linux shared library support routines for the linker.  */
-
-extern bfd_boolean bfd_i386linux_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_sparclinux_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index d78fab3b6c..47df9e37f2 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -689,23 +689,6 @@ extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    char **);
 
-/* SunOS shared library support routines for the linker.  */
-
-extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_sunos_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_sunos_size_dynamic_sections
-  (bfd *, struct bfd_link_info *, struct bfd_section **,
-   struct bfd_section **, struct bfd_section **);
-
-/* Linux shared library support routines for the linker.  */
-
-extern bfd_boolean bfd_i386linux_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_sparclinux_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] cr16 bfd.h tidy
@ 2019-09-23  3:51 gdb-buildbot
  2019-09-23 14:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  3:51 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ca05ca5e2d8c1628c37a335635dab4714f0d3bfe ***

commit ca05ca5e2d8c1628c37a335635dab4714f0d3bfe
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:09:47 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    cr16 bfd.h tidy
    
    bfd/
            * bfd-in.h: Move cr16 function declaration..
            * elf32-cr16.h: ..to here, new file.
            * elf32-cr16.c: Include elf32-cr16.h.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/cr16elf.em: Include elf32-cr16.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 57cefe1f78..0b5ef9786f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move cr16 function declaration..
+	* elf32-cr16.h: ..to here, new file.
+	* elf32-cr16.c: Include elf32-cr16.h.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_sunos_get_needed_list),
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index a01f80d023..61992feacb 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -678,10 +678,6 @@ extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    char **);
 
-extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 47df9e37f2..257f9307cc 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -685,10 +685,6 @@ extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    char **);
 
-extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c
index 72642e532c..1a6bbbccda 100644
--- a/bfd/elf32-cr16.c
+++ b/bfd/elf32-cr16.c
@@ -25,6 +25,7 @@
 #include "libiberty.h"
 #include "elf-bfd.h"
 #include "elf/cr16.h"
+#include "elf32-cr16.h"
 
 /* The cr16 linker needs to keep track of the number of relocs that
    it decides to copy in check_relocs for each symbol.  This is so
diff --git a/bfd/elf32-cr16.h b/bfd/elf32-cr16.h
new file mode 100644
index 0000000000..6680c6e27d
--- /dev/null
+++ b/bfd/elf32-cr16.h
@@ -0,0 +1,22 @@
+/* BFD back-end for National Semiconductor's CR16 ELF
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 5a20bf06cc..60a1fd6f02 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/cr16elf.em: Include elf32-cr16.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/aix.em: Include xcofflink.h.
diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
index 9cdd356e35..eb068804f9 100644
--- a/ld/emultempl/cr16elf.em
+++ b/ld/emultempl/cr16elf.em
@@ -26,6 +26,7 @@
 fragment <<EOF
 
 #include "ldctor.h"
+#include "elf32-cr16.h"
 
 static void check_sections (bfd *, asection *, void *);
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfin bfd.h tidy
@ 2019-09-23  4:12 gdb-buildbot
  2019-09-23 14:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  4:12 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 8410a6589d7fd1e02489e7ab57bda0fcba305dba ***

commit 8410a6589d7fd1e02489e7ab57bda0fcba305dba
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:10:28 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:21 2019 +0930

    bfin bfd.h tidy
    
    bfd/
            * bfd-in.h: Move bfin function declaration..
            * elf32-bfin.h: ..to here, new file.
            * elf32-bfin.c: Include elf32-bfin.h.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/bfin.em: Include elf32-bfin.h.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0b5ef9786f..36a3c61974 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move bfin function declaration..
+	* elf32-bfin.h: ..to here, new file.
+	* elf32-bfin.c: Include elf32-bfin.h.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move cr16 function declaration..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 61992feacb..7cc35d9985 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -674,10 +674,6 @@ extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
 
 extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
 
-extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 257f9307cc..424c27b53d 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -681,10 +681,6 @@ extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
 
 extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
 
-extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c
index 6efee04c8b..c4f8874b24 100644
--- a/bfd/elf32-bfin.c
+++ b/bfd/elf32-bfin.c
@@ -25,6 +25,7 @@
 #include "elf/bfin.h"
 #include "dwarf2.h"
 #include "hashtab.h"
+#include "elf32-bfin.h"
 
 /* FUNCTION : bfin_pltpc_reloc
    ABSTRACT : TODO : figure out how to handle pltpc relocs.  */
diff --git a/bfd/elf32-bfin.h b/bfd/elf32-bfin.h
new file mode 100644
index 0000000000..1f294e8f39
--- /dev/null
+++ b/bfd/elf32-bfin.h
@@ -0,0 +1,23 @@
+/* ADI Blackfin BFD support for 32-bit ELF.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 60a1fd6f02..1cea946ce4 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/bfin.em: Include elf32-bfin.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/cr16elf.em: Include elf32-cr16.h.
diff --git a/ld/emultempl/bfin.em b/ld/emultempl/bfin.em
index c6b3ae007d..75aa36b54a 100644
--- a/ld/emultempl/bfin.em
+++ b/ld/emultempl/bfin.em
@@ -25,6 +25,7 @@
 fragment <<EOF
 
 #include "elf-bfd.h"
+#include "elf32-bfin.h"
 
 /* Whether to put code in Blackfin L1 SRAM.  */
 extern bfd_boolean elf32_bfin_code_in_l1;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] m68k bfd.h tidy
@ 2019-09-23  4:13 gdb-buildbot
  2019-09-23 14:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  4:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f5c5b7c124934b464b67c7c3c53a1c62a7f4e98a ***

commit f5c5b7c124934b464b67c7c3c53a1c62a7f4e98a
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:11:29 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:22 2019 +0930

    m68k bfd.h tidy
    
    bfd/
            * bfd-in.h: Move m68k function declaration..
            * cpu-m68k.h: ..to here, new file..
            * elf32-m68k.h: ..and here, new file.
            * elf32-m68k.c: Include cpu-m68k.h and elf32-m68k.h.
            * bfd-in2.h: Regenerate.
    ld/
            * emultempl/m68kelf.em: Include elf32-m68k.h.
    opcodes/
            * m68k-dis.c: Include cpu-m68k.h

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 36a3c61974..fa67c70f7d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move m68k function declaration..
+	* cpu-m68k.h: ..to here, new file..
+	* elf32-m68k.h: ..and here, new file.
+	* elf32-m68k.c: Include cpu-m68k.h and elf32-m68k.h.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move bfin function declaration..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 7cc35d9985..d61467b593 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -664,16 +664,6 @@ _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
 extern void _bfd_fix_excluded_sec_syms
   (bfd *, struct bfd_link_info *);
 
-extern unsigned bfd_m68k_mach_to_features (int);
-
-extern int bfd_m68k_features_to_mach (unsigned);
-
-extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
-extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 424c27b53d..4d2707621f 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -671,16 +671,6 @@ _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
 extern void _bfd_fix_excluded_sec_syms
   (bfd *, struct bfd_link_info *);
 
-extern unsigned bfd_m68k_mach_to_features (int);
-
-extern int bfd_m68k_features_to_mach (unsigned);
-
-extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
-   char **);
-
-extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
-
 /* mmap hacks */
 
 struct _bfd_window_internal;
diff --git a/bfd/cpu-m68k.c b/bfd/cpu-m68k.c
index b3d3358ede..bfd32e3b20 100644
--- a/bfd/cpu-m68k.c
+++ b/bfd/cpu-m68k.c
@@ -23,6 +23,7 @@
 #include "bfd.h"
 #include "libbfd.h"
 #include "opcode/m68k.h"
+#include "cpu-m68k.h"
 
 static const bfd_arch_info_type *
 bfd_m68k_compatible (const bfd_arch_info_type *a,
diff --git a/bfd/cpu-m68k.h b/bfd/cpu-m68k.h
new file mode 100644
index 0000000000..aed97db210
--- /dev/null
+++ b/bfd/cpu-m68k.h
@@ -0,0 +1,23 @@
+/* BFD library support routines.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern unsigned bfd_m68k_mach_to_features (int);
+
+extern int bfd_m68k_features_to_mach (unsigned);
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 559578d818..9b8652f67c 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -25,6 +25,8 @@
 #include "elf-bfd.h"
 #include "elf/m68k.h"
 #include "opcode/m68k.h"
+#include "cpu-m68k.h"
+#include "elf32-m68k.h"
 
 static bfd_boolean
 elf_m68k_discard_copies (struct elf_link_hash_entry *, void *);
diff --git a/bfd/elf32-m68k.h b/bfd/elf32-m68k.h
new file mode 100644
index 0000000000..63ce667dc2
--- /dev/null
+++ b/bfd/elf32-m68k.h
@@ -0,0 +1,25 @@
+/* Motorola 68k series support for 32-bit ELF
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
+
+extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 1cea946ce4..07e4611e00 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* emultempl/m68kelf.em: Include elf32-m68k.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/bfin.em: Include elf32-bfin.h.
diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
index c8d9eea934..570891f883 100644
--- a/ld/emultempl/m68kelf.em
+++ b/ld/emultempl/m68kelf.em
@@ -45,6 +45,8 @@ esac
 
 fragment <<EOF
 
+#include "elf32-m68k.h"
+
 #define GOT_HANDLING_SINGLE   (0)
 #define GOT_HANDLING_NEGATIVE (1)
 #define GOT_HANDLING_MULTIGOT (2)
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 91b084ef8a..ef50402da8 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* m68k-dis.c: Include cpu-m68k.h
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* mips-dis.c: Include elfxx-mips.h.  Move "elf-bfd.h" and
diff --git a/opcodes/m68k-dis.c b/opcodes/m68k-dis.c
index 45af5ff7e2..7584541402 100644
--- a/opcodes/m68k-dis.c
+++ b/opcodes/m68k-dis.c
@@ -23,7 +23,7 @@
 #include "floatformat.h"
 #include "libiberty.h"
 #include "opintl.h"
-
+#include "cpu-m68k.h"
 #include "opcode/m68k.h"
 
 /* Local function prototypes.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] ecoff bfd.h tidy
@ 2019-09-23  4:36 gdb-buildbot
  2019-09-23 17:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  4:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0ba9378a2ad073524f20e9637dac8369ef06c639 ***

commit 0ba9378a2ad073524f20e9637dac8369ef06c639
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:13:26 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:22 2019 +0930

    ecoff bfd.h tidy
    
    bfd/
            * bfd-in.h: Move ecoff function declarations..
            * ecoff-bfd.h: ..to here, new file.
            * ecoff.c: Include ecoff-bfd.h.
            * ecofflink.c: Likewise.
            * elf64-alpha.c: Likewise.
            * elfxx-mips.c: Likewise.
            * bfd-in2.h: Regenerate.
    gas/
            * config/obj-ecoff.c: Include ecoff-bfd.h.
            * config/obj-elf.c: Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 62115f25c6..923adb4ea6 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move ecoff function declarations..
+	* ecoff-bfd.h: ..to here, new file.
+	* ecoff.c: Include ecoff-bfd.h.
+	* ecofflink.c: Likewise.
+	* elf64-alpha.c: Likewise.
+	* elfxx-mips.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index de8479cf72..4d2f09f718 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -526,48 +526,6 @@ extern bfd_boolean _bfd_handle_already_linked
   (struct bfd_section *, struct bfd_section_already_linked *,
    struct bfd_link_info *);
 \f
-/* Externally visible ECOFF routines.  */
-
-extern bfd_boolean bfd_ecoff_set_gp_value
-  (bfd *abfd, bfd_vma gp_value);
-extern bfd_boolean bfd_ecoff_set_regmasks
-  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
-   unsigned long *cprmask);
-extern void *bfd_ecoff_debug_init
-  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
-extern void bfd_ecoff_debug_free
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
-   struct ecoff_debug_info *input_debug,
-   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate_other
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
-   struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_externals
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
-   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
-   void (*set_index) (struct bfd_symbol *, bfd_size_type));
-extern bfd_boolean bfd_ecoff_debug_one_external
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, const char *name,
-   struct ecoff_extr *esym);
-extern bfd_size_type bfd_ecoff_debug_size
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap);
-extern bfd_boolean bfd_ecoff_write_debug
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, file_ptr where);
-extern bfd_boolean bfd_ecoff_write_accumulated_debug
-  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap,
-   struct bfd_link_info *info, file_ptr where);
-
 /* Externally visible ELF routines.  */
 
 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 30b2685a83..16fa462430 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -533,48 +533,6 @@ extern bfd_boolean _bfd_handle_already_linked
   (struct bfd_section *, struct bfd_section_already_linked *,
    struct bfd_link_info *);
 \f
-/* Externally visible ECOFF routines.  */
-
-extern bfd_boolean bfd_ecoff_set_gp_value
-  (bfd *abfd, bfd_vma gp_value);
-extern bfd_boolean bfd_ecoff_set_regmasks
-  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
-   unsigned long *cprmask);
-extern void *bfd_ecoff_debug_init
-  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
-extern void bfd_ecoff_debug_free
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
-   struct ecoff_debug_info *input_debug,
-   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate_other
-  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
-   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
-   struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_externals
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
-   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
-   void (*set_index) (struct bfd_symbol *, bfd_size_type));
-extern bfd_boolean bfd_ecoff_debug_one_external
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, const char *name,
-   struct ecoff_extr *esym);
-extern bfd_size_type bfd_ecoff_debug_size
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap);
-extern bfd_boolean bfd_ecoff_write_debug
-  (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, file_ptr where);
-extern bfd_boolean bfd_ecoff_write_accumulated_debug
-  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap,
-   struct bfd_link_info *info, file_ptr where);
-
 /* Externally visible ELF routines.  */
 
 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
diff --git a/bfd/ecoff-bfd.h b/bfd/ecoff-bfd.h
new file mode 100644
index 0000000000..00ecf010f4
--- /dev/null
+++ b/bfd/ecoff-bfd.h
@@ -0,0 +1,59 @@
+/* Externally visible ECOFF routines.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+extern bfd_boolean bfd_ecoff_set_gp_value
+  (bfd *abfd, bfd_vma gp_value);
+extern bfd_boolean bfd_ecoff_set_regmasks
+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
+   unsigned long *cprmask);
+extern void *bfd_ecoff_debug_init
+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
+extern void bfd_ecoff_debug_free
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_accumulate
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
+   struct ecoff_debug_info *input_debug,
+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_accumulate_other
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
+   struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_externals
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
+extern bfd_boolean bfd_ecoff_debug_one_external
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, const char *name,
+   struct ecoff_extr *esym);
+extern bfd_size_type bfd_ecoff_debug_size
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap);
+extern bfd_boolean bfd_ecoff_write_debug
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, file_ptr where);
+extern bfd_boolean bfd_ecoff_write_accumulated_debug
+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap,
+   struct bfd_link_info *info, file_ptr where);
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 30adba0e6d..be3d42e305 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -24,6 +24,7 @@
 #include "bfd.h"
 #include "bfdlink.h"
 #include "libbfd.h"
+#include "ecoff-bfd.h"
 #include "aout/ar.h"
 #include "aout/stab_gnu.h"
 
diff --git a/bfd/ecofflink.c b/bfd/ecofflink.c
index 47e210b56e..1345e917ac 100644
--- a/bfd/ecofflink.c
+++ b/bfd/ecofflink.c
@@ -23,6 +23,7 @@
 #include "bfd.h"
 #include "bfdlink.h"
 #include "libbfd.h"
+#include "ecoff-bfd.h"
 #include "objalloc.h"
 #include "aout/stab_gnu.h"
 #include "coff/internal.h"
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 84ec83b74a..3ea1289157 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -27,6 +27,7 @@
 #include "bfd.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
+#include "ecoff-bfd.h"
 
 #include "elf/alpha.h"
 
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 496e42e7c5..3462c8b151 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -33,6 +33,7 @@
 #include "libbfd.h"
 #include "libiberty.h"
 #include "elf-bfd.h"
+#include "ecoff-bfd.h"
 #include "elfxx-mips.h"
 #include "elf/mips.h"
 #include "elf-vxworks.h"
diff --git a/gas/ChangeLog b/gas/ChangeLog
index cab918a49c..764789bca0 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* config/obj-ecoff.c: Include ecoff-bfd.h.
+	* config/obj-elf.c: Likewise.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* config/tc-arm.c: Include cpu-arm.h.
diff --git a/gas/config/obj-ecoff.c b/gas/config/obj-ecoff.c
index a5616f388e..d8e4f400d7 100644
--- a/gas/config/obj-ecoff.c
+++ b/gas/config/obj-ecoff.c
@@ -25,6 +25,7 @@
 #include "coff/internal.h"
 #include "bfd/libcoff.h"
 #include "bfd/libecoff.h"
+#include "bfd/ecoff-bfd.h"
 
 /* Almost all of the ECOFF support is actually in ecoff.c in the main
    gas directory.  This file mostly just arranges to call that one at
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 56293584a0..ee93628d70 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -33,6 +33,7 @@
 
 #ifdef NEED_ECOFF_DEBUG
 #include "ecoff.h"
+#include "bfd/ecoff-bfd.h"
 #endif
 
 #ifdef TC_ALPHA


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] elf bfd.h tidy
@ 2019-09-23  4:36 gdb-buildbot
  2019-09-23 16:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  4:36 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 0b4453c791106ab62011b59f97611f9ff21cda9f ***

commit 0b4453c791106ab62011b59f97611f9ff21cda9f
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:12:31 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:22 2019 +0930

    elf bfd.h tidy
    
    bfd/
            * bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
            Move most other elf declarations..
            * elf-bfd.h: ..to here.
            * bfd-in2.h: Regenerate.
    include/
            * bfdlink.h (enum notice_asneeded_action): Define.
    ld/
            * deffilep.y: Include bfdlink.h.
            * ldelf.c: Likewise.
            * ldelfgen.c: Likewise.
            * ldver.c: Likewise.
            * mri.c: Likewise.
            * emultempl/irix.em: Don't include ld.h, ldmain.h, libiberty.h.
            Comment.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fa67c70f7d..62115f25c6 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
+	Move most other elf declarations..
+	* elf-bfd.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move m68k function declaration..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index d61467b593..de8479cf72 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -570,72 +570,6 @@ extern bfd_boolean bfd_ecoff_write_accumulated_debug
 
 /* Externally visible ELF routines.  */
 
-struct bfd_link_needed_list
-{
-  struct bfd_link_needed_list *next;
-  bfd *by;
-  const char *name;
-};
-
-enum dynamic_lib_link_class {
-  DYN_NORMAL = 0,
-  DYN_AS_NEEDED = 1,
-  DYN_DT_NEEDED = 2,
-  DYN_NO_ADD_NEEDED = 4,
-  DYN_NO_NEEDED = 8
-};
-
-enum notice_asneeded_action {
-  notice_as_needed,
-  notice_not_needed,
-  notice_needed
-};
-
-extern bfd_boolean bfd_elf_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-   bfd_boolean);
-extern struct bfd_link_needed_list *bfd_elf_get_needed_list
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_elf_get_bfd_needed_list
-  (bfd *, struct bfd_link_needed_list **);
-extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
-					       const char *, bfd_vma);
-extern bfd_boolean bfd_elf_size_dynamic_sections
-  (bfd *, const char *, const char *, const char *, const char *, const char *,
-   const char * const *, struct bfd_link_info *, struct bfd_section **);
-extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
-  (bfd *, struct bfd_link_info *);
-extern void bfd_elf_set_dt_needed_name
-  (bfd *, const char *);
-extern const char *bfd_elf_get_dt_soname
-  (bfd *);
-extern void bfd_elf_set_dyn_lib_class
-  (bfd *, enum dynamic_lib_link_class);
-extern int bfd_elf_get_dyn_lib_class
-  (bfd *);
-extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
-  (bfd *, struct bfd_link_info *);
-extern int bfd_elf_discard_info
-  (bfd *, struct bfd_link_info *);
-extern unsigned int _bfd_elf_default_action_discarded
-  (struct bfd_section *);
-
-/* Return an upper bound on the number of bytes required to store a
-   copy of ABFD's program header table entries.  Return -1 if an error
-   occurs; bfd_get_error will return an appropriate code.  */
-extern long bfd_get_elf_phdr_upper_bound
-  (bfd *abfd);
-
-/* Copy ABFD's program header table entries to *PHDRS.  The entries
-   will be stored as an array of Elf_Internal_Phdr structures, as
-   defined in include/elf/internal.h.  To find out how large the
-   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
-
-   Return the number of program header table entries read, or -1 if an
-   error occurs; bfd_get_error will return an appropriate code.  */
-extern int bfd_get_elf_phdrs
-  (bfd *abfd, void *phdrs);
-
 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
    reconstruct an ELF file by reading the segments out of remote
    memory based on the ELF file header at EHDR_VMA and the ELF program
@@ -655,9 +589,6 @@ extern bfd *bfd_elf_bfd_from_remote_memory
    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
 			      bfd_size_type len));
 
-extern struct bfd_section *_bfd_elf_tls_setup
-  (bfd *, struct bfd_link_info *);
-
 extern struct bfd_section *
 _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
 
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 4d2707621f..30b2685a83 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -577,72 +577,6 @@ extern bfd_boolean bfd_ecoff_write_accumulated_debug
 
 /* Externally visible ELF routines.  */
 
-struct bfd_link_needed_list
-{
-  struct bfd_link_needed_list *next;
-  bfd *by;
-  const char *name;
-};
-
-enum dynamic_lib_link_class {
-  DYN_NORMAL = 0,
-  DYN_AS_NEEDED = 1,
-  DYN_DT_NEEDED = 2,
-  DYN_NO_ADD_NEEDED = 4,
-  DYN_NO_NEEDED = 8
-};
-
-enum notice_asneeded_action {
-  notice_as_needed,
-  notice_not_needed,
-  notice_needed
-};
-
-extern bfd_boolean bfd_elf_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-   bfd_boolean);
-extern struct bfd_link_needed_list *bfd_elf_get_needed_list
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_elf_get_bfd_needed_list
-  (bfd *, struct bfd_link_needed_list **);
-extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
-					       const char *, bfd_vma);
-extern bfd_boolean bfd_elf_size_dynamic_sections
-  (bfd *, const char *, const char *, const char *, const char *, const char *,
-   const char * const *, struct bfd_link_info *, struct bfd_section **);
-extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
-  (bfd *, struct bfd_link_info *);
-extern void bfd_elf_set_dt_needed_name
-  (bfd *, const char *);
-extern const char *bfd_elf_get_dt_soname
-  (bfd *);
-extern void bfd_elf_set_dyn_lib_class
-  (bfd *, enum dynamic_lib_link_class);
-extern int bfd_elf_get_dyn_lib_class
-  (bfd *);
-extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
-  (bfd *, struct bfd_link_info *);
-extern int bfd_elf_discard_info
-  (bfd *, struct bfd_link_info *);
-extern unsigned int _bfd_elf_default_action_discarded
-  (struct bfd_section *);
-
-/* Return an upper bound on the number of bytes required to store a
-   copy of ABFD's program header table entries.  Return -1 if an error
-   occurs; bfd_get_error will return an appropriate code.  */
-extern long bfd_get_elf_phdr_upper_bound
-  (bfd *abfd);
-
-/* Copy ABFD's program header table entries to *PHDRS.  The entries
-   will be stored as an array of Elf_Internal_Phdr structures, as
-   defined in include/elf/internal.h.  To find out how large the
-   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
-
-   Return the number of program header table entries read, or -1 if an
-   error occurs; bfd_get_error will return an appropriate code.  */
-extern int bfd_get_elf_phdrs
-  (bfd *abfd, void *phdrs);
-
 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
    reconstruct an ELF file by reading the segments out of remote
    memory based on the ELF file header at EHDR_VMA and the ELF program
@@ -662,9 +596,6 @@ extern bfd *bfd_elf_bfd_from_remote_memory
    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
 			      bfd_size_type len));
 
-extern struct bfd_section *_bfd_elf_tls_setup
-  (bfd *, struct bfd_link_info *);
-
 extern struct bfd_section *
 _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
 
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 4458ff7b2a..0a83c17332 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -529,6 +529,13 @@ struct elf_sym_strtab
   unsigned long destshndx_index;
 };
 
+struct bfd_link_needed_list
+{
+  struct bfd_link_needed_list *next;
+  bfd *by;
+  const char *name;
+};
+
 /* ELF linker hash table.  */
 
 struct elf_link_hash_table
@@ -1828,6 +1835,14 @@ typedef struct elf_section_list
   struct elf_section_list *  next;
 } elf_section_list;
 
+enum dynamic_lib_link_class {
+  DYN_NORMAL = 0,
+  DYN_AS_NEEDED = 1,
+  DYN_DT_NEEDED = 2,
+  DYN_NO_ADD_NEEDED = 4,
+  DYN_NO_NEEDED = 8
+};
+
 /* Some private data is stashed away for future use using the tdata pointer
    in the bfd structure.  */
 
@@ -2287,6 +2302,37 @@ extern file_ptr _bfd_elf_assign_file_position_for_section
 extern bfd_boolean _bfd_elf_validate_reloc
   (bfd *, arelent *);
 
+extern bfd_boolean bfd_elf_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
+   bfd_boolean);
+extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
+					       const char *, bfd_vma);
+extern bfd_boolean bfd_elf_size_dynamic_sections
+  (bfd *, const char *, const char *, const char *, const char *, const char *,
+   const char * const *, struct bfd_link_info *, struct bfd_section **);
+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_elf_get_bfd_needed_list
+  (bfd *, struct bfd_link_needed_list **);
+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
+  (bfd *, struct bfd_link_info *);
+extern void bfd_elf_set_dt_needed_name
+  (bfd *, const char *);
+extern const char *bfd_elf_get_dt_soname
+  (bfd *);
+extern void bfd_elf_set_dyn_lib_class
+  (bfd *, enum dynamic_lib_link_class);
+extern int bfd_elf_get_dyn_lib_class
+  (bfd *);
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
+  (bfd *, struct bfd_link_info *);
+extern int bfd_elf_discard_info
+  (bfd *, struct bfd_link_info *);
+extern unsigned int _bfd_elf_default_action_discarded
+  (struct bfd_section *);
+extern struct bfd_section *_bfd_elf_tls_setup
+  (bfd *, struct bfd_link_info *);
+
 extern bfd_boolean _bfd_elf_link_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_omit_section_dynsym_default
@@ -2557,6 +2603,22 @@ extern bfd_boolean _bfd_elf_ppc_set_arch (bfd *);
 extern bfd_boolean _bfd_elf_ppc_merge_fp_attributes
   (bfd *, struct bfd_link_info *);
 
+/* Return an upper bound on the number of bytes required to store a
+   copy of ABFD's program header table entries.  Return -1 if an error
+   occurs; bfd_get_error will return an appropriate code.  */
+extern long bfd_get_elf_phdr_upper_bound
+  (bfd *abfd);
+
+/* Copy ABFD's program header table entries to *PHDRS.  The entries
+   will be stored as an array of Elf_Internal_Phdr structures, as
+   defined in include/elf/internal.h.  To find out how large the
+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
+
+   Return the number of program header table entries read, or -1 if an
+   error occurs; bfd_get_error will return an appropriate code.  */
+extern int bfd_get_elf_phdrs
+  (bfd *abfd, void *phdrs);
+
 /* Exported interface for writing elf corefile notes.  */
 extern char *elfcore_write_note
   (bfd *, char *, int *, const char *, int, const void *, int);
diff --git a/include/ChangeLog b/include/ChangeLog
index c725bfbbc7..580eeb0047 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfdlink.h (enum notice_asneeded_action): Define.
+
 2019-09-17  Maxim Blinov  <maxim.blinov@embecosm.com>
 
 	* opcode/riscv.h (riscv_insn_class): New enum.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index c35469dd11..bb7909a9e2 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -42,6 +42,12 @@ enum bfd_link_discard
   discard_all		/* Discard all locals.  */
 };
 
+enum notice_asneeded_action {
+  notice_as_needed,
+  notice_not_needed,
+  notice_needed
+};
+
 /* Whether to generate ELF common symbols with the STT_COMMON type
    during a relocatable link.  */
 enum bfd_link_elf_stt_common
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 07e4611e00..fe27434bf2 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* deffilep.y: Include bfdlink.h.
+	* ldelf.c: Likewise.
+	* ldelfgen.c: Likewise.
+	* ldver.c: Likewise.
+	* mri.c: Likewise.
+	* emultempl/irix.em: Don't include ld.h, ldmain.h, libiberty.h.
+	Comment.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* emultempl/m68kelf.em: Include elf32-m68k.h.
diff --git a/ld/deffilep.y b/ld/deffilep.y
index 7f74157065..92116e68a8 100644
--- a/ld/deffilep.y
+++ b/ld/deffilep.y
@@ -23,6 +23,7 @@
 #include "libiberty.h"
 #include "safe-ctype.h"
 #include "bfd.h"
+#include "bfdlink.h"
 #include "ld.h"
 #include "ldmisc.h"
 #include "deffile.h"
diff --git a/ld/emultempl/irix.em b/ld/emultempl/irix.em
index ddd5fd69e5..e52c4a2d69 100644
--- a/ld/emultempl/irix.em
+++ b/ld/emultempl/irix.em
@@ -19,11 +19,10 @@
 # MA 02110-1301, USA.
 #
 
-fragment <<EOF
+# This file is sourced from elf.em, and defines extra irix specific
+# functions.
 
-#include "ld.h"
-#include "ldmain.h"
-#include "libiberty.h"
+fragment <<EOF
 
 /* The native IRIX linker will always create a DT_SONAME for shared objects.
    While this shouldn't really be necessary for ABI conformance, some versions
diff --git a/ld/ldelf.c b/ld/ldelf.c
index e43d33d432..3d12e3aa70 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -23,6 +23,7 @@
 #include "libiberty.h"
 #include "filenames.h"
 #include "safe-ctype.h"
+#include "bfdlink.h"
 #include "ld.h"
 #include "ldmain.h"
 #include "ldmisc.h"
diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c
index 98bcecd89f..142a669db9 100644
--- a/ld/ldelfgen.c
+++ b/ld/ldelfgen.c
@@ -20,6 +20,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "bfdlink.h"
 #include "ld.h"
 #include "ldmain.h"
 #include "ldmisc.h"
diff --git a/ld/ldver.c b/ld/ldver.c
index fb2e52f4c5..7be0242ab2 100644
--- a/ld/ldver.c
+++ b/ld/ldver.c
@@ -21,7 +21,7 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "bfdver.h"
-
+#include "bfdlink.h"
 #include "ld.h"
 #include "ldver.h"
 #include "ldexp.h"
diff --git a/ld/mri.c b/ld/mri.c
index 37821e8f4c..7f8d7064e8 100644
--- a/ld/mri.c
+++ b/ld/mri.c
@@ -25,6 +25,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "bfdlink.h"
 #include "ld.h"
 #include "ldexp.h"
 #include "ldlang.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] linker bfd.h tidy
@ 2019-09-23  4:45 gdb-buildbot
  2019-09-23 18:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  4:45 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 640197ac27920a9f0a23283a575dc71f74e8b8ab ***

commit 640197ac27920a9f0a23283a575dc71f74e8b8ab
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:14:20 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:22 2019 +0930

    linker bfd.h tidy
    
    bfd/
            * bfd-in.h (bfd_symbol, bfd_section_already_linked),
            (bfd_elf_version_tree): Delete forward declarations.
            Move other forward decls and remaining elf function decl later.
            (bfd_section_already_linked_table_init),
            (bfd_section_already_linked_table_free),
            (_bfd_handle_already_linked, _bfd_nearby_section),
            (_bfd_fix_excluded_sec_syms): Move to bfdlink.h.
    include/
            * bfdlink.h (struct bfd_section_already_linked): Forward declare.
            (bfd_section_already_linked_table_init),
            (bfd_section_already_linked_table_free),
            (_bfd_handle_already_linked, _bfd_nearby_section),
            (_bfd_fix_excluded_sec_syms): Declare.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 923adb4ea6..43544743ce 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_symbol, bfd_section_already_linked),
+	(bfd_elf_version_tree): Delete forward declarations.
+	Move other forward decls and remaining elf function decl later.
+	(bfd_section_already_linked_table_init),
+	(bfd_section_already_linked_table_free),
+	(_bfd_handle_already_linked, _bfd_nearby_section),
+	(_bfd_fix_excluded_sec_syms): Move to bfdlink.h.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h: Move ecoff function declarations..
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 4d2f09f718..d81cbb791f 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -509,49 +509,6 @@ void bfd_putl16 (bfd_vma, void *);
 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
 
-#if defined(__STDC__) || defined(ALMOST_STDC)
-struct ecoff_debug_info;
-struct ecoff_debug_swap;
-struct ecoff_extr;
-struct bfd_symbol;
-struct bfd_link_info;
-struct bfd_link_hash_entry;
-struct bfd_section_already_linked;
-struct bfd_elf_version_tree;
-#endif
-
-extern bfd_boolean bfd_section_already_linked_table_init (void);
-extern void bfd_section_already_linked_table_free (void);
-extern bfd_boolean _bfd_handle_already_linked
-  (struct bfd_section *, struct bfd_section_already_linked *,
-   struct bfd_link_info *);
-\f
-/* Externally visible ELF routines.  */
-
-/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
-   reconstruct an ELF file by reading the segments out of remote
-   memory based on the ELF file header at EHDR_VMA and the ELF program
-   headers it points to.  If non-zero, SIZE is the known extent of the
-   object.  If not null, *LOADBASEP is filled in with the difference
-   between the VMAs from which the segments were read, and the VMAs
-   the file headers (and hence BFD's idea of each section's VMA) put
-   them at.
-
-   The function TARGET_READ_MEMORY is called to copy LEN bytes from
-   the remote memory at target address VMA into the local buffer at
-   MYADDR; it should return zero on success or an `errno' code on
-   failure.  TEMPL must be a BFD for a target with the word size and
-   byte order found in the remote memory.  */
-extern bfd *bfd_elf_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
-			      bfd_size_type len));
-
-extern struct bfd_section *
-_bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
-
-extern void _bfd_fix_excluded_sec_syms
-  (bfd *, struct bfd_link_info *);
 
 /* mmap hacks */
 
@@ -579,3 +536,31 @@ extern void bfd_free_window
   (bfd_window *);
 extern bfd_boolean bfd_get_file_window
   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
+\f
+/* Externally visible ELF routines.  */
+
+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
+   reconstruct an ELF file by reading the segments out of remote
+   memory based on the ELF file header at EHDR_VMA and the ELF program
+   headers it points to.  If non-zero, SIZE is the known extent of the
+   object.  If not null, *LOADBASEP is filled in with the difference
+   between the VMAs from which the segments were read, and the VMAs
+   the file headers (and hence BFD's idea of each section's VMA) put
+   them at.
+
+   The function TARGET_READ_MEMORY is called to copy LEN bytes from
+   the remote memory at target address VMA into the local buffer at
+   MYADDR; it should return zero on success or an `errno' code on
+   failure.  TEMPL must be a BFD for a target with the word size and
+   byte order found in the remote memory.  */
+extern bfd *bfd_elf_bfd_from_remote_memory
+  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
+			      bfd_size_type len));
+
+/* Forward declarations.  */
+struct ecoff_debug_info;
+struct ecoff_debug_swap;
+struct ecoff_extr;
+struct bfd_link_info;
+struct bfd_link_hash_entry;
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 16fa462430..1c468dc68b 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -516,49 +516,6 @@ void bfd_putl16 (bfd_vma, void *);
 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
 
-#if defined(__STDC__) || defined(ALMOST_STDC)
-struct ecoff_debug_info;
-struct ecoff_debug_swap;
-struct ecoff_extr;
-struct bfd_symbol;
-struct bfd_link_info;
-struct bfd_link_hash_entry;
-struct bfd_section_already_linked;
-struct bfd_elf_version_tree;
-#endif
-
-extern bfd_boolean bfd_section_already_linked_table_init (void);
-extern void bfd_section_already_linked_table_free (void);
-extern bfd_boolean _bfd_handle_already_linked
-  (struct bfd_section *, struct bfd_section_already_linked *,
-   struct bfd_link_info *);
-\f
-/* Externally visible ELF routines.  */
-
-/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
-   reconstruct an ELF file by reading the segments out of remote
-   memory based on the ELF file header at EHDR_VMA and the ELF program
-   headers it points to.  If non-zero, SIZE is the known extent of the
-   object.  If not null, *LOADBASEP is filled in with the difference
-   between the VMAs from which the segments were read, and the VMAs
-   the file headers (and hence BFD's idea of each section's VMA) put
-   them at.
-
-   The function TARGET_READ_MEMORY is called to copy LEN bytes from
-   the remote memory at target address VMA into the local buffer at
-   MYADDR; it should return zero on success or an `errno' code on
-   failure.  TEMPL must be a BFD for a target with the word size and
-   byte order found in the remote memory.  */
-extern bfd *bfd_elf_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
-			      bfd_size_type len));
-
-extern struct bfd_section *
-_bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
-
-extern void _bfd_fix_excluded_sec_syms
-  (bfd *, struct bfd_link_info *);
 
 /* mmap hacks */
 
@@ -586,6 +543,34 @@ extern void bfd_free_window
   (bfd_window *);
 extern bfd_boolean bfd_get_file_window
   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
+\f
+/* Externally visible ELF routines.  */
+
+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
+   reconstruct an ELF file by reading the segments out of remote
+   memory based on the ELF file header at EHDR_VMA and the ELF program
+   headers it points to.  If non-zero, SIZE is the known extent of the
+   object.  If not null, *LOADBASEP is filled in with the difference
+   between the VMAs from which the segments were read, and the VMAs
+   the file headers (and hence BFD's idea of each section's VMA) put
+   them at.
+
+   The function TARGET_READ_MEMORY is called to copy LEN bytes from
+   the remote memory at target address VMA into the local buffer at
+   MYADDR; it should return zero on success or an `errno' code on
+   failure.  TEMPL must be a BFD for a target with the word size and
+   byte order found in the remote memory.  */
+extern bfd *bfd_elf_bfd_from_remote_memory
+  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
+			      bfd_size_type len));
+
+/* Forward declarations.  */
+struct ecoff_debug_info;
+struct ecoff_debug_swap;
+struct ecoff_extr;
+struct bfd_link_info;
+struct bfd_link_hash_entry;
 /* Extracted from init.c.  */
 unsigned int bfd_init (void);
 
diff --git a/include/ChangeLog b/include/ChangeLog
index 580eeb0047..85405429e5 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfdlink.h (struct bfd_section_already_linked): Forward declare.
+	(bfd_section_already_linked_table_init),
+	(bfd_section_already_linked_table_free),
+	(_bfd_handle_already_linked, _bfd_nearby_section),
+	(_bfd_fix_excluded_sec_syms): Declare.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfdlink.h (enum notice_asneeded_action): Define.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index bb7909a9e2..68fc17f55e 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -858,6 +858,20 @@ struct bfd_link_order_reloc
 /* Allocate a new link_order for a section.  */
 extern struct bfd_link_order *bfd_new_link_order (bfd *, asection *);
 
+struct bfd_section_already_linked;
+
+extern bfd_boolean bfd_section_already_linked_table_init (void);
+extern void bfd_section_already_linked_table_free (void);
+extern bfd_boolean _bfd_handle_already_linked
+  (struct bfd_section *, struct bfd_section_already_linked *,
+   struct bfd_link_info *);
+
+extern struct bfd_section *_bfd_nearby_section
+  (bfd *, struct bfd_section *, bfd_vma);
+
+extern void _bfd_fix_excluded_sec_syms
+  (bfd *, struct bfd_link_info *);
+
 /* These structures are used to describe version information for the
    ELF linker.  These structures could be manipulated entirely inside
    BFD, but it would be a pain.  Instead, the regular linker sets up


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] bfd Makefile update
@ 2019-09-23  5:57 gdb-buildbot
  2019-09-23 18:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23  5:57 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT b06252c2b1972d31d3e263ba4a7e79aecec73255 ***

commit b06252c2b1972d31d3e263ba4a7e79aecec73255
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 10:15:02 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 10:27:22 2019 +0930

    bfd Makefile update
    
            * Makefile.am (SOURCE_HFILES): Add many missing .h files.
            * Makefile.in: Regenerate.
            * po/SRC-POTFILES.in: Regenerate.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 43544743ce..1da5d0d48c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* Makefile.am (SOURCE_HFILES): Add many missing .h files.
+	* Makefile.in: Regenerate.
+	* po/SRC-POTFILES.in: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* bfd-in.h (bfd_symbol, bfd_section_already_linked),
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 4703955ee4..f31a734599 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -684,19 +684,35 @@ BUILD_CFILES = \
 
 CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
 
-## This is a list of all .h files which are in the source tree.
+## This is a list of all .h files in the source tree minus those that
+## are processed to produce other .h files
 SOURCE_HFILES = \
-	aout-target.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
-	elf-bfd.h elf-hppa.h elf-linux-core.h elf32-hppa.h \
-	elf64-hppa.h elfcode.h elfcore.h \
+	aout-target.h aoutx.h arc-got.h arc-plt.h \
+	coff-arm.h coff-bfd.h coffcode.h coffswap.h \
+	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h \
+	ecoff-bfd.h ecoffswap.h \
+	elf32-arm.h elf32-avr.h elf32-bfin.h elf32-cr16.h elf32-csky.h \
+	elf32-dlx.h elf32-hppa.h elf32-m68hc1x.h elf32-m68k.h \
+	elf32-metag.h elf32-nds32.h elf32-nios2.h elf32-ppc.h \
+	elf32-rx.h elf32-score.h elf32-sh-relocs.h elf32-spu.h \
+	elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
+	elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
+	elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
+	elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+	elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
+	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h \
 	genlink.h go32stub.h \
 	libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
-	libpei.h libxcoff.h mach-o.h \
+	libpei.h libxcoff.h \
+	mach-o.h \
 	netbsd.h ns32k.h \
-	pef.h pef-traceback.h peicode.h som.h version.h \
-	vms.h xsym.h
+	pef.h pef-traceback.h peicode.h plugin.h \
+	som.h sysdep.h \
+	version.h vms.h \
+	wasm-module.h \
+	xcofflink.h xsym.h
 
-## ... and all .h files which are in the build tree.
+## ... and .h files which are in the build tree, minus config.h and bfd.h
 BUILD_HFILES = \
 	bfdver.h elf32-target.h elf64-target.h targmatch.h bfd_stdint.h
 
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 9c14721fd8..c1cd371852 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -1108,15 +1108,30 @@ BUILD_CFILES = \
 
 CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
 SOURCE_HFILES = \
-	aout-target.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
-	elf-bfd.h elf-hppa.h elf-linux-core.h elf32-hppa.h \
-	elf64-hppa.h elfcode.h elfcore.h \
+	aout-target.h aoutx.h arc-got.h arc-plt.h \
+	coff-arm.h coff-bfd.h coffcode.h coffswap.h \
+	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h \
+	ecoff-bfd.h ecoffswap.h \
+	elf32-arm.h elf32-avr.h elf32-bfin.h elf32-cr16.h elf32-csky.h \
+	elf32-dlx.h elf32-hppa.h elf32-m68hc1x.h elf32-m68k.h \
+	elf32-metag.h elf32-nds32.h elf32-nios2.h elf32-ppc.h \
+	elf32-rx.h elf32-score.h elf32-sh-relocs.h elf32-spu.h \
+	elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
+	elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
+	elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
+	elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+	elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
+	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h \
 	genlink.h go32stub.h \
 	libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
-	libpei.h libxcoff.h mach-o.h \
+	libpei.h libxcoff.h \
+	mach-o.h \
 	netbsd.h ns32k.h \
-	pef.h pef-traceback.h peicode.h som.h version.h \
-	vms.h xsym.h
+	pef.h pef-traceback.h peicode.h plugin.h \
+	som.h sysdep.h \
+	version.h vms.h \
+	wasm-module.h \
+	xcofflink.h xsym.h
 
 BUILD_HFILES = \
 	bfdver.h elf32-target.h elf64-target.h targmatch.h bfd_stdint.h
diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in
index f869c58be3..1c79d72ac4 100644
--- a/bfd/po/SRC-POTFILES.in
+++ b/bfd/po/SRC-POTFILES.in
@@ -7,6 +7,8 @@ aout-tic30.c
 aout32.c
 aout64.c
 aoutx.h
+arc-got.h
+arc-plt.h
 archive.c
 archive64.c
 archures.c
@@ -18,7 +20,9 @@ cache.c
 cf-i386lynx.c
 cisco-core.c
 coff-alpha.c
+coff-arm.h
 coff-bfd.c
+coff-bfd.h
 coff-go32.c
 coff-i386.c
 coff-mips.c
@@ -40,9 +44,11 @@ coffswap.h
 compress.c
 corefile.c
 cpu-aarch64.c
+cpu-aarch64.h
 cpu-alpha.c
 cpu-arc.c
 cpu-arm.c
+cpu-arm.h
 cpu-avr.c
 cpu-bfin.c
 cpu-bpf.c
@@ -59,6 +65,7 @@ cpu-fr30.c
 cpu-frv.c
 cpu-ft32.c
 cpu-h8300.c
+cpu-h8300.h
 cpu-hppa.c
 cpu-i386.c
 cpu-ia64.c
@@ -75,6 +82,7 @@ cpu-m32r.c
 cpu-m68hc11.c
 cpu-m68hc12.c
 cpu-m68k.c
+cpu-m68k.h
 cpu-m9s12x.c
 cpu-m9s12xg.c
 cpu-mcore.c
@@ -126,6 +134,7 @@ cpu-z80.c
 cpu-z8k.c
 dwarf1.c
 dwarf2.c
+ecoff-bfd.h
 ecoff.c
 ecofflink.c
 ecoffswap.h
@@ -134,27 +143,37 @@ elf-bfd.h
 elf-eh-frame.c
 elf-hppa.h
 elf-ifunc.c
+elf-linker-x86.h
 elf-linux-core.h
 elf-m10200.c
 elf-m10300.c
 elf-nacl.c
+elf-nacl.h
 elf-properties.c
+elf-s390.h
 elf-strtab.c
 elf-vxworks.c
+elf-vxworks.h
 elf.c
 elf32-am33lin.c
 elf32-arc.c
 elf32-arm.c
+elf32-arm.h
 elf32-avr.c
+elf32-avr.h
 elf32-bfin.c
+elf32-bfin.h
 elf32-cr16.c
+elf32-cr16.h
 elf32-cr16c.c
 elf32-cris.c
 elf32-crx.c
 elf32-csky.c
+elf32-csky.h
 elf32-d10v.c
 elf32-d30v.c
 elf32-dlx.c
+elf32-dlx.h
 elf32-epiphany.c
 elf32-fr30.c
 elf32-frv.c
@@ -172,34 +191,48 @@ elf32-m32r.c
 elf32-m68hc11.c
 elf32-m68hc12.c
 elf32-m68hc1x.c
+elf32-m68hc1x.h
 elf32-m68k.c
+elf32-m68k.h
 elf32-mcore.c
 elf32-mep.c
 elf32-metag.c
+elf32-metag.h
 elf32-microblaze.c
 elf32-mips.c
 elf32-moxie.c
 elf32-msp430.c
 elf32-mt.c
 elf32-nds32.c
+elf32-nds32.h
 elf32-nios2.c
+elf32-nios2.h
 elf32-or1k.c
 elf32-pj.c
 elf32-ppc.c
+elf32-ppc.h
 elf32-pru.c
 elf32-rl78.c
 elf32-rx.c
+elf32-rx.h
 elf32-s12z.c
 elf32-s390.c
 elf32-score.c
+elf32-score.h
 elf32-score7.c
+elf32-sh-relocs.h
 elf32-sh.c
 elf32-sparc.c
 elf32-spu.c
+elf32-spu.h
 elf32-tic6x.c
+elf32-tic6x.h
 elf32-tilegx.c
+elf32-tilegx.h
 elf32-tilepro.c
+elf32-tilepro.h
 elf32-v850.c
+elf32-v850.h
 elf32-vax.c
 elf32-visium.c
 elf32-wasm32.c
@@ -218,9 +251,11 @@ elf64-mips.c
 elf64-mmix.c
 elf64-nfp.c
 elf64-ppc.c
+elf64-ppc.h
 elf64-s390.c
 elf64-sparc.c
 elf64-tilegx.c
+elf64-tilegx.h
 elf64-x86-64.c
 elf64.c
 elfcode.h
@@ -228,13 +263,20 @@ elfcore.h
 elflink.c
 elfn32-mips.c
 elfxx-aarch64.c
+elfxx-aarch64.h
 elfxx-ia64.c
+elfxx-ia64.h
 elfxx-mips.c
+elfxx-mips.h
 elfxx-riscv.c
+elfxx-riscv.h
 elfxx-sparc.c
+elfxx-sparc.h
 elfxx-tilegx.c
+elfxx-tilegx.h
 elfxx-x86.c
 elfxx-x86.c
+elfxx-x86.h
 format.c
 genlink.h
 go32stub.h
@@ -293,6 +335,7 @@ pei-sh.c
 pei-x86_64.c
 peicode.h
 plugin.c
+plugin.h
 ppcboot.c
 reloc.c
 reloc16.c
@@ -306,6 +349,7 @@ srec.c
 stab-syms.c
 stabs.c
 syms.c
+sysdep.h
 targets.c
 tekhex.c
 trad-core.c
@@ -318,7 +362,9 @@ vms-lib.c
 vms-misc.c
 vms.h
 wasm-module.c
+wasm-module.h
 xcofflink.c
+xcofflink.h
 xsym.c
 xsym.h
 xtensa-isa.c


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PowerPC64 dynamic symbol tweaks
@ 2019-09-23 15:16 gdb-buildbot
  2019-09-23 19:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23 15:16 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ec73ddcd43b588924c95f1a997351314ddf84e39 ***

commit ec73ddcd43b588924c95f1a997351314ddf84e39
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Mon Sep 23 16:06:22 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Mon Sep 23 23:49:25 2019 +0930

    PowerPC64 dynamic symbol tweaks
    
    In check_relocs, bfd_link_pic true means ld is producing a shared
    library or a position independent executable.  !bfd_link_pic means a
    fixed position (ie. static) executable since the relocatable linking
    case is excluded.  So it is appropriate to continue using bfd_link_pic
    when testing whether non-pcrelative relocations should be dynamic, and
    !bfd_link_pic for the special case of ifunc in static executables.
    However, -Bsymbolic shouldn't affect PIEs (they are executables so
    none of their symbols should be overridden) and PIEs can support copy
    relocations, thus bfd_link_executable should be used in those cases
    rather than bfd_link_pic.
    
    I've also removed the test of ELIMINATE_COPY_RELOCS in check_relocs.
    We can sort out what to do regarding copy relocs later, which allows
    the code in check_relocs to be simplified.
    
            * elf64-ppc.c (ppc64_elf_check_relocs): Use bfd_link_executable
            in choosing between different actions for shared library and
            non-shared library cases.  Delete ELIMINATE_COPY_RELOCS test.
            (dec_dynrel_count): Likewise.  Account for ifunc special case.
            (ppc64_elf_adjust_dynamic_symbol): Copy relocs are for executables,
            not non-pic.
            (allocate_dynrelocs): Comment fixes.  Delete ELIMINATE_COPY_RELOCS
            test.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1da5d0d48c..ac0296482b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,14 @@
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Use bfd_link_executable
+	in choosing between different actions for shared library and
+	non-shared library cases.  Delete ELIMINATE_COPY_RELOCS test.
+	(dec_dynrel_count): Likewise.  Account for ifunc special case.
+	(ppc64_elf_adjust_dynamic_symbol): Copy relocs are for executables,
+	not non-pic.
+	(allocate_dynrelocs): Comment fixes.  Delete ELIMINATE_COPY_RELOCS
+	test.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* Makefile.am (SOURCE_HFILES): Add many missing .h files.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index ed8077586b..d5a46dbf21 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -4836,7 +4836,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	case R_PPC64_TOC16_HA:
 	case R_PPC64_TOC16_LO_DS:
 	  sec->has_toc_reloc = 1;
-	  if (h != NULL && !bfd_link_pic (info))
+	  if (h != NULL && bfd_link_executable (info))
 	    {
 	      /* We may need a copy reloc.  */
 	      h->non_got_ref = 1;
@@ -5076,7 +5076,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	case R_PPC64_UADDR32:
 	case R_PPC64_UADDR64:
 	case R_PPC64_TOC:
-	  if (h != NULL && !bfd_link_pic (info))
+	  if (h != NULL && bfd_link_executable (info))
 	    /* We may need a copy reloc.  */
 	    h->non_got_ref = 1;
 
@@ -5106,17 +5106,14 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	     dynamic library if we manage to avoid copy relocs for the
 	     symbol.  */
 	dodyn:
-	  if ((bfd_link_pic (info)
-	       && (must_be_dyn_reloc (info, r_type)
-		   || (h != NULL
-		       && (!SYMBOLIC_BIND (info, h)
-			   || h->root.type == bfd_link_hash_defweak
-			   || !h->def_regular))))
-	      || (ELIMINATE_COPY_RELOCS
-		  && !bfd_link_pic (info)
-		  && h != NULL
-		  && (h->root.type == bfd_link_hash_defweak
-		      || !h->def_regular))
+	  if ((h != NULL
+	       && (h->root.type == bfd_link_hash_defweak
+		   || !h->def_regular))
+	      || (h != NULL
+		  && !bfd_link_executable (info)
+		  && !SYMBOLIC_BIND (info, h))
+	      || (bfd_link_pic (info)
+		  && must_be_dyn_reloc (info, r_type))
 	      || (!bfd_link_pic (info)
 		  && ifunc != NULL))
 	    {
@@ -6425,7 +6422,7 @@ ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
      only references to the symbol are via the global offset table.
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
-  if (bfd_link_pic (info))
+  if (!bfd_link_executable (info))
     return TRUE;
 
   /* If there are no references to this symbol that do not use the
@@ -6904,17 +6901,18 @@ dec_dynrel_count (bfd_vma r_info,
 	return FALSE;
     }
 
-  if ((bfd_link_pic (info)
-       && (must_be_dyn_reloc (info, r_type)
-	   || (h != NULL
-	       && (!SYMBOLIC_BIND (info, h)
-		   || h->root.type == bfd_link_hash_defweak
-		   || !h->def_regular))))
-      || (ELIMINATE_COPY_RELOCS
-	  && !bfd_link_pic (info)
-	  && h != NULL
-	  && (h->root.type == bfd_link_hash_defweak
-	      || !h->def_regular)))
+  if ((h != NULL
+       && (h->root.type == bfd_link_hash_defweak
+	   || !h->def_regular))
+      || (h != NULL
+	  && !bfd_link_executable (info)
+	  && !SYMBOLIC_BIND (info, h))
+      || (bfd_link_pic (info)
+	  && must_be_dyn_reloc (info, r_type))
+      || (!bfd_link_pic (info)
+	  && (h != NULL
+	      ? h->type == STT_GNU_IFUNC
+	      : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)))
     ;
   else
     return TRUE;
@@ -9403,7 +9401,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
   for (gent = h->got.glist; gent != NULL; gent = gent->next)
     if (!gent->is_indirect)
       {
-	/* Make sure this symbol is output as a dynamic symbol.  */
+	/* Ensure we catch all the cases where this symbol should
+	   be made dynamic.  */
 	if (!ensure_undef_dynamic (info, h))
 	  return FALSE;
 
@@ -9438,7 +9437,6 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 	 be defined in regular objects.  For the normal shared case,
 	 discard space for relocs that have become local due to symbol
 	 visibility changes.  */
-
       if (bfd_link_pic (info))
 	{
 	  /* Relocs that use pc_count are those that appear on a call
@@ -9463,24 +9461,27 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 
 	  if (eh->dyn_relocs != NULL)
 	    {
-	      /* Make sure this symbol is output as a dynamic symbol.  */
+	      /* Ensure we catch all the cases where this symbol
+		 should be made dynamic.  */
 	      if (!ensure_undef_dynamic (info, h))
 		return FALSE;
 	    }
 	}
-      else if (ELIMINATE_COPY_RELOCS && h->type != STT_GNU_IFUNC)
+
+      /* For a fixed position executable, discard space for
+	 relocs against symbols which are not dynamic.  */
+      else if (h->type != STT_GNU_IFUNC)
 	{
-	  /* For the non-pic case, discard space for relocs against
-	     symbols which turn out to need copy relocs or are not
-	     dynamic.  */
 	  if (h->dynamic_adjusted
 	      && !h->def_regular
 	      && !ELF_COMMON_DEF_P (h))
 	    {
-	      /* Make sure this symbol is output as a dynamic symbol.  */
+	      /* Ensure we catch all the cases where this symbol
+		 should be made dynamic.  */
 	      if (!ensure_undef_dynamic (info, h))
 		return FALSE;
 
+	      /* But if that didn't work out, discard dynamic relocs.  */
 	      if (h->dynindx == -1)
 		eh->dyn_relocs = NULL;
 	    }


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Make ada_decode not use a static buffer
@ 2019-09-23 19:29 gdb-buildbot
  2019-09-23 20:48 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23 19:29 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT f945dedfd3512bfbca0f1405c8ea85684980e69a ***

commit f945dedfd3512bfbca0f1405c8ea85684980e69a
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Wed Aug 28 15:40:31 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Mon Sep 23 13:36:34 2019 -0500

    Make ada_decode not use a static buffer
    
    This makes it safer to use in general, and also allows using it on a
    background thread in the future.
    
    Inspired by tromey's patch at:
    https://github.com/tromey/gdb/commit/1226cbdfa436297a5dec054d94592c45891afa93
    (however, implemented in a different way)
    
    gdb/ChangeLog:
    
    2019-09-23  Christian Biesinger  <cbiesinger@google.com>
    
            * ada-exp.y (write_object_remaining): Update.
            * ada-lang.c (ada_decode): Return a std::string instead of a char*
            and eliminate the static buffer.
            (ada_decode_symbol): Update.
            (ada_la_decode): Update.
            (ada_sniff_from_mangled_name): Update.
            (is_valid_name_for_wild_match): Update.
            (ada_lookup_name_info::matches): Update and simplify.
            (name_matches_regex): Update.
            (ada_add_global_exceptions): Update.
            * ada-lang.h (ada_decode): Update signature.
            * ada-varobj.c (ada_varobj_describe_simple_array_child): Update.
            * dwarf-index-write.c (debug_names::insert): Update.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4374348c8d..33951b88c6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,19 @@
+2019-09-23  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_object_remaining): Update.
+	* ada-lang.c (ada_decode): Return a std::string instead of a char*
+	and eliminate the static buffer.
+	(ada_decode_symbol): Update.
+	(ada_la_decode): Update.
+	(ada_sniff_from_mangled_name): Update.
+	(is_valid_name_for_wild_match): Update.
+	(ada_lookup_name_info::matches): Update and simplify.
+	(name_matches_regex): Update.
+	(ada_add_global_exceptions): Update.
+	* ada-lang.h (ada_decode): Update signature.
+	* ada-varobj.c (ada_varobj_describe_simple_array_child): Update.
+	* dwarf-index-write.c (debug_names::insert): Update.
+
 2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* solib-svr4.c (svr4_iterate_over_objfiles_in_search_order): Fix
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index c8a7b9c9c7..160e64bc05 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -816,7 +816,7 @@ write_object_renaming (struct parser_state *par_state,
 			  renamed_entity_len);
   ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, &sym_info);
   if (sym_info.symbol == NULL)
-    error (_("Could not find renamed variable: %s"), ada_decode (name));
+    error (_("Could not find renamed variable: %s"), ada_decode (name).c_str ());
   else if (SYMBOL_CLASS (sym_info.symbol) == LOC_TYPEDEF)
     /* We have a renaming of an old-style renaming symbol.  Don't
        trust the block information.  */
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index c34733e754..063b98bde5 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -1105,22 +1105,16 @@ ada_remove_po_subprogram_suffix (const char *encoded, int *len)
 
 /* If ENCODED follows the GNAT entity encoding conventions, then return
    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
-   replaced by ENCODED.
+   replaced by ENCODED.  */
 
-   The resulting string is valid until the next call of ada_decode.
-   If the string is unchanged by decoding, the original string pointer
-   is returned.  */
-
-const char *
+std::string
 ada_decode (const char *encoded)
 {
   int i, j;
   int len0;
   const char *p;
-  char *decoded;
   int at_start_name;
-  static char *decoding_buffer = NULL;
-  static size_t decoding_buffer_size = 0;
+  std::string decoded;
 
   /* With function descriptors on PPC64, the value of a symbol named
      ".FN", if it exists, is the entry point of the function "FN".  */
@@ -1179,8 +1173,7 @@ ada_decode (const char *encoded)
 
   /* Make decoded big enough for possible expansion by operator name.  */
 
-  GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
-  decoded = decoding_buffer;
+  decoded.resize (2 * len0 + 1, 'X');
 
   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
 
@@ -1217,7 +1210,7 @@ ada_decode (const char *encoded)
                             op_len - 1) == 0)
                   && !isalnum (encoded[i + op_len]))
                 {
-                  strcpy (decoded + j, ada_opname_table[k].decoded);
+                  strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
                   at_start_name = 0;
                   i += op_len;
                   j += strlen (ada_opname_table[k].decoded);
@@ -1338,27 +1331,22 @@ ada_decode (const char *encoded)
           j += 1;
         }
     }
-  decoded[j] = '\000';
+  decoded.resize (j);
 
   /* Decoded names should never contain any uppercase character.
      Double-check this, and abort the decoding if we find one.  */
 
-  for (i = 0; decoded[i] != '\0'; i += 1)
+  for (i = 0; i < decoded.length(); ++i)
     if (isupper (decoded[i]) || decoded[i] == ' ')
       goto Suppress;
 
-  if (strcmp (decoded, encoded) == 0)
-    return encoded;
-  else
-    return decoded;
+  return decoded;
 
 Suppress:
-  GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
-  decoded = decoding_buffer;
   if (encoded[0] == '<')
-    strcpy (decoded, encoded);
+    decoded = encoded;
   else
-    xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
+    decoded = '<' + std::string(encoded) + '>';
   return decoded;
 
 }
@@ -1389,13 +1377,13 @@ ada_decode_symbol (const struct general_symbol_info *arg)
 
   if (!gsymbol->ada_mangled)
     {
-      const char *decoded = ada_decode (gsymbol->name);
+      std::string decoded = ada_decode (gsymbol->name);
       struct obstack *obstack = gsymbol->language_specific.obstack;
 
       gsymbol->ada_mangled = 1;
 
       if (obstack != NULL)
-	*resultp = obstack_strdup (obstack, decoded);
+	*resultp = obstack_strdup (obstack, decoded.c_str ());
       else
         {
 	  /* Sometimes, we can't find a corresponding objfile, in
@@ -1404,10 +1392,10 @@ ada_decode_symbol (const struct general_symbol_info *arg)
 	     significant memory leak (FIXME).  */
 
           char **slot = (char **) htab_find_slot (decoded_names_store,
-                                                  decoded, INSERT);
+                                                  decoded.c_str (), INSERT);
 
           if (*slot == NULL)
-            *slot = xstrdup (decoded);
+            *slot = xstrdup (decoded.c_str ());
           *resultp = *slot;
         }
     }
@@ -1418,7 +1406,7 @@ ada_decode_symbol (const struct general_symbol_info *arg)
 static char *
 ada_la_decode (const char *encoded, int options)
 {
-  return xstrdup (ada_decode (encoded));
+  return xstrdup (ada_decode (encoded).c_str ());
 }
 
 /* Implement la_sniff_from_mangled_name for Ada.  */
@@ -1426,11 +1414,11 @@ ada_la_decode (const char *encoded, int options)
 static int
 ada_sniff_from_mangled_name (const char *mangled, char **out)
 {
-  const char *demangled = ada_decode (mangled);
+  std::string demangled = ada_decode (mangled);
 
   *out = NULL;
 
-  if (demangled != mangled && demangled != NULL && demangled[0] != '<')
+  if (demangled != mangled && demangled[0] != '<')
     {
       /* Set the gsymbol language to Ada, but still return 0.
 	 Two reasons for that:
@@ -5993,7 +5981,7 @@ is_name_suffix (const char *str)
 static int
 is_valid_name_for_wild_match (const char *name0)
 {
-  const char *decoded_name = ada_decode (name0);
+  std::string decoded_name = ada_decode (name0);
   int i;
 
   /* If the decoded name starts with an angle bracket, it means that
@@ -6233,19 +6221,16 @@ ada_lookup_name_info::matches
   if (strncmp (sym_name, text, text_len) == 0)
     match = true;
 
+  std::string decoded_name = ada_decode (sym_name);
   if (match && !m_encoded_p)
     {
       /* One needed check before declaring a positive match is to verify
          that iff we are doing a verbatim match, the decoded version
          of the symbol name starts with '<'.  Otherwise, this symbol name
          is not a suitable completion.  */
-      const char *sym_name_copy = sym_name;
-      bool has_angle_bracket;
 
-      sym_name = ada_decode (sym_name);
-      has_angle_bracket = (sym_name[0] == '<');
+      bool has_angle_bracket = (decoded_name[0] == '<');
       match = (has_angle_bracket == m_verbatim_p);
-      sym_name = sym_name_copy;
     }
 
   if (match && !m_verbatim_p)
@@ -6269,7 +6254,7 @@ ada_lookup_name_info::matches
       /* Since we are doing wild matching, this means that TEXT
          may represent an unqualified symbol name.  We therefore must
          also compare TEXT against the unqualified name of the symbol.  */
-      sym_name = ada_unqualified_name (ada_decode (sym_name));
+      sym_name = ada_unqualified_name (decoded_name.c_str ());
 
       if (strncmp (sym_name, text, text_len) == 0)
 	match = true;
@@ -13494,7 +13479,7 @@ static bool
 name_matches_regex (const char *name, compiled_regex *preg)
 {
   return (preg == NULL
-	  || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
+	  || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
 }
 
 /* Add all exceptions defined globally whose name name match
@@ -13527,8 +13512,8 @@ ada_add_global_exceptions (compiled_regex *preg,
 			   lookup_name_info::match_any (),
 			   [&] (const char *search_name)
 			   {
-			     const char *decoded = ada_decode (search_name);
-			     return name_matches_regex (decoded, preg);
+			     std::string decoded = ada_decode (search_name);
+			     return name_matches_regex (decoded.c_str (), preg);
 			   },
 			   NULL,
 			   VARIABLES_DOMAIN);
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 2fc3f523ca..c7279d5ac3 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -227,7 +227,7 @@ extern struct type *ada_get_decoded_type (struct type *type);
 
 extern const char *ada_decode_symbol (const struct general_symbol_info *);
 
-extern const char *ada_decode (const char*);
+extern std::string ada_decode (const char*);
 
 extern enum language ada_update_initial_language (enum language);
 
diff --git a/gdb/ada-varobj.c b/gdb/ada-varobj.c
index a4d553d378..1a5d0ac239 100644
--- a/gdb/ada-varobj.c
+++ b/gdb/ada-varobj.c
@@ -624,6 +624,7 @@ ada_varobj_describe_simple_array_child (struct value *parent_value,
 	 of the array index type when such type qualification is
 	 needed.  */
       const char *index_type_name = NULL;
+      std::string decoded;
 
       /* If the index type is a range type, find the base type.  */
       while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
@@ -634,7 +635,10 @@ ada_varobj_describe_simple_array_child (struct value *parent_value,
 	{
 	  index_type_name = ada_type_name (index_type);
 	  if (index_type_name)
-	    index_type_name = ada_decode (index_type_name);
+	    {
+	      decoded = ada_decode (index_type_name);
+	      index_type_name = decoded.c_str ();
+	    }
 	}
 
       if (index_type_name != NULL)
diff --git a/gdb/dwarf-index-write.c b/gdb/dwarf-index-write.c
index 153c6792f0..0947ba9ec1 100644
--- a/gdb/dwarf-index-write.c
+++ b/gdb/dwarf-index-write.c
@@ -714,13 +714,14 @@ public:
 	   name (of the form "<MumBle>") must be entered without the
 	   angle brackets.  Note that the current index is unusual,
 	   see PR symtab/24820 for details.  */
-	const char *decoded = ada_decode (name);
+	std::string decoded = ada_decode (name);
 	if (decoded[0] == '<')
 	  name = (char *) obstack_copy0 (&m_string_obstack,
-					 decoded + 1,
-					 strlen (decoded + 1) - 1);
+					 decoded.c_str () + 1,
+					 decoded.length () - 2);
 	else
-	  name = obstack_strdup (&m_string_obstack, ada_encode (decoded));
+	  name = obstack_strdup (&m_string_obstack,
+				 ada_encode (decoded.c_str ()));
       }
 
     const auto insertpair


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] sim: Add PRU simulator port
@ 2019-09-23 21:43 gdb-buildbot
  2019-09-23 21:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23 21:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ddd44b7053386b82769c27c871a08c72e589e93e ***

commit ddd44b7053386b82769c27c871a08c72e589e93e
Author:     Dimitar Dimitrov <dimitar@dinux.eu>
AuthorDate: Mon Sep 23 17:54:42 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Mon Sep 23 22:11:02 2019 +0100

    sim: Add PRU simulator port
    
    A simulator port for the TI PRU I/O processor.
    
    v1: https://sourceware.org/ml/gdb-patches/2016-12/msg00143.html
    v2: https://sourceware.org/ml/gdb-patches/2017-02/msg00397.html
    v3: https://sourceware.org/ml/gdb-patches/2017-02/msg00516.html
    v4: https://sourceware.org/ml/gdb-patches/2018-06/msg00484.html
    v5: https://sourceware.org/ml/gdb-patches/2019-08/msg00584.html
    v6: https://sourceware.org/ml/gdb-patches/2019-09/msg00036.html
    
    gdb/ChangeLog:
    
            * NEWS: Mention new simulator port for PRU.
    
    sim/ChangeLog:
    
            * MAINTAINERS: Add myself as PRU maintainer.
            * configure: Regenerated.
            * configure.tgt: Add PRU.
    
    sim/common/ChangeLog:
    
            * gennltvals.sh: Add PRU libgloss target.
            * nltvals.def: Regenerate from the latest libgloss sources.
    
    sim/pru/ChangeLog:
    
            * Makefile.in: New file.
            * aclocal.m4: Regenerated.
            * config.in: Regenerated.
            * configure: Regenerated.
            * configure.ac: New file.
            * interp.c: New file.
            * pru.h: New file.
            * pru.isa: New file.
            * sim-main.h: New file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 33951b88c6..77aab76492 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* NEWS: Mention new simulator port for PRU.
+
 2019-09-23  Christian Biesinger  <cbiesinger@google.com>
 
 	* ada-exp.y (write_object_remaining): Update.
diff --git a/gdb/NEWS b/gdb/NEWS
index 8f9b1d8ac4..779fd91d3a 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -350,6 +350,10 @@ focus, winheight, +, -, >, <
   both debugging standalone Cell/B.E. SPU applications and integrated debugging
   of Cell/B.E. applications that use both the PPU and SPU architectures.
 
+* New Simulators
+
+TI PRU					pru-*-elf
+
 *** Changes in GDB 8.3
 
 * GDB and GDBserver now support access to additional registers on
diff --git a/sim/ChangeLog b/sim/ChangeLog
index d4c7d166d2..7443e8442d 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* MAINTAINERS: Add myself as PRU maintainer.
+	* configure: Regenerated.
+	* configure.tgt: Add PRU.
+
 2019-09-20  Alan Modra  <amodra@gmail.com>
 
 	* ppc/emul_generic.c (emul_add_tree_options): Delete old bfd code.
diff --git a/sim/MAINTAINERS b/sim/MAINTAINERS
index 3b9b08c40d..4ca67cfd1d 100644
--- a/sim/MAINTAINERS
+++ b/sim/MAINTAINERS
@@ -29,6 +29,7 @@ mips I-IV	Maciej W. Rozycki <macro@linux-mips.org>
 moxie		Anthony Green <green@moxielogic.com>
 msp430		Nick Clifton <nickc@redhat.com>
 or1k		Stafford Horne <shorne@gmail.com>
+pru		Dimitar Dimitrov <dimitar@dinux.eu>
 sh		(global maintainers)
 sh64		Dave Brolley <brolley@redhat.com>
 common		Frank Ch. Eigler <fche@redhat.com>
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index b84980bc95..a7ec5c7121 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* gennltvals.sh: Add PRU libgloss target.
+	* nltvals.def: Regenerate from the latest libgloss sources.
+
 2019-06-13  Stafford Horne  <shorne@gmail.com>
 
 	* cgen-accfp.c (unorderedsf, unordereddf): New functions.
diff --git a/sim/common/gennltvals.sh b/sim/common/gennltvals.sh
index 7027c35ad4..79180335b6 100755
--- a/sim/common/gennltvals.sh
+++ b/sim/common/gennltvals.sh
@@ -95,3 +95,7 @@ $shell ${srccom}/gentvals.sh $target sys ${newlibroot}/$dir \
 dir=libgloss target=lm32
 $shell ${srccom}/gentvals.sh $target sys ${newlibroot}/$dir \
 	"syscall.h" 'SYS_[_[:alnum:]]*' "${cpp}"
+
+dir=libgloss target=pru
+$shell ${srccom}/gentvals.sh $target sys ${newlibroot}/$dir \
+	"syscall.h" 'SYS_[_[:alnum:]]*' "${cpp}"
diff --git a/sim/common/nltvals.def b/sim/common/nltvals.def
index 3f82d47b6b..92ccc9aded 100644
--- a/sim/common/nltvals.def
+++ b/sim/common/nltvals.def
@@ -574,3 +574,34 @@
 /* end lm32 sys target macros */
 #endif
 #endif
+#ifdef NL_TARGET_pru
+#ifdef sys_defs
+/* from syscall.h */
+/* begin pru sys target macros */
+ { "SYS_argc", 22 },
+ { "SYS_argn", 24 },
+ { "SYS_argnlen", 23 },
+ { "SYS_argv", 13 },
+ { "SYS_argvlen", 12 },
+ { "SYS_chdir", 14 },
+ { "SYS_chmod", 16 },
+ { "SYS_close", 3 },
+ { "SYS_exit", 1 },
+ { "SYS_fstat", 10 },
+ { "SYS_getpid", 8 },
+ { "SYS_gettimeofday", 19 },
+ { "SYS_kill", 9 },
+ { "SYS_link", 21 },
+ { "SYS_lseek", 6 },
+ { "SYS_open", 2 },
+ { "SYS_read", 4 },
+ { "SYS_reconfig", 25 },
+ { "SYS_stat", 15 },
+ { "SYS_time", 18 },
+ { "SYS_times", 20 },
+ { "SYS_unlink", 7 },
+ { "SYS_utime", 17 },
+ { "SYS_write", 5 },
+/* end pru sys target macros */
+#endif
+#endif
diff --git a/sim/configure b/sim/configure
index ca3fd673ab..72f95cd5c7 100755
--- a/sim/configure
+++ b/sim/configure
@@ -686,6 +686,7 @@ mn10300
 moxie
 msp430
 or1k
+pru
 rl78
 rx
 sh64
@@ -3837,6 +3838,13 @@ subdirs="$subdirs aarch64"
   subdirs="$subdirs or1k"
 
 
+       ;;
+   pru*-*-*)
+
+  sim_arch=pru
+  subdirs="$subdirs pru"
+
+
        ;;
    rl78-*-*)
 
diff --git a/sim/configure.tgt b/sim/configure.tgt
index a6dbd1af83..8a8e03d96f 100644
--- a/sim/configure.tgt
+++ b/sim/configure.tgt
@@ -79,6 +79,9 @@ case "${target}" in
    or1k-*-* | or1knd-*-*)
        SIM_ARCH(or1k)
        ;;
+   pru*-*-*)
+       SIM_ARCH(pru)
+       ;;
    rl78-*-*)
        SIM_ARCH(rl78)
        ;;
diff --git a/sim/pru/ChangeLog b/sim/pru/ChangeLog
new file mode 100644
index 0000000000..bccc3efd53
--- /dev/null
+++ b/sim/pru/ChangeLog
@@ -0,0 +1,11 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* Makefile.in: New file.
+	* aclocal.m4: Regenerated.
+	* config.in: Regenerated.
+	* configure: Regenerated.
+	* configure.ac: New file.
+	* interp.c: New file.
+	* pru.h: New file.
+	* pru.isa: New file.
+	* sim-main.h: New file.
diff --git a/sim/pru/Makefile.in b/sim/pru/Makefile.in
new file mode 100644
index 0000000000..5235a5ff07
--- /dev/null
+++ b/sim/pru/Makefile.in
@@ -0,0 +1,29 @@
+#    Makefile template for Configure for the PRU sim library.
+#    Copyright (C) 1990-2019 Free Software Foundation, Inc.
+#    Written by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+#    Based on the MCore sim library
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+## COMMON_PRE_CONFIG_FRAG
+
+SIM_OBJS = \
+	$(SIM_NEW_COMMON_OBJS) \
+	interp.o \
+	sim-resume.o
+
+NL_TARGET = -DNL_TARGET_pru
+
+## COMMON_POST_CONFIG_FRAG
diff --git a/sim/pru/aclocal.m4 b/sim/pru/aclocal.m4
new file mode 100644
index 0000000000..e9f11c775c
--- /dev/null
+++ b/sim/pru/aclocal.m4
@@ -0,0 +1,119 @@
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 2003-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
diff --git a/sim/pru/config.in b/sim/pru/config.in
new file mode 100644
index 0000000000..7c667a1c0d
--- /dev/null
+++ b/sim/pru/config.in
@@ -0,0 +1,248 @@
+/* config.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Sim debug setting */
+#undef DEBUG
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <fpu_control.h> header file. */
+#undef HAVE_FPU_CONTROL_H
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `getrusage' function. */
+#undef HAVE_GETRUSAGE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+#undef HAVE_LIBSOCKET
+
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* Define to 1 if you have the `posix_fallocate' function. */
+#undef HAVE_POSIX_FALLOCATE
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if the system has the type `socklen_t'. */
+#undef HAVE_SOCKLEN_T
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if `st_atime' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIME
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if `st_ctime' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_CTIME
+
+/* Define to 1 if `st_dev' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_DEV
+
+/* Define to 1 if `st_gid' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_GID
+
+/* Define to 1 if `st_ino' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_INO
+
+/* Define to 1 if `st_mode' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MODE
+
+/* Define to 1 if `st_mtime' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MTIME
+
+/* Define to 1 if `st_nlink' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_NLINK
+
+/* Define to 1 if `st_rdev' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_RDEV
+
+/* Define to 1 if `st_size' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_SIZE
+
+/* Define to 1 if `st_uid' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_UID
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#undef HAVE_SYS_TIMES_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `time' function. */
+#undef HAVE_TIME
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the `truncate' function. */
+#undef HAVE_TRUNCATE
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <windows.h> header file. */
+#undef HAVE_WINDOWS_H
+
+/* Define to 1 if you have the `__setfpucw' function. */
+#undef HAVE___SETFPUCW
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Name of this package. */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Additional package description */
+#undef PKGVERSION
+
+/* Sim profile settings */
+#undef PROFILE
+
+/* Bug reporting address */
+#undef REPORT_BUGS_TO
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Sim assert settings */
+#undef WITH_ASSERT
+
+/* Sim debug setting */
+#undef WITH_DEBUG
+
+/* Sim default environment */
+#undef WITH_ENVIRONMENT
+
+/* Sim profile settings */
+#undef WITH_PROFILE
+
+/* How to route I/O */
+#undef WITH_STDIO
+
+/* Sim trace settings */
+#undef WITH_TRACE
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff --git a/sim/pru/configure b/sim/pru/configure
new file mode 100755
index 0000000000..aa99e9e984
--- /dev/null
+++ b/sim/pru/configure
@@ -0,0 +1,15973 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="Makefile.in"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+cgen_breaks
+REPORT_BUGS_TEXI
+REPORT_BUGS_TO
+PKGVERSION
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+lt_cv_dlopen_libs
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+AWK
+STRIP
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+PLUGINS_FALSE
+PLUGINS_TRUE
+zlibinc
+zlibdir
+CATOBJEXT
+GENCAT
+INSTOBJEXT
+DATADIRNAME
+CATALOGS
+POSUB
+GMSGFMT
+XGETTEXT
+INCINTL
+LIBINTL_DEP
+LIBINTL
+USE_NLS
+GMAKE_FALSE
+GMAKE_TRUE
+MAKE
+CCDEPMODE
+DEPDIR
+am__leading_dot
+PACKAGE
+RANLIB
+AR
+HDEFINES
+CC_FOR_BUILD
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+EGREP
+GREP
+CPP
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+WERROR_CFLAGS
+WARN_CFLAGS
+sim_reserved_bits
+sim_inline
+sim_hw
+sim_hw_objs
+sim_hw_cflags
+sim_default_model
+sim_scache
+sim_float
+sim_endian
+sim_bitsize
+sim_alignment
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_system_zlib
+enable_plugins
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_maintainer_mode
+enable_sim_debug
+enable_sim_stdio
+enable_sim_trace
+enable_sim_profile
+enable_sim_assert
+enable_sim_environment
+enable_sim_inline
+with_pkgversion
+with_bugurl
+enable_sim_endian
+enable_sim_alignment
+enable_werror
+enable_build_warnings
+enable_sim_build_warnings
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-plugins        Enable support for plugins
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-sim-debug=opts Enable debugging flags (for developers of the sim
+                          itself)
+  --enable-sim-stdio      Specify whether to use stdio for console
+                          input/output
+  --enable-sim-trace=opts Enable tracing of simulated programs
+  --enable-sim-profile=opts
+                          Enable profiling flags
+  --enable-sim-assert     Specify whether to perform random assertions
+  --enable-sim-environment=environment
+                          Specify mixed, user, virtual or operating
+                          environment
+  --enable-sim-inline=inlines
+                          Specify which functions should be inlined
+  --enable-sim-endian=endian
+                          Specify target byte endian orientation
+  --enable-sim-alignment=align
+                          Specify strict, nonstrict or forced alignment of
+                          memory accesses
+  --enable-werror         treat compile warnings as errors
+  --enable-build-warnings enable build-time compiler warnings if gcc is used
+  --enable-sim-build-warnings
+                          enable SIM specific build-time compiler warnings if
+                          gcc is used
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-system-zlib      use installed libz
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pkgversion=PKG   Use PKG in the version string in place of "SIM"
+  --with-bugurl=URL       Direct users to URL to report a bug
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# This file contains common code used by all simulators.
+#
+# SIM_AC_COMMON invokes AC macros used by all simulators and by the common
+# directory.  It is intended to be invoked before any target specific stuff.
+# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile.
+# It is intended to be invoked last.
+#
+# The simulator's configure.ac should look like:
+#
+# dnl Process this file with autoconf to produce a configure script.
+# AC_PREREQ(2.64)dnl
+# AC_INIT(Makefile.in)
+# sinclude(../common/aclocal.m4)
+#
+# SIM_AC_COMMON
+#
+# ... target specific stuff ...
+#
+# SIM_AC_OUTPUT
+
+# Include global overrides and fixes for Autoconf.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+# LT_INIT
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+
+
+# Initialize.
+
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+
+
+# Initialize.
+
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+
+
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+
+
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+
+
+
+# C support is built-in for now
+
+
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_TAG_COMPILER
+# ----------------
+# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+# _LT_COMPILER_OPTION
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+# _LT_LINKER_OPTION
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# LT_CMD_MAX_LEN
+#---------------
+# LT_CMD_MAX_LEN
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+# LT_SYS_DLOPEN_SELF
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+# LT_PATH_LD
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+# LT_PATH_NM
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# LT_LIB_M
+# --------
+# check for math library
+# LT_LIB_M
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+ # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# LT_PROG_RC
+# ----------
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+# _LT_DECL_SED
+
+#m4_ifndef
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+# win32-dll
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_SHARED
+
+
+
+
+# Old names:
+
+
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_STATIC
+
+
+
+
+# Old names:
+
+
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# _LT_ENABLE_FAST_INSTALL
+
+
+
+
+# Old names:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+# _LT_WITH_PIC
+
+
+
+
+# Old name:
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+
+
+
+
+
+
+
+
+
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+
+
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+
+
+
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+
+
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3134 ltversion.m4
+# This file is part of GNU Libtool
+
+
+
+
+
+
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##                                                          -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# Based on depend.m4 from automake 1.9, modified for standalone use in
+# an environment where GNU make is required.
+
+# ZW_PROG_COMPILER_DEPENDENCIES
+# -----------------------------
+# Variant of _AM_DEPENDENCIES which just does the dependency probe and
+# sets fooDEPMODE accordingly.  Cache-variable compatible with
+# original; not side-effect compatible.  As the users of this macro
+# may require accurate dependencies for correct builds, it does *not*
+# honor --disable-dependency-checking, and failure to detect a usable
+# method is an error.  depcomp is assumed to be located in
+# $ac_aux_dir.
+#
+# FIXME: Should use the Autoconf 2.5x language-selection mechanism.
+
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+
+
+# ZW_CREATE_DEPDIR
+# ----------------
+# As AM_SET_DEPDIR, but also create the directory at config.status time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# intl sister-directory configuration rules.
+#
+
+# The idea behind this macro is that there's no need to repeat all the
+# autoconf probes done by the intl directory - it's already done them
+# for us.  In fact, there's no need even to look at the cache for the
+# answers.  All we need to do is nab a few pieces of information.
+# The intl directory is set up to make this easy, by generating a
+# small file which can be sourced as a shell script; then we produce
+# the necessary substitutions and definitions for this directory.
+
+
+
+# Autoconf M4 include file defining utility macros for complex Canadian
+# cross builds.
+
+
+
+
+
+
+
+
+
+####
+# _NCN_TOOL_PREFIXES:  Some stuff that oughtta be done in AC_CANONICAL_SYSTEM
+# or AC_INIT.
+# These demand that AC_CANONICAL_SYSTEM be called beforehand.
+
+####
+# NCN_STRICT_CHECK_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path])
+# Like plain AC_CHECK_TOOLS, but require prefix if build!=host.
+
+
+####
+# NCN_STRICT_CHECK_TARGET_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path])
+# Like CVS Autoconf AC_CHECK_TARGET_TOOLS, but require prefix if build!=target.
+
+
+
+# Backported from Autoconf 2.5x; can go away when and if
+# we switch.  Put the OS path separator in $PATH_SEPARATOR.
+
+
+
+
+
+
+
+
+# ACX_HAVE_GCC_FOR_TARGET
+# Check if the variable GCC_FOR_TARGET really points to a GCC binary.
+
+
+# ACX_CHECK_INSTALLED_TARGET_TOOL(VAR, PROG)
+# Searching for installed target binutils.  We need to take extra care,
+# else we may find the wrong assembler, linker, etc., and lose.
+#
+# First try --with-build-time-tools, if specified.
+#
+# For build != host, we ask the installed GCC for the name of the tool it
+# uses, and accept it if it is an absolute path.  This is because the
+# only good choice for a compiler is the same GCC version that is being
+# installed (or we couldn't make target libraries), and we assume that
+# on the host system we'll have not only the same GCC version, but also
+# the same binutils version.
+#
+# For build == host, search the same directories that the installed
+# compiler will search.  We used to do this for the assembler, linker,
+# and nm only; for simplicity of configuration, however, we extend this
+# criterion to tools (such as ar and ranlib) that are never invoked by
+# the compiler, to avoid mismatches.
+#
+# Also note we have to check MD_EXEC_PREFIX before checking the user's path
+# if build == target.  This makes the most sense only when bootstrapping,
+# but we also do so when build != host.  In this case, we hope that the
+# build and host systems will have similar contents of MD_EXEC_PREFIX.
+#
+# If we do not find a suitable binary, then try the user's path.
+
+
+###
+# AC_PROG_CPP_WERROR
+# Used for autoconf 2.5x to force AC_PREPROC_IFELSE to reject code which
+# triggers warnings from the preprocessor.  Will be in autoconf 2.58.
+# For now, using this also overrides header checks to use only the
+# preprocessor (matches 2.13 behavior; matching 2.58's behavior is a
+# bit harder from here).
+# Eventually autoconf will default to checking headers with the compiler
+# instead, and we'll have to do this differently.
+
+# AC_PROG_CPP_WERROR
+
+# Test for GNAT.
+# We require the gnatbind & gnatmake programs, as well as a compiler driver
+# that understands Ada.  We use the user's CC setting, already found, and
+# possibly add $1 to the command-line parameters.
+#
+# Sets the shell variable have_gnat to yes or no as appropriate, and
+# substitutes GNATBIND and GNATMAKE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.7a'
+macro_revision='1.3134'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# autoconf.info says this should be called right after AC_INIT.
+ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+
+
+
+# Put a plausible default for CC_FOR_BUILD in Makefile.
+if test -z "$CC_FOR_BUILD"; then
+  if test "x$cross_compiling" = "xno"; then
+    CC_FOR_BUILD='$(CC)'
+  else
+    CC_FOR_BUILD=gcc
+  fi
+fi
+
+
+
+
+AR=${AR-ar}
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+# Some of the common include files depend on bfd.h, and bfd.h checks
+# that config.h is included first by testing that the PACKAGE macro
+# is defined.
+PACKAGE=sim
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+
+# Dependency checking.
+ac_config_commands="$ac_config_commands depdir"
+
+
+depcc="$CC"   am_compiler_list=
+
+am_depcomp=$ac_aux_dir/depcomp
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    if test $depmode = none; then break; fi
+
+    $as_echo "$as_me:$LINENO: trying $depmode" >&5
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "include sub/conftest.Po" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    depcmd="depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c"
+    echo "| $depcmd" | sed -e 's/  */ /g' >&5
+    if env $depcmd > conftest.err 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po >>conftest.err 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po >>conftest.err 2>&1 &&
+       ${MAKE-make} -s -f confmf >>conftest.err 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+	$as_echo "$as_me:$LINENO: success" >&5
+        break
+      fi
+    fi
+    $as_echo "$as_me:$LINENO: failure, diagnostics are:" >&5
+    sed -e 's/^/| /' < conftest.err >&5
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+if test x${am_cv_CC_dependencies_compiler_type-none} = xnone
+then as_fn_error $? "no usable dependency style found" "$LINENO" 5
+else CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+fi
+
+
+# Check for the 'make' the user wants to use.
+for ac_prog in make
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MAKE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MAKE"; then
+  ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MAKE="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKE=$ac_cv_prog_MAKE
+if test -n "$MAKE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5
+$as_echo "$MAKE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MAKE" && break
+done
+
+MAKE_IS_GNU=
+case "`$MAKE --version 2>&1 | sed 1q`" in
+  *GNU*)
+    MAKE_IS_GNU=yes
+    ;;
+esac
+ if test "$MAKE_IS_GNU" = yes; then
+  GMAKE_TRUE=
+  GMAKE_FALSE='#'
+else
+  GMAKE_TRUE='#'
+  GMAKE_FALSE=
+fi
+
+
+ALL_LINGUAS=
+# If we haven't got the data from the intl directory,
+# assume NLS is disabled.
+USE_NLS=no
+LIBINTL=
+LIBINTL_DEP=
+INCINTL=
+XGETTEXT=
+GMSGFMT=
+POSUB=
+
+if test -f  ../../intl/config.intl; then
+  .  ../../intl/config.intl
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+if test x"$USE_NLS" != xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+  # Look for .po and .gmo files in the source directory.
+  CATALOGS=
+  XLINGUAS=
+  for cat in $srcdir/po/*.gmo $srcdir/po/*.po; do
+    # If there aren't any .gmo files the shell will give us the
+    # literal string "../path/to/srcdir/po/*.gmo" which has to be
+    # weeded out.
+    case "$cat" in *\**)
+      continue;;
+    esac
+    # The quadruple backslash is collapsed to a double backslash
+    # by the backticks, then collapsed again by the double quotes,
+    # leaving us with one backslash in the sed expression (right
+    # before the dot that mustn't act as a wildcard).
+    cat=`echo $cat | sed -e "s!$srcdir/po/!!" -e "s!\\\\.po!.gmo!"`
+    lang=`echo $cat | sed -e "s!\\\\.gmo!!"`
+    # The user is allowed to set LINGUAS to a list of languages to
+    # install catalogs for.  If it's empty that means "all of them."
+    if test "x$LINGUAS" = x; then
+      CATALOGS="$CATALOGS $cat"
+      XLINGUAS="$XLINGUAS $lang"
+    else
+      case "$LINGUAS" in *$lang*)
+        CATALOGS="$CATALOGS $cat"
+        XLINGUAS="$XLINGUAS $lang"
+        ;;
+      esac
+    fi
+  done
+  LINGUAS="$XLINGUAS"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+
+
+    DATADIRNAME=share
+
+  INSTOBJEXT=.mo
+
+  GENCAT=gencat
+
+  CATOBJEXT=.gmo
+
+fi
+
+# Check for common headers.
+# FIXME: Seems to me this can cause problems for i386-windows hosts.
+# At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*.
+for ac_header in stdlib.h string.h strings.h unistd.h time.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in sys/time.h sys/times.h sys/resource.h sys/mman.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in fcntl.h fpu_control.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in dlfcn.h errno.h sys/stat.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in getrusage time sigaction __setfpucw
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in mmap munmap lstat truncate ftruncate posix_fallocate
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ac_fn_c_check_member "$LINENO" "struct stat" "st_dev" "ac_cv_member_struct_stat_st_dev" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_dev" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_DEV 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_ino" "ac_cv_member_struct_stat_st_ino" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_ino" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_INO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mode" "ac_cv_member_struct_stat_st_mode" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_mode" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MODE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_nlink" "ac_cv_member_struct_stat_st_nlink" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_nlink" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_NLINK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_uid" "ac_cv_member_struct_stat_st_uid" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_uid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_UID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_gid" "ac_cv_member_struct_stat_st_gid" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_gid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_GID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_rdev" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_size" "ac_cv_member_struct_stat_st_size" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_atime" "ac_cv_member_struct_stat_st_atime" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_atime" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime" "ac_cv_member_struct_stat_st_mtime" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_mtime" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_ctime" "ac_cv_member_struct_stat_st_ctime" "#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+"
+if test "x$ac_cv_member_struct_stat_st_ctime" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_CTIME 1
+_ACEOF
+
+
+fi
+
+ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
+#include <sys/socket.h>
+
+"
+if test "x$ac_cv_type_socklen_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SOCKLEN_T 1
+_ACEOF
+
+
+fi
+
+
+# Check for socket libraries
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bind in -lsocket" >&5
+$as_echo_n "checking for bind in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_bind+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char bind ();
+int
+main ()
+{
+return bind ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_bind=yes
+else
+  ac_cv_lib_socket_bind=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_bind" >&5
+$as_echo "$ac_cv_lib_socket_bind" >&6; }
+if test "x$ac_cv_lib_socket_bind" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSOCKET 1
+_ACEOF
+
+  LIBS="-lsocket $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNSL 1
+_ACEOF
+
+  LIBS="-lnsl $LIBS"
+
+fi
+
+
+# BFD conditionally uses zlib, so we must link it in if libbfd does, by
+# using the same condition.
+
+  # Use the system's zlib library.
+  zlibdir="-L\$(top_builddir)/../zlib"
+  zlibinc="-I\$(top_srcdir)/../zlib"
+
+# Check whether --with-system-zlib was given.
+if test "${with_system_zlib+set}" = set; then :
+  withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
+    zlibdir=
+    zlibinc=
+  fi
+
+fi
+
+
+
+
+
+# BFD uses libdl when when plugins enabled.
+
+  maybe_plugins=no
+  for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+ maybe_plugins=yes
+fi
+
+done
+
+  for ac_header in windows.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_windows_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WINDOWS_H 1
+_ACEOF
+ maybe_plugins=yes
+fi
+
+done
+
+
+  # Check whether --enable-plugins was given.
+if test "${enable_plugins+set}" = set; then :
+  enableval=$enable_plugins; case "${enableval}" in
+      no) plugins=no ;;
+      *) plugins=yes
+         if test "$maybe_plugins" != "yes" ; then
+	   as_fn_error $? "Building with plugin support requires a host that supports dlopen." "$LINENO" 5
+	 fi ;;
+     esac
+else
+  plugins=$maybe_plugins
+
+fi
+
+  if test "$plugins" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5
+$as_echo_n "checking for library containing dlsym... " >&6; }
+if ${ac_cv_search_dlsym+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlsym ();
+int
+main ()
+{
+return dlsym ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_dlsym=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dlsym+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dlsym+:} false; then :
+
+else
+  ac_cv_search_dlsym=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5
+$as_echo "$ac_cv_search_dlsym" >&6; }
+ac_res=$ac_cv_search_dlsym
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+  fi
+
+ if test "$plugins" = yes; then
+  PLUGINS_TRUE=
+  PLUGINS_FALSE='#'
+else
+  PLUGINS_TRUE='#'
+  PLUGINS_FALSE=
+fi
+
+
+
+
+
+# Set options
+enable_dlopen=yes
+
+
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec=
+	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld='+b $libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LDFLAGS="$save_LDFLAGS"
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 12882 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 12988 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+. ${srcdir}/../../bfd/configure.host
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim debug setting" >&5
+$as_echo_n "checking for sim debug setting... " >&6; }
+sim_debug="0"
+# Check whether --enable-sim-debug was given.
+if test "${enable_sim_debug+set}" = set; then :
+  enableval=$enable_sim_debug; case "${enableval}" in
+  yes) sim_debug="7";;
+  no)  sim_debug="0";;
+  *)   sim_debug="($enableval)";;
+esac
+fi
+if test "$sim_debug" != "0"; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEBUG $sim_debug
+_ACEOF
+
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_DEBUG $sim_debug
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_debug" >&5
+$as_echo "$sim_debug" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim stdio debug behavior" >&5
+$as_echo_n "checking for sim stdio debug behavior... " >&6; }
+sim_stdio="0"
+# Check whether --enable-sim-stdio was given.
+if test "${enable_sim_stdio+set}" = set; then :
+  enableval=$enable_sim_stdio; case "${enableval}" in
+  yes)	sim_stdio="DO_USE_STDIO";;
+  no)	sim_stdio="DONT_USE_STDIO";;
+  *)	as_fn_error $? "Unknown value $enableval passed to --enable-sim-stdio" "$LINENO" 5;;
+esac
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_STDIO $sim_stdio
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_stdio" >&5
+$as_echo "$sim_stdio" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim trace settings" >&5
+$as_echo_n "checking for sim trace settings... " >&6; }
+sim_trace="~TRACE_debug"
+# Check whether --enable-sim-trace was given.
+if test "${enable_sim_trace+set}" = set; then :
+  enableval=$enable_sim_trace; case "${enableval}" in
+  yes)	sim_trace="-1";;
+  no)	sim_trace="0";;
+  [-0-9]*)
+	sim_trace="'(${enableval})'";;
+  [[:lower:]]*)
+	sim_trace=""
+	for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
+	  if test x"$sim_trace" = x; then
+	    sim_trace="(TRACE_$x"
+	  else
+	    sim_trace="${sim_trace}|TRACE_$x"
+	  fi
+	done
+	sim_trace="$sim_trace)" ;;
+esac
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_TRACE $sim_trace
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_trace" >&5
+$as_echo "$sim_trace" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sim profile settings" >&5
+$as_echo_n "checking for sim profile settings... " >&6; }
+profile="1"
+sim_profile="-1"
+# Check whether --enable-sim-profile was given.
+if test "${enable_sim_profile+set}" = set; then :
+  enableval=$enable_sim_profile; case "${enableval}" in
+  yes)	profile="1" sim_profile="-1";;
+  no)	profile="0" sim_profile="0";;
+  [-0-9]*)
+	profile="(${enableval})" sim_profile="(${enableval})";;
+  [a-z]*)
+    profile="1"
+	sim_profile=""
+	for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
+	  if test x"$sim_profile" = x; then
+	    sim_profile="(PROFILE_$x"
+	  else
+	    sim_profile="${sim_profile}|PROFILE_$x"
+	  fi
+	done
+	sim_profile="$sim_profile)" ;;
+esac
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define PROFILE $profile
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_PROFILE $sim_profile
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_profile" >&5
+$as_echo "$sim_profile" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable sim asserts" >&5
+$as_echo_n "checking whether to enable sim asserts... " >&6; }
+sim_assert="1"
+# Check whether --enable-sim-assert was given.
+if test "${enable_sim_assert+set}" = set; then :
+  enableval=$enable_sim_assert; case "${enableval}" in
+  yes)	sim_assert="1";;
+  no)	sim_assert="0";;
+  *)	as_fn_error $? "--enable-sim-assert does not take a value" "$LINENO" 5;;
+esac
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_ASSERT $sim_assert
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_assert" >&5
+$as_echo "$sim_assert" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking default sim environment setting" >&5
+$as_echo_n "checking default sim environment setting... " >&6; }
+sim_environment="ALL_ENVIRONMENT"
+# Check whether --enable-sim-environment was given.
+if test "${enable_sim_environment+set}" = set; then :
+  enableval=$enable_sim_environment; case "${enableval}" in
+  all | ALL)             sim_environment="ALL_ENVIRONMENT";;
+  user | USER)           sim_environment="USER_ENVIRONMENT";;
+  virtual | VIRTUAL)     sim_environment="VIRTUAL_ENVIRONMENT";;
+  operating | OPERATING) sim_environment="OPERATING_ENVIRONMENT";;
+  *)   as_fn_error $? "Unknown value $enableval passed to --enable-sim-environment" "$LINENO" 5;;
+esac
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_ENVIRONMENT $sim_environment
+_ACEOF
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_environment" >&5
+$as_echo "$sim_environment" >&6; }
+
+
+sim_inline="-DDEFAULT_INLINE=0"
+# Check whether --enable-sim-inline was given.
+if test "${enable_sim_inline+set}" = set; then :
+  enableval=$enable_sim_inline; sim_inline=""
+case "$enableval" in
+  no)		sim_inline="-DDEFAULT_INLINE=0";;
+  0)		sim_inline="-DDEFAULT_INLINE=0";;
+  yes | 2)	sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
+  1)		sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
+  *) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
+       new_flag=""
+       case "$x" in
+	 *_INLINE=*)	new_flag="-D$x";;
+	 *=*)		new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
+	 *_INLINE)	new_flag="-D$x=ALL_C_INLINE";;
+	 *)		new_flag="-D$x""_INLINE=ALL_C_INLINE";;
+       esac
+       if test x"$sim_inline" = x""; then
+	 sim_inline="$new_flag"
+       else
+	 sim_inline="$sim_inline $new_flag"
+       fi
+     done;;
+esac
+if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
+  echo "Setting inline flags = $sim_inline" 6>&1
+fi
+fi
+
+
+
+
+# Check whether --with-pkgversion was given.
+if test "${with_pkgversion+set}" = set; then :
+  withval=$with_pkgversion; case "$withval" in
+      yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
+      no)  PKGVERSION= ;;
+      *)   PKGVERSION="($withval) " ;;
+     esac
+else
+  PKGVERSION="(SIM) "
+
+fi
+
+
+
+
+
+# Check whether --with-bugurl was given.
+if test "${with_bugurl+set}" = set; then :
+  withval=$with_bugurl; case "$withval" in
+      yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
+      no)  BUGURL=
+	   ;;
+      *)   BUGURL="$withval"
+	   ;;
+     esac
+else
+  BUGURL="http://www.gnu.org/software/gdb/bugs/"
+
+fi
+
+  case ${BUGURL} in
+  "")
+    REPORT_BUGS_TO=
+    REPORT_BUGS_TEXI=
+    ;;
+  *)
+    REPORT_BUGS_TO="<$BUGURL>"
+    REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
+    ;;
+  esac;
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define PKGVERSION "$PKGVERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
+_ACEOF
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if ${ac_cv_type_signal+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <signal.h>
+
+int
+main ()
+{
+return *(signal (0, 0)) (0) == 1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_signal=int
+else
+  ac_cv_type_signal=void
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+
+
+
+
+
+
+wire_endian="LITTLE"
+default_endian=""
+# Check whether --enable-sim-endian was given.
+if test "${enable_sim_endian+set}" = set; then :
+  enableval=$enable_sim_endian; case "${enableval}" in
+  b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_BIG";;
+  l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_LITTLE";;
+  yes)	 if test x"$wire_endian" != x; then
+	   sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
+	 else
+	  if test x"$default_endian" != x; then
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
+	   else
+	     echo "No hard-wired endian for target $target" 1>&6
+	     sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
+	   fi
+	 fi;;
+  no)	 if test x"$default_endian" != x; then
+	   sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
+	 else
+	   if test x"$wire_endian" != x; then
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
+	   else
+	     echo "No default endian for target $target" 1>&6
+	     sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_UNKNOWN"
+	   fi
+	 fi;;
+  *)	 as_fn_error $? "\"Unknown value $enableval for --enable-sim-endian\"" "$LINENO" 5; sim_endian="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
+  echo "Setting endian flags = $sim_endian" 6>&1
+fi
+else
+  if test x"$default_endian" != x; then
+  sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=BFD_ENDIAN_${default_endian}"
+else
+  if test x"$wire_endian" != x; then
+    sim_endian="-DWITH_TARGET_BYTE_ORDER=BFD_ENDIAN_${wire_endian}"
+  else
+    sim_endian=
+  fi
+fi
+fi
+
+wire_alignment="STRICT_ALIGNMENT"
+default_alignment="STRICT_ALIGNMENT"
+
+# Check whether --enable-sim-alignment was given.
+if test "${enable_sim_alignment+set}" = set; then :
+  enableval=$enable_sim_alignment; case "${enableval}" in
+  strict | STRICT)       sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
+  nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
+  forced | FORCED)       sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
+  yes) if test x"$wire_alignment" != x; then
+	 sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
+       else
+         if test x"$default_alignment" != x; then
+           sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
+         else
+	   echo "No hard-wired alignment for target $target" 1>&6
+	   sim_alignment="-DWITH_ALIGNMENT=0"
+         fi
+       fi;;
+  no)  if test x"$default_alignment" != x; then
+	 sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
+       else
+         if test x"$wire_alignment" != x; then
+	   sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
+         else
+           echo "No default alignment for target $target" 1>&6
+           sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
+         fi
+       fi;;
+  *)   as_fn_error $? "\"Unknown value $enableval passed to --enable-sim-alignment\"" "$LINENO" 5; sim_alignment="";;
+esac
+if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
+  echo "Setting alignment flags = $sim_alignment" 6>&1
+fi
+else
+  if test x"$default_alignment" != x; then
+  sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
+else
+  if test x"$wire_alignment" != x; then
+    sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
+  else
+    sim_alignment=
+  fi
+fi
+fi
+
+
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+  enableval=$enable_werror; case "${enableval}" in
+     yes | y) ERROR_ON_WARNING="yes" ;;
+     no | n)  ERROR_ON_WARNING="no" ;;
+     *) as_fn_error $? "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;;
+   esac
+fi
+
+
+# Enable -Werror by default when using gcc
+if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+    ERROR_ON_WARNING=yes
+fi
+
+WERROR_CFLAGS=""
+if test "${ERROR_ON_WARNING}" = yes ; then
+# NOTE: Disabled in the sim dir due to most sims generating warnings.
+#    WERROR_CFLAGS="-Werror"
+     true
+fi
+
+build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
+-Wpointer-sign \
+-Wno-unused -Wunused-value -Wunused-function \
+-Wno-switch -Wno-char-subscripts -Wmissing-prototypes
+-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
+-Wold-style-declaration -Wold-style-definition"
+
+# Enable -Wno-format by default when using gcc on mingw since many
+# GCC versions complain about %I64.
+case "${host}" in
+  *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
+  *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
+esac
+
+# Check whether --enable-build-warnings was given.
+if test "${enable_build_warnings+set}" = set; then :
+  enableval=$enable_build_warnings; case "${enableval}" in
+  yes)	;;
+  no)	build_warnings="-w";;
+  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${build_warnings} ${t}";;
+  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${t} ${build_warnings}";;
+  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+esac
+if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
+  echo "Setting compiler warning flags = $build_warnings" 6>&1
+fi
+fi
+# Check whether --enable-sim-build-warnings was given.
+if test "${enable_sim_build_warnings+set}" = set; then :
+  enableval=$enable_sim_build_warnings; case "${enableval}" in
+  yes)	;;
+  no)	build_warnings="-w";;
+  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${build_warnings} ${t}";;
+  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${t} ${build_warnings}";;
+  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+esac
+if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
+  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
+fi
+fi
+WARN_CFLAGS=""
+if test "x${build_warnings}" != x -a "x$GCC" = xyes
+then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5
+$as_echo_n "checking compiler warning flags... " >&6; }
+    # Separate out the -Werror flag as some files just cannot be
+    # compiled with it enabled.
+    for w in ${build_warnings}; do
+	case $w in
+	-Werr*) WERROR_CFLAGS=-Werror ;;
+	*) # Check that GCC accepts it
+	    saved_CFLAGS="$CFLAGS"
+	    CFLAGS="$CFLAGS $w"
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  WARN_CFLAGS="${WARN_CFLAGS} $w"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	    CFLAGS="$saved_CFLAGS"
+	esac
+    done
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5
+$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
+fi
+
+
+
+cgen_breaks=""
+if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
+cgen_breaks="break cgen_rtx_error";
+fi
+
+ac_config_files="$ac_config_files Makefile.sim:Makefile.in"
+
+ac_config_files="$ac_config_files Make-common.sim:../common/Make-common.in"
+
+ac_config_files="$ac_config_files .gdbinit:../common/gdbinit.in"
+
+ac_config_commands="$ac_config_commands Makefile"
+
+ac_config_commands="$ac_config_commands stamp-h"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+if test -z "${GMAKE_TRUE}" && test -z "${GMAKE_FALSE}"; then
+  as_fn_error $? "conditional \"GMAKE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then
+  as_fn_error $? "conditional \"PLUGINS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
+    "depdir") CONFIG_COMMANDS="$CONFIG_COMMANDS depdir" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "Makefile.sim") CONFIG_FILES="$CONFIG_FILES Makefile.sim:Makefile.in" ;;
+    "Make-common.sim") CONFIG_FILES="$CONFIG_FILES Make-common.sim:../common/Make-common.in" ;;
+    ".gdbinit") CONFIG_FILES="$CONFIG_FILES .gdbinit:../common/gdbinit.in" ;;
+    "Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS Makefile" ;;
+    "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1+=\$2"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+    ;;
+  esac
+
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+ ;;
+    "Makefile":C) echo "Merging Makefile.sim+Make-common.sim into Makefile ..."
+ rm -f Makesim1.tmp Makesim2.tmp Makefile
+ sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' <Make-common.sim >Makesim1.tmp
+ sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
+ sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
+	-e '/^## COMMON_POST_/ r Makesim2.tmp' \
+	<Makefile.sim >Makefile
+ rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
+ ;;
+    "stamp-h":C) echo > stamp-h ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
diff --git a/sim/pru/configure.ac b/sim/pru/configure.ac
new file mode 100644
index 0000000000..e7132b4493
--- /dev/null
+++ b/sim/pru/configure.ac
@@ -0,0 +1,31 @@
+dnl Process this file with autoconf to produce a configure script.
+
+dnl Copyright (C) 2016-2019 Free Software Foundation, Inc.
+dnl Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+dnl
+dnl This file is part of the GNU simulators.
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
+dnl
+AC_PREREQ(2.64)dnl
+AC_INIT(Makefile.in)
+sinclude(../common/acinclude.m4)
+
+SIM_AC_COMMON
+
+SIM_AC_OPTION_ENDIAN(LITTLE)
+SIM_AC_OPTION_ALIGNMENT(STRICT_ALIGNMENT,STRICT_ALIGNMENT)
+SIM_AC_OPTION_WARNINGS
+
+SIM_AC_OUTPUT
diff --git a/sim/pru/interp.c b/sim/pru/interp.c
new file mode 100644
index 0000000000..0e783c121c
--- /dev/null
+++ b/sim/pru/interp.c
@@ -0,0 +1,848 @@
+/* Simulator for the Texas Instruments PRU processor
+   Copyright 2009-2019 Free Software Foundation, Inc.
+   Inspired by the Microblaze simulator
+   Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+
+   This file is part of the simulators.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include <stdbool.h>
+#include <stdint.h>
+#include <stddef.h>
+#include "bfd.h"
+#include "gdb/callback.h"
+#include "libiberty.h"
+#include "gdb/remote-sim.h"
+#include "sim-main.h"
+#include "sim-assert.h"
+#include "sim-options.h"
+#include "sim-syscall.h"
+#include "pru.h"
+
+/* DMEM zero address is perfectly valid.  But if CRT leaves the first word
+   alone, we can use it as a trap to catch NULL pointer access.  */
+static bfd_boolean abort_on_dmem_zero_access;
+
+enum {
+  OPTION_ERROR_NULL_DEREF = OPTION_START,
+};
+
+/* Extract (from PRU endianess) and return an integer in HOST's endianness.  */
+static uint32_t
+pru_extract_unsigned_integer (uint8_t *addr, size_t len)
+{
+  uint32_t retval;
+  uint8_t *p;
+  uint8_t *startaddr = addr;
+  uint8_t *endaddr = startaddr + len;
+
+  /* Start at the most significant end of the integer, and work towards
+     the least significant.  */
+  retval = 0;
+
+  for (p = endaddr; p > startaddr;)
+    retval = (retval << 8) | * -- p;
+  return retval;
+}
+
+/* Store "val" (which is in HOST's endianess) into "addr"
+   (using PRU's endianness).  */
+static void
+pru_store_unsigned_integer (uint8_t *addr, size_t len, uint32_t val)
+{
+  uint8_t *p;
+  uint8_t *startaddr = (uint8_t *)addr;
+  uint8_t *endaddr = startaddr + len;
+
+  for (p = startaddr; p < endaddr;)
+    {
+      *p++ = val & 0xff;
+      val >>= 8;
+    }
+}
+
+/* Extract a field value from CPU register using the given REGSEL selector.
+
+   Byte number maps directly to first values of RSEL, so we can
+   safely use "regsel" as a register byte number (0..3).  */
+static inline uint32_t
+extract_regval (uint32_t val, uint32_t regsel)
+{
+  ASSERT (RSEL_7_0 == 0);
+  ASSERT (RSEL_15_8 == 1);
+  ASSERT (RSEL_23_16 == 2);
+  ASSERT (RSEL_31_24 == 3);
+
+  switch (regsel)
+    {
+    case RSEL_7_0:    return (val >> 0) & 0xff;
+    case RSEL_15_8:   return (val >> 8) & 0xff;
+    case RSEL_23_16:  return (val >> 16) & 0xff;
+    case RSEL_31_24:  return (val >> 24) & 0xff;
+    case RSEL_15_0:   return (val >> 0) & 0xffff;
+    case RSEL_23_8:   return (val >> 8) & 0xffff;
+    case RSEL_31_16:  return (val >> 16) & 0xffff;
+    case RSEL_31_0:   return val;
+    default:	      sim_io_error (NULL, "invalid regsel");
+    }
+}
+
+/* Write a value into CPU subregister pointed by reg and regsel.  */
+static inline void
+write_regval (uint32_t val, uint32_t *reg, uint32_t regsel)
+{
+  uint32_t mask, sh;
+
+  switch (regsel)
+    {
+    case RSEL_7_0:    mask = (0xffu << 0); sh = 0; break;
+    case RSEL_15_8:   mask = (0xffu << 8); sh = 8; break;
+    case RSEL_23_16:  mask = (0xffu << 16); sh = 16; break;
+    case RSEL_31_24:  mask = (0xffu << 24); sh = 24; break;
+    case RSEL_15_0:   mask = (0xffffu << 0); sh = 0; break;
+    case RSEL_23_8:   mask = (0xffffu << 8); sh = 8; break;
+    case RSEL_31_16:  mask = (0xffffu << 16); sh = 16; break;
+    case RSEL_31_0:   mask = 0xffffffffu; sh = 0; break;
+    default:	      sim_io_error (NULL, "invalid regsel");
+    }
+
+  *reg = (*reg & ~mask) | ((val << sh) & mask);
+}
+
+/* Convert the given IMEM word address to a regular byte address used by the
+   GNU ELF container.  */
+static uint32_t
+imem_wordaddr_to_byteaddr (SIM_CPU *cpu, uint16_t wa)
+{
+  return (((uint32_t) wa << 2) & IMEM_ADDR_MASK) | PC_ADDR_SPACE_MARKER;
+}
+
+/* Convert the given ELF text byte address to IMEM word address.  */
+static uint16_t
+imem_byteaddr_to_wordaddr (SIM_CPU *cpu, uint32_t ba)
+{
+  return (ba >> 2) & 0xffff;
+}
+
+
+/* Store "nbytes" into DMEM "addr" from CPU register file, starting with
+   register "regn", and byte "regb" within it.  */
+static inline void
+pru_reg2dmem (SIM_CPU *cpu, uint32_t addr, unsigned int nbytes,
+	      int regn, int regb)
+{
+  /* GDB assumes unconditional access to all memories, so enable additional
+     checks only in standalone mode.  */
+  bool standalone = (STATE_OPEN_KIND (CPU_STATE (cpu)) == SIM_OPEN_STANDALONE);
+
+  if (abort_on_dmem_zero_access && addr < 4)
+    {
+      sim_core_signal (CPU_STATE (cpu), cpu, PC_byteaddr, write_map,
+		       nbytes, addr, write_transfer,
+		       sim_core_unmapped_signal);
+    }
+  else if (standalone && ((addr >= PC_ADDR_SPACE_MARKER)
+			  || (addr + nbytes > PC_ADDR_SPACE_MARKER)))
+    {
+      sim_core_signal (CPU_STATE (cpu), cpu, PC_byteaddr, write_map,
+		       nbytes, addr, write_transfer,
+		       sim_core_unmapped_signal);
+    }
+  else if ((regn * 4 + regb + nbytes) > (32 * 4))
+    {
+      sim_io_eprintf (CPU_STATE (cpu),
+		      "SBBO/SBCO with invalid store data length\n");
+      RAISE_SIGILL (CPU_STATE (cpu));
+    }
+  else
+    {
+      TRACE_MEMORY (cpu, "write of %d bytes to %08x", nbytes, addr);
+      while (nbytes--)
+	{
+	  sim_core_write_1 (cpu,
+			    PC_byteaddr,
+			    write_map,
+			    addr++,
+			    extract_regval (CPU.regs[regn], regb));
+
+	  if (++regb >= 4)
+	    {
+	      regb = 0;
+	      regn++;
+	    }
+	}
+    }
+}
+
+/* Load "nbytes" from DMEM "addr" into CPU register file, starting with
+   register "regn", and byte "regb" within it.  */
+static inline void
+pru_dmem2reg (SIM_CPU *cpu, uint32_t addr, unsigned int nbytes,
+	      int regn, int regb)
+{
+  /* GDB assumes unconditional access to all memories, so enable additional
+     checks only in standalone mode.  */
+  bool standalone = (STATE_OPEN_KIND (CPU_STATE (cpu)) == SIM_OPEN_STANDALONE);
+
+  if (abort_on_dmem_zero_access && addr < 4)
+    {
+      sim_core_signal (CPU_STATE (cpu), cpu, PC_byteaddr, read_map,
+		       nbytes, addr, read_transfer,
+		       sim_core_unmapped_signal);
+    }
+  else if (standalone && ((addr >= PC_ADDR_SPACE_MARKER)
+			  || (addr + nbytes > PC_ADDR_SPACE_MARKER)))
+    {
+      /* This check is necessary because our IMEM "address space"
+	 is not really accessible, yet we have mapped it as a generic
+	 memory space.  */
+      sim_core_signal (CPU_STATE (cpu), cpu, PC_byteaddr, read_map,
+		       nbytes, addr, read_transfer,
+		       sim_core_unmapped_signal);
+    }
+  else if ((regn * 4 + regb + nbytes) > (32 * 4))
+    {
+      sim_io_eprintf (CPU_STATE (cpu),
+		      "LBBO/LBCO with invalid load data length\n");
+      RAISE_SIGILL (CPU_STATE (cpu));
+    }
+  else
+    {
+      unsigned int b;
+      TRACE_MEMORY (cpu, "read of %d bytes from %08x", nbytes, addr);
+      while (nbytes--)
+	{
+	  b = sim_core_read_1 (cpu, PC_byteaddr, read_map, addr++);
+
+	  /* Reuse the fact the Register Byte Number maps directly to RSEL.  */
+	  ASSERT (RSEL_7_0 == 0);
+	  write_regval (b, &CPU.regs[regn], regb);
+
+	  if (++regb >= 4)
+	    {
+	      regb = 0;
+	      regn++;
+	    }
+	}
+    }
+}
+
+/* Set reset values of general-purpose registers.  */
+static void
+set_initial_gprs (SIM_CPU *cpu)
+{
+  int i;
+
+  /* Set up machine just out of reset.  */
+  CPU_PC_SET (cpu, 0);
+  PC_ADDR_SPACE_MARKER = IMEM_ADDR_DEFAULT; /* from default linker script? */
+
+  /* Clean out the GPRs.  */
+  for (i = 0; i < ARRAY_SIZE (CPU.regs); i++)
+    CPU.regs[i] = 0;
+  for (i = 0; i < ARRAY_SIZE (CPU.macregs); i++)
+    CPU.macregs[i] = 0;
+
+  CPU.loop.looptop = CPU.loop.loopend = 0;
+  CPU.loop.loop_in_progress = 0;
+  CPU.loop.loop_counter = 0;
+
+  CPU.carry = 0;
+  CPU.insts = 0;
+  CPU.cycles = 0;
+
+  /* AM335x should provide sane defaults.  */
+  CPU.ctable[0] = 0x00020000;
+  CPU.ctable[1] = 0x48040000;
+  CPU.ctable[2] = 0x4802a000;
+  CPU.ctable[3] = 0x00030000;
+  CPU.ctable[4] = 0x00026000;
+  CPU.ctable[5] = 0x48060000;
+  CPU.ctable[6] = 0x48030000;
+  CPU.ctable[7] = 0x00028000;
+  CPU.ctable[8] = 0x46000000;
+  CPU.ctable[9] = 0x4a100000;
+  CPU.ctable[10] = 0x48318000;
+  CPU.ctable[11] = 0x48022000;
+  CPU.ctable[12] = 0x48024000;
+  CPU.ctable[13] = 0x48310000;
+  CPU.ctable[14] = 0x481cc000;
+  CPU.ctable[15] = 0x481d0000;
+  CPU.ctable[16] = 0x481a0000;
+  CPU.ctable[17] = 0x4819c000;
+  CPU.ctable[18] = 0x48300000;
+  CPU.ctable[19] = 0x48302000;
+  CPU.ctable[20] = 0x48304000;
+  CPU.ctable[21] = 0x00032400;
+  CPU.ctable[22] = 0x480c8000;
+  CPU.ctable[23] = 0x480ca000;
+  CPU.ctable[24] = 0x00000000;
+  CPU.ctable[25] = 0x00002000;
+  CPU.ctable[26] = 0x0002e000;
+  CPU.ctable[27] = 0x00032000;
+  CPU.ctable[28] = 0x00000000;
+  CPU.ctable[29] = 0x49000000;
+  CPU.ctable[30] = 0x40000000;
+  CPU.ctable[31] = 0x80000000;
+}
+
+/* Map regsel selector to subregister field width.  */
+static inline unsigned int
+regsel_width (uint32_t regsel)
+{
+  switch (regsel)
+    {
+    case RSEL_7_0:    return 8;
+    case RSEL_15_8:   return 8;
+    case RSEL_23_16:  return 8;
+    case RSEL_31_24:  return 8;
+    case RSEL_15_0:   return 16;
+    case RSEL_23_8:   return 16;
+    case RSEL_31_16:  return 16;
+    case RSEL_31_0:   return 32;
+    default:	      sim_io_error (NULL, "invalid regsel");
+    }
+}
+
+/* Handle XIN instruction addressing the MAC peripheral.  */
+static void
+pru_sim_xin_mac (SIM_DESC sd, SIM_CPU *cpu, unsigned int rd_regn,
+		 unsigned int rdb, unsigned int length)
+{
+  if (rd_regn < 25 || (rd_regn * 4 + rdb + length) > (27 + 1) * 4)
+    sim_io_error (sd, "XIN MAC: invalid transfer regn=%u.%u, length=%u\n",
+		  rd_regn, rdb, length);
+
+  /* Copy from MAC to PRU regs.  Ranges have been validated above.  */
+  while (length--)
+    {
+      write_regval (CPU.macregs[rd_regn - 25] >> (rdb * 8),
+		    &CPU.regs[rd_regn],
+		    rdb);
+      if (++rdb == 4)
+	{
+	  rdb = 0;
+	  rd_regn++;
+	}
+    }
+}
+
+/* Handle XIN instruction.  */
+static void
+pru_sim_xin (SIM_DESC sd, SIM_CPU *cpu, unsigned int wba,
+	     unsigned int rd_regn, unsigned int rdb, unsigned int length)
+{
+  if (wba == 0)
+    {
+      pru_sim_xin_mac (sd, cpu, rd_regn, rdb, length);
+    }
+  else if (wba == XFRID_SCRATCH_BANK_0 || wba == XFRID_SCRATCH_BANK_1
+	   || wba == XFRID_SCRATCH_BANK_2 || wba == XFRID_SCRATCH_BANK_PEER)
+    {
+      while (length--)
+	{
+	  unsigned int val;
+
+	  val = extract_regval (CPU.scratchpads[wba][rd_regn], rdb);
+	  write_regval (val, &CPU.regs[rd_regn], rdb);
+	  if (++rdb == 4)
+	    {
+	      rdb = 0;
+	      rd_regn++;
+	    }
+	}
+    }
+  else if (wba == 254 || wba == 255)
+    {
+      /* FILL/ZERO pseudos implemented via XIN.  */
+      unsigned int fillbyte = (wba == 254) ? 0xff : 0x00;
+      while (length--)
+	{
+	  write_regval (fillbyte, &CPU.regs[rd_regn], rdb);
+	  if (++rdb == 4)
+	    {
+	      rdb = 0;
+	      rd_regn++;
+	    }
+	}
+    }
+  else
+    {
+      sim_io_error (sd, "XIN: XFR device %d not supported.\n", wba);
+    }
+}
+
+/* Handle XOUT instruction addressing the MAC peripheral.  */
+static void
+pru_sim_xout_mac (SIM_DESC sd, SIM_CPU *cpu, unsigned int rd_regn,
+		  unsigned int rdb, unsigned int length)
+{
+  const int modereg_accessed = (rd_regn == 25);
+
+  /* Multiple Accumulate.  */
+  if (rd_regn < 25 || (rd_regn * 4 + rdb + length) > (27 + 1) * 4)
+    sim_io_error (sd, "XOUT MAC: invalid transfer regn=%u.%u, length=%u\n",
+		  rd_regn, rdb, length);
+
+  /* Copy from PRU to MAC regs.  Ranges have been validated above.  */
+  while (length--)
+    {
+      write_regval (CPU.regs[rd_regn] >> (rdb * 8),
+		    &CPU.macregs[rd_regn - 25],
+		    rdb);
+      if (++rdb == 4)
+	{
+	  rdb = 0;
+	  rd_regn++;
+	}
+    }
+
+  if (modereg_accessed
+      && (CPU.macregs[PRU_MACREG_MODE] & MAC_R25_MAC_MODE_MASK))
+    {
+      /* MUL/MAC operands are sampled every XOUT in multiply and
+	 accumulate mode.  */
+      uint64_t prod, oldsum, sum;
+      CPU.macregs[PRU_MACREG_OP_0] = CPU.regs[28];
+      CPU.macregs[PRU_MACREG_OP_1] = CPU.regs[29];
+
+      prod = CPU.macregs[PRU_MACREG_OP_0];
+      prod *= (uint64_t)CPU.macregs[PRU_MACREG_OP_1];
+
+      oldsum = CPU.macregs[PRU_MACREG_ACC_L];
+      oldsum += (uint64_t)CPU.macregs[PRU_MACREG_ACC_H] << 32;
+      sum = oldsum + prod;
+
+      CPU.macregs[PRU_MACREG_PROD_L] = sum & 0xfffffffful;
+      CPU.macregs[PRU_MACREG_PROD_H] = sum >> 32;
+      CPU.macregs[PRU_MACREG_ACC_L] = CPU.macregs[PRU_MACREG_PROD_L];
+      CPU.macregs[PRU_MACREG_ACC_H] = CPU.macregs[PRU_MACREG_PROD_H];
+
+      if (oldsum > sum)
+	CPU.macregs[PRU_MACREG_MODE] |= MAC_R25_ACC_CARRY_MASK;
+    }
+  if (modereg_accessed
+      && (CPU.macregs[PRU_MACREG_MODE] & MAC_R25_ACC_CARRY_MASK))
+    {
+      /* store 1 to clear.  */
+      CPU.macregs[PRU_MACREG_MODE] &= ~MAC_R25_ACC_CARRY_MASK;
+      CPU.macregs[PRU_MACREG_ACC_L] = 0;
+      CPU.macregs[PRU_MACREG_ACC_H] = 0;
+    }
+
+}
+
+/* Handle XOUT instruction.  */
+static void
+pru_sim_xout (SIM_DESC sd, SIM_CPU *cpu, unsigned int wba,
+	      unsigned int rd_regn, unsigned int rdb, unsigned int length)
+{
+  if (wba == 0)
+    {
+      pru_sim_xout_mac (sd, cpu, rd_regn, rdb, length);
+    }
+  else if (wba == XFRID_SCRATCH_BANK_0 || wba == XFRID_SCRATCH_BANK_1
+	   || wba == XFRID_SCRATCH_BANK_2 || wba == XFRID_SCRATCH_BANK_PEER)
+    {
+      while (length--)
+	{
+	  unsigned int val;
+
+	  val = extract_regval (CPU.regs[rd_regn], rdb);
+	  write_regval (val, &CPU.scratchpads[wba][rd_regn], rdb);
+	  if (++rdb == 4)
+	    {
+	      rdb = 0;
+	      rd_regn++;
+	    }
+	}
+    }
+  else
+    sim_io_error (sd, "XOUT: XFR device %d not supported.\n", wba);
+}
+
+/* Handle XCHG instruction.  */
+static void
+pru_sim_xchg (SIM_DESC sd, SIM_CPU *cpu, unsigned int wba,
+	      unsigned int rd_regn, unsigned int rdb, unsigned int length)
+{
+  if (wba == XFRID_SCRATCH_BANK_0 || wba == XFRID_SCRATCH_BANK_1
+	   || wba == XFRID_SCRATCH_BANK_2 || wba == XFRID_SCRATCH_BANK_PEER)
+    {
+      while (length--)
+	{
+	  unsigned int valr, vals;
+
+	  valr = extract_regval (CPU.regs[rd_regn], rdb);
+	  vals = extract_regval (CPU.scratchpads[wba][rd_regn], rdb);
+	  write_regval (valr, &CPU.scratchpads[wba][rd_regn], rdb);
+	  write_regval (vals, &CPU.regs[rd_regn], rdb);
+	  if (++rdb == 4)
+	    {
+	      rdb = 0;
+	      rd_regn++;
+	    }
+	}
+    }
+  else
+    sim_io_error (sd, "XOUT: XFR device %d not supported.\n", wba);
+}
+
+/* Handle syscall simulation.  Its ABI is specific to the GNU simulator.  */
+static void
+pru_sim_syscall (SIM_DESC sd, SIM_CPU *cpu)
+{
+  /* If someday TI confirms that the "reserved" HALT opcode fields
+     can be used for extra arguments, then maybe we can embed
+     the syscall number there.  Until then, let's use R1.  */
+  const uint32_t syscall_num = CPU.regs[1];
+  long ret;
+
+  ret = sim_syscall (cpu, syscall_num,
+		     CPU.regs[14], CPU.regs[15],
+		     CPU.regs[16], CPU.regs[17]);
+  CPU.regs[14] = ret;
+}
+
+/* Simulate one instruction.  */
+static void
+sim_step_once (SIM_DESC sd)
+{
+  SIM_CPU *cpu = STATE_CPU (sd, 0);
+  const struct pru_opcode *op;
+  uint32_t inst;
+  uint32_t _RDVAL, OP2;	/* intermediate values.  */
+  int rd_is_modified = 0;	/* RD modified and must be stored back.  */
+
+  /* Fetch the initial instruction that we'll decode.  */
+  inst = sim_core_read_4 (cpu, PC_byteaddr, exec_map, PC_byteaddr);
+  TRACE_MEMORY (cpu, "read of insn 0x%08x from %08x", inst, PC_byteaddr);
+
+  op = pru_find_opcode (inst);
+
+  if (!op)
+    {
+      sim_io_eprintf (sd, "Unknown instruction 0x%04x\n", inst);
+      RAISE_SIGILL (sd);
+    }
+  else
+    {
+      TRACE_DISASM (cpu, PC_byteaddr);
+
+      /* In multiply-only mode, R28/R29 operands are sampled on every clock
+	 cycle.  */
+      if ((CPU.macregs[PRU_MACREG_MODE] & MAC_R25_MAC_MODE_MASK) == 0)
+	{
+	  CPU.macregs[PRU_MACREG_OP_0] = CPU.regs[28];
+	  CPU.macregs[PRU_MACREG_OP_1] = CPU.regs[29];
+	}
+
+      switch (op->type)
+	{
+/* Helper macro to improve clarity of pru.isa.  The empty while is a
+   guard against using RD as a left-hand side value.  */
+#define RD  do { } while (0); rd_is_modified = 1; _RDVAL
+#define INSTRUCTION(NAME, ACTION)		\
+	case prui_ ## NAME:			\
+		ACTION;				\
+	  break;
+#include "pru.isa"
+#undef INSTRUCTION
+#undef RD
+
+	default:
+	  RAISE_SIGILL (sd);
+	}
+
+      if (rd_is_modified)
+	write_regval (_RDVAL, &CPU.regs[RD_REGN], RDSEL);
+
+      /* Don't treat r30 and r31 as regular registers, they are I/O!  */
+      CPU.regs[30] = 0;
+      CPU.regs[31] = 0;
+
+      /* Handle PC match of loop end.  */
+      if (LOOP_IN_PROGRESS && (PC == LOOPEND))
+	{
+	  SIM_ASSERT (LOOPCNT > 0);
+	  if (--LOOPCNT == 0)
+	    LOOP_IN_PROGRESS = 0;
+	  else
+	    PC = LOOPTOP;
+	}
+
+      /* In multiply-only mode, MAC does multiplication every cycle.  */
+      if ((CPU.macregs[PRU_MACREG_MODE] & MAC_R25_MAC_MODE_MASK) == 0)
+	{
+	  uint64_t prod;
+	  prod = CPU.macregs[PRU_MACREG_OP_0];
+	  prod *= (uint64_t)CPU.macregs[PRU_MACREG_OP_1];
+	  CPU.macregs[PRU_MACREG_PROD_L] = prod & 0xfffffffful;
+	  CPU.macregs[PRU_MACREG_PROD_H] = prod >> 32;
+
+	  /* Clear the MAC accumulator when in normal mode.  */
+	  CPU.macregs[PRU_MACREG_ACC_L] = 0;
+	  CPU.macregs[PRU_MACREG_ACC_H] = 0;
+	}
+
+      /* Update cycle counts.  */
+      CPU.insts += 1;		  /* One instruction completed ...  */
+      CPU.cycles += 1;		  /* ... and it takes a single cycle.  */
+
+      /* Account for memory access latency with a reasonable estimate.
+	 No distinction is currently made between SRAM, DRAM and generic
+	 L3 slaves.  */
+      if (op->type == prui_lbbo || op->type == prui_sbbo
+	  || op->type == prui_lbco || op->type == prui_sbco)
+	CPU.cycles += 2;
+
+    }
+}
+
+/* Implement standard sim_engine_run function.  */
+void
+sim_engine_run (SIM_DESC sd,
+		int next_cpu_nr, /* ignore  */
+		int nr_cpus, /* ignore  */
+		int siggnal) /* ignore  */
+{
+  while (1)
+    {
+      sim_step_once (sd);
+      if (sim_events_tick (sd))
+	sim_events_process (sd);
+    }
+}
+
+
+/* Implement callback for standard CPU_PC_FETCH routine.  */
+static sim_cia
+pru_pc_get (sim_cpu *cpu)
+{
+  /* Present PC as byte address.  */
+  return imem_wordaddr_to_byteaddr (cpu, cpu->pru_cpu.pc);
+}
+
+/* Implement callback for standard CPU_PC_STORE routine.  */
+static void
+pru_pc_set (sim_cpu *cpu, sim_cia pc)
+{
+  /* PC given as byte address.  */
+  cpu->pru_cpu.pc = imem_byteaddr_to_wordaddr (cpu, pc);
+}
+
+
+/* Implement callback for standard CPU_REG_STORE routine.  */
+static int
+pru_store_register (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
+{
+  if (rn < NUM_REGS && rn >= 0)
+    {
+      if (length == 4)
+	{
+	  /* Misalignment safe.  */
+	  long ival = pru_extract_unsigned_integer (memory, 4);
+	  if (rn < 32)
+	    CPU.regs[rn] = ival;
+	  else
+	    pru_pc_set (cpu, ival);
+	  return 4;
+	}
+      else
+	return 0;
+    }
+  else
+    return 0;
+}
+
+/* Implement callback for standard CPU_REG_FETCH routine.  */
+static int
+pru_fetch_register (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
+{
+  long ival;
+
+  if (rn < NUM_REGS && rn >= 0)
+    {
+      if (length == 4)
+	{
+	  if (rn < 32)
+	    ival = CPU.regs[rn];
+	  else
+	    ival = pru_pc_get (cpu);
+
+	  /* Misalignment-safe.  */
+	  pru_store_unsigned_integer (memory, 4, ival);
+	  return 4;
+	}
+      else
+	return 0;
+    }
+  else
+    return 0;
+}
+
+static void
+free_state (SIM_DESC sd)
+{
+  if (STATE_MODULES (sd) != NULL)
+    sim_module_uninstall (sd);
+  sim_cpu_free_all (sd);
+  sim_state_free (sd);
+}
+
+/* Declare the PRU option handler.  */
+static DECLARE_OPTION_HANDLER (pru_option_handler);
+
+/* Implement the PRU option handler.  */
+static SIM_RC
+pru_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt, char *arg,
+		    int is_command)
+{
+  switch (opt)
+    {
+    case OPTION_ERROR_NULL_DEREF:
+      abort_on_dmem_zero_access = TRUE;
+      return SIM_RC_OK;
+
+    default:
+      sim_io_eprintf (sd, "Unknown PRU option %d\n", opt);
+      return SIM_RC_FAIL;
+    }
+}
+
+/* List of PRU-specific options.  */
+static const OPTION pru_options[] =
+{
+  { {"error-null-deref", no_argument, NULL, OPTION_ERROR_NULL_DEREF},
+      '\0', NULL, "Trap any access to DMEM address zero",
+      pru_option_handler, NULL },
+
+  { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL, NULL }
+};
+
+/* Implement standard sim_open function.  */
+SIM_DESC
+sim_open (SIM_OPEN_KIND kind, host_callback *cb,
+	  struct bfd *abfd, char * const *argv)
+{
+  int i;
+  char c;
+  SIM_DESC sd = sim_state_alloc (kind, cb);
+  SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
+
+  /* The cpu data is kept in a separately allocated chunk of memory.  */
+  if (sim_cpu_alloc_all (sd, 1, /*cgen_cpu_max_extra_bytes ()*/0) != SIM_RC_OK)
+    {
+      free_state (sd);
+      return 0;
+    }
+
+  if (sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK)
+    {
+      free_state (sd);
+      return 0;
+    }
+  sim_add_option_table (sd, NULL, pru_options);
+
+  /* The parser will print an error message for us, so we silently return.  */
+  if (sim_parse_args (sd, argv) != SIM_RC_OK)
+    {
+      free_state (sd);
+      return 0;
+    }
+
+  /* Check for/establish a reference program image.  */
+  if (sim_analyze_program (sd,
+			   (STATE_PROG_ARGV (sd) != NULL
+			    ? *STATE_PROG_ARGV (sd)
+			    : NULL), abfd) != SIM_RC_OK)
+    {
+      free_state (sd);
+      return 0;
+    }
+
+  /* Configure/verify the target byte order and other runtime
+     configuration options.  */
+  if (sim_config (sd) != SIM_RC_OK)
+    {
+      sim_module_uninstall (sd);
+      return 0;
+    }
+
+  if (sim_post_argv_init (sd) != SIM_RC_OK)
+    {
+      /* Uninstall the modules to avoid memory leaks,
+	 file descriptor leaks, etc.  */
+      sim_module_uninstall (sd);
+      return 0;
+    }
+
+  /* CPU specific initialization.  */
+  for (i = 0; i < MAX_NR_PROCESSORS; ++i)
+    {
+      SIM_CPU *cpu = STATE_CPU (sd, i);
+
+      CPU_REG_STORE (cpu) = pru_store_register;
+      CPU_REG_FETCH (cpu) = pru_fetch_register;
+      CPU_PC_FETCH (cpu) = pru_pc_get;
+      CPU_PC_STORE (cpu) = pru_pc_set;
+
+      set_initial_gprs (cpu);
+    }
+
+  /* Allocate external memory if none specified by user.
+     Use address 4 here in case the user wanted address 0 unmapped.  */
+  if (sim_core_read_buffer (sd, NULL, read_map, &c, 4, 1) == 0)
+    {
+      sim_do_commandf (sd, "memory-region 0x%x,0x%x",
+		       0,
+		       DMEM_DEFAULT_SIZE);
+    }
+  if (sim_core_read_buffer (sd, NULL, read_map, &c, IMEM_ADDR_DEFAULT, 1) == 0)
+    {
+      sim_do_commandf (sd, "memory-region 0x%x,0x%x",
+		       IMEM_ADDR_DEFAULT,
+		       IMEM_DEFAULT_SIZE);
+    }
+
+  return sd;
+}
+
+/* Implement standard sim_create_inferior function.  */
+SIM_RC
+sim_create_inferior (SIM_DESC sd, struct bfd *prog_bfd,
+		     char * const *argv, char * const *env)
+{
+  SIM_CPU *cpu = STATE_CPU (sd, 0);
+  SIM_ADDR addr;
+
+  addr = bfd_get_start_address (prog_bfd);
+
+  sim_pc_set (cpu, addr);
+  PC_ADDR_SPACE_MARKER = addr & ~IMEM_ADDR_MASK;
+
+  /* Standalone mode (i.e. `run`) will take care of the argv for us in
+     sim_open () -> sim_parse_args ().  But in debug mode (i.e. 'target sim'
+     with `gdb`), we need to handle it because the user can change the
+     argv on the fly via gdb's 'run'.  */
+  if (STATE_PROG_ARGV (sd) != argv)
+    {
+      freeargv (STATE_PROG_ARGV (sd));
+      STATE_PROG_ARGV (sd) = dupargv (argv);
+    }
+
+  return SIM_RC_OK;
+}
diff --git a/sim/pru/pru.h b/sim/pru/pru.h
new file mode 100644
index 0000000000..d4835a548c
--- /dev/null
+++ b/sim/pru/pru.h
@@ -0,0 +1,110 @@
+/* Copyright 2016-2019 Free Software Foundation, Inc.
+   Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+
+   This file is part of the PRU simulator.
+
+   This library is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef PRU_H
+#define PRU_H
+
+#include "config.h"
+#include "opcode/pru.h"
+
+/* Needed for handling the dual PRU address space.  */
+#define IMEM_ADDR_MASK	((1u << 23) - 1)
+
+#define IMEM_ADDR_DEFAULT 0x20000000
+
+/* Define memory sizes to allocate for simulated target.  Sizes are
+   artificially large to accommodate execution of compiler test suite.
+   Please synchronize with the linker script for prusim target.  */
+#define DMEM_DEFAULT_SIZE (64 * 1024 * 1024)
+
+/* 16-bit word addressable space.  */
+#define IMEM_DEFAULT_SIZE (64 * 4 * 1024)
+
+/* For AM335x SoCs.  */
+#define XFRID_SCRATCH_BANK_0	  10
+#define XFRID_SCRATCH_BANK_1	  11
+#define XFRID_SCRATCH_BANK_2	  12
+#define XFRID_SCRATCH_BANK_PEER	  14
+#define XFRID_MAX		  255
+
+#define CPU     (cpu->pru_cpu)
+
+#define PC		(CPU.pc)
+#define PC_byteaddr	((PC << 2) | PC_ADDR_SPACE_MARKER)
+
+/* Various opcode fields.  */
+#define RS1 extract_regval (CPU.regs[GET_INSN_FIELD (RS1, inst)], \
+			    GET_INSN_FIELD (RS1SEL, inst))
+#define RS2 extract_regval (CPU.regs[GET_INSN_FIELD (RS2, inst)], \
+			    GET_INSN_FIELD (RS2SEL, inst))
+
+#define RS2_w0 extract_regval (CPU.regs[GET_INSN_FIELD (RS2, inst)], \
+			       RSEL_15_0)
+
+#define XBBO_BASEREG (CPU.regs[GET_INSN_FIELD (RS1, inst)])
+
+#define RDSEL GET_INSN_FIELD (RDSEL, inst)
+#define RD_WIDTH regsel_width (RDSEL)
+#define RD_REGN GET_INSN_FIELD (RD, inst)
+#define IO GET_INSN_FIELD (IO, inst)
+#define IMM8 GET_INSN_FIELD (IMM8, inst)
+#define IMM16 GET_INSN_FIELD (IMM16, inst)
+#define WAKEONSTATUS GET_INSN_FIELD (WAKEONSTATUS, inst)
+#define CB GET_INSN_FIELD (CB, inst)
+#define RDB GET_INSN_FIELD (RDB, inst)
+#define XFR_WBA GET_INSN_FIELD (XFR_WBA, inst)
+#define LOOP_JMPOFFS GET_INSN_FIELD (LOOP_JMPOFFS, inst)
+#define BROFF ((uint32_t) GET_BROFF_SIGNED (inst))
+
+#define _BURSTLEN_CALCULATE(BITFIELD)					    \
+  ((BITFIELD) >= LSSBBO_BYTECOUNT_R0_BITS7_0 ?				    \
+  (CPU.regs[0] >> ((BITFIELD) - LSSBBO_BYTECOUNT_R0_BITS7_0) * 8) & 0xff    \
+  : (BITFIELD) + 1)
+
+#define BURSTLEN _BURSTLEN_CALCULATE (GET_BURSTLEN (inst))
+#define XFR_LENGTH _BURSTLEN_CALCULATE (GET_INSN_FIELD (XFR_LENGTH, inst))
+
+#define DO_XIN(wba,regn,rdb,l)	  \
+  pru_sim_xin (sd, cpu, (wba), (regn), (rdb), (l))
+#define DO_XOUT(wba,regn,rdb,l)	  \
+  pru_sim_xout (sd, cpu, (wba), (regn), (rdb), (l))
+#define DO_XCHG(wba,regn,rdb,l)	  \
+  pru_sim_xchg (sd, cpu, (wba), (regn), (rdb), (l))
+
+#define RAISE_SIGILL(sd)  sim_engine_halt ((sd), NULL, NULL, PC_byteaddr, \
+					   sim_stopped, SIM_SIGILL)
+#define RAISE_SIGINT(sd)  sim_engine_halt ((sd), NULL, NULL, PC_byteaddr, \
+					   sim_stopped, SIM_SIGINT)
+
+#define MAC_R25_MAC_MODE_MASK	  (1u << 0)
+#define MAC_R25_ACC_CARRY_MASK	  (1u << 1)
+
+#define CARRY	CPU.carry
+#define CTABLE	CPU.ctable
+
+#define PC_ADDR_SPACE_MARKER	CPU.pc_addr_space_marker
+
+#define LOOPTOP		  CPU.loop.looptop
+#define LOOPEND		  CPU.loop.loopend
+#define LOOP_IN_PROGRESS  CPU.loop.loop_in_progress
+#define LOOPCNT		  CPU.loop.loop_counter
+
+/* 32 GP registers plus PC.  */
+#define NUM_REGS	33
+
+#endif /* PRU_H */
diff --git a/sim/pru/pru.isa b/sim/pru/pru.isa
new file mode 100644
index 0000000000..c906b2a169
--- /dev/null
+++ b/sim/pru/pru.isa
@@ -0,0 +1,249 @@
+/* Copyright 2016-2019 Free Software Foundation, Inc.
+   Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+
+   This file is part of the PRU simulator.
+
+   This library is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+/*
+   PRU Instruction Set Architecture
+
+   INSTRUCTION (NAME,
+		SEMANTICS)
+ */
+
+INSTRUCTION (add,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 + OP2;
+	     CARRY = (((uint64_t) RS1 + (uint64_t) OP2) >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (adc,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 + OP2 + CARRY;
+	     CARRY = (((uint64_t) RS1 + (uint64_t) OP2 + (uint64_t) CARRY)
+		      >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (sub,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 - OP2;
+	     CARRY = (((uint64_t) RS1 - (uint64_t) OP2) >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (suc,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 - OP2 - CARRY;
+	     CARRY = (((uint64_t) RS1 - (uint64_t) OP2 - (uint64_t) CARRY)
+		      >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (rsb,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = OP2 - RS1;
+	     CARRY = (((uint64_t) OP2 - (uint64_t) RS1) >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (rsc,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = OP2 - RS1 - CARRY;
+	     CARRY = (((uint64_t) OP2 - (uint64_t) RS1 - (uint64_t) CARRY)
+		      >> RD_WIDTH) & 1;
+	     PC++)
+
+INSTRUCTION (lsl,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 << (OP2 & 0x1f);
+	     PC++)
+
+INSTRUCTION (lsr,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 >> (OP2 & 0x1f);
+	     PC++)
+
+INSTRUCTION (and,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 & OP2;
+	     PC++)
+
+INSTRUCTION (or,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 | OP2;
+	     PC++)
+
+INSTRUCTION (xor,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 ^ OP2;
+	     PC++)
+
+INSTRUCTION (not,
+	     RD = ~RS1;
+	     PC++)
+
+INSTRUCTION (min,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 < OP2 ? RS1 : OP2;
+	     PC++)
+
+INSTRUCTION (max,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 > OP2 ? RS1 : OP2;
+	     PC++)
+
+INSTRUCTION (clr,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 & ~(1u << (OP2 & 0x1f));
+	     PC++)
+
+INSTRUCTION (set,
+	     OP2 = (IO ? IMM8 : RS2);
+	     RD = RS1 | (1u << (OP2 & 0x1f));
+	     PC++)
+
+INSTRUCTION (jmp,
+	     OP2 = (IO ? IMM16 : RS2);
+	     PC = OP2)
+
+INSTRUCTION (jal,
+	     OP2 = (IO ? IMM16 : RS2);
+	     RD = PC + 1;
+	     PC = OP2)
+
+INSTRUCTION (ldi,
+	     RD = IMM16;
+	     PC++)
+
+INSTRUCTION (halt,
+	     pru_sim_syscall (sd, cpu);
+	     PC++)
+
+INSTRUCTION (slp,
+	     if (!WAKEONSTATUS)
+	      {
+		RAISE_SIGINT (sd);
+	      }
+	     else
+	      {
+		PC++;
+	      })
+
+INSTRUCTION (qbgt,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 > RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qbge,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 >= RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qblt,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 < RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qble,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 <= RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qbeq,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 == RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qbne,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (OP2 != RS1) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qba,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = PC + BROFF)
+
+INSTRUCTION (qbbs,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = (RS1 & (1u << (OP2 & 0x1f))) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (qbbc,
+	     OP2 = (IO ? IMM8 : RS2);
+	     PC = !(RS1 & (1u << (OP2 & 0x1f))) ? (PC + BROFF) : (PC + 1))
+
+INSTRUCTION (lbbo,
+	     pru_dmem2reg (cpu, XBBO_BASEREG + (IO ? IMM8 : RS2),
+			   BURSTLEN, RD_REGN, RDB);
+	     PC++)
+
+INSTRUCTION (sbbo,
+	     pru_reg2dmem (cpu, XBBO_BASEREG + (IO ? IMM8 : RS2),
+			   BURSTLEN, RD_REGN, RDB);
+	     PC++)
+
+INSTRUCTION (lbco,
+	     pru_dmem2reg (cpu, CTABLE[CB] + (IO ? IMM8 : RS2),
+			   BURSTLEN, RD_REGN, RDB);
+	     PC++)
+
+INSTRUCTION (sbco,
+	     pru_reg2dmem (cpu, CTABLE[CB] + (IO ? IMM8 : RS2),
+			   BURSTLEN, RD_REGN, RDB);
+	     PC++)
+
+INSTRUCTION (xin,
+	     DO_XIN (XFR_WBA, RD_REGN, RDB, XFR_LENGTH);
+	     PC++)
+
+INSTRUCTION (xout,
+	     DO_XOUT (XFR_WBA, RD_REGN, RDB, XFR_LENGTH);
+	     PC++)
+
+INSTRUCTION (xchg,
+	     DO_XCHG (XFR_WBA, RD_REGN, RDB, XFR_LENGTH);
+	     PC++)
+
+INSTRUCTION (sxin,
+	     sim_io_eprintf (sd, "SXIN instruction not supported by sim\n");
+	     RAISE_SIGILL (sd))
+
+INSTRUCTION (sxout,
+	     sim_io_eprintf (sd, "SXOUT instruction not supported by sim\n");
+	     RAISE_SIGILL (sd))
+
+INSTRUCTION (sxchg,
+	     sim_io_eprintf (sd, "SXCHG instruction not supported by sim\n");
+	     RAISE_SIGILL (sd))
+
+INSTRUCTION (loop,
+	     OP2 = (IO ? IMM8 + 1 : RS2_w0);
+	     if (OP2 == 0)
+	      {
+		PC = LOOPEND;
+	      }
+	     else
+	      {
+		LOOPTOP = PC + 1;
+		LOOPEND = PC + LOOP_JMPOFFS;
+		LOOPCNT = OP2;
+		LOOP_IN_PROGRESS = 1;
+		PC++;
+	     })
+
+INSTRUCTION (iloop,
+	     OP2 = (IO ? IMM8 + 1 : RS2_w0);
+	     if (OP2 == 0)
+	      {
+		PC = LOOPEND;
+	      }
+	     else
+	      {
+		LOOPTOP = PC + 1;
+		LOOPEND = PC + LOOP_JMPOFFS;
+		LOOPCNT = OP2;
+		LOOP_IN_PROGRESS = 1;
+		PC++;
+	     })
diff --git a/sim/pru/sim-main.h b/sim/pru/sim-main.h
new file mode 100644
index 0000000000..b8a2c20ea8
--- /dev/null
+++ b/sim/pru/sim-main.h
@@ -0,0 +1,91 @@
+/* Copyright 2016-2019 Free Software Foundation, Inc.
+   Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+
+   This file is part of the PRU simulator.
+
+   This library is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef PRU_SIM_MAIN
+#define PRU_SIM_MAIN
+
+#include <stdint.h>
+#include <stddef.h>
+#include "pru.h"
+#include "sim-basics.h"
+
+#include "sim-base.h"
+
+/* The machine state.
+   This state is maintained in host byte order.  The
+   fetch/store register functions must translate between host
+   byte order and the target processor byte order.
+   Keeping this data in target byte order simplifies the register
+   read/write functions.  Keeping this data in host order improves
+   the performance of the simulator.  Simulation speed is deemed more
+   important.  */
+
+/* For clarity, please keep the same relative order in this enum as in the
+   corresponding group of GP registers.
+
+   In PRU ISA, Multiplier-Accumulator-Unit's registers are like "shadows" of
+   the GP registers.  MAC registers are implicitly addressed when executing
+   the XIN/XOUT instructions to access them.  Transfer to/from a MAC register
+   can happen only from/to its corresponding GP peer register.  */
+
+enum pru_macreg_id {
+    /* MAC register	  CPU GP register     Description.  */
+    PRU_MACREG_MODE,	  /* r25 */	      /* Mode (MUL/MAC).  */
+    PRU_MACREG_PROD_L,	  /* r26 */	      /* Lower 32 bits of product.  */
+    PRU_MACREG_PROD_H,	  /* r27 */	      /* Higher 32 bits of product.  */
+    PRU_MACREG_OP_0,	  /* r28 */	      /* First operand.  */
+    PRU_MACREG_OP_1,	  /* r29 */	      /* Second operand.  */
+    PRU_MACREG_ACC_L,	  /* N/A */	      /* Accumulator (not exposed)  */
+    PRU_MACREG_ACC_H,	  /* N/A */	      /* Higher 32 bits of MAC
+						 accumulator.  */
+    PRU_MAC_NREGS
+};
+
+struct pru_regset
+{
+  uint32_t	  regs[32];		/* Primary registers.  */
+  uint16_t	  pc;			/* IMEM _word_ address.  */
+  uint32_t	  pc_addr_space_marker; /* IMEM virtual linker offset.  This
+					   is the artificial offset that
+					   we invent in order to "separate"
+					   the DMEM and IMEM memory spaces.  */
+  unsigned int	  carry : 1;
+  uint32_t	  ctable[32];		/* Constant offsets table for xBCO.  */
+  uint32_t	  macregs[PRU_MAC_NREGS];
+  uint32_t	  scratchpads[XFRID_MAX + 1][32];
+  struct {
+    uint16_t looptop;			/* LOOP top (PC of loop instr).  */
+    uint16_t loopend;			/* LOOP end (PC of loop end label).  */
+    int loop_in_progress;		/* Whether to check for PC==loopend.  */
+    uint32_t loop_counter;		/* LOOP counter.  */
+  } loop;
+  int		  cycles;
+  int		  insts;
+};
+
+struct _sim_cpu {
+  struct pru_regset pru_cpu;
+  sim_cpu_base base;
+};
+
+struct sim_state {
+  sim_cpu *cpu[MAX_NR_PROCESSORS];
+
+  sim_state_base base;
+};
+#endif /* PRU_SIM_MAIN */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Add testsuite for the PRU simulator port
@ 2019-09-23 21:49 gdb-buildbot
  2019-09-23 22:06 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23 21:49 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT e2e9097bd21406f09fdf57fee0d99e6b45de61b6 ***

commit e2e9097bd21406f09fdf57fee0d99e6b45de61b6
Author:     Dimitar Dimitrov <dimitar@dinux.eu>
AuthorDate: Mon Sep 23 17:55:43 2019 +0100
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Mon Sep 23 22:11:16 2019 +0100

    Add testsuite for the PRU simulator port
    
    sim/testsuite/ChangeLog:
    
            * configure: Regenerate.
    
    sim/testsuite/sim/pru/ChangeLog:
    
            * add.s: New test.
            * allinsn.exp: New file.
            * dmem-zero-pass.s: New test.
            * dmem-zero-trap.s: New test.
            * dram.s: New test.
            * jmp.s: New test.
            * loop-imm.s: New test.
            * loop-reg.s: New test.
            * mul.s: New test.
            * subreg.s: New test.
            * testutils.inc: New file.

diff --git a/sim/testsuite/ChangeLog b/sim/testsuite/ChangeLog
index e4cf620a0f..89bd065751 100644
--- a/sim/testsuite/ChangeLog
+++ b/sim/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* configure: Regenerate.
+
 2017-12-12  Stafford Horne  <shorne@gmail.com>
 	    Peter Gavin  <pgavin@gmail.com>
 
diff --git a/sim/testsuite/configure b/sim/testsuite/configure
index 238d2a2be8..a3e7fa7131 100755
--- a/sim/testsuite/configure
+++ b/sim/testsuite/configure
@@ -1946,6 +1946,9 @@ case "${target}" in
    powerpc*-*-*)
        sim_arch=ppc
        ;;
+   pru*-*-*)
+       sim_arch=pru
+       ;;
    ft32-*-*)
        sim_arch=ft32
        ;;
diff --git a/sim/testsuite/sim/pru/ChangeLog b/sim/testsuite/sim/pru/ChangeLog
new file mode 100644
index 0000000000..d8b438bb45
--- /dev/null
+++ b/sim/testsuite/sim/pru/ChangeLog
@@ -0,0 +1,13 @@
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* add.s: New test.
+	* allinsn.exp: New file.
+	* dmem-zero-pass.s: New test.
+	* dmem-zero-trap.s: New test.
+	* dram.s: New test.
+	* jmp.s: New test.
+	* loop-imm.s: New test.
+	* loop-reg.s: New test.
+	* mul.s: New test.
+	* subreg.s: New test.
+	* testutils.inc: New file.
diff --git a/sim/testsuite/sim/pru/add.s b/sim/testsuite/sim/pru/add.s
new file mode 100644
index 0000000000..bc8530d125
--- /dev/null
+++ b/sim/testsuite/sim/pru/add.s
@@ -0,0 +1,40 @@
+# Check that basic add insn works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r4, 10
+	add r4, r4, 23
+	qbne 2f, r4, 33
+
+	qblt 2f, r4, 33
+
+	qbgt 2f, r4, 33
+
+	jmp 1f
+
+	fail
+
+1:
+	pass
+2:	fail
diff --git a/sim/testsuite/sim/pru/allinsn.exp b/sim/testsuite/sim/pru/allinsn.exp
new file mode 100644
index 0000000000..aed804d8e0
--- /dev/null
+++ b/sim/testsuite/sim/pru/allinsn.exp
@@ -0,0 +1,33 @@
+# PRU simulator testsuite.
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if [istarget pru-*] {
+    # all machines
+    set all_machs "pru"
+
+    foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.s]] {
+	# If we're only testing specific files and this isn't one of them,
+	# skip it.
+	if ![runtest_file_p $runtests $src] {
+	    continue
+	}
+	run_sim_test $src $all_machs
+    }
+}
diff --git a/sim/testsuite/sim/pru/dmem-zero-pass.s b/sim/testsuite/sim/pru/dmem-zero-pass.s
new file mode 100644
index 0000000000..2ec1687f07
--- /dev/null
+++ b/sim/testsuite/sim/pru/dmem-zero-pass.s
@@ -0,0 +1,29 @@
+# Check that DMEM zero address access works by default.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r1, 0
+	lbbo &r2, r1, 0, 4
+
+	pass
diff --git a/sim/testsuite/sim/pru/dmem-zero-trap.s b/sim/testsuite/sim/pru/dmem-zero-trap.s
new file mode 100644
index 0000000000..609c4f8459
--- /dev/null
+++ b/sim/testsuite/sim/pru/dmem-zero-trap.s
@@ -0,0 +1,32 @@
+# Check that DMEM zero address access can be trapped.
+# mach: pru
+# sim: --error-null-deref
+# xerror:
+# output: core: 4 byte read to unmapped address 0x0 at *\n
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r1, 0
+	lbbo &r2, r1, 0, 4
+
+	pass
diff --git a/sim/testsuite/sim/pru/dram.s b/sim/testsuite/sim/pru/dram.s
new file mode 100644
index 0000000000..fd79ba783e
--- /dev/null
+++ b/sim/testsuite/sim/pru/dram.s
@@ -0,0 +1,72 @@
+# Check that DRAM memory access works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	fill r20, 16
+	ldi r10, 0
+	not r10, r10
+	qbne F, r20, r10
+	qbne F, r21, r10
+	qbne F, r22, r10
+	qbne F, r23, r10
+
+	zero r20, 16
+	qbne F, r20, 0
+	qbne F, r21, 0
+	qbne F, r22, 0
+	qbne F, r23, 0
+
+	ldi r0, testarray
+	lbbo &r20, r0, 0, 7
+	qbne F, r20.b0, 0x01
+	qbne F, r20.b1, 0x23
+	qbne F, r20.b2, 0x45
+	qbne F, r20.b3, 0x67
+	qbne F, r21.b0, 0x89
+	qbne F, r21.b1, 0xab
+	qbne F, r21.b2, 0xcd
+	qbne F, r21.b3, 0x00 ; Should not have been loaded!
+	qbne F, r22, 0
+	qbne F, r23, 0
+
+	ldi r1, 0x11
+	sbbo &r1, r0, 9, 1
+	ldi r1, 0x11
+	sbbo &r1, r0, 12, 4
+
+	lbbo &r20, r0, 0, 16
+	qbne F, r21.b3, 0xef
+	qbne F, r22.b0, 0xff
+	qbne F, r22.b1, 0x11
+	qbne F, r22.b2, 0xff
+	qbne F, r22.b3, 0xff
+	qbne F, r23, 0x11
+
+	pass
+F:	fail
+
+	.data
+testarray:
+	.byte 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
+	.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
diff --git a/sim/testsuite/sim/pru/jmp.s b/sim/testsuite/sim/pru/jmp.s
new file mode 100644
index 0000000000..14d749dcf2
--- /dev/null
+++ b/sim/testsuite/sim/pru/jmp.s
@@ -0,0 +1,40 @@
+# Check that jump and branch insns work.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r10, 10
+	call func1
+	qbne F, r10, 11
+
+	ldi r0, %pmem(1f)
+	jmp r0
+	fail
+1:
+	pass
+F:	fail
+
+
+func1:
+	add r10, r10, 1
+	ret
diff --git a/sim/testsuite/sim/pru/loop-imm.s b/sim/testsuite/sim/pru/loop-imm.s
new file mode 100644
index 0000000000..7e462fdcc7
--- /dev/null
+++ b/sim/testsuite/sim/pru/loop-imm.s
@@ -0,0 +1,43 @@
+# Check that loop insn works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r25, 0
+	ldi r26, 0
+	ldi r27, 0
+
+	add r27, r27, 1
+	loop 1f, 10
+	add r25, r25, 1
+	add r26, r26, 2
+1:
+	add r27, r27, 1
+
+	qbne F, r25, 10
+	qbne F, r26, 20
+	qbne F, r27, 2
+
+	pass
+
+F:	fail
diff --git a/sim/testsuite/sim/pru/loop-reg.s b/sim/testsuite/sim/pru/loop-reg.s
new file mode 100644
index 0000000000..6e4238cf29
--- /dev/null
+++ b/sim/testsuite/sim/pru/loop-reg.s
@@ -0,0 +1,44 @@
+# Check that loop insn works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r25, 0
+	ldi r26, 0
+	ldi r27, 0
+	ldi r28, 10
+
+	add r27, r27, 1
+	loop 1f, r28
+	add r25, r25, 1
+	add r26, r26, 2
+1:
+	add r27, r27, 1
+
+	qbne F, r25, 10
+	qbne F, r26, 20
+	qbne F, r27, 2
+
+	pass
+
+F:	fail
diff --git a/sim/testsuite/sim/pru/mul.s b/sim/testsuite/sim/pru/mul.s
new file mode 100644
index 0000000000..4a75baf85a
--- /dev/null
+++ b/sim/testsuite/sim/pru/mul.s
@@ -0,0 +1,89 @@
+# Check that multiplication works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	# MUL: Test regular case
+	ldi r28, 1001
+	ldi r29, 4567
+	nop
+	xin 0, r26, 4
+	qbne32 2f, r26, 1001 * 4567
+
+	# MUL: Test the pipeline emulation
+	ldi r28, 1002
+	ldi r29, 1003
+	ldi r29, 4004
+	xin 0, r26, 4
+	qbne32 2f, r26, 1002 * 1003
+	xin 0, r26, 4
+	qbne32 2f, r26, 1002 * 4004
+
+	# MUL: Test 64-bit result
+	ldi32 r28, 0x12345678
+	ldi32 r29, 0xaabbccdd
+	nop
+	xin 0, r26, 8
+	qbne32 2f, r26, 0x45BE4598
+	qbne32 2f, r27, 0xC241C38
+
+	# MAC: Test regular case
+	ldi r25, 1
+	xout 0, r25, 1
+	ldi r25, 3
+	xout 0, r25, 1
+
+	ldi r25, 1
+	ldi r28, 1001
+	ldi r29, 2002
+	xout 0, r25, 1
+	ldi r28, 3003
+	ldi r29, 4004
+	xout 0, r25, 1
+
+	xin 0, r26, 4
+	qbne32 2f, r26, (1001 * 2002) + (3003 * 4004)
+
+	# MAC: Test 64-bit result
+	ldi r25, 3
+	xout 0, r25, 1
+
+	ldi r25, 1
+	ldi32 r28, 0x10203040
+	ldi32 r29, 0x50607080
+	xout 0, r25, 1
+	ldi32 r28, 0xa0b0c0d0
+	ldi32 r29, 0x11223344
+	xout 0, r25, 1
+
+	xin 0, r26, 8
+	qbne32 2f, r26, 0x8E30C740
+	qbne32 2f, r27, 0xFD156B1
+
+	jmp 1f
+
+	fail
+
+1:
+	pass
+2:	fail
diff --git a/sim/testsuite/sim/pru/subreg.s b/sim/testsuite/sim/pru/subreg.s
new file mode 100644
index 0000000000..77dedd11ec
--- /dev/null
+++ b/sim/testsuite/sim/pru/subreg.s
@@ -0,0 +1,40 @@
+# Check that subregister addressing works.
+# mach: pru
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+.include "testutils.inc"
+
+	start
+
+	ldi r0, 0x01ff
+	add r0, r0.b0, r0.b1
+	qbne F, r0.b0, 0x00
+	qbne F, r0.b1, 0x01
+	qbne F, r0.w2, 0x00
+
+	ldi r0, 0x01ff
+	add r0.b0, r0.b0, r0.b1
+	adc r0, r0.b1, r0.b3
+	qbne F, r0.b0, 0x02
+	qbne F, r0.b1, 0x00
+	qbne F, r0.w2, 0x00
+
+	pass
+F:	fail
diff --git a/sim/testsuite/sim/pru/testutils.inc b/sim/testsuite/sim/pru/testutils.inc
new file mode 100644
index 0000000000..753908447e
--- /dev/null
+++ b/sim/testsuite/sim/pru/testutils.inc
@@ -0,0 +1,100 @@
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
+#
+# This file is part of the GNU simulators.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# MACRO: start
+# All assembler tests should start with a call to "main_test"
+	.macro start
+	.text
+
+	.global _start
+_start:
+
+	# Skip over these inlined funcs.
+	jmp __main_test;
+
+	.global __pass
+	.type __pass, function
+__pass:
+	# Note - DRAM LMA and VMA are equal for PRU, so
+	# we can afford to pass DRAM pointer directly.
+	write 1, _passmsg, 5
+	exit 0
+
+	.global __fail
+	.type __fail, function
+__fail:
+	write 1, _failmsg, 5
+	exit 1
+
+	.data
+_passmsg:
+	.ascii "pass\n"
+
+_failmsg:
+	.ascii "fail\n"
+
+	.text
+	.global __main_test
+	.type __main_test, function
+__main_test:
+	.endm
+
+# MACRO: system_call
+# Make a libgloss system call
+	.macro system_call nr:req, arg1=0, arg2=0, arg3=0
+	ldi r1, \nr
+	ldi r14, \arg1
+	ldi r15, \arg2
+	ldi r16, \arg3
+	halt
+	.endm
+
+# MACRO: exit
+# Quit the current test
+	.macro exit rc:req
+	system_call 1, \rc
+	.endm
+
+# MACRO: pass
+# Write 'pass' to stdout via syscalls and quit;
+# meant for non-OS operating environments
+	.macro pass
+	jmp __pass;
+	.endm
+
+# MACRO: fail
+# Write 'fail' to stdout via syscalls and quit;
+# meant for non-OS operating environments
+	.macro fail
+	jmp __fail;
+	.endm
+
+# MACRO: write
+# Just like the write() C function; uses system calls
+	.macro write fd:req, str:req, len:req
+	system_call 5, \fd, \str, \len
+	.endm
+
+# MACRO: qbne32
+# Like qbne instruction, but check a 32-bit constant value.
+	.macro qbne32 label:req, op0:req, C0:req
+	qbne \label, \op0\().b0, ((\C0) >> 0) & 0xff
+	qbne \label, \op0\().b1, ((\C0) >> 8) & 0xff
+	qbne \label, \op0\().b2, ((\C0) >> 16) & 0xff
+	qbne \label, \op0\().b3, ((\C0) >> 24) & 0xff
+	.endm


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] gdb/readline: fix use of an undefined variable
@ 2019-09-23 22:26 gdb-buildbot
  2019-09-24  0:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-23 22:26 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 32a1adcccf05f98e95a2a451066af810e121bdd9 ***

commit 32a1adcccf05f98e95a2a451066af810e121bdd9
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Wed Sep 18 15:13:25 2019 -0400
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Mon Sep 23 22:35:05 2019 +0100

    gdb/readline: fix use of an undefined variable
    
    This commit in binutils-gdb:
    
      commit 830b67068cebe7db0eb0db3fa19244e03859fae0
      Date:   Fri Jul 12 09:53:02 2019 +0200
    
          [readline] Fix heap-buffer-overflow in update_line
    
    Which corresponds to this commit in upstream readline:
    
      commit 31547b4ea4a1a904e1b08e2bc4b4ebd5042aedaa
      Date:   Mon Aug 5 10:24:27 2019 -0400
    
          commit readline-20190805 snapshot
    
    Introduced a use of an undefined variable, which can be seen using
    valgrind:
    
      $ valgrind --tool=memcheck gdb
      GNU gdb (GDB) 8.3.50.20190918-git
      Copyright (C) 2019 Free Software Foundation, Inc.
      License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
      This is free software: you are free to change and redistribute it.
      There is NO WARRANTY, to the extent permitted by law.
      Type "show copying" and "show warranty" for details.
      This GDB was configured as "x86_64-pc-linux-gnu".
      Type "show configuration" for configuration details.
      For bug reporting instructions, please see:
      <http://www.gnu.org/software/gdb/bugs/>.
      Find the GDB manual and other documentation resources online at:
          <http://www.gnu.org/software/gdb/documentation/>.
    
      For help, type "help".
      Type "apropos word" to search for commands related to "word".
      ==24924== Conditional jump or move depends on uninitialised value(s)
      ==24924==    at 0x9986C3: rl_redisplay (display.c:710)
      ==24924==    by 0x9839CE: readline_internal_setup (readline.c:447)
      ==24924==    by 0x9A1C2B: _rl_callback_newline (callback.c:100)
      ==24924==    by 0x9A1C85: rl_callback_handler_install (callback.c:111)
      ==24924==    by 0x6195EB: gdb_rl_callback_handler_install(char const*) (event-top.c:319)
      ==24924==    by 0x61975E: display_gdb_prompt(char const*) (event-top.c:409)
      ==24924==    by 0x4FBFE3: cli_interp_base::pre_command_loop() (cli-interp.c:286)
      ==24924==    by 0x6E53DA: interp_pre_command_loop(interp*) (interps.c:321)
      ==24924==    by 0x731F30: captured_command_loop() (main.c:334)
      ==24924==    by 0x733568: captured_main(void*) (main.c:1182)
      ==24924==    by 0x7335CE: gdb_main(captured_main_args*) (main.c:1197)
      ==24924==    by 0x41325D: main (gdb.c:32)
      ==24924==
      (gdb)
    
    The problem can be traced back to init_line_structures.  The very
    first time this function is ever called its MINSIZE parameter is
    always 0 and the global LINE_SIZE is 1024.  Prior to the above
    mentioned commits we spot that the line_state variables have not yet
    been initialised, and allocate them some new buffer, then we enter
    this loop:
    
      for (n = minsize; n < line_size; n++)
        {
          visible_line[n] = 0;
          invisible_line[n] = 1;
        }
    
    which would initialise everything from the incoming minimum up to the
    potentially extended upper line size.
    
    The problem is that the above patches added a new condition that would
    bump up the minsize like this:
    
      if (minsize <= _rl_screenwidth)       /* XXX - for gdb */
        minsize = _rl_screenwidth + 1;
    
    So, the first time this function is called the incoming MINSIZE is 0,
    the LINE_SIZE global is 1024, and if the _rl_screenwidth is 80, we see
    that MINSIZE will be pushed up to 80.  We still notice that the line
    state is uninitialised and allocate some buffers, then we enter the
    initialisation loop:
    
      for (n = minsize; n < line_size; n++)
        {
          visible_line[n] = 0;
          invisible_line[n] = 1;
        }
    
    And initialise from 80 to 1023 i the newly allocated buffers, leaving
    0 to 79 uninitialised.
    
    To confirm this is an issue, if we then look at rl_redisplay we see
    that a call to init_line_structures is followed first by a call to
    rl_on_new_line, which does initialise visible_line[0], but not
    invisible_line[0].  Later in rl_redisplay we have this logic:
    
      if (visible_line[0] != invisible_line[0])
        rl_display_fixed = 0;
    
    The use of invisible_line[0] here will be undefined.
    
    Considering how this variable was originally initialised before the
    above patches, this patch modifies the initialisation loop in
    init_line_structures, to use the original value of MINSIZE.  With this
    change the valgrind warning goes away.
    
    readline/ChangeLog:
    
            PR cli/24980
            * display.c (init_line_structures): Initialise line_state using
            original minsize value.

diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb
index 01b083951e..49e9fba5ad 100644
--- a/readline/ChangeLog.gdb
+++ b/readline/ChangeLog.gdb
@@ -1,3 +1,9 @@
+2019-09-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR cli/24980
+	* display.c (init_line_structures): Initialise line_state using
+	original minsize value.
+
 2019-08-13  Christian Biesinger  <cbiesinger@google.com>
 
 	* colors.c (_rl_print_color_indicator): Remove unnecessary
diff --git a/readline/display.c b/readline/display.c
index b39f28291b..89193b572b 100644
--- a/readline/display.c
+++ b/readline/display.c
@@ -602,6 +602,7 @@ static void
 init_line_structures (int minsize)
 {
   register int n;
+  int original_minsize = minsize;
 
   if (minsize <= _rl_screenwidth)	/* XXX - for gdb */
     minsize = _rl_screenwidth + 1;
@@ -622,7 +623,7 @@ init_line_structures (int minsize)
       invisible_line = (char *)xrealloc (invisible_line, line_size);
     }
 
-  for (n = minsize; n < line_size; n++)
+  for (n = original_minsize; n < line_size; n++)
     {
       visible_line[n] = 0;
       invisible_line[n] = 1;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] [gdb/tdep] Handle mxcsr kernel bug on Intel Skylake CPUs
@ 2019-09-24 22:13 gdb-buildbot
  2019-09-25  0:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-24 22:13 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 3d4352200e3e98a6d8855e6f3a39b6d33d84e36b ***

commit 3d4352200e3e98a6d8855e6f3a39b6d33d84e36b
Author:     Tom de Vries <tdevries@suse.de>
AuthorDate: Tue Sep 24 23:38:49 2019 +0200
Commit:     Tom de Vries <tdevries@suse.de>
CommitDate: Tue Sep 24 23:38:49 2019 +0200

    [gdb/tdep] Handle mxcsr kernel bug on Intel Skylake CPUs
    
    On my openSUSE Leap 15.1 x86_64 Skylake system with the default (4.12) kernel,
    I run into:
    ...
    FAIL: gdb.base/gcore.exp: corefile restored all registers
    ...
    
    The problem is that there's a difference in the mxcsr register value before
    and after the gcore command:
    ...
    - mxcsr          0x0                 [ ]
    + mxcsr          0x400440            [ DAZ OM ]
    ...
    
    This can be traced back to amd64_linux_nat_target::fetch_registers, where
    xstateregs is partially initialized by the ptrace call:
    ...
              char xstateregs[X86_XSTATE_MAX_SIZE];
              struct iovec iov;
    
              amd64_collect_xsave (regcache, -1, xstateregs, 0);
              iov.iov_base = xstateregs;
              iov.iov_len = sizeof (xstateregs);
              if (ptrace (PTRACE_GETREGSET, tid,
                          (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
                perror_with_name (_("Couldn't get extended state status"));
    
              amd64_supply_xsave (regcache, -1, xstateregs);
    ...
    after which amd64_supply_xsave is called.
    
    The amd64_supply_xsave call is supposed to only use initialized parts of
    xstateregs, but due to a kernel bug on intel skylake (fixed from 4.14 onwards
    by commit 0852b374173b "x86/fpu: Add FPU state copying quirk to handle XRSTOR
    failure on Intel Skylake CPUs") it can happen that the mxcsr part of
    xstateregs is not initialized, while amd64_supply_xsave expects it to be
    initialized, which explains the FAIL mentioned above.
    
    Fix the undetermined behaviour by initializing xstateregs before calling
    ptrace, which makes sure we get a 0x0 for mxcsr when this kernel bug occurs,
    and which also happens to fix the FAIL.
    
    Furthermore, add an xfail for this FAIL which triggers the same kernel bug:
    ...
    FAIL: gdb.arch/amd64-init-x87-values.exp: check_setting_mxcsr_before_enable: \
      check new value of MXCSR is still in place
    ...
    
    Both FAILs pass when using a 5.3 kernel instead on the system mentioned above.
    
    Tested on x86_64-linux.
    
    gdb/ChangeLog:
    
    2019-09-24  Tom de Vries  <tdevries@suse.de>
    
            PR gdb/23815
            * amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers):
            Initialize xstateregs before ptrace PTRACE_GETREGSET call.
    
    gdb/testsuite/ChangeLog:
    
    2019-09-24  Tom de Vries  <tdevries@suse.de>
    
            PR gdb/24598
            * gdb.arch/amd64-init-x87-values.exp: Add xfail.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 77aab76492..ee53e9c00a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-24  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/23815
+	* amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers):
+	Initialize xstateregs before ptrace PTRACE_GETREGSET call.
+
 2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
 
 	* NEWS: Mention new simulator port for PRU.
diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
index 4f1c98a0d1..d0328b677d 100644
--- a/gdb/amd64-linux-nat.c
+++ b/gdb/amd64-linux-nat.c
@@ -238,6 +238,12 @@ amd64_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum)
 	  char xstateregs[X86_XSTATE_MAX_SIZE];
 	  struct iovec iov;
 
+	  /* Pre-4.14 kernels have a bug (fixed by commit 0852b374173b
+	     "x86/fpu: Add FPU state copying quirk to handle XRSTOR failure on
+	     Intel Skylake CPUs") that sometimes causes the mxcsr location in
+	     xstateregs not to be copied by PTRACE_GETREGSET.  Make sure that
+	     the location is at least initialized with a defined value.  */
+	  memset (xstateregs, 0, sizeof (xstateregs));
 	  iov.iov_base = xstateregs;
 	  iov.iov_len = sizeof (xstateregs);
 	  if (ptrace (PTRACE_GETREGSET, tid,
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 37e323f747..706c5da420 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-24  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24598
+	* gdb.arch/amd64-init-x87-values.exp: Add xfail.
+
 2019-09-22  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/restore.exp: Allow register variables to be optimized out at
diff --git a/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp b/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp
index cdf92dcd37..5fd18dbb79 100644
--- a/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp
+++ b/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp
@@ -116,7 +116,7 @@ proc_with_prefix check_x87_regs_around_init {} {
 # nop that does not enable any FP features).  Finally check that the
 # mxcsr register still has the value we set.
 proc_with_prefix check_setting_mxcsr_before_enable {} {
-    global binfile
+    global binfile gdb_prompt
 
     clean_restart ${binfile}
 
@@ -127,7 +127,22 @@ proc_with_prefix check_setting_mxcsr_before_enable {} {
 
     gdb_test_no_output "set \$mxcsr=0x9f80" "set a new value for MXCSR"
     gdb_test "stepi" "fwait" "step forward one instruction for mxcsr test"
-    gdb_test "p/x \$mxcsr" " = 0x9f80" "check new value of MXCSR is still in place"
+
+    set test "check new value of MXCSR is still in place"
+    set pass_pattern " = 0x9f80"
+    # Pre-4.14 kernels have a bug (fixed by commit 0852b374173b "x86/fpu:
+    # Add FPU state copying quirk to handle XRSTOR failure on Intel Skylake
+    # CPUs") that causes mxcsr not to be copied, in which case we get 0 instead of
+    # the just saved value.
+    set xfail_pattern " = 0x0"
+    gdb_test_multiple "p/x \$mxcsr" $test {
+	-re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+	    pass $test
+	}
+	-re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+	    xfail $test
+	}
+    }
 }
 
 # Start the test file, all FP features will be disabled.  Set new


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove make_hex_string
@ 2019-09-25 16:37 gdb-buildbot
  2019-09-25 18:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-25 16:37 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 858f25f0dd3c7013e4c87b95fa8edac223d26156 ***

commit 858f25f0dd3c7013e4c87b95fa8edac223d26156
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Sep 24 17:36:07 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Wed Sep 25 09:37:56 2019 -0600

    Remove make_hex_string
    
    I noticed that make_hex_string does essentially the same thing as
    bin2hex, and furthermore is only called in a single spot.  This patch
    removes make_hex_string.
    
    Tested by the builtbot.
    
    gdb/ChangeLog
    2019-09-25  Tom Tromey  <tom@tromey.com>
    
            * python/py-objfile.c (objfpy_get_build_id): Use bin2hex.
            * utils.h (make_hex_string): Don't declare.
            * utils.c (make_hex_string): Remove.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ee53e9c00a..81f5785a78 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-25  Tom Tromey  <tom@tromey.com>
+
+	* python/py-objfile.c (objfpy_get_build_id): Use bin2hex.
+	* utils.h (make_hex_string): Don't declare.
+	* utils.c (make_hex_string): Remove.
+
 2019-09-24  Tom de Vries  <tdevries@suse.de>
 
 	PR gdb/23815
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index 2c548450b4..517ed56dc7 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -141,10 +141,9 @@ objfpy_get_build_id (PyObject *self, void *closure)
 
   if (build_id != NULL)
     {
-      gdb::unique_xmalloc_ptr<char> hex_form
-	(make_hex_string (build_id->data, build_id->size));
+      std::string hex_form = bin2hex (build_id->data, build_id->size);
 
-      return host_string_to_python_string (hex_form.get ()).release ();
+      return host_string_to_python_string (hex_form.c_str ()).release ();
     }
 
   Py_RETURN_NONE;
diff --git a/gdb/utils.c b/gdb/utils.c
index b2535ebefd..154fcd97e2 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -736,22 +736,6 @@ gdb_print_host_address_1 (const void *addr, struct ui_file *stream)
   fprintf_filtered (stream, "%s", host_address_to_string (addr));
 }
 
-/* See utils.h.  */
-
-char *
-make_hex_string (const gdb_byte *data, size_t length)
-{
-  char *result = (char *) xmalloc (length * 2 + 1);
-  char *p;
-  size_t i;
-
-  p = result;
-  for (i = 0; i < length; ++i)
-    p += xsnprintf (p, 3, "%02x", data[i]);
-  *p = '\0';
-  return result;
-}
-
 \f
 
 /* An RAII class that sets up to handle input and then tears down
diff --git a/gdb/utils.h b/gdb/utils.h
index 7cdc73ef54..b0b5573239 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -540,11 +540,6 @@ extern void warn_cant_dump_core (const char *reason);
 
 extern void dump_core (void);
 
-/* Return the hex string form of LENGTH bytes of DATA.
-   Space for the result is malloc'd, caller must free.  */
-
-extern char *make_hex_string (const gdb_byte *data, size_t length);
-
 /* Copy NBITS bits from SOURCE to DEST starting at the given bit
    offsets.  Use the bit order as specified by BITS_BIG_ENDIAN.
    Source and destination buffers must not overlap.  */


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] PR24262, plugin search dir doesn't respect --libdir
@ 2019-09-26 11:09 gdb-buildbot
  2019-09-26 13:50 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-26 11:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 41f37a6fb71f2a3de388108f5cdfca9cbe6e9d51 ***

commit 41f37a6fb71f2a3de388108f5cdfca9cbe6e9d51
Author:     Alan Modra <amodra@gmail.com>
AuthorDate: Thu Sep 26 16:20:35 2019 +0930
Commit:     Alan Modra <amodra@gmail.com>
CommitDate: Thu Sep 26 19:51:18 2019 +0930

    PR24262, plugin search dir doesn't respect --libdir
    
    bfd/
            PR 24262
            * Makefile.am (AM_CPPFLAGS): Add -DLIBDIR.
            * plugin.c (load_plugin): Search both ${libdir}/bfd-plugins and
            ${bindir}/../lib/bfd-plugins if different.
            * Makefile.in: Regenerate.
    ld/
            PR 24262
            * ld.texi (-plugin): Revert 2019-03-15 change.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ac0296482b..8496cb484f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-26  Alan Modra  <amodra@gmail.com>
+
+	PR 24262
+	* Makefile.am (AM_CPPFLAGS): Add -DLIBDIR.
+	* plugin.c (load_plugin): Search both ${libdir}/bfd-plugins and
+	${bindir}/../lib/bfd-plugins if different.
+	* Makefile.in: Regenerate.
+
 2019-09-23  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (ppc64_elf_check_relocs): Use bfd_link_executable
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index f31a734599..ca868e7c2e 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -53,7 +53,7 @@ ZLIBINC = @zlibinc@
 WARN_CFLAGS = @WARN_CFLAGS@
 NO_WERROR = @NO_WERROR@
 AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
-AM_CPPFLAGS = -DBINDIR='"$(bindir)"'
+AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"'
 if PLUGINS
 bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
 LIBDL = @lt_cv_dlopen_libs@
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index c1cd371852..ec1ce3eb8d 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -479,8 +479,9 @@ libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \
 ZLIB = @zlibdir@ -lz
 ZLIBINC = @zlibinc@
 AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
-AM_CPPFLAGS = -DBINDIR='"$(bindir)"' @HDEFINES@ @COREFLAG@ @TDEFINES@ \
-	$(CSEARCH) $(CSWITCHES) $(HAVEVECS) @INCINTL@
+AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' @HDEFINES@ \
+	@COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) $(HAVEVECS) \
+	@INCINTL@ $(am__empty)
 @PLUGINS_TRUE@LIBDL = @lt_cv_dlopen_libs@
 
 # bfd.h goes here, for now
diff --git a/bfd/plugin.c b/bfd/plugin.c
index ca26005055..5f059befb4 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -367,11 +367,15 @@ register_ld_plugin_object_p (const bfd_target *(*object_p) (bfd *))
 static int
 load_plugin (bfd *abfd)
 {
-  char *plugin_dir;
-  char *p;
-  DIR *d;
-  struct dirent *ent;
+  /* The intent was to search ${libdir}/bfd-plugins for plugins, but
+     unfortunately the original implementation wasn't precisely that
+     when configuring binutils using --libdir.  Search in the proper
+     path first, then the old one for backwards compatibility.  */
+  static const char *path[]
+    = { LIBDIR "/bfd-plugins", BINDIR "/../lib/bfd-plugins" };
+  struct stat last_st;
   int found = 0;
+  unsigned int i;
 
   if (!has_plugin)
     return found;
@@ -382,38 +386,58 @@ load_plugin (bfd *abfd)
   if (plugin_program_name == NULL)
     return found;
 
-  plugin_dir = concat (BINDIR, "/../lib/bfd-plugins", NULL);
-  p = make_relative_prefix (plugin_program_name,
-			    BINDIR,
-			    plugin_dir);
-  free (plugin_dir);
-  plugin_dir = NULL;
-
-  d = opendir (p);
-  if (!d)
-    goto out;
-
-  while ((ent = readdir (d)))
+  /* Try not to search the same dir twice, by looking at st_dev and
+     st_ino for the dir.  If we are on a file system that always sets
+     st_ino to zero or the actual st_ino is zero we might waste some
+     time, but that doesn't matter too much.  */
+  last_st.st_dev = 0;
+  last_st.st_ino = 0;
+  for (i = 0; i < sizeof (path) / sizeof (path[0]); i++)
     {
-      char *full_name;
-      struct stat s;
-      int valid_plugin;
-
-      full_name = concat (p, "/", ent->d_name, NULL);
-      if (stat (full_name, &s) == 0 && S_ISREG (s.st_mode))
-	found = try_load_plugin (full_name, abfd, &valid_plugin);
-      if (has_plugin <= 0)
-	has_plugin = valid_plugin;
-      free (full_name);
+      char *plugin_dir = make_relative_prefix (plugin_program_name,
+					       BINDIR,
+					       path[i]);
+      if (plugin_dir)
+	{
+	  struct stat st;
+	  DIR *d;
+
+	  if (stat (plugin_dir, &st) == 0
+	      && S_ISDIR (st.st_mode)
+	      && !(last_st.st_dev == st.st_dev
+		   && last_st.st_ino == st.st_ino
+		   && st.st_ino != 0)
+	      && (d = opendir (plugin_dir)) != NULL)
+	    {
+	      struct dirent *ent;
+
+	      last_st.st_dev = st.st_dev;
+	      last_st.st_ino = st.st_ino;
+	      while ((ent = readdir (d)) != NULL)
+		{
+		  char *full_name;
+
+		  full_name = concat (plugin_dir, "/", ent->d_name, NULL);
+		  if (stat (full_name, &st) == 0 && S_ISREG (st.st_mode))
+		    {
+		      int valid_plugin;
+
+		      found = try_load_plugin (full_name, abfd, &valid_plugin);
+		      if (has_plugin <= 0)
+			has_plugin = valid_plugin;
+		    }
+		  free (full_name);
+		  if (found)
+		    break;
+		}
+	      closedir (d);
+	    }
+	  free (plugin_dir);
+	}
       if (found)
 	break;
     }
 
- out:
-  free (p);
-  if (d)
-    closedir (d);
-
   return found;
 }
 
diff --git a/ld/ChangeLog b/ld/ChangeLog
index c90a587b3a..24f0ae90cb 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-26  Alan Modra  <amodra@gmail.com>
+
+	PR 24262
+	* ld.texi (-plugin): Revert 2019-03-15 change.
+
 2019-09-25  Alan Modra  <amodra@gmail.com>
 
 	* ld.texi (SORT_BY_ALIGNMENT): Reword slightly.
diff --git a/ld/ld.texi b/ld/ld.texi
index 95fa6a0348..fcbc335c95 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -855,7 +855,7 @@ Note that the location of the compiler originated plugins is different
 from the place where the @command{ar}, @command{nm} and
 @command{ranlib} programs search for their plugins.  In order for
 those commands to make use of a compiler based plugin it must first be
-copied into the @file{$@{bindir@}/../lib/bfd-plugins} directory.  All gcc
+copied into the @file{$@{libdir@}/bfd-plugins} directory.  All gcc
 based linker plugins are backward compatible, so it is sufficient to
 just copy in the newest one.
 


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove initialize_utils
@ 2019-09-26 14:43 gdb-buildbot
  2019-09-26 14:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-26 14:43 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 12904d3729fd027714bac97a6b8c28437c37c173 ***

commit 12904d3729fd027714bac97a6b8c28437c37c173
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Tue Sep 24 17:52:08 2019 -0600
Commit:     Tom Tromey <tom@tromey.com>
CommitDate: Thu Sep 26 07:35:00 2019 -0600

    Remove initialize_utils
    
    initialize_utils only registers some commands, so it isn't necessary
    to run it at any particular time during startup.  This patch removes
    it and merges its contents into _initialize_utils.
    
    Tested by the buildbot.
    
    gdb/ChangeLog
    2019-09-26  Tom Tromey  <tom@tromey.com>
    
            * utils.h (initialize_utils): Don't declare.
            * top.c (gdb_init): Don't call initialize_utils.
            * utils.c (initialize_utils): Remove.  Move contents...
            (_initialize_utils): ... here.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 81f5785a78..bc6c20375b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-26  Tom Tromey  <tom@tromey.com>
+
+	* utils.h (initialize_utils): Don't declare.
+	* top.c (gdb_init): Don't call initialize_utils.
+	* utils.c (initialize_utils): Remove.  Move contents...
+	(_initialize_utils): ... here.
+
 2019-09-25  Tom Tromey  <tom@tromey.com>
 
 	* python/py-objfile.c (objfpy_get_build_id): Use bin2hex.
diff --git a/gdb/top.c b/gdb/top.c
index 49e6daae94..a1a08e0b99 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -2234,7 +2234,6 @@ gdb_init (char *argv0)
 
   init_cmd_lists ();	    /* This needs to be done first.  */
   initialize_targets ();    /* Setup target_terminal macros for utils.c.  */
-  initialize_utils ();	    /* Make errors and warnings possible.  */
 
   init_page_info ();
 
diff --git a/gdb/utils.c b/gdb/utils.c
index 154fcd97e2..11295ed978 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -2773,57 +2773,6 @@ show_debug_timestamp (struct ui_file *file, int from_tty,
 }
 \f
 
-void
-initialize_utils (void)
-{
-  add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
-Set number of characters where GDB should wrap lines of its output."), _("\
-Show number of characters where GDB should wrap lines of its output."), _("\
-This affects where GDB wraps its output to fit the screen width.\n\
-Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."),
-			    set_width_command,
-			    show_chars_per_line,
-			    &setlist, &showlist);
-
-  add_setshow_uinteger_cmd ("height", class_support, &lines_per_page, _("\
-Set number of lines in a page for GDB output pagination."), _("\
-Show number of lines in a page for GDB output pagination."), _("\
-This affects the number of lines after which GDB will pause\n\
-its output and ask you whether to continue.\n\
-Setting this to \"unlimited\" or zero causes GDB never pause during output."),
-			    set_height_command,
-			    show_lines_per_page,
-			    &setlist, &showlist);
-
-  add_setshow_boolean_cmd ("pagination", class_support,
-			   &pagination_enabled, _("\
-Set state of GDB output pagination."), _("\
-Show state of GDB output pagination."), _("\
-When pagination is ON, GDB pauses at end of each screenful of\n\
-its output and asks you whether to continue.\n\
-Turning pagination off is an alternative to \"set height unlimited\"."),
-			   NULL,
-			   show_pagination_enabled,
-			   &setlist, &showlist);
-
-  add_setshow_boolean_cmd ("sevenbit-strings", class_support,
-			   &sevenbit_strings, _("\
-Set printing of 8-bit characters in strings as \\nnn."), _("\
-Show printing of 8-bit characters in strings as \\nnn."), NULL,
-			   NULL,
-			   show_sevenbit_strings,
-			   &setprintlist, &showprintlist);
-
-  add_setshow_boolean_cmd ("timestamp", class_maintenance,
-			    &debug_timestamp, _("\
-Set timestamping of debugging messages."), _("\
-Show timestamping of debugging messages."), _("\
-When set, debugging messages will be marked with seconds and microseconds."),
-			   NULL,
-			   show_debug_timestamp,
-			   &setdebuglist, &showdebuglist);
-}
-
 /* See utils.h.  */
 
 CORE_ADDR
@@ -3432,6 +3381,53 @@ copy_bitwise (gdb_byte *dest, ULONGEST dest_offset,
 void
 _initialize_utils (void)
 {
+  add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
+Set number of characters where GDB should wrap lines of its output."), _("\
+Show number of characters where GDB should wrap lines of its output."), _("\
+This affects where GDB wraps its output to fit the screen width.\n\
+Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."),
+			    set_width_command,
+			    show_chars_per_line,
+			    &setlist, &showlist);
+
+  add_setshow_uinteger_cmd ("height", class_support, &lines_per_page, _("\
+Set number of lines in a page for GDB output pagination."), _("\
+Show number of lines in a page for GDB output pagination."), _("\
+This affects the number of lines after which GDB will pause\n\
+its output and ask you whether to continue.\n\
+Setting this to \"unlimited\" or zero causes GDB never pause during output."),
+			    set_height_command,
+			    show_lines_per_page,
+			    &setlist, &showlist);
+
+  add_setshow_boolean_cmd ("pagination", class_support,
+			   &pagination_enabled, _("\
+Set state of GDB output pagination."), _("\
+Show state of GDB output pagination."), _("\
+When pagination is ON, GDB pauses at end of each screenful of\n\
+its output and asks you whether to continue.\n\
+Turning pagination off is an alternative to \"set height unlimited\"."),
+			   NULL,
+			   show_pagination_enabled,
+			   &setlist, &showlist);
+
+  add_setshow_boolean_cmd ("sevenbit-strings", class_support,
+			   &sevenbit_strings, _("\
+Set printing of 8-bit characters in strings as \\nnn."), _("\
+Show printing of 8-bit characters in strings as \\nnn."), NULL,
+			   NULL,
+			   show_sevenbit_strings,
+			   &setprintlist, &showprintlist);
+
+  add_setshow_boolean_cmd ("timestamp", class_maintenance,
+			    &debug_timestamp, _("\
+Set timestamping of debugging messages."), _("\
+Show timestamping of debugging messages."), _("\
+When set, debugging messages will be marked with seconds and microseconds."),
+			   NULL,
+			   show_debug_timestamp,
+			   &setdebuglist, &showdebuglist);
+
   add_internal_problem_command (&internal_error_problem);
   add_internal_problem_command (&internal_warning_problem);
   add_internal_problem_command (&demangler_warning_problem);
diff --git a/gdb/utils.h b/gdb/utils.h
index b0b5573239..7df86beec4 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -28,8 +28,6 @@
 struct completion_match_for_lcd;
 class compiled_regex;
 
-extern void initialize_utils (void);
-
 /* String utilities.  */
 
 extern bool sevenbit_strings;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Do not expose stub types to Python
@ 2019-09-26 15:01 gdb-buildbot
  2019-09-26 15:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-26 15:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 5d63b30afa2d1e24a3d1e6fe97507473e0545a02 ***

commit 5d63b30afa2d1e24a3d1e6fe97507473e0545a02
Author:     Tom Tromey <tromey@adacore.com>
AuthorDate: Mon Aug 19 13:41:34 2019 -0600
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Thu Sep 26 08:26:12 2019 -0600

    Do not expose stub types to Python
    
    dwarf2read.c will create stub types for Ada "Taft Amendment" types.
    These stub types can currently be exposed to Python code, where they
    show up as TYPE_CODE_VOID types (but that, mysteriously, can sometimes
    be used in other ways).
    
    While it's possible to work with such types by using strip_typedefs,
    this seemed unpleasant to me.  This patch takes another approach
    instead, which is to try not to expose stub types to Python users.
    
    gdb/ChangeLog
    2019-09-26  Tom Tromey  <tromey@adacore.com>
    
            * python/py-type.c (type_to_type_object): Call check_typedef
            for stub types.
    
    gdb/testsuite/ChangeLog
    2019-09-26  Tom Tromey  <tromey@adacore.com>
    
            * gdb.ada/py_taft.exp: New file.
            * gdb.ada/py_taft/main.adb: New file.
            * gdb.ada/py_taft/pkg.adb: New file.
            * gdb.ada/py_taft/pkg.ads: New file.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bc6c20375b..433b239b58 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-26  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-type.c (type_to_type_object): Call check_typedef
+	for stub types.
+
 2019-09-26  Tom Tromey  <tom@tromey.com>
 
 	* utils.h (initialize_utils): Don't declare.
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index e8af6f60e1..134f76dafb 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -1334,6 +1334,17 @@ type_to_type_object (struct type *type)
 {
   type_object *type_obj;
 
+  try
+    {
+      /* Try not to let stub types leak out to Python.  */
+      if (TYPE_STUB (type))
+	type = check_typedef (type);
+    }
+  catch (...)
+    {
+      /* Just ignore failures in check_typedef.  */
+    }
+
   type_obj = PyObject_New (type_object, &type_object_type);
   if (type_obj)
     set_type (type_obj, type);
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 706c5da420..56ee785b1f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-26  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/py_taft.exp: New file.
+	* gdb.ada/py_taft/main.adb: New file.
+	* gdb.ada/py_taft/pkg.adb: New file.
+	* gdb.ada/py_taft/pkg.ads: New file.
+
 2019-09-24  Tom de Vries  <tdevries@suse.de>
 
 	PR gdb/24598
diff --git a/gdb/testsuite/gdb.ada/py_taft.exp b/gdb/testsuite/gdb.ada/py_taft.exp
new file mode 100644
index 0000000000..71ac332738
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/py_taft.exp
@@ -0,0 +1,38 @@
+# Copyright 2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+load_lib "ada.exp"
+load_lib gdb-python.exp
+
+standard_ada_testfile main
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
+    return -1
+}
+
+clean_restart ${testfile}
+
+# Skip this testcase if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+set bp_location [gdb_get_line_number "STOP" ${testdir}/main.adb]
+runto "main.adb:$bp_location"
+
+gdb_test_no_output "python v = gdb.parse_and_eval('v')"
+
+gdb_test "python print(v.dereference().type.code is gdb.TYPE_CODE_VOID)" \
+    "False"
+gdb_test "python print(v.type.strip_typedefs().target().code is gdb.TYPE_CODE_VOID)" \
+    "False"
diff --git a/gdb/testsuite/gdb.ada/py_taft/main.adb b/gdb/testsuite/gdb.ada/py_taft/main.adb
new file mode 100644
index 0000000000..b0ba8bdb90
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/py_taft/main.adb
@@ -0,0 +1,22 @@
+--  Copyright 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+with Pkg;
+
+procedure Main is
+   V : Pkg.Value := Pkg.Create (42);
+begin
+   null;				--  STOP
+end Main;
diff --git a/gdb/testsuite/gdb.ada/py_taft/pkg.adb b/gdb/testsuite/gdb.ada/py_taft/pkg.adb
new file mode 100644
index 0000000000..94ce4b1e85
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/py_taft/pkg.adb
@@ -0,0 +1,27 @@
+--  Copyright 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package body Pkg is
+
+   type Value_Record is record
+      I : Integer;
+   end record;
+
+   function Create (I : Integer) return Value is
+   begin
+      return new Value_Record'(I => I);
+   end Create;
+
+end Pkg;
diff --git a/gdb/testsuite/gdb.ada/py_taft/pkg.ads b/gdb/testsuite/gdb.ada/py_taft/pkg.ads
new file mode 100644
index 0000000000..daa4edbf1b
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/py_taft/pkg.ads
@@ -0,0 +1,22 @@
+--  Copyright 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package Pkg is
+   type Value is private;
+   function Create (I : Integer) return Value;
+private
+   type Value_Record;
+   type Value is access all Value_Record;
+end Pkg;


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Remove gdb_usleep.c
@ 2019-09-26 15:42 gdb-buildbot
  2019-09-26 16:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-26 15:42 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 27a900b8657d8e20a24026bb3485a5f6c9729615 ***

commit 27a900b8657d8e20a24026bb3485a5f6c9729615
Author:     Tom Tromey <tom@tromey.com>
AuthorDate: Sun Feb 17 11:23:20 2019 -0700
Commit:     Tom Tromey <tromey@adacore.com>
CommitDate: Thu Sep 26 08:43:15 2019 -0600

    Remove gdb_usleep.c
    
    I noticed that gdb_usleep is unused, so this patch removes it.
    
    gdb/ChangeLog
    2019-09-26  Tom Tromey  <tom@tromey.com>
    
            * Makefile.in (COMMON_SFILES): Remove gdb_usleep.c.
            (HFILES_NO_SRCDIR): Remove gdb_usleep.h.
            * gdb_usleep.h: Remove.
            * gdb_usleep.c: Remove.
            * utils.c: Don't include gdb_usleep.h.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 433b239b58..b36f196025 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2019-09-26  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (COMMON_SFILES): Remove gdb_usleep.c.
+	(HFILES_NO_SRCDIR): Remove gdb_usleep.h.
+	* gdb_usleep.h: Remove.
+	* gdb_usleep.c: Remove.
+	* utils.c: Don't include gdb_usleep.h.
+
 2019-09-26  Tom Tromey  <tromey@adacore.com>
 
 	* python/py-type.c (type_to_type_object): Call check_typedef
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 877a9ccd6b..d628263675 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1028,7 +1028,6 @@ COMMON_SFILES = \
 	gdb_bfd.c \
 	gdb_obstack.c \
 	gdb_regex.c \
-	gdb_usleep.c \
 	gdbarch.c \
 	gdbarch-selftests.c \
 	gdbtypes.c \
@@ -1265,7 +1264,6 @@ HFILES_NO_SRCDIR = \
 	gdb_regex.h \
 	gdb_select.h \
 	gdb-stabs.h \
-	gdb_usleep.h \
 	gdb_vfork.h \
 	gdb_wchar.h \
 	gdbarch.h \
diff --git a/gdb/gdb_usleep.c b/gdb/gdb_usleep.c
deleted file mode 100644
index 9a92ced34a..0000000000
--- a/gdb/gdb_usleep.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "gdb_usleep.h"
-#include "gdb_select.h"
-#include "gdbsupport/gdb_sys_time.h"
-
-int
-gdb_usleep (int usec)
-{
-  struct timeval delay;
-  int retval;
-
-  delay.tv_sec = usec / 1000000;
-  delay.tv_usec = usec % 1000000;
-  retval = gdb_select (0, 0, 0, 0, &delay);
-
-  if (retval < 0)
-    retval = -1;
-  else
-    retval = 0;
-
-  return retval;
-}
diff --git a/gdb/gdb_usleep.h b/gdb/gdb_usleep.h
deleted file mode 100644
index aadbf0d0ad..0000000000
--- a/gdb/gdb_usleep.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#if !defined(GDB_USLEEP_H)
-#define GDB_USLEEP_H
-
-/* Suspend execution for USEC microseconds.
-
-   Limitation: If a signal is raised during the delay, gdb_usleep
-   might return earlier than requested.
-
-   It returns 0 on success or -1 on error.  */
-extern int gdb_usleep (int usect);
-
-#endif /* !defined(GDB_USLEEP_H) */
-
diff --git a/gdb/utils.c b/gdb/utils.c
index 11295ed978..b7d380073f 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -62,7 +62,6 @@
 
 #include <chrono>
 
-#include "gdb_usleep.h"
 #include "interps.h"
 #include "gdb_regex.h"
 #include "gdbsupport/job-control.h"


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Convert symtab.h function signatures to use bool instead of int
@ 2019-09-26 17:41 gdb-buildbot
  2019-09-26 19:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-26 17:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT ececd218c5254902db3301d700546f6702112c85 ***

commit ececd218c5254902db3301d700546f6702112c85
Author:     Christian Biesinger <cbiesinger@google.com>
AuthorDate: Tue Sep 24 16:43:18 2019 -0500
Commit:     Christian Biesinger <cbiesinger@google.com>
CommitDate: Thu Sep 26 11:36:40 2019 -0500

    Convert symtab.h function signatures to use bool instead of int
    
    gdb/ChangeLog:
    
    2019-09-26  Christian Biesinger  <cbiesinger@google.com>
    
            * blockframe.c (find_pc_partial_function): Change return type to bool.
            * elfread.c (elf_gnu_ifunc_resolve_name): Likewise.
            * minsyms.c (in_gnu_ifunc_stub): Likewise.
            (stub_gnu_ifunc_resolve_name): Likewise.
            * symtab.c (compare_filenames_for_search): Likewise.
            (compare_glob_filenames_for_search): Likewise.
            (matching_obj_sections): Likewise.
            (symbol_matches_domain): Likewise.
            (find_line_symtab): Change out param EXACT_MATCH to bool *.
            (find_line_pc): Change return type to bool.
            (find_line_pc_range): Likewise.
            (producer_is_realview): Likewise.
            * symtab.h (symbol_matches_domain): Likewise.
            (find_pc_partial_function): Likewise.
            (find_pc_line_pc_range): Likewise.
            (in_gnu_ifunc_stub): Likewise.
            (struct gnu_ifunc_fns) <gnu_ifunc_resolve_name>: Likewise.
            (find_line_pc): Likewise.
            (find_line_pc_range): Likewise.
            (matching_obj_sections): Likewise.
            (find_line_symtab): Change out parameter to bool.
            (producer_is_realview): Change return type to bool.
            (compare_filenames_for_search): Likewise.
            (compare_glob_filenames_for_search): Likewise.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b36f196025..f323cf6b14 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,30 @@
+2019-09-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* blockframe.c (find_pc_partial_function): Change return type to bool.
+	* elfread.c (elf_gnu_ifunc_resolve_name): Likewise.
+	* minsyms.c (in_gnu_ifunc_stub): Likewise.
+	(stub_gnu_ifunc_resolve_name): Likewise.
+	* symtab.c (compare_filenames_for_search): Likewise.
+	(compare_glob_filenames_for_search): Likewise.
+	(matching_obj_sections): Likewise.
+	(symbol_matches_domain): Likewise.
+	(find_line_symtab): Change out param EXACT_MATCH to bool *.
+	(find_line_pc): Change return type to bool.
+	(find_line_pc_range): Likewise.
+	(producer_is_realview): Likewise.
+	* symtab.h (symbol_matches_domain): Likewise.
+	(find_pc_partial_function): Likewise.
+	(find_pc_line_pc_range): Likewise.
+	(in_gnu_ifunc_stub): Likewise.
+	(struct gnu_ifunc_fns) <gnu_ifunc_resolve_name>: Likewise.
+	(find_line_pc): Likewise.
+	(find_line_pc_range): Likewise.
+	(matching_obj_sections): Likewise.
+	(find_line_symtab): Change out parameter to bool.
+	(producer_is_realview): Change return type to bool.
+	(compare_filenames_for_search): Likewise.
+	(compare_glob_filenames_for_search): Likewise.
+
 2019-09-26  Tom Tromey  <tom@tromey.com>
 
 	* Makefile.in (COMMON_SFILES): Remove gdb_usleep.c.
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 4462274f46..a3f82ef5a9 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -209,7 +209,7 @@ clear_pc_function_cache (void)
 
 /* See symtab.h.  */
 
-int
+bool
 find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
 			  CORE_ADDR *endaddr, const struct block **block)
 {
@@ -333,7 +333,7 @@ find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
 	*endaddr = 0;
       if (block != nullptr)
 	*block = nullptr;
-      return 0;
+      return false;
     }
 
   cache_pc_function_low = BMSYMBOL_VALUE_ADDRESS (msymbol);
@@ -374,7 +374,7 @@ find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
   if (block != nullptr)
     *block = cache_pc_function_block;
 
-  return 1;
+  return true;
 }
 
 /* See symtab.h.  */
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 901710f283..a3d17e54a2 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -850,21 +850,21 @@ elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p)
 
 /* Try to find the target resolved function entry address of a STT_GNU_IFUNC
    function NAME.  If the address is found it is stored to *ADDR_P (if ADDR_P
-   is not NULL) and the function returns 1.  It returns 0 otherwise.
+   is not NULL) and the function returns true.  It returns false otherwise.
 
    Both the elf_objfile_gnu_ifunc_cache_data hash table and
    SYMBOL_GOT_PLT_SUFFIX locations are searched by this function.  */
 
-static int
+static bool
 elf_gnu_ifunc_resolve_name (const char *name, CORE_ADDR *addr_p)
 {
   if (elf_gnu_ifunc_resolve_by_cache (name, addr_p))
-    return 1;
+    return true;
 
   if (elf_gnu_ifunc_resolve_by_got (name, addr_p))
-    return 1;
+    return true;
 
-  return 0;
+  return false;
 }
 
 /* Call STT_GNU_IFUNC - a function returning addresss of a real function to
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 0f734ebc76..f06de4d88e 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -895,7 +895,7 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc)
 
 /* Return non-zero iff PC is in an STT_GNU_IFUNC function resolver.  */
 
-int
+bool
 in_gnu_ifunc_stub (CORE_ADDR pc)
 {
   bound_minimal_symbol msymbol
@@ -916,7 +916,7 @@ stub_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc)
 
 /* See elf_gnu_ifunc_resolve_name for its real implementation.  */
 
-static int
+static bool
 stub_gnu_ifunc_resolve_name (const char *function_name,
 			     CORE_ADDR *function_address_p)
 {
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 54c7ed9c7c..6ea9fc6971 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -355,18 +355,18 @@ minimal_symbol::text_p () const
    describes what we advertise).  Returns true if they match, false
    otherwise.  */
 
-int
+bool
 compare_filenames_for_search (const char *filename, const char *search_name)
 {
   int len = strlen (filename);
   size_t search_len = strlen (search_name);
 
   if (len < search_len)
-    return 0;
+    return false;
 
   /* The tail of FILENAME must match.  */
   if (FILENAME_CMP (filename + len - search_len, search_name) != 0)
-    return 0;
+    return false;
 
   /* Either the names must completely match, or the character
      preceding the trailing SEARCH_NAME segment of FILENAME must be a
@@ -393,7 +393,7 @@ compare_filenames_for_search (const char *filename, const char *search_name)
    compare_filenames_for_search, but it's the opposite of the order of
    arguments to gdb_filename_fnmatch.  */
 
-int
+bool
 compare_glob_filenames_for_search (const char *filename,
 				   const char *search_name)
 {
@@ -403,7 +403,7 @@ compare_glob_filenames_for_search (const char *filename,
   int search_path_elements = count_path_elements (search_name);
 
   if (search_path_elements > file_path_elements)
-    return 0;
+    return false;
 
   if (IS_ABSOLUTE_PATH (search_name))
     {
@@ -1002,11 +1002,11 @@ symbol_matches_search_name (const struct general_symbol_info *gsymbol,
 
 \f
 
-/* Return 1 if the two sections are the same, or if they could
+/* Return true if the two sections are the same, or if they could
    plausibly be copies of each other, one in an original object
    file and another in a separated debug file.  */
 
-int
+bool
 matching_obj_sections (struct obj_section *obj_first,
 		       struct obj_section *obj_second)
 {
@@ -1015,36 +1015,36 @@ matching_obj_sections (struct obj_section *obj_first,
 
   /* If they're the same section, then they match.  */
   if (first == second)
-    return 1;
+    return true;
 
   /* If either is NULL, give up.  */
   if (first == NULL || second == NULL)
-    return 0;
+    return false;
 
   /* This doesn't apply to absolute symbols.  */
   if (first->owner == NULL || second->owner == NULL)
-    return 0;
+    return false;
 
   /* If they're in the same object file, they must be different sections.  */
   if (first->owner == second->owner)
-    return 0;
+    return false;
 
   /* Check whether the two sections are potentially corresponding.  They must
      have the same size, address, and name.  We can't compare section indexes,
      which would be more reliable, because some sections may have been
      stripped.  */
   if (bfd_section_size (first) != bfd_section_size (second))
-    return 0;
+    return false;
 
   /* In-memory addresses may start at a different offset, relativize them.  */
   if (bfd_section_vma (first) - bfd_get_start_address (first->owner)
       != bfd_section_vma (second) - bfd_get_start_address (second->owner))
-    return 0;
+    return false;
 
   if (bfd_section_name (first) == NULL
       || bfd_section_name (second) == NULL
       || strcmp (bfd_section_name (first), bfd_section_name (second)) != 0)
-    return 0;
+    return false;
 
   /* Otherwise check that they are in corresponding objfiles.  */
 
@@ -1059,12 +1059,12 @@ matching_obj_sections (struct obj_section *obj_first,
 
   if (obj->separate_debug_objfile != NULL
       && obj->separate_debug_objfile->obfd == second->owner)
-    return 1;
+    return true;
   if (obj->separate_debug_objfile_backlink != NULL
       && obj->separate_debug_objfile_backlink->obfd == second->owner)
-    return 1;
+    return true;
 
-  return 0;
+  return false;
 }
 
 /* See symtab.h.  */
@@ -2674,7 +2674,7 @@ lookup_global_symbol (const char *name,
   return lookup_global_or_static_symbol (name, GLOBAL_BLOCK, objfile, domain);
 }
 
-int
+bool
 symbol_matches_domain (enum language symbol_language,
 		       domain_enum symbol_domain,
 		       domain_enum domain)
@@ -2688,7 +2688,7 @@ symbol_matches_domain (enum language symbol_language,
     {
       if ((domain == VAR_DOMAIN || domain == STRUCT_DOMAIN)
 	  && symbol_domain == STRUCT_DOMAIN)
-	return 1;
+	return true;
     }
   /* For all other languages, strict match is required.  */
   return (symbol_domain == domain);
@@ -3297,14 +3297,14 @@ find_pc_line_symtab (CORE_ADDR pc)
 
    If found, return the symtab that contains the linetable in which it was
    found, set *INDEX to the index in the linetable of the best entry
-   found, and set *EXACT_MATCH nonzero if the value returned is an
+   found, and set *EXACT_MATCH to true if the value returned is an
    exact match.
 
    If not found, return NULL.  */
 
 struct symtab *
 find_line_symtab (struct symtab *sym_tab, int line,
-		  int *index, int *exact_match)
+		  int *index, bool *exact_match)
 {
   int exact = 0;  /* Initialized here to avoid a compiler warning.  */
 
@@ -3389,7 +3389,7 @@ done:
   if (index)
     *index = best_index;
   if (exact_match)
-    *exact_match = exact;
+    *exact_match = (exact != 0);
 
   return best_symtab;
 }
@@ -3435,10 +3435,10 @@ find_pcs_for_symtab_line (struct symtab *symtab, int line,
 
 \f
 /* Set the PC value for a given source file and line number and return true.
-   Returns zero for invalid line number (and sets the PC to 0).
+   Returns false for invalid line number (and sets the PC to 0).
    The source file is specified with a struct symtab.  */
 
-int
+bool
 find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
 {
   struct linetable *l;
@@ -3446,26 +3446,26 @@ find_line_pc (struct symtab *symtab, int line, CORE_ADDR *pc)
 
   *pc = 0;
   if (symtab == 0)
-    return 0;
+    return false;
 
   symtab = find_line_symtab (symtab, line, &ind, NULL);
   if (symtab != NULL)
     {
       l = SYMTAB_LINETABLE (symtab);
       *pc = l->item[ind].pc;
-      return 1;
+      return true;
     }
   else
-    return 0;
+    return false;
 }
 
 /* Find the range of pc values in a line.
    Store the starting pc of the line into *STARTPTR
    and the ending pc (start of next line) into *ENDPTR.
-   Returns 1 to indicate success.
-   Returns 0 if could not find the specified line.  */
+   Returns true to indicate success.
+   Returns false if could not find the specified line.  */
 
-int
+bool
 find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
 		    CORE_ADDR *endptr)
 {
@@ -3474,7 +3474,7 @@ find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
 
   startaddr = sal.pc;
   if (startaddr == 0 && !find_line_pc (sal.symtab, sal.line, &startaddr))
-    return 0;
+    return false;
 
   /* This whole function is based on address.  For example, if line 10 has
      two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
@@ -3495,7 +3495,7 @@ find_line_pc_range (struct symtab_and_line sal, CORE_ADDR *startptr,
       *startptr = found_sal.pc;
       *endptr = found_sal.end;
     }
-  return 1;
+  return true;
 }
 
 /* Given a line table and a line number, return the index into the line
@@ -3549,7 +3549,7 @@ find_line_common (struct linetable *l, int lineno,
   return best_index;
 }
 
-int
+bool
 find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr)
 {
   struct symtab_and_line sal;
@@ -6062,7 +6062,7 @@ symtab_observer_executable_changed (void)
 /* Return 1 if the supplied producer string matches the ARM RealView
    compiler (armcc).  */
 
-int
+bool
 producer_is_realview (const char *producer)
 {
   static const char *const arm_idents[] = {
@@ -6076,13 +6076,13 @@ producer_is_realview (const char *producer)
   int i;
 
   if (producer == NULL)
-    return 0;
+    return false;
 
   for (i = 0; i < ARRAY_SIZE (arm_idents); i++)
     if (startswith (producer, arm_idents[i]))
-      return 1;
+      return true;
 
-  return 0;
+  return false;
 }
 
 \f
diff --git a/gdb/symtab.h b/gdb/symtab.h
index d046598774..1f0fc62a65 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1518,9 +1518,9 @@ extern const char multiple_symbols_cancel[];
 
 const char *multiple_symbols_select_mode (void);
 
-int symbol_matches_domain (enum language symbol_language, 
-			   domain_enum symbol_domain,
-			   domain_enum domain);
+bool symbol_matches_domain (enum language symbol_language,
+			    domain_enum symbol_domain,
+			    domain_enum domain);
 
 /* lookup a symbol table by source file name.  */
 
@@ -1689,8 +1689,8 @@ extern struct symbol *find_symbol_at_address (CORE_ADDR);
    nullptr is used as a return value for *BLOCK if no block is found. 
    This function either succeeds or fails (not halfway succeeds).  If
    it succeeds, it sets *NAME, *ADDRESS, and *ENDADDR to real
-   information and returns 1.  If it fails, it sets *NAME, *ADDRESS
-   and *ENDADDR to zero and returns 0.
+   information and returns true.  If it fails, it sets *NAME, *ADDRESS
+   and *ENDADDR to zero and returns false.
    
    If the function in question occupies non-contiguous ranges,
    *ADDRESS and *ENDADDR are (subject to the conditions noted above) set
@@ -1716,9 +1716,9 @@ extern struct symbol *find_symbol_at_address (CORE_ADDR);
    containing the entry pc should instead call
    find_function_entry_range_from_pc.  */
 
-extern int find_pc_partial_function (CORE_ADDR pc, const char **name,
-				     CORE_ADDR *address, CORE_ADDR *endaddr,
-				     const struct block **block = nullptr);
+extern bool find_pc_partial_function (CORE_ADDR pc, const char **name,
+				      CORE_ADDR *address, CORE_ADDR *endaddr,
+				      const struct block **block = nullptr);
 
 /* Like find_pc_partial_function, above, but *ADDRESS and *ENDADDR are
    set to start and end addresses of the range containing the entry pc.
@@ -1764,7 +1764,7 @@ extern struct compunit_symtab *find_pc_compunit_symtab (CORE_ADDR);
 extern struct compunit_symtab *
   find_pc_sect_compunit_symtab (CORE_ADDR, struct obj_section *);
 
-extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
+extern bool find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
 
 extern void reread_symbols (void);
 
@@ -1786,7 +1786,7 @@ extern struct type *basic_lookup_transparent_type (const char *);
 #define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
 #endif
 
-extern int in_gnu_ifunc_stub (CORE_ADDR pc);
+extern bool in_gnu_ifunc_stub (CORE_ADDR pc);
 
 /* Functions for resolving STT_GNU_IFUNC symbols which are implemented only
    for ELF symbol files.  */
@@ -1797,7 +1797,7 @@ struct gnu_ifunc_fns
   CORE_ADDR (*gnu_ifunc_resolve_addr) (struct gdbarch *gdbarch, CORE_ADDR pc);
 
   /* See elf_gnu_ifunc_resolve_name for its real implementation.  */
-  int (*gnu_ifunc_resolve_name) (const char *function_name,
+  bool (*gnu_ifunc_resolve_name) (const char *function_name,
 				 CORE_ADDR *function_address_p);
 
   /* See elf_gnu_ifunc_resolver_stop for its real implementation.  */
@@ -1861,10 +1861,10 @@ extern struct symtab *find_pc_line_symtab (CORE_ADDR);
 
 /* Given a symtab and line number, return the pc there.  */
 
-extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
+extern bool find_line_pc (struct symtab *, int, CORE_ADDR *);
 
-extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
-			       CORE_ADDR *);
+extern bool find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
+				CORE_ADDR *);
 
 extern void resolve_sal_pc (struct symtab_and_line *);
 
@@ -1936,9 +1936,9 @@ completion_skip_symbol (complete_symbol_mode mode, Symbol *sym)
 
 /* symtab.c */
 
-int matching_obj_sections (struct obj_section *, struct obj_section *);
+bool matching_obj_sections (struct obj_section *, struct obj_section *);
 
-extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
+extern struct symtab *find_line_symtab (struct symtab *, int, int *, bool *);
 
 /* Given a function symbol SYM, find the symtab and line for the start
    of the function.  If FUNFIRSTLINE is true, we want the first line
@@ -2051,7 +2051,7 @@ extern struct block_symbol
 
 /* Return 1 if the supplied producer string matches the ARM RealView
    compiler (armcc).  */
-int producer_is_realview (const char *producer);
+bool producer_is_realview (const char *producer);
 
 void fixup_section (struct general_symbol_info *ginfo,
 		    CORE_ADDR addr, struct objfile *objfile);
@@ -2066,11 +2066,11 @@ extern unsigned int symbol_lookup_debug;
 
 extern bool basenames_may_differ;
 
-int compare_filenames_for_search (const char *filename,
-				  const char *search_name);
+bool compare_filenames_for_search (const char *filename,
+				   const char *search_name);
 
-int compare_glob_filenames_for_search (const char *filename,
-				       const char *search_name);
+bool compare_glob_filenames_for_search (const char *filename,
+					const char *search_name);
 
 bool iterate_over_some_symtabs (const char *name,
 				const char *real_path,


^ permalink raw reply	[flat|nested] 3701+ messages in thread
* [binutils-gdb] Improve ptrace-error detection on Linux targets
@ 2019-09-27  7:01 gdb-buildbot
  2019-09-27  9:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
  0 siblings, 1 reply; 3701+ messages in thread
From: gdb-buildbot @ 2019-09-27  7:01 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 381beca6146ac68b57edf47d28cdb335fbd11635 ***

commit 381beca6146ac68b57edf47d28cdb335fbd11635
Author:     Sergio Durigan Junior <sergiodj@redhat.com>
AuthorDate: Fri Aug 16 19:36:37 2019 -0400
Commit:     Sergio Durigan Junior <sergiodj@redhat.com>
CommitDate: Thu Sep 26 13:48:58 2019 -0400

    Improve ptrace-error detection on Linux targets
    
    In Fedora GDB, we carry the following patch:
    
      https://src.fedoraproject.org/rpms/gdb/blob/8ac06474ff1e2aa4920d14e0666b083eeaca8952/f/gdb-attach-fail-reasons-5of5.patch
    
    Its purpose is to try to detect a specific scenario where SELinux's
    'deny_ptrace' option is enabled, which prevents GDB from ptrace'ing in
    order to debug the inferior (PTRACE_ATTACH and PTRACE_TRACEME will
    fail with EACCES in this case).
    
    I like the idea of improving error detection and providing more
    information to the user (a simple "Permission denied" can be really
    frustrating), but I don't fully agree with the way the patch was
    implemented: it makes GDB link against libselinux only for the sake of
    consulting the 'deny_ptrace' setting, and then prints a warning if
    ptrace failed and this setting is on.
    
    My first thought (and attempt) was to make GDB print a generic warning
    when a ptrace error happened; this message would just point the user
    to our documentation, where she could find more information about
    possible causes for the error (and try to diagnose/fix the problem).
    This proved to be too simple, and I was convinced that it is actually
    a good idea to go the extra kilometre and try to pinpoint the specific
    problem (or problems) preventing ptrace from working, as well as
    provide useful suggestions on how the user can fix things.
    
    Here is the patch I came up with.  It implements a new function,
    'linux_ptrace_restricted_fail_reason', which does a few things to
    check what's wrong with ptrace:
    
      - It dlopen's "libselinux.so.1" and checks if the "deny_ptrace"
        option is enabled.
    
      - It reads the contents of "/proc/sys/kernel/yama/ptrace_scope" and
        checks if it's different than 0.
    
    For each of these checks, if it succeeds, the user will see a message
    informing about the restriction in place, and how it can be disabled.
    For example, if "deny_ptrace" is enabled, the user will see:
    
      # gdb /usr/bin/true
      ...
      Starting program: /usr/bin/true
      warning: Could not trace the inferior process.
      warning: ptrace: Permission denied
      The SELinux 'deny_ptrace' option is enabled and preventing GDB
      from using 'ptrace'.  You can disable it by executing (as root):
    
        setsebool deny_ptrace off
    
      If you are debugging the inferior remotely, the ptrace restriction(s) need
      to be disabled in the target system (e.g., where GDBserver is running).
      During startup program exited with code 127.
      (gdb)
    
    In case "/proc/sys/kernel/yama/ptrace_scope" is > 0:
    
      # gdb /usr/bin/true
      ...
      Starting program: /usr/bin/true
      warning: Could not trace the inferior process.
      warning: ptrace: Operation not permitted
      The Linux kernel's Yama ptrace scope is in effect, which can prevent
      GDB from using 'ptrace'.  You can disable it by executing (as root):
    
        echo 0 > /proc/sys/kernel/yama/ptrace_scope
    
      If you are debugging the inferior remotely, the ptrace restriction(s) need
      to be disabled in the target system (e.g., where GDBserver is running).
      During startup program exited with code 127.
      (gdb)
    
    If both restrictions are enabled, both messages will show up.
    
    This works for gdbserver as well, and actually fixes a latent bug I
    found: when ptrace is restricted, gdbserver would hang due to an
    unchecked ptrace call:
    
      # gdbserver :9988 /usr/bin/true
      gdbserver: linux_ptrace_test_ret_to_nx: Cannot PTRACE_TRACEME: Operation not permitted
      gdbserver: linux_ptrace_test_ret_to_nx: status 256 is not WIFSTOPPED!
      gdbserver: linux_ptrace_test_ret_to_nx: failed to kill child pid 2668100 No such process
      [ Here you would have to issue a C-c ]
    
    Now, you will see:
    
      # gdbserver :9988 /usr/bin/true
      gdbserver: linux_ptrace_test_ret_to_nx: Cannot PTRACE_TRACEME: Permission denied
      gdbserver: linux_ptrace_test_ret_to_nx: status 256 is not WIFSTOPPED!
      gdbserver: linux_ptrace_test_ret_to_nx: failed to kill child pid 2766868 No such process
      gdbserver: Could not trace the inferior process.
      gdbserver: ptrace: Permission denied
      The SELinux 'deny_ptrace' option is enabled and preventing GDB
      from using 'ptrace'.  You can disable it by executing (as root):
    
        setsebool deny_ptrace off
    
      If you are debugging the inferior remotely, the ptrace restriction(s) need
      to be disabled in the target system (e.g., where GDBserver is running).
      #
    
    (I decided to keep all the other messages, even though I find them a
    bit distracting).
    
    If GDB can't determine the cause for the failure, it will still print
    the generic error message which tells the user to check our
    documentation:
    
      There might be restrictions preventing ptrace from working.  Please see
      the appendix "Linux kernel ptrace restrictions" in the GDB documentation
      for more details.
      If you are debugging the inferior remotely, the ptrace restriction(s) need
      to be disabled in the target system (e.g., where GDBserver is running).
    
    This means that the patch expands our documentation and creates a new
    appendix section named "Linux kernel ptrace restrictions", with
    sub-sections for each possible restriction that might be in place.
    
    Notice how, on every message, we instruct the user to "do the right
    thing" if gdbserver is being used.  This is because if the user
    started gdbserver *before* any ptrace restriction was in place, and
    then, for some reason, one or more restrictions get enabled, then the
    error message will be displayed both on gdbserver *and* on the
    connected GDB.  Since the user will be piloting GDB, it's important to
    explicitly say that the ptrace restrictions are enabled in the target,
    where gdbserver is running.
    
    The current list of possible restrictions is:
    
      - SELinux's 'deny_ptrace' option (detected).
    
      - YAMA's /proc/sys/kernel/yama/ptrace_scope setting (detected).
    
      - seccomp on Docker containers (I couldn't find how to detect).
    
    It's important to mention that all of this is Linux-specific; as far
    as I know, SELinux, YAMA and seccomp are Linux-only features.
    
    I tested this patch locally, on my Fedora 30 machine (actually, a
    Fedora Rawhide VM), but I'm not proposing a testcase for it because of
    the difficulty of writing one.
    
    WDYT?
    
    gdb/doc/ChangeLog:
    2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
    
            * gdb.texinfo (Linux kernel ptrace restrictions): New appendix
            section.
    
    gdb/ChangeLog:
    2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
                Jan Kratochvil  <jan.kratochvil@redhat.com>
                Pedro Alves  <palves@redhat.com>
    
            * gdbsupport/gdb-dlfcn.h (gdb_dlopen): Update comment and
            mention that the function throws an error.
            * inf-ptrace.c (default_inf_ptrace_me_fail_reason): New
            function.
            (inf_ptrace_me_fail_reason): New variable.
            (inf_ptrace_me): Update call to 'trace_start_error_with_name'.
            * inf-ptrace.h (inf_ptrace_me_fail_reason): New variable.
            * linux-nat.c (attach_proc_task_lwp_callback): Call
            'linux_ptrace_attach_fail_reason_lwp'.
            (linux_nat_target::attach): Update call to
            'linux_ptrace_attach_fail_reason'.
            (_initialize_linux_nat): Set 'inf_ptrace_me_fail_reason'.
            * nat/fork-inferior.c (trace_start_error_with_name): Add
            optional 'append' argument.
            * nat/fork-inferior.h (trace_start_error_with_name): Update
            prototype.
            * nat/linux-ptrace.c: Include "gdbsupport/gdb-dlfcn.h",
            "gdbsupport/filestuff.h" and "nat/fork-inferior.h".
            (selinux_ftype): New typedef.
            (linux_ptrace_restricted_fail_reason): New function.
            (linux_ptrace_attach_fail_reason_1): New function.
            (linux_ptrace_attach_fail_reason): Change first argument type
            from 'ptid_t' to 'pid_t'.  Call
            'linux_ptrace_attach_fail_reason_1' and
            'linux_ptrace_restricted_fail_reason'.
            (linux_ptrace_attach_fail_reason_lwp): New function.
            (linux_ptrace_me_fail_reason): New function.
            (errno_pipe): New variable.
            (linux_fork_to_function): Initialize pipe before forking.
            (linux_child_function): Deal with errno-passing from child.
            Handle ptrace error.
            (linux_check_child_ptrace_errno): New function.
            (linux_check_child_ptrace_errno): Call
            'linux_check_child_ptrace_errno'.
            * nat/linux-ptrace.h (linux_ptrace_attach_fail_reason): Update
            prototype.
            (linux_ptrace_attach_fail_reason_lwp): New prototype.
            (linux_ptrace_me_fail_reason): New prototype.
            * remote.c (extended_remote_target::attach): Handle error
            message passed by the server when attach fails.
    
    gdb/gdbserver/ChangeLog:
    2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
                Pedro Alves  <palves@redhat.com>
    
            * linux-low.c (linux_ptrace_fun): Call
            'linux_ptrace_me_fail_reason'.
            (attach_proc_task_lwp_callback): Call
            'linux_ptrace_attach_fail_reason_lwp'.
            (linux_attach): Call 'linux_ptrace_attach_fail_reason'.
            * server.c (handle_v_attach): Use try..catch when calling
            'attach_inferior', and send an error message to the client
            when needed.
            * thread-db.c (attach_thread): Call
            'linux_ptrace_attach_fail_reason_lwp'.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f323cf6b14..37626bdd1e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,48 @@
+2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* gdbsupport/gdb-dlfcn.h (gdb_dlopen): Update comment and
+	mention that the function throws an error.
+	* inf-ptrace.c (default_inf_ptrace_me_fail_reason): New
+	function.
+	(inf_ptrace_me_fail_reason): New variable.
+	(inf_ptrace_me): Update call to 'trace_start_error_with_name'.
+	* inf-ptrace.h (inf_ptrace_me_fail_reason): New variable.
+	* linux-nat.c (attach_proc_task_lwp_callback): Call
+	'linux_ptrace_attach_fail_reason_lwp'.
+	(linux_nat_target::attach): Update call to
+	'linux_ptrace_attach_fail_reason'.
+	(_initialize_linux_nat): Set 'inf_ptrace_me_fail_reason'.
+	* nat/fork-inferior.c (trace_start_error_with_name): Add
+	optional 'append' argument.
+	* nat/fork-inferior.h (trace_start_error_with_name): Update
+	prototype.
+	* nat/linux-ptrace.c: Include "gdbsupport/gdb-dlfcn.h",
+	"gdbsupport/filestuff.h" and "nat/fork-inferior.h".
+	(selinux_ftype): New typedef.
+	(linux_ptrace_restricted_fail_reason): New function.
+	(linux_ptrace_attach_fail_reason_1): New function.
+	(linux_ptrace_attach_fail_reason): Change first argument type
+	from 'ptid_t' to 'pid_t'.  Call
+	'linux_ptrace_attach_fail_reason_1' and
+	'linux_ptrace_restricted_fail_reason'.
+	(linux_ptrace_attach_fail_reason_lwp): New function.
+	(linux_ptrace_me_fail_reason): New function.
+	(errno_pipe): New variable.
+	(linux_fork_to_function): Initialize pipe before forking.
+	(linux_child_function): Deal with errno-passing from child.
+	Handle ptrace error.
+	(linux_check_child_ptrace_errno): New function.
+	(linux_check_child_ptrace_errno): Call
+	'linux_check_child_ptrace_errno'.
+	* nat/linux-ptrace.h (linux_ptrace_attach_fail_reason): Update
+	prototype.
+	(linux_ptrace_attach_fail_reason_lwp): New prototype.
+	(linux_ptrace_me_fail_reason): New prototype.
+	* remote.c (extended_remote_target::attach): Handle error
+	message passed by the server when attach fails.
+
 2019-09-26  Christian Biesinger  <cbiesinger@google.com>
 
 	* blockframe.c (find_pc_partial_function): Change return type to bool.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 0a10fa3fad..003c8c2ffe 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdb.texinfo (Linux kernel ptrace restrictions): New appendix
+	section.
+
 2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
 
 	* doc/gdb.texinfo (Remote Configuration): Remove documentation for
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f2713c0396..e7b5b18f2b 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -182,6 +182,9 @@ software in general.  We will miss him.
                                 @value{GDBN}
 * Operating System Information:: Getting additional information from
                                  the operating system
+* Linux kernel ptrace restrictions::        Restrictions sometimes
+                                            imposed by the Linux
+                                            kernel on @code{ptrace}
 * Trace File Format::		GDB trace file format
 * Index Section Format::        .gdb_index section format
 * Man Pages::			Manual pages
@@ -44665,6 +44668,146 @@ should contain a comma-separated list of cores that this process
 is running on.  Target may provide additional columns,
 which @value{GDBN} currently ignores.
 
+@node Linux kernel ptrace restrictions
+@appendix Linux kernel @code{ptrace} restrictions
+@cindex linux kernel ptrace restrictions, attach
+
+The @code{ptrace} system call is used by @value{GDBN} and
+@code{gdbserver} on GNU/Linux to, among other things, attach to a new
+or existing inferior in order to start debugging it.  Due to security
+concerns, some distributions and vendors disable or severely restrict
+the ability to perform these operations, which can make @value{GDBN}
+or @code{gdbserver} malfunction.  In this section, we will expand on
+how this malfunction can manifest itself, and how to modify the
+system's settings in order to be able to use @value{GDBN} and
+@code{gdbserver} properly.
+
+@menu
+* The error message::                   The error message displayed when the
+                                        system prevents @value{GDBN}
+                                        or @code{gdbserver} from using
+                                        @code{ptrace}
+* SELinux's deny_ptrace::               SELinux and the @code{deny_ptrace} option
+* Yama's ptrace_scope::                 Yama and the @code{ptrace_scope} setting
+* Docker and seccomp::                  Docker and the @code{seccomp}
+                                        infrastructure
+@end menu
+
+@node The error message
+@appendixsection The error message
+
+When the system prevents @value{GDBN} or @code{gdbserver} from using
+the @code{ptrace} system call, you will likely see a descriptive error
+message explaining what is wrong and how to attempt to fix the
+problem.  For example, when SELinux's @code{deny_ptrace} option is
+enabled, you can see:
+
+@smallexample
+$ gdb program
+...
+(@value{GDBP}) run
+Starting program: program
+warning: Could not trace the inferior process.
+Error:
+warning: ptrace: Permission denied
+The SELinux 'deny_ptrace' option is enabled and preventing @value{GDBN}
+from using 'ptrace'.  You can disable it by executing (as root):
+
+  setsebool deny_ptrace off
+
+If you are debugging the inferior remotely, the instruction(s) above must
+be performed in the target system (e.g., where GDBserver is running).
+During startup program exited with code 127.
+(@value{GDBP})
+@end smallexample
+
+Sometimes, it may not be possible to acquire the necessary data to
+determine the root cause of the failure.  In this case, you will see a
+generic error message pointing you to this section:
+
+@smallexample
+$ gdb program
+...
+Starting program: program
+warning: Could not trace the inferior process.
+Error:
+warning: ptrace: Permission denied
+There might be restrictions preventing ptrace from working.  Please see
+the appendix "Linux kernel ptrace restrictions" in the GDB documentation
+for more details.
+During startup program exited with code 127.
+(@value{GDBP})
+@end smallexample
+
+@node SELinux's deny_ptrace
+@appendixsection SELinux's @code{deny_ptrace}
+@cindex SELinux
+@cindex deny_ptrace
+
+If you are using SELinux, you might want to check whether the
+@code{deny_ptrace} option is enabled by doing:
+
+@smallexample
+$ getsebool deny_ptrace
+deny_ptrace --> on
+@end smallexample
+
+If the option is enabled, you can disable it by doing, as root:
+
+@smallexample
+# setsebool deny_ptrace off
+@end smallexample
+
+The option will be disabled until the next reboot.  If you would like
+to disable it permanently, you can do (as root):
+
+@smallexample
+# setsebool -P deny_ptrace off
+@end smallexample
+
+@node Yama's ptrace_scope
+@appendixsection Yama's @code{ptrace_scope}
+@cindex yama, ptrace_scope
+
+If your system has Yama enabled, you might want to check whether the
+@code{ptrace_scope} setting is enabled by checking the value of
+@file{/proc/sys/kernel/yama/ptrace_scope}:
+
+@smallexample
+$ cat /proc/sys/kernel/yama/ptrace_scope
+0
+@end smallexample
+
+If you see anything other than @code{0}, @value{GDBN} or
+@code{gdbserver} can be affected by it.  You can temporarily disable
+the feature by doing, as root:
+
+@smallexample
+# sysctl kernel.yama.ptrace_scope=0
+kernel.yama.ptrace_scope = 0
+@end smallexample
+
+You can make this permanent by doing, as root:
+
+@smallexample
+# sysctl -w kernel.yama.ptrace_scope=0
+kernel.yama.ptrace_scope = 0
+@end smallexample
+
+@node Docker and seccomp
+@appendixsection Docker and @code{seccomp}
+@cindex docker, seccomp
+
+If you are using Docker (@uref{https://www.docker.com/}) containers,
+you will probably have to disable its @code{seccomp} protections in
+order to be able to use @value{GDBN} or @code{gdbserver}.  To do that,
+you can use the options @code{--cap-add=SYS_PTRACE --security-opt
+seccomp=unconfined} when invoking Docker:
+
+@smallexample
+$ docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
+@end smallexample
+
 @node Trace File Format
 @appendix Trace File Format
 @cindex trace file format
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index c0c6f51a06..e60980dc56 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,17 @@
+2019-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_ptrace_fun): Call
+	'linux_ptrace_me_fail_reason'.
+	(attach_proc_task_lwp_callback): Call
+	'linux_ptrace_attach_fail_reason_lwp'.
+	(linux_attach): Call 'linux_ptrace_attach_fail_reason'.
+	* server.c (handle_v_attach): Use try..catch when calling
+	'attach_inferior', and send an error message to the client
+	when needed.
+	* thread-db.c (attach_thread): Call
+	'linux_ptrace_attach_fail_reason_lwp'.
+
 2019-09-20  Christian Biesinger  <cbiesinger@google.com>
 
 	* debug.c (debug_threads): Remove comment in favor of the header.
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index d64c3641ff..c0e15c122f 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -967,7 +967,8 @@ linux_ptrace_fun ()
 {
   if (ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0,
 	      (PTRACE_TYPE_ARG4) 0) < 0)
-    trace_start_error_with_name ("ptrace");
+    trace_start_error_with_name ("ptrace",
+				 linux_ptrace_me_fail_reason (errno).c_str ());
 
   if (setpgid (0, 0) < 0)
     trace_start_error_with_name ("setpgid");
@@ -1165,7 +1166,7 @@ attach_proc_task_lwp_callback (ptid_t ptid)
       else if (err != 0)
 	{
 	  std::string reason
-	    = linux_ptrace_attach_fail_reason_string (ptid, err);
+	    = linux_ptrace_attach_fail_reason_lwp (ptid, err);
 
 	  warning (_("Cannot attach to lwp %d: %s"), lwpid, reason.c_str ());
 	}
@@ -1197,8 +1198,8 @@ linux_attach (unsigned long pid)
     {
       remove_process (proc);
 
-      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
-      error ("Cannot attach to process %ld: %s", pid, reason.c_str ());
+      std::string reason = linux_ptrace_attach_fail_reason (pid, err);
+      error (_("Cannot attach to process %ld: %s"), pid, reason.c_str ());
     }
 
   /* Don't ignore the initial SIGSTOP if we just attached to this
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 67e8e3e54d..976ecbd2df 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -2893,9 +2893,21 @@ handle_v_attach (char *own_buf)
 {
   client_state &cs = get_client_state ();
   int pid;
+  int ret;
 
   pid = strtol (own_buf + 8, NULL, 16);
-  if (pid != 0 && attach_inferior (pid) == 0)
+
+  try
+    {
+      ret = attach_inferior (pid);
+    }
+  catch (const gdb_exception_error &e)
+    {
+      snprintf (own_buf, PBUFSIZ, "E.%s", e.what ());
+      return 0;
+    }
+
+  if (pid != 0 && ret == 0)
     {
       /* Don't report shared library events after attaching, even if
 	 some libraries are preloaded.  GDB will always poll the
diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c
index c6b43a06cc..e3acf83850 100644
--- a/gdb/gdbserver/thread-db.c
+++ b/gdb/gdbserver/thread-db.c
@@ -224,7 +224,7 @@ attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p)
   err = linux_attach_lwp (ptid);
   if (err != 0)
     {
-      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
+      std::string reason = linux_ptrace_attach_fail_reason_lwp (ptid, err);
 
       warning ("Could not attach to thread %ld (LWP %d): %s",
 	       (unsigned long) ti_p->ti_tid, ti_p->ti_lid, reason.c_str ());
diff --git a/gdb/gdbsupport/gdb-dlfcn.h b/gdb/gdbsupport/gdb-dlfcn.h
index 6a39d38941..e933b7a473 100644
--- a/gdb/gdbsupport/gdb-dlfcn.h
+++ b/gdb/gdbsupport/gdb-dlfcn.h
@@ -32,8 +32,8 @@ struct dlclose_deleter
 typedef std::unique_ptr<void, dlclose_deleter> gdb_dlhandle_up;
 
 /* Load the dynamic library file named FILENAME, and return a handle
-   for that dynamic library.  Return NULL if the loading fails for any
-   reason.  */
+   for that dynamic library.  Throw an error if the loading fails for
+   any reason.  */
 
 gdb_dlhandle_up gdb_dlopen (const char *filename);
 
diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c
index 4a8e732373..b792af00d1 100644
--- a/gdb/inf-ptrace.c
+++ b/gdb/inf-ptrace.c
@@ -94,6 +94,20 @@ inf_ptrace_target::remove_fork_catchpoint (int pid)
 #endif /* PT_GET_PROCESS_STATE */
 \f
 
+/* Default method for "inf_ptrace_me_fail_reason", which returns an
+   empty string.  */
+
+static std::string
+default_inf_ptrace_me_fail_reason (int err)
+{
+  return {};
+}
+
+/* See inf-ptrace.h.  */
+
+std::string (*inf_ptrace_me_fail_reason) (int err)
+  = default_inf_ptrace_me_fail_reason;
+
 /* Prepare to be traced.  */
 
 static void
@@ -101,7 +115,8 @@ inf_ptrace_me (void)
 {
   /* "Trace me, Dr. Memory!"  */
   if (ptrace (PT_TRACE_ME, 0, (PTRACE_TYPE_ARG3) 0, 0) < 0)
-    trace_start_error_with_name ("ptrace");
+    trace_start_error_with_name ("ptrace",
+				 inf_ptrace_me_fail_reason (errno).c_str ());
 }
 
 /* Start a new inferior Unix child process.  EXEC_FILE is the file to
diff --git a/gdb/inf-ptrace.h b/gdb/inf-ptrace.h
index 98b5d2e09e..7cdab9af89 100644
--- a/gdb/inf-ptrace.h
+++ b/gdb/inf-ptrace.h
@@ -83,4 +83,14 @@ protected:
 
 extern pid_t get_ptrace_pid (ptid_t);
 
+/* Pointer to "inf_ptrace_me_fail_reason", which implements a function
+   that can be called by "inf_ptrace_me" in order to obtain the reason
+   for a ptrace failure.  ERR is the ERRNO value set by the failing
+   ptrace call.
+
+   This pointer can be overriden by targets that want to personalize
+   the error message printed when ptrace fails (see linux-nat.c, for
+   example).  */
+extern std::string (*inf_ptrace_me_fail_reason) (int err);
+
 #endif
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index cd5cf1830d..2c7ded7043 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -1132,7 +1132,7 @@ attach_proc_task_lwp_callback (ptid_t ptid)
 	  else
 	    {
 	      std::string reason
-		= linux_ptrace_attach_fail_reason_string (ptid, err);
+		= linux_ptrace_attach_fail_reason_lwp (ptid, err);
 
 	      warning (_("Cannot attach to lwp %d: %s"),
 		       lwpid, reason.c_str ());
@@ -1187,8 +1187,9 @@ linux_nat_target::attach (const char *args, int from_tty)
     }
   catch (const gdb_exception_error &ex)
     {
+      int saved_errno = errno;
       pid_t pid = parse_pid_to_attach (args);
-      std::string reason = linux_ptrace_attach_fail_reason (pid);
+      std::string reason = linux_ptrace_attach_fail_reason (pid, saved_errno);
 
       if (!reason.empty ())
 	throw_error (ex.error, "warning: %s\n%s", reason.c_str (),
@@ -4567,6 +4568,10 @@ Enables printf debugging output."),
   sigemptyset (&blocked_mask);
 
   lwp_lwpid_htab_create ();
+
+  /* Set the proper function to generate a message when ptrace
+     fails.  */
+  inf_ptrace_me_fail_reason = linux_ptrace_me_fail_reason;
 }
 \f
 
diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c
index 355e9bef43..2ead4a4858 100644
--- a/gdb/nat/fork-inferior.c
+++ b/gdb/nat/fork-inferior.c
@@ -591,7 +591,7 @@ trace_start_error (const char *fmt, ...)
 /* See nat/fork-inferior.h.  */
 
 void
-trace_start_error_with_name (const char *string)
+trace_start_error_with_name (const char *string, const char *append)
 {
-  trace_start_error ("%s: %s", string, safe_strerror (errno));
+  trace_start_error ("%s: %s%s", string, safe_strerror (errno), append);
 }
diff --git a/gdb/nat/fork-inferior.h b/gdb/nat/fork-inferior.h
index 065496c382..405f2cf548 100644
--- a/gdb/nat/fork-inferior.h
+++ b/gdb/nat/fork-inferior.h
@@ -98,9 +98,10 @@ extern void trace_start_error (const char *fmt, ...)
   ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
 
 /* Like "trace_start_error", but the error message is constructed by
-   combining STRING with the system error message for errno.  This
-   function does not return.  */
-extern void trace_start_error_with_name (const char *string)
+   combining STRING with the system error message for errno, and
+   (optionally) with APPEND.  This function does not return.  */
+extern void trace_start_error_with_name (const char *string,
+					 const char *append = "")
   ATTRIBUTE_NORETURN;
 
 #endif /* NAT_FORK_INFERIOR_H */
diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
index c1ebc0a032..8a048d2ec9 100644
--- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c
@@ -21,6 +21,9 @@
 #include "linux-procfs.h"
 #include "linux-waitpid.h"
 #include "gdbsupport/buffer.h"
+#include "gdbsupport/gdb-dlfcn.h"
+#include "nat/fork-inferior.h"
+#include "gdbsupport/filestuff.h"
 #ifdef HAVE_SYS_PROCFS_H
 #include <sys/procfs.h>
 #endif
@@ -30,11 +33,94 @@
    of 0 means there are no supported features.  */
 static int supported_ptrace_options = -1;
 
-/* Find all possible reasons we could fail to attach PID and return these
-   as a string.  An empty string is returned if we didn't find any reason.  */
+typedef int (*selinux_ftype) (const char *);
 
-std::string
-linux_ptrace_attach_fail_reason (pid_t pid)
+/* Helper function which checks if ptrace is probably restricted
+   (i.e., if ERR is either EACCES or EPERM), and returns a string with
+   possible workarounds.  */
+
+static std::string
+linux_ptrace_restricted_fail_reason (int err)
+{
+  if (err != EACCES && err != EPERM)
+    {
+      /* It just makes sense to perform the checks below if errno was
+	 either EACCES or EPERM.  */
+      return {};
+    }
+
+  std::string ret;
+  gdb_dlhandle_up handle;
+
+  try
+    {
+      handle = gdb_dlopen ("libselinux.so.1");
+    }
+  catch (const gdb_exception_error &e)
+    {
+      handle.reset (nullptr);
+    }
+
+  if (handle != nullptr)
+    {
+      selinux_ftype selinux_get_bool
+	= (selinux_ftype) gdb_dlsym (handle, "security_get_boolean_active");
+
+      if (selinux_get_bool != NULL
+	  && (*selinux_get_bool) ("deny_ptrace") == 1)
+	string_appendf (ret,
+			_("\n\
+The SELinux 'deny_ptrace' option is enabled and preventing GDB\n\
+from using 'ptrace'.  You can disable it by executing (as root):\n\
+\n\
+  setsebool deny_ptrace off\n"));
+    }
+
+  gdb_file_up yama_ptrace_scope
+    = gdb_fopen_cloexec ("/proc/sys/kernel/yama/ptrace_scope", "r");
+
+  if (yama_ptrace_scope != nullptr)
+    {
+      char yama_scope = fgetc (yama_ptrace_scope.get ());
+
+      if (yama_scope != '0')
+	string_appendf (ret,
+			_("\n\
+The Linux kernel's Yama ptrace scope is in effect, which can prevent\n\
+GDB from using 'ptrace'.  You can disable it by executing (as root):\n\
+\n\
+  echo 0 > /proc/sys/kernel/yama/ptrace_scope\n"));
+    }
+
+  if (ret.empty ())
+    {
+      /* It wasn't possible to determine the exact reason for the
+	 ptrace error.  Let's just emit a generic error message
+	 pointing the user to our documentation, where she can find
+	 instructions on how to try to diagnose the problem.  */
+      ret = _("\n\
+There might be restrictions preventing ptrace from working.  Please see\n\
+the appendix \"Linux kernel ptrace restrictions\" in the GDB documentation\n\
+for more details.");
+    }
+
+  /* The user may be debugging remotely, so we have to warn that
+     the instructions above should be performed in the target.  */
+  string_appendf (ret,
+		  _("\n\
+If you are debugging the inferior remotely, the ptrace restriction(s) must\n\
+be disabled in the target system (e.g., where GDBserver is running)."));
+
+  return ret;
+}
+
+/* Find all possible reasons we could fail to attach PID and return
+   these as a string.  An empty string is returned if we didn't find
+   any reason.  Helper for linux_ptrace_attach_fail_reason and
+   linux_ptrace_attach_fail_reason_lwp.  */
+
+static std::string
+linux_ptrace_attach_fail_reason_1 (pid_t pid)
 {
   pid_t tracerpid = linux_proc_get_tracerpid_nowarn (pid);
   std::string result;
@@ -56,10 +142,24 @@ linux_ptrace_attach_fail_reason (pid_t pid)
 /* See linux-ptrace.h.  */
 
 std::string
-linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err)
+linux_ptrace_attach_fail_reason (pid_t pid, int err)
+{
+  std::string result = linux_ptrace_attach_fail_reason_1 (pid);
+  std::string ptrace_restrict = linux_ptrace_restricted_fail_reason (err);
+
+  if (!ptrace_restrict.empty ())
+    result += "\n" + ptrace_restrict;
+
+  return result;
+}
+
+/* See linux-ptrace.h.  */
+
+std::string
+linux_ptrace_attach_fail_reason_lwp (ptid_t ptid, int err)
 {
   long lwpid = ptid.lwp ();
-  std::string reason = linux_ptrace_attach_fail_reason (lwpid);
+  std::string reason = linux_ptrace_attach_fail_reason_1 (lwpid);
 
   if (!reason.empty ())
     return string_printf ("%s (%d), %s", safe_strerror (err), err,
@@ -68,6 +168,14 @@ linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err)
     return string_printf ("%s (%d)", safe_strerror (err), err);
 }
 
+/* See linux-ptrace.h.  */
+
+std::string
+linux_ptrace_me_fail_reason (int err)
+{
+  return linux_ptrace_restricted_fail_reason (err);
+}
+
 #if defined __i386__ || defined __x86_64__
 
 /* Address of the 'ret' instruction in asm code block below.  */
@@ -257,6 +365,12 @@ linux_ptrace_test_ret_to_nx (void)
 #endif /* defined __i386__ || defined __x86_64__ */
 }
 
+/* If the PTRACE_TRACEME call on linux_child_function errors, we need
+   to be able to send ERRNO back to the parent so that it can check
+   whether there are restrictions in place preventing ptrace from
+   working.  We do that with a pipe.  */
+static int errno_pipe[2];
+
 /* Helper function to fork a process and make the child process call
    the function FUNCTION, passing CHILD_STACK as parameter.
 
@@ -273,6 +387,11 @@ linux_fork_to_function (gdb_byte *child_stack, int (*function) (void *))
   /* Sanity check the function pointer.  */
   gdb_assert (function != NULL);
 
+  /* Create the pipe that will be used by the child to pass ERRNO
+     after the PTRACE_TRACEME call.  */
+  if (pipe (errno_pipe) != 0)
+    trace_start_error_with_name ("pipe");
+
 #if defined(__UCLIBC__) && defined(HAS_NOMMU)
 #define STACK_SIZE 4096
 
@@ -321,7 +440,21 @@ linux_grandchild_function (void *child_stack)
 static int
 linux_child_function (void *child_stack)
 {
-  ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
+  /* Close read end.  */
+  close (errno_pipe[0]);
+
+  int ret = ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0,
+		    (PTRACE_TYPE_ARG4) 0);
+  int ptrace_errno = errno;
+
+  /* Write ERRNO to the pipe, even if it's zero, and close the writing
+     end of the pipe.  */
+  write (errno_pipe[1], &ptrace_errno, sizeof (ptrace_errno));
+  close (errno_pipe[1]);
+
+  if (ret != 0)
+    _exit (0);
+
   kill (getpid (), SIGSTOP);
 
   /* Fork a grandchild.  */
@@ -336,6 +469,48 @@ static void linux_test_for_tracesysgood (int child_pid);
 static void linux_test_for_tracefork (int child_pid);
 static void linux_test_for_exitkill (int child_pid);
 
+/* Helper function to wait for the child to send us the ptrace ERRNO,
+   and check if it's OK.  */
+
+static void
+linux_check_child_ptrace_errno ()
+{
+  int child_errno;
+  fd_set rset;
+  struct timeval timeout;
+
+  /* Close the writing end of the pipe.  */
+  close (errno_pipe[1]);
+
+  FD_ZERO (&rset);
+  FD_SET (errno_pipe[0], &rset);
+
+  /* One second should be plenty of time to wait for the child's
+     reply.  */
+  timeout.tv_sec = 1;
+  timeout.tv_usec = 0;
+
+  int ret = select (errno_pipe[0] + 1, &rset, NULL, NULL, &timeout);
+
+  if (ret < 0)
+    trace_start_error_with_name ("select");
+  else if (ret == 0)
+    error (_("Timeout while waiting for child's ptrace errno"));
+  else
+    read (errno_pipe[0], &child_errno, sizeof (child_errno));
+
+  if (child_errno != 0)
+    {
+      /* The child can't use PTRACE_TRACEME.  We just bail out.  */
+      std::string reason = linux_ptrace_restricted_fail_reason (child_errno);
+
+      errno = child_errno;
+      trace_start_error_with_name ("ptrace", reason.c_str ());
+    }
+
+  close (errno_pipe[0]);
+}
+
 /* Determine ptrace features available on this target.  */
 
 void
@@ -352,6 +527,9 @@ linux_check_ptrace_features (void)
      reporting.  */
   child_pid = linux_fork_to_function (NULL, linux_child_function);
 
+  /* Check if the child can successfully use ptrace.  */
+  linux_check_child_ptrace_errno ();
+
   ret = my_waitpid (child_pid, &status, 0);
   if (ret == -1)
     perror_with_name (("waitpid"));
diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h
index fd2f12a342..90afb60f34 100644
--- a/gdb/nat/linux-ptrace.h
+++ b/gdb/nat/linux-ptrace.h
@@ -176,12 +176,27 @@ struct buffer;
 # define TRAP_HWBKPT 4
 #endif
 
-extern std::string linux_ptrace_attach_fail_reason (pid_t pid);
-
-/* Find all possible reasons we could have failed to attach to PTID
-   and return them as a string.  ERR is the error PTRACE_ATTACH failed
-   with (an errno).  */
-extern std::string linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
+/* Find all possible reasons we could fail to attach PID and return
+   these as a string.  An empty string is returned if we didn't find
+   any reason.  If ERR is EACCES or EPERM, we also add a warning about
+   possible restrictions to use ptrace.  */
+extern std::string linux_ptrace_attach_fail_reason (pid_t pid, int err);
+
+/* Find all possible reasons we could have failed to attach to PID's
+   LWPID and return them as a string.  ERR is the error PTRACE_ATTACH
+   failed with (an errno).  Unlike linux_ptrace_attach_fail_reason,
+   this function should be used when attaching to an LWP other than
+   the leader; it does not warn about ptrace restrictions.  */
+extern std::string linux_ptrace_attach_fail_reason_lwp (ptid_t pid, int err);
+
+/* When the call to 'ptrace (PTRACE_TRACEME...' fails, and we have
+   already forked, this function can be called in order to try to
+   obtain the reason why ptrace failed.  ERR should be the ERRNO value
+   returned by ptrace.
+
+   This function will return a 'std::string' containing the fail
+   reason, or an empty string otherwise.  */
+extern std::string linux_ptrace_me_fail_reason (int err);
 
 extern void linux_ptrace_init_warnings (void);
 extern void linux_check_ptrace_features (void);
diff --git a/gdb/remote.c b/gdb/remote.c
index 21160e13ac..efc5084cfe 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -5825,8 +5825,20 @@ extended_remote_target::attach (const char *args, int from_tty)
     case PACKET_UNKNOWN:
       error (_("This target does not support attaching to a process"));
     default:
-      error (_("Attaching to %s failed"),
-	     target_pid_to_str (ptid_t (pid)).c_str ());
+      {
+	std::string errmsg = rs->buf.data ();
+
+	if (!errmsg.empty ())
+	  {
+	    /* Get rid of the "E." prefix.  */
+	    errmsg.erase (0, 2);
+	  }
+
+	error (_("Attaching to %s failed%s%s"),
+	       target_pid_to_str (ptid_t (pid)).c_str (),
+	       !errmsg.empty () ? "\n" : "",
+	       errmsg.c_str ());
+      }
     }
 
   set_current_inferior (remote_add_inferior (false, pid, 1, 0));


^ permalink raw reply	[flat|nested] 3701+ messages in thread
[parent not found: <@gdb-build>]

end of thread, other threads:[~2019-09-27  9:30 UTC | newest]

Thread overview: 3701+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-31 14:25 [binutils-gdb] Delete test target descriptions when exiting sergiodj+buildbot
2018-07-31 14:25 ` Failures on RHEL-s390x-m64, branch master sergiodj+buildbot
2018-07-31 14:33 ` Failures on Fedora-x86_64-m32, " sergiodj+buildbot
2018-07-31 14:42 ` Failures on Debian-s390x-native-gdbserver-m64, " sergiodj+buildbot
2018-07-31 14:45 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " sergiodj+buildbot
2018-07-31 14:46 ` *** COMPILATION FAILED *** Failures on Fedora-x86_64-w64-mingw32, branch master *** BREAKAGE *** sergiodj+buildbot
2018-07-31 15:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2018-07-31 15:33 ` Failures on Fedora-x86_64-m64, " sergiodj+buildbot
2018-07-31 16:35 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " sergiodj+buildbot
2018-07-31 16:58 ` Failures on Fedora-x86_64-native-gdbserver-m32, " sergiodj+buildbot
2018-08-18 14:55 ` Failures on Fedora-x86_64-native-gdbserver-m64, " sergiodj+buildbot
2019-01-09  3:39 [binutils-gdb] Adjust bfd/warning.m4 egrep patterns sergiodj+buildbot
2019-01-09  4:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09  4:59 [binutils-gdb] Fix leak in linespec.c sergiodj+buildbot
2019-01-09  6:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 10:50 [binutils-gdb] gdb/testsuite: Remove interactive prompt case from mi_gdb_test sergiodj+buildbot
2019-01-09 11:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 15:59 [binutils-gdb] gdb: Avoid signed integer overflow when printing source lines sergiodj+buildbot
2019-01-09 16:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 18:33 [binutils-gdb] gdb: Remove support for old mangling schemes sergiodj+buildbot
2019-01-09 19:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 19:35 [binutils-gdb] S12Z: Fix disassembly of indexed OPR operands with zero index sergiodj+buildbot
2019-01-09 20:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 20:05 [binutils-gdb] S12Z: Don't crash when disassembling invalid instructions sergiodj+buildbot
2019-01-09 22:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-09 22:15 [binutils-gdb] Merge from gcc: use "cannot" instead of "can not" in libiberty and include sergiodj+buildbot
2019-01-10  0:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  1:52 [binutils-gdb] Introduce all_objfiles and next_iterator sergiodj+buildbot
2019-01-10  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  2:24 [binutils-gdb] Remove ALL_PSPACE_OBJFILES sergiodj+buildbot
2019-01-10  4:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  2:36 [binutils-gdb] Remove most uses of ALL_OBJFILES sergiodj+buildbot
2019-01-10  5:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  2:59 [binutils-gdb] Remove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS sergiodj+buildbot
2019-01-10  8:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  3:12 [binutils-gdb] Remove ALL_OBJFILE_COMPUNITS sergiodj+buildbot
2019-01-10  9:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  3:25 [binutils-gdb] Remove ALL_COMPUNITS sergiodj+buildbot
2019-01-10 11:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  3:56 [binutils-gdb] Remove ALL_COMPUNIT_FILETABS sergiodj+buildbot
2019-01-10 15:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  4:18 [binutils-gdb] Remove ALL_OBJFILES and ALL_FILETABS sergiodj+buildbot
2019-01-10 18:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  4:42 [binutils-gdb] Remove ALL_OBJFILE_PSYMTABS sergiodj+buildbot
2019-01-10 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10  6:23 [binutils-gdb] Remove ALL_OBJFILES_SAFE sergiodj+buildbot
2019-01-10  7:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 14:53 [binutils-gdb] Remove parameters from start_psymtab_common sergiodj+buildbot
2019-01-11  2:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 15:18 [binutils-gdb] Simplify calls to init_psymbol_list sergiodj+buildbot
2019-01-11  5:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 15:30 [binutils-gdb] Change create_demangled_names_hash to take an objfile_per_bfd_storage sergiodj+buildbot
2019-01-11  6:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 15:41 [binutils-gdb] Change symbol_set_names to take an objfile_per_bfd_storage sergiodj+buildbot
2019-01-11  7:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 16:18 [binutils-gdb] Allocate the address map on the psymtab obstack sergiodj+buildbot
2019-01-11 11:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 16:43 [binutils-gdb] Add psymtab_storage::allocate_dependencies sergiodj+buildbot
2019-01-11 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 17:09 [binutils-gdb] Move psymtabs to their own obstack sergiodj+buildbot
2019-01-11 16:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 18:32 [binutils-gdb] Fix leak in solib-target.c:library_list_start_library sergiodj+buildbot
2019-01-11 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 18:44 [binutils-gdb] Fix tracepoint.c:parse_tracepoint_definition leak (and one more) sergiodj+buildbot
2019-01-11 22:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-10 23:02 [binutils-gdb] gdb/23712: Remove dw2_add_symbol_to_list sergiodj+buildbot
2019-01-12  8:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-11  8:09 [binutils-gdb] Introduce class psymtab_storage sergiodj+buildbot
2019-01-11  8:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-11 14:49 [binutils-gdb] Make psymtab_storage::free_psymtabs private sergiodj+buildbot
2019-01-11 15:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12  1:32 [binutils-gdb] gdb/23712: Cleanup/Remove temporary dictionary functions sergiodj+buildbot
2019-01-12  2:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12  7:17 [binutils-gdb] Fix 'obj' may be used uninitialized warning in symtab.c:matching_obj_sections sergiodj+buildbot
2019-01-12 12:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12  9:25 [binutils-gdb] gdb/23712: Test case for multidictionary sergiodj+buildbot
2019-01-12 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12 11:31 [binutils-gdb] gdb/testsuite: Don't allow paths to appear in test name sergiodj+buildbot
2019-01-12 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12 15:21 [binutils-gdb] expand a bit the in-GDB help for the "catch exception" help text sergiodj+buildbot
2019-01-12 16:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12 16:44 [binutils-gdb] Add RXv3 instructions sergiodj+buildbot
2019-01-12 17:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-12 21:26 [binutils-gdb] Implement help/show values for 'set|show style' sergiodj+buildbot
2019-01-12 22:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-13 21:50 [binutils-gdb] gdb: xtensa: fix register counters for xtensa-linux sergiodj+buildbot
2019-01-13 22:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-14 16:15 [binutils-gdb] Add support to GNU ld to separate got related plt entries from normal ones in order to be able to switch the non-plt got entries to read-only after startup, conforming to revised Linux for zSeries ABI sergiodj+buildbot
2019-01-14 17:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-14 21:11 [binutils-gdb] [PowerPC] Aliases for vector registers sergiodj+buildbot
2019-01-14 22:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-14 23:32 [binutils-gdb] Fix placement of output in TUI mode sergiodj+buildbot
2019-01-15  0:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-15  0:51 [binutils-gdb] Constify target_pass_signals and target_program_signals sergiodj+buildbot
2019-01-15  2:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-15  1:15 [binutils-gdb] Constify some remote-notif functions sergiodj+buildbot
2019-01-15  4:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-15 23:03 [binutils-gdb] Remove cleanup from remote.c sergiodj+buildbot
2019-01-16  0:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-15 23:04 [binutils-gdb] sim: Fix definition of SIM_ARANGE_INLINE sergiodj+buildbot
2019-01-16  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-16 13:55 [binutils-gdb] S12Z: Emit RELOC_S12Z_OPR instead of RELOC_EXT24 where appropriate sergiodj+buildbot
2019-01-16 15:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-16 21:51 [binutils-gdb] RISC-V: Merge ELF attribute for ld sergiodj+buildbot
2019-01-17  1:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-17 17:38 [binutils-gdb] Replace "the the" with "the" sergiodj+buildbot
2019-01-17 18:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-17 17:50 [binutils-gdb] Remove cleanups from solib-target.c sergiodj+buildbot
2019-01-17 20:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-17 23:38 [binutils-gdb] Change all_objfiles adapter to be a method on program_space sergiodj+buildbot
2019-01-18  0:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-18  0:16 [binutils-gdb] Make psymtab range adapter a method on objfile sergiodj+buildbot
2019-01-18  5:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-18  0:41 [binutils-gdb] Make minimal symbol range adapter a method on objfile sergiodj+buildbot
2019-01-18  7:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-18  1:13 [binutils-gdb] Change all_objfiles_safe adapter to be a method on program_space sergiodj+buildbot
2019-01-18  2:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-18  5:48 [binutils-gdb] Simplify minsym iteration sergiodj+buildbot
2019-01-18  6:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-19 16:11 [binutils-gdb] Add markers for 2.32 branch to NEWS and ChangeLog files sergiodj+buildbot
2019-01-19 17:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-19 17:08 [binutils-gdb] Change version to 2.32.51 and regenerate configure and pot files sergiodj+buildbot
2019-01-19 18:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 11:00 [binutils-gdb] Testsuite: Ensure stack protection is off for GCC sergiodj+buildbot
2019-01-21 12:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 13:15 [binutils-gdb] Updated translations for various binutils subdirectories sergiodj+buildbot
2019-01-21 15:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 16:18 [binutils-gdb] AArch64 AAPCS: Empty structs have non zero size in C++ sergiodj+buildbot
2019-01-21 17:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 16:36 [binutils-gdb] Fix leak in splay-tree sergiodj+buildbot
2019-01-21 18:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 18:41 [binutils-gdb] Remove duplicate or commented-out #includes sergiodj+buildbot
2019-01-21 19:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-21 20:44 [binutils-gdb] Fix leak in event-top.c history expansion sergiodj+buildbot
2019-01-21 21:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-22 23:15 [binutils-gdb] Remove the EXTERN define from stabsread.h sergiodj+buildbot
2019-01-23  0:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23  4:29 [binutils-gdb] Use "struct bcache" in objfiles.h sergiodj+buildbot
2019-01-23  8:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23  4:41 [binutils-gdb] Do not include py-ref.h in most files sergiodj+buildbot
2019-01-23  9:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23  4:51 [binutils-gdb] Declare remote_target in remote-fileio.h sergiodj+buildbot
2019-01-23 10:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23  5:14 [binutils-gdb] Include gdb_curses.h in tui-wingeneral.h sergiodj+buildbot
2019-01-23 13:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23  5:55 [binutils-gdb] Remove a comment in compile/compile-cplus-types.c sergiodj+buildbot
2019-01-23  6:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 12:06 [binutils-gdb] AArch64: Ensure lwp info is created zeroed sergiodj+buildbot
2019-01-23 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 16:32 [binutils-gdb] Updated translations for some of the binutils subdirectory sergiodj+buildbot
2019-01-23 17:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 19:30 [binutils-gdb] Rename ESC -> ESC_PARENS sergiodj+buildbot
2019-01-23 21:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 19:40 [binutils-gdb] Introduce scope_exit sergiodj+buildbot
2019-01-23 22:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 19:52 [binutils-gdb] Introduce forward_scope_exit sergiodj+buildbot
2019-01-23 23:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 20:03 [binutils-gdb] Use forward_scope_exit for scoped_finish_thread_state sergiodj+buildbot
2019-01-24  1:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 20:46 [binutils-gdb] Replace delete_longjmp_breakpoint_cleanup with a forward_scope_exit type sergiodj+buildbot
2019-01-24  3:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 20:56 [binutils-gdb] Remove remaining cleanup from gdb/breakpoint.c sergiodj+buildbot
2019-01-24  5:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 21:21 [binutils-gdb] Remove make_bpstat_clear_actions_cleanup sergiodj+buildbot
2019-01-24  7:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 21:33 [binutils-gdb] Remove cleanup_delete_std_terminate_breakpoint sergiodj+buildbot
2019-01-24  9:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 21:56 [binutils-gdb] Remove clear_symtab_users_cleanup sergiodj+buildbot
2019-01-24 11:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 22:28 [binutils-gdb] Remove cleanup from stop_all_threads sergiodj+buildbot
2019-01-24 13:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 22:39 [binutils-gdb] Remove remaining cleanup from fetch_inferior_event sergiodj+buildbot
2019-01-24 14:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-23 23:02 [binutils-gdb] Update cleanup comment in ui-out.h sergiodj+buildbot
2019-01-24 16:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-24  1:46 [binutils-gdb] Use SCOPE_EXIT in gdbarch-selftest.c sergiodj+buildbot
2019-01-24  2:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-24  5:44 [binutils-gdb] Remove delete_just_stopped_threads_infrun_breakpoints_cleanup sergiodj+buildbot
2019-01-24  6:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-24  8:41 [binutils-gdb] AArch64 AAPCS: Ignore static members sergiodj+buildbot
2019-01-24 19:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-24 18:19 [binutils-gdb] Use scope_exit in regcache.c sergiodj+buildbot
2019-01-24 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-24 18:21 [binutils-gdb] Fix clang/libc++ build sergiodj+buildbot
2019-01-24 20:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-25 13:09 [binutils-gdb] Updated Bulgarian and Russian translations for some of the binutils sub-directories sergiodj+buildbot
2019-01-25 13:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-25 15:56 [binutils-gdb] AArch64: Update encodings for stg, st2g, stzg and st2zg sergiodj+buildbot
2019-01-25 19:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-25 23:18 [binutils-gdb] Don't use -I for common subdirectory sergiodj+buildbot
2019-01-26  2:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-25 23:52 [binutils-gdb] Update create-version.sh to use common/version.h sergiodj+buildbot
2019-01-26  0:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-26  1:11 [binutils-gdb] Normalize includes to use common/ sergiodj+buildbot
2019-01-26  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-26 16:23 [binutils-gdb] Fix the sim build sergiodj+buildbot
2019-01-26 17:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-27 22:08 [binutils-gdb] Remove duplicate skip_python_tests invocation sergiodj+buildbot
2019-01-27 23:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-28 10:30 [binutils-gdb] gdbserver: When attaching, add process before lwps sergiodj+buildbot
2019-01-28 11:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-28 10:30 [binutils-gdb] Replace contribution list in CONTRIBUTE file with link sergiodj+buildbot
2019-01-28 12:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-28 16:17 [binutils-gdb] Fix GCC9 warning on elf32-arm.c:elf32_arm_final_link_relocate sergiodj+buildbot
2019-01-28 17:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-28 17:44 [binutils-gdb] Revert "gdbserver: When attaching, add process before lwps" sergiodj+buildbot
2019-01-28 18:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-28 18:32 [binutils-gdb] Use trad_frame_set_reg_addr for FreeBSD arm signal trampoline unwinders sergiodj+buildbot
2019-01-28 19:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-30 18:16 [binutils-gdb] [PR gdb/23985] Fix libinproctrace.so build sergiodj+buildbot
2019-01-30 19:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-31 17:04 [binutils-gdb] S/390: Implement instruction set extensions sergiodj+buildbot
2019-01-31 17:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-01-31 18:19 [binutils-gdb] Readline: Cleanup some warnings sergiodj+buildbot
2019-01-31 19:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-05 13:58 [binutils-gdb] Hoist assertion in target_stack::unpush sergiodj+buildbot
2019-02-05 15:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-06  3:09 [binutils-gdb] x86-64: Restore PIC check for PCREL reloc against protected symbol sergiodj+buildbot
2019-02-06  4:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-06 18:05 [binutils-gdb] Fix 'info proc cmdline' for native FreeBSD processes sergiodj+buildbot
2019-02-06 19:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-06 20:21 [binutils-gdb] Fix leak of identifier in macro definition sergiodj+buildbot
2019-02-06 21:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-06 20:32 [binutils-gdb] Factorize macro definition code in macrotab.c sergiodj+buildbot
2019-02-06 22:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 13:41 [binutils-gdb] C++-ify struct thread_fsm sergiodj+buildbot
2019-02-07 14:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 14:54 [binutils-gdb] Move potentially obsolete BFD targets into the definitely obsolete section. Add a note to the README-how-to-make-a-release document about doing this sergiodj+buildbot
2019-02-07 17:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 15:06 [binutils-gdb] gdbserver: When attaching, add process before lwps sergiodj+buildbot
2019-02-07 18:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 16:18 [binutils-gdb] Visium: fix bogus overflow check on 32-bit hosts sergiodj+buildbot
2019-02-07 21:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 17:54 [binutils-gdb] AArch64: Add verifier for By elem Single and Double sized instructions sergiodj+buildbot
2019-02-08  0:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 19:10 [binutils-gdb] Updated Swedish translation for the opcodes sub-directory sergiodj+buildbot
2019-02-07 19:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-07 21:52 [binutils-gdb] SPARC: fix PR ld/18841 sergiodj+buildbot
2019-02-07 23:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-08  1:07 [binutils-gdb] Arm: Backport hlt to all architectures sergiodj+buildbot
2019-02-08  1:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-08 21:33 [binutils-gdb] RISC-V: Compress 3-operand beq/bne against x0 sergiodj+buildbot
2019-02-08 22:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-08 21:44 [binutils-gdb] RISC-V: Add FP register core file support sergiodj+buildbot
2019-02-08 23:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-09 10:19 [binutils-gdb] [ARC] don't force _init/_fini as DT_INIT/DT_FINI sergiodj+buildbot
2019-02-09 11:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-10  9:13 [binutils-gdb] (Ada) -var-update crash for variable whose type is a reference to changeable sergiodj+buildbot
2019-02-10 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-10 12:29 [binutils-gdb] Fix type_stack leaks in c expression parsing sergiodj+buildbot
2019-02-10 16:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-11 17:01 [binutils-gdb] AArch64: Detect exit from execve syscall sergiodj+buildbot
2019-02-11 18:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 13:20 [binutils-gdb] Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp sergiodj+buildbot
2019-02-12 14:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 19:30 [binutils-gdb] Use function_name_style to print Ada and C function names sergiodj+buildbot
2019-02-12 20:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 20:52 [binutils-gdb] Use address style to print addresses in breakpoint information sergiodj+buildbot
2019-02-12 21:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 22:12 [binutils-gdb] Look for separate debug files in debug directories under a sysroot sergiodj+buildbot
2019-02-13  3:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 22:22 [binutils-gdb] Add a new function child_path sergiodj+buildbot
2019-02-13  4:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-12 22:44 [binutils-gdb] Try to use the canonical version of a sysroot for debug file links sergiodj+buildbot
2019-02-13  7:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-13  3:05 [binutils-gdb] Use child_path to determine if an object file is under a sysroot sergiodj+buildbot
2019-02-13  6:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-13  6:14 [binutils-gdb] Adding a test case sergiodj+buildbot
2019-02-13  8:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-13 22:36 [binutils-gdb] Add Andrew Burgess as global maintainer of gdb/ and sim/ sergiodj+buildbot
2019-02-13 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14  3:27 [binutils-gdb] (Windows) remove thread notification for main thread of inferior sergiodj+buildbot
2019-02-14  4:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 15:26 [binutils-gdb] [gdb, hurd] Work around conflict between Mach's 'thread_info' function, and GDB's 'thread_info' class sergiodj+buildbot
2019-02-14 17:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 16:25 [binutils-gdb] [gdb, hurd] Repair build after "Use thread_info and inferior pointers more throughout" sergiodj+buildbot
2019-02-14 21:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 16:36 [binutils-gdb] [gdb, hurd] Address "ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]" diagnostics sergiodj+buildbot
2019-02-14 22:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 16:49 [binutils-gdb] [gdb, hurd] Adjust to Hurd "proc" interface changes sergiodj+buildbot
2019-02-15  0:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 17:20 [binutils-gdb] [gdb, hurd] Avoid using 'PATH_MAX' in 'gdb/remote.c' sergiodj+buildbot
2019-02-15  1:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-14 19:25 [binutils-gdb] [gdb, hurd] Repair build after "Share fork_inferior et al with gdbserver" changes sergiodj+buildbot
2019-02-14 20:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 13:15 [binutils-gdb] Use the correct name for various MACH-O based operating systems in comments sergiodj+buildbot
2019-02-15 14:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 20:41 [binutils-gdb] C++-ify bp_location sergiodj+buildbot
2019-02-15 21:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 20:53 [binutils-gdb] Fix memory leak in create_ada_exception_catchpoint sergiodj+buildbot
2019-02-15 23:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 21:22 [binutils-gdb] Exception safety in ravenscar-thread.c sergiodj+buildbot
2019-02-16  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 21:34 [binutils-gdb] C++-ify ravenscar_arch_ops sergiodj+buildbot
2019-02-16  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 22:07 [binutils-gdb] Fix formatting in ravenscar-thread.c sergiodj+buildbot
2019-02-16  4:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 22:17 [binutils-gdb] Minor C++-ification in ravenscar-thread.c sergiodj+buildbot
2019-02-16  5:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 22:29 [binutils-gdb] Add push_target overload sergiodj+buildbot
2019-02-16  7:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 22:41 [binutils-gdb] Make the ravenscar thread target multi-target-ready sergiodj+buildbot
2019-02-16  8:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-15 22:54 [binutils-gdb] Special-case wildcard requests in ravenscar-thread.c sergiodj+buildbot
2019-02-16  9:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-17 15:18 [binutils-gdb] type_align: handle range types the same as ints and enums sergiodj+buildbot
2019-02-17 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-17 23:50 [binutils-gdb] Add styling to macro commands sergiodj+buildbot
2019-02-18  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-18  0:02 [binutils-gdb] Change macro_source_fullname to return a std::string sergiodj+buildbot
2019-02-18  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-18  6:37 [binutils-gdb] PR24225, nios2 buffer overflow sergiodj+buildbot
2019-02-18  6:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-18 21:50 [binutils-gdb] Fix leaks of 'per program space' and 'per inferior' ada task data sergiodj+buildbot
2019-02-18 22:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-19 12:37 [binutils-gdb] PR24235, Read memory violation in pei-x86_64.c sergiodj+buildbot
2019-02-19 13:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-19 19:45 [binutils-gdb] Minor Ada task cleanups sergiodj+buildbot
2019-02-19 20:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20  2:30 [binutils-gdb] Fix error message and use-after-free on errors in nested sourced files sergiodj+buildbot
2019-02-20  4:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20  4:32 [binutils-gdb] Use or1k-darwin host SHARED_LIBADD for *-darwin sergiodj+buildbot
2019-02-20  5:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20  8:48 [binutils-gdb] Check asprintf return value sergiodj+buildbot
2019-02-20 10:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20 10:57 [binutils-gdb] AArch64: Add pauth core file section sergiodj+buildbot
2019-02-20 12:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20 11:09 [binutils-gdb] bfd: xtensa: fix callx relaxation sergiodj+buildbot
2019-02-20 13:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-20 19:48 [binutils-gdb] Fix typos in symtab_symbol_info sergiodj+buildbot
2019-02-20 20:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-21 18:38 [binutils-gdb] Document style behavior in batch mode sergiodj+buildbot
2019-02-21 19:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-22 20:22 [binutils-gdb] Fix symtab/23853: symlinked default symtab sergiodj+buildbot
2019-02-22 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-22 21:06 [binutils-gdb] Look for build-id-based separate debug files under the sysroot sergiodj+buildbot
2019-02-23  0:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-23 15:20 [binutils-gdb] Use '--readnever' when invoking GDB from gcore.in sergiodj+buildbot
2019-02-23 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-24 11:25 [binutils-gdb] PR24144, pdp11-ld overwriting section data with zeros sergiodj+buildbot
2019-02-24 11:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-25 16:02 [binutils-gdb] Fix BFD leak in solib-darwin.c sergiodj+buildbot
2019-02-25 16:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-25 21:09 [binutils-gdb] Fix crash when loading dwp files sergiodj+buildbot
2019-02-25 22:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-25 22:54 [binutils-gdb] Fix BFD leak in dwarf2_get_dwz_file sergiodj+buildbot
2019-02-26  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-26 18:09 [binutils-gdb] Add tests for gdb.Value(bufobj, type) constructor sergiodj+buildbot
2019-02-26 23:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-26 19:28 [binutils-gdb] Define gdb.Value(bufobj, type) constructor sergiodj+buildbot
2019-02-26 21:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-26 19:57 [binutils-gdb] Fix new py-value.exp test case sergiodj+buildbot
2019-02-27  3:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27  4:51 [binutils-gdb] gdb/riscv: Use legacy register numbers in default target description sergiodj+buildbot
2019-02-27  5:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27  5:00 [binutils-gdb] Fix build errors in aix-thread.c sergiodj+buildbot
2019-02-27  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27  5:37 [binutils-gdb] Bump version to 8.3.50.DATE-git sergiodj+buildbot
2019-02-27 10:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27  5:47 [binutils-gdb] Update NEWS post GDB 8.3 branch creation sergiodj+buildbot
2019-02-27 12:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 11:28 [binutils-gdb] gdb: Restructure type_align and gdbarch_type_align sergiodj+buildbot
2019-02-27 17:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 15:09 [binutils-gdb] gdb/aarch64: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-27 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 15:21 [binutils-gdb] gdb/alpha: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-27 23:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 15:43 [binutils-gdb] gdb/arm: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  2:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 15:55 [binutils-gdb] gdb/bfin: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  4:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 16:18 [binutils-gdb] gdb/csky: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  6:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 16:53 [binutils-gdb] gdb/ft32: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28 10:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 17:04 [binutils-gdb] gdb/h8300: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 18:29 [binutils-gdb] Use Python 2.[67] / 3.X / PEP 3118 buffer protocol sergiodj+buildbot
2019-02-28 14:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 19:11 [binutils-gdb] Prevent overflow in rl_set_screen_size sergiodj+buildbot
2019-02-28 20:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 19:37 [binutils-gdb] Test "set width/height -1" sergiodj+buildbot
2019-02-28 22:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 20:01 [binutils-gdb] Handle \r\n in gdbreplay sergiodj+buildbot
2019-03-01  1:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 20:22 [binutils-gdb] x86-64: Skip protected check on symbol defined by linker sergiodj+buildbot
2019-03-01  2:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-27 21:57 [binutils-gdb] Fix regcache leak, and avoid possible regcache access after detach sergiodj+buildbot
2019-03-01  4:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28  0:52 [binutils-gdb] gdb/arc: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28  4:51 [binutils-gdb] gdb/cris: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  5:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28  7:38 [binutils-gdb] (gdb/sim) Move Mike Frysinger to past maintainers section sergiodj+buildbot
2019-03-01  5:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28  8:46 [binutils-gdb] gdb/frv: Use default gdbarch methods where possible sergiodj+buildbot
2019-02-28  9:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28 12:41 [binutils-gdb] gdb/hppa: Use default gdbarch method default_dummy_id sergiodj+buildbot
2019-02-28 13:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28 14:43 [binutils-gdb] Prevent a buffer overrun error when attempting to parse a corrupt ELF file sergiodj+buildbot
2019-03-01  6:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28 16:12 [binutils-gdb] Document fact that mininum Python version is now 2.6 sergiodj+buildbot
2019-02-28 16:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-02-28 17:36 [binutils-gdb] Testsuite: Catch gdbserver socket listen errors sergiodj+buildbot
2019-03-01  9:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-01  3:16 [binutils-gdb] PR24272, out-of-bounds read in pex64_xdata_print_uwd_codes sergiodj+buildbot
2019-03-01 10:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-01  7:20 [binutils-gdb] Can't interrupt process without controlling terminal on Solaris (PR gdb/8527) sergiodj+buildbot
2019-03-01  8:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-01 14:29 [binutils-gdb] Fix coff_start_symtab resource leak found by Coverity sergiodj+buildbot
2019-03-01 15:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-02 13:35 [binutils-gdb] Fix GDB compilation on MinGW (PR gdb/24292) sergiodj+buildbot
2019-03-02 14:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-02 15:19 [binutils-gdb] GDB no longer supports Windows before XP sergiodj+buildbot
2019-03-02 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-02 16:38 [binutils-gdb] Avoid compilation warnings on MinGW sergiodj+buildbot
2019-03-02 17:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-04 22:17 [binutils-gdb] Use '$enable_unittest' instead of '$development' on gdbserver/configure.srv (for 'aarch64*-*-linux*' case) sergiodj+buildbot
2019-03-04 23:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-05 16:49 [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to macro_buffer sergiodj+buildbot
2019-03-05 22:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-05 17:17 [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to ref_ptr::release sergiodj+buildbot
2019-03-06  1:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-05 17:35 [binutils-gdb] Add ATTRIBUTE_UNUSED_RESULT to parser_state sergiodj+buildbot
2019-03-05 18:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-05 17:41 [binutils-gdb] Remove gdb_bfd_fdopenr sergiodj+buildbot
2019-03-06  4:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-05 21:27 [binutils-gdb] Change the_dummy_target to be a global sergiodj+buildbot
2019-03-06  6:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06  8:50 [binutils-gdb] Fortran function calls with arguments sergiodj+buildbot
2019-03-06 10:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06  9:57 [binutils-gdb] Fix a segmentation fault triggered by disassembling an EFi file with source included sergiodj+buildbot
2019-03-06 11:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 10:16 [binutils-gdb] Testsuite: Ensure changing directory does not break the log file sergiodj+buildbot
2019-03-06 12:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 16:26 [binutils-gdb] Fix remote-sim.c build after warn-unused-result change sergiodj+buildbot
2019-03-06 16:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 19:04 [binutils-gdb] gdb/fortran: Add new function to evaluate Fortran expressions sergiodj+buildbot
2019-03-06 23:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 19:17 [binutils-gdb] gdb/fortran: Enable debugging of the Fortran parser sergiodj+buildbot
2019-03-07  1:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 19:30 [binutils-gdb] gdb/fortran: Add Fortran 'kind' intrinsic and keyword sergiodj+buildbot
2019-03-07  2:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 19:54 [binutils-gdb] gdb/fortran: Add builtin 8-byte integer type with (kind=8) support sergiodj+buildbot
2019-03-07  5:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 20:58 [binutils-gdb] C++ify fork_info, use std::list sergiodj+buildbot
2019-03-07 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 21:11 [binutils-gdb] linux-fork.c: rewrite inf_has_multiple_threads sergiodj+buildbot
2019-03-07 15:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-06 23:22 [binutils-gdb] Remove cleanups from coffread.c sergiodj+buildbot
2019-03-07 18:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07  0:25 [binutils-gdb] Remove cleanup from solib-svr4.c sergiodj+buildbot
2019-03-08  2:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07  0:38 [binutils-gdb] Remove last cleanups from solib-svr4.c sergiodj+buildbot
2019-03-08  4:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07  1:30 [binutils-gdb] Use unique_xmalloc_ptr in remote.c sergiodj+buildbot
2019-03-08  9:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07  1:42 [binutils-gdb] Remove basic cleanup code sergiodj+buildbot
2019-03-08 10:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07  6:24 [binutils-gdb] gdb/fortran: Use TYPE_CODE_CHAR for character types sergiodj+buildbot
2019-03-07  6:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 10:35 [binutils-gdb] Make "checkpoint" not rely on inferior_ptid sergiodj+buildbot
2019-03-07 10:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 16:22 [binutils-gdb] Eliminate fork_info::clobber_regs sergiodj+buildbot
2019-03-07 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 16:42 [binutils-gdb] gdb: Move value_from_host_double into value.c and make more use of it sergiodj+buildbot
2019-03-08 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 18:41 [binutils-gdb] Update two cleanup comments sergiodj+buildbot
2019-03-07 19:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 21:16 [binutils-gdb] Change displaced_step_clear_cleanup to a forward_scope_exit sergiodj+buildbot
2019-03-07 21:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-07 22:57 [binutils-gdb] C++ify remote notification code sergiodj+buildbot
2019-03-07 23:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-08  7:15 [binutils-gdb] Remove last cleanups from stabsread.c sergiodj+buildbot
2019-03-08  8:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-08 13:11 [binutils-gdb] PR24311, FAIL: S-records with constructors sergiodj+buildbot
2019-03-08 20:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09  7:02 [binutils-gdb] Support styling on native MS-Windows console sergiodj+buildbot
2019-03-09  8:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 13:57 [binutils-gdb] Split rank_one_type_parm_array from rank_one_type sergiodj+buildbot
2019-03-09 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 14:21 [binutils-gdb] Split rank_one_type_parm_int from rank_one_type sergiodj+buildbot
2019-03-09 19:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 14:58 [binutils-gdb] Split rank_one_type_parm_range from rank_one_type sergiodj+buildbot
2019-03-09 23:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 15:10 [binutils-gdb] Split rank_one_type_parm_bool from rank_one_type sergiodj+buildbot
2019-03-10  0:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 15:36 [binutils-gdb] Split rank_one_type_parm_complex from rank_one_type sergiodj+buildbot
2019-03-10  3:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 15:50 [binutils-gdb] Split rank_one_type_parm_struct from rank_one_type sergiodj+buildbot
2019-03-10  4:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-09 21:01 [binutils-gdb] Split rank_one_type_parm_char from rank_one_type sergiodj+buildbot
2019-03-09 21:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-10  1:16 [binutils-gdb] Split rank_one_type_parm_float from rank_one_type sergiodj+buildbot
2019-03-10  2:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-10  6:46 [binutils-gdb] Remove unnecessary cases from rank_one_type's switch sergiodj+buildbot
2019-03-10  7:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-11 17:36 [binutils-gdb] Remove redundant assignment from dwarf2_find_containing_comp_unit sergiodj+buildbot
2019-03-11 18:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 13:40 [binutils-gdb] S/390: arch13: Adjust to recent changes sergiodj+buildbot
2019-03-12 16:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 17:21 [binutils-gdb] Make null_ptid and minus_one_ptid "const" sergiodj+buildbot
2019-03-12 20:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 17:34 [binutils-gdb] Fix test-cp-name-parser build, unused variable sergiodj+buildbot
2019-03-12 21:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 17:59 [binutils-gdb] Make remote.c ptid constants "const" sergiodj+buildbot
2019-03-13  0:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 20:07 [binutils-gdb] gdb/testsuite: Prepare for DejaGnu 1.6.2 sergiodj+buildbot
2019-03-13  4:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 21:26 [binutils-gdb] Handle an edge case for minisym TLS variable lookups sergiodj+buildbot
2019-03-13  8:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 21:52 [binutils-gdb] Add a new gdbarch method to resolve the address of TLS variables sergiodj+buildbot
2019-03-13 11:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 22:06 [binutils-gdb] Remove code disabled since at least 1999 from lookup_struct_elt_type sergiodj+buildbot
2019-03-13 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 22:59 [binutils-gdb] Support TLS variables on FreeBSD/i386 sergiodj+buildbot
2019-03-13 18:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 23:25 [binutils-gdb] Support TLS variables on FreeBSD/powerpc sergiodj+buildbot
2019-03-13 21:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-12 23:39 [binutils-gdb] The NEWS file had two "New targets" sections for 8.3 sergiodj+buildbot
2019-03-13 22:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13  9:31 [binutils-gdb] Update comment for target::get_thread_local_address sergiodj+buildbot
2019-03-13 10:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13 12:16 [binutils-gdb] [BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs sergiodj+buildbot
2019-03-14  3:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13 12:28 [binutils-gdb] [BFD, LD, AArch64, 3/3] Add --pac-plt to enable PLTs protected with PAC sergiodj+buildbot
2019-03-14  4:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13 13:37 [binutils-gdb] Add a more general version of lookup_struct_elt_type sergiodj+buildbot
2019-03-13 14:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13 17:50 [binutils-gdb] Factor out mi_ui_out instantiation logic sergiodj+buildbot
2019-03-14  5:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-13 20:07 [binutils-gdb] Change pid_to_str to return std::string sergiodj+buildbot
2019-03-14  8:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-14  0:03 [binutils-gdb] x86: Properly set IBT and SHSTK properties for -z ibt/shstk sergiodj+buildbot
2019-03-14  0:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-14 12:15 [binutils-gdb] Add the "set style source" command sergiodj+buildbot
2019-03-14 14:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-14 15:01 [binutils-gdb] Fix illegal memory access parsing a corrupt ELF file sergiodj+buildbot
2019-03-14 21:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-14 16:03 [binutils-gdb] Fix colors in TUI mode in MS-Windows build with ncurses sergiodj+buildbot
2019-03-15  0:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-14 16:19 [binutils-gdb] Fix an illegal memory access when parsing a corrupt ELF file sergiodj+buildbot
2019-03-15  1:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15  7:19 [binutils-gdb] Re-indent elf_x86_64_relocate_section sergiodj+buildbot
2019-03-15  8:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15  8:02 [binutils-gdb] x86-64: Check for corrupt input with bad relocation sergiodj+buildbot
2019-03-15  9:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 10:22 [binutils-gdb] PR24337, segfault in _bfd_elf_rela_local_sym sergiodj+buildbot
2019-03-15 12:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 10:35 [binutils-gdb] PR24339, segfault on NULL symbol section sergiodj+buildbot
2019-03-15 14:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 15:15 [binutils-gdb] COFF: Check for symbols defined in discarded section sergiodj+buildbot
2019-03-15 16:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 22:36 [binutils-gdb] Use bitset for demangled_hash_languages sergiodj+buildbot
2019-03-16  6:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 22:44 [binutils-gdb] Slightly simplify minsym creation sergiodj+buildbot
2019-03-16  0:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-15 22:51 [binutils-gdb] Remove some unneeded initializations in minimal_symbol_reader sergiodj+buildbot
2019-03-16  8:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16  0:25 [binutils-gdb] Use htab_up for demangled hash sergiodj+buildbot
2019-03-16 13:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16  0:38 [binutils-gdb] Allocate minimal symbols with malloc sergiodj+buildbot
2019-03-16 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16  0:52 [binutils-gdb] Use memcpy in minimal_symbol_reader::install sergiodj+buildbot
2019-03-16 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16  1:07 [binutils-gdb] Change minimal_symbol inheritance sergiodj+buildbot
2019-03-16 17:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16  4:16 [binutils-gdb] PR24337, segfault in _bfd_elf_rela_local_sym, again sergiodj+buildbot
2019-03-16 19:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16 11:07 [binutils-gdb] Simplify per-BFD storage management sergiodj+buildbot
2019-03-16 11:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16 12:31 [binutils-gdb] Revert "Use wclrtoeol in tui_show_source_line" sergiodj+buildbot
2019-03-16 21:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-16 18:13 [binutils-gdb] Fix vertical scrolling of TUI source window sergiodj+buildbot
2019-03-17  2:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-17 17:41 [binutils-gdb] Fix redisplay of the current line in GDB TUI mode sergiodj+buildbot
2019-03-17 17:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-17 21:37 [binutils-gdb] Remove unused variable from windows_make_so sergiodj+buildbot
2019-03-17 22:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18  4:18 [binutils-gdb] gdb: unconditionally define _initialize_string_view_selftests sergiodj+buildbot
2019-03-18  5:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 12:30 [binutils-gdb] PR24355, segmentation fault in function called from ppc_finish_symbols sergiodj+buildbot
2019-03-18 13:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 14:57 [binutils-gdb] Improve/fix the TUI's current source line highlight sergiodj+buildbot
2019-03-18 19:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 15:12 [binutils-gdb] Fix Ada "ptype" bug with array types sergiodj+buildbot
2019-03-18 15:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 18:23 [binutils-gdb] Fix gdb/TUI behavior in response to [Enter] keypress sergiodj+buildbot
2019-03-19  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 19:14 [binutils-gdb] Fix first time you type UP or DOWN in TUI's command window sergiodj+buildbot
2019-03-19  4:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-18 23:59 [binutils-gdb] Fix regression caused by minimal symbol changes sergiodj+buildbot
2019-03-18 23:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-19 13:27 [binutils-gdb] ix86: Disable AVX512F when disabling AVX2 sergiodj+buildbot
2019-03-19 14:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-20 18:17 [binutils-gdb] [BFD, AArch64] Define elf_backend_fixup_gnu_properties in AArch64 sergiodj+buildbot
2019-03-20 20:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-20 18:24 [binutils-gdb] Merge handle_inferior_event and handle_inferior_event_1 sergiodj+buildbot
2019-03-20 18:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-21 17:04 [binutils-gdb] [BFD, AArch64, x86] Improve warning for --force-bti sergiodj+buildbot
2019-03-21 18:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-21 22:32 [binutils-gdb] RISC-V: Fix linker crash in section symbol check sergiodj+buildbot
2019-03-21 23:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 10:00 [binutils-gdb] Testsuite: Ensure pie is disabled on some tests sergiodj+buildbot
2019-03-22 11:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 12:22 [binutils-gdb] AArch64: Add pointer authentication feature sergiodj+buildbot
2019-03-22 13:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 12:49 [binutils-gdb] AArch64: Read pauth registers sergiodj+buildbot
2019-03-22 17:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 13:17 [binutils-gdb] AArch64: Add pauth DWARF registers sergiodj+buildbot
2019-03-22 20:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 13:48 [binutils-gdb] AArch64: Prologue scan unwinder support for signed return addresses sergiodj+buildbot
2019-03-23  0:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 15:25 [binutils-gdb] AArch64: Use HWCAP to detect pauth feature sergiodj+buildbot
2019-03-22 15:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-22 18:18 [binutils-gdb] AArch64: gdbserver: read pauth registers sergiodj+buildbot
2019-03-22 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-23 16:58 [binutils-gdb] Use scoped_restore_current_language in two places sergiodj+buildbot
2019-03-23 20:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25  6:17 [binutils-gdb] Remove null_block_symbol sergiodj+buildbot
2019-03-25 12:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25  6:17 [binutils-gdb] More block constification sergiodj+buildbot
2019-03-25  7:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25  7:53 [binutils-gdb] Don't include symtab.h from expression.h sergiodj+buildbot
2019-03-25 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 14:22 [binutils-gdb] Fix testsuite hangs when gdb_test_multiple body errors out sergiodj+buildbot
2019-03-25 15:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 15:52 [binutils-gdb] AArch64: Have -D override mapping symbol as documented sergiodj+buildbot
2019-03-25 20:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 15:59 [binutils-gdb] AArch64: Fix disassembler bug with out-of-order sections sergiodj+buildbot
2019-03-25 17:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 17:24 [binutils-gdb] Fix s390 build sergiodj+buildbot
2019-03-26  1:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 20:06 [binutils-gdb] Clean up some comments in minsyms.c sergiodj+buildbot
2019-03-26  3:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-25 22:26 [binutils-gdb] Arm: Fix Arm disassembler mapping symbol search sergiodj+buildbot
2019-03-25 23:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 13:23 [binutils-gdb] Fix Arm build sergiodj+buildbot
2019-03-26 14:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 17:26 [binutils-gdb] gdbserver: Add linux_get_hwcap sergiodj+buildbot
2019-03-26 19:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 17:40 [binutils-gdb] Add AArch64 Pointer Authentication to the NEWS file sergiodj+buildbot
2019-03-26 19:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 20:13 [binutils-gdb] gdb: Avoid trailing whitespace when pretty printing sergiodj+buildbot
2019-03-27  0:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 20:22 [binutils-gdb] gdb: Make python display_hint None handling defined behaviour sergiodj+buildbot
2019-03-27  7:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-26 20:58 [binutils-gdb] Fix Powerpc build sergiodj+buildbot
2019-03-26 21:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-27  3:29 [binutils-gdb] gdb/testsuite: Make test names unique in gdb.python/py-prettyprint.exp sergiodj+buildbot
2019-03-27  5:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-27 10:21 [binutils-gdb] gdb-gdb.py.in: Fix error when printing range type sergiodj+buildbot
2019-03-27 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-27 12:22 [binutils-gdb] Testsuite: Ensure interrupt-daemon-attach doesn't run forever sergiodj+buildbot
2019-03-28  1:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-27 16:06 [binutils-gdb] Fix buffer overflow regression due to minsym malloc-ed instead of obstack-ed sergiodj+buildbot
2019-03-28  4:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-27 22:18 [binutils-gdb] sim/common: convert sim-arange to use sim-inline sergiodj+buildbot
2019-03-28  5:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28  0:24 [binutils-gdb] sim/common: Fix warnings: "warning: implicit declaration of function..." sergiodj+buildbot
2019-03-28  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28  7:20 [binutils-gdb] PR24390, Don't decode mtfsb field as a cr field sergiodj+buildbot
2019-03-28  9:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28  7:37 [binutils-gdb] PR24392, Clang warning Wtautological-constant-out-of-range-compare sergiodj+buildbot
2019-03-28 12:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 12:45 [binutils-gdb] gdbserver: Ensure AT_HWCAP2 is defined sergiodj+buildbot
2019-03-28 15:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 13:40 [binutils-gdb] AArch64: 128bit views for SVE registers sergiodj+buildbot
2019-03-28 17:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 16:51 [binutils-gdb] Testsuite: set sysroot when using gdbserver sergiodj+buildbot
2019-03-29  0:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 17:41 [binutils-gdb] Fix stepping past unwritable kernel helper on nios2-linux-gnu sergiodj+buildbot
2019-03-29  5:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 20:57 [binutils-gdb] Fix GDB being suspended SIGTTOU when running gdb.multi/multi-arch-exec.exp sergiodj+buildbot
2019-03-29  9:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 21:16 [binutils-gdb] Fix gdb.multi/multi-arch-exec.exp blocking under high load/slow gdb sergiodj+buildbot
2019-03-29 10:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 21:38 [binutils-gdb] Fix gdb.multi/multi-term-settings.exp blocking under high load/slow gdb sergiodj+buildbot
2019-03-29 12:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 21:40 [binutils-gdb] Fix format specification in display_selector() (again) sergiodj+buildbot
2019-03-29 13:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 22:28 [binutils-gdb] sim: fix aarch64 sim build sergiodj+buildbot
2019-03-28 22:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-28 23:33 [binutils-gdb] sim: fix all sim builds sergiodj+buildbot
2019-03-29 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-29 17:39 [binutils-gdb] bfd: xtensa: fix shrink_dynamic_reloc_sections for export-dynamic sergiodj+buildbot
2019-03-29 20:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-29 18:45 [binutils-gdb] Allow really large fortran array bounds: TYPE_LENGTH to ULONGEST sergiodj+buildbot
2019-03-29 21:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-29 18:49 [binutils-gdb] Allow really large fortran array bounds: fortran type/value printers sergiodj+buildbot
2019-03-30  0:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-29 21:07 [binutils-gdb] Add usage for commands in printcmd.c sergiodj+buildbot
2019-03-30  2:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-30 10:38 [binutils-gdb] Introduce new convenience variables $_gdb_major and $_gdb_minor sergiodj+buildbot
2019-03-30 12:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-03-30 17:50 [binutils-gdb] RISC-V: Relax tail/j to c.j for RV64 sergiodj+buildbot
2019-03-30 19:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-01  8:39 [binutils-gdb] Add gdb.Value.format_string () sergiodj+buildbot
2019-04-01 12:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-01 10:06 [binutils-gdb] [GAS, Arm] CLI with architecture sensitive extensions sergiodj+buildbot
2019-04-01 13:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-01 15:18 [binutils-gdb] Destroy allocated values when exiting GDB sergiodj+buildbot
2019-04-01 16:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-01 17:31 [binutils-gdb] Handle DW_AT_ranges when reading partial symtabs sergiodj+buildbot
2019-04-01 18:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-01 21:51 [binutils-gdb] gdb/fortran: Handle internal function calls sergiodj+buildbot
2019-04-02  0:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-02 20:51 [binutils-gdb] RISC-V: Don't check ABI flags if no code section sergiodj+buildbot
2019-04-02 23:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-03  4:24 [binutils-gdb] BFD whitespace fixes sergiodj+buildbot
2019-04-03  5:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  2:09 [binutils-gdb] PowerPC disassembler: Don't emit trailing spaces sergiodj+buildbot
2019-04-09 11:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  2:09 [binutils-gdb] Add extended mnemonics for bctar. Fix setting of 'at' branch hints sergiodj+buildbot
2019-04-09 10:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  2:42 [binutils-gdb] Make increase_expout_size static sergiodj+buildbot
2019-04-09 16:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  3:47 [binutils-gdb] Turn parse_gdbarch into a method sergiodj+buildbot
2019-04-09 19:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  3:47 [binutils-gdb] Make base class for parser_state sergiodj+buildbot
2019-04-09 22:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  4:17 [binutils-gdb] Move expression_context_* globals to parser_state sergiodj+buildbot
2019-04-10  0:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  4:32 [binutils-gdb] Move comma_terminates global to parser_state sergiodj+buildbot
2019-04-10  4:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  5:20 [binutils-gdb] Move completion parsing to parser_state sergiodj+buildbot
2019-04-10  8:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05  5:50 [binutils-gdb] Move innermost_block_tracker global to parse_state sergiodj+buildbot
2019-04-10 12:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-05 17:49 [binutils-gdb] Use linux_get_auxv to get AT_PHDR in the PPC stub sergiodj+buildbot
2019-04-10 15:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-06  4:55 [binutils-gdb] Sort includes for files gdb/[a-f]*.[chyl] sergiodj+buildbot
2019-04-10 19:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-06 14:44 [binutils-gdb] x86: Move x86-specific linker options to elf_linker_x86_params sergiodj+buildbot
2019-04-10 21:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-06 20:05 [binutils-gdb] Revert the header-sorting patch sergiodj+buildbot
2019-04-10 23:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-07 13:25 [binutils-gdb] Merge libiberty from gcc sergiodj+buildbot
2019-04-11  7:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-07 13:40 [binutils-gdb] PR24421, Wrong brackets in opcodes/arm-dis.c sergiodj+buildbot
2019-04-11  8:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08  4:59 [binutils-gdb] Fix x86_64-rdos build fail sergiodj+buildbot
2019-04-11 12:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 15:37 [binutils-gdb] Simplify exception handling sergiodj+buildbot
2019-04-11 14:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 15:53 [binutils-gdb] Make exceptions use std::string and be self-managing sergiodj+buildbot
2019-04-11 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 16:39 [binutils-gdb] Remove some now-dead exception code sergiodj+buildbot
2019-04-11 21:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 16:39 [binutils-gdb] Rewrite TRY/CATCH sergiodj+buildbot
2019-04-11 17:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 16:55 [binutils-gdb] Make exception throwing a bit more efficient sergiodj+buildbot
2019-04-11 23:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 17:11 [binutils-gdb] Replace throw_exception with throw in some cases sergiodj+buildbot
2019-04-12  0:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 18:38 [binutils-gdb] x86: Consolidate AVX512 BF16 entries in i386-opc.tbl sergiodj+buildbot
2019-04-12  2:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 19:19 [binutils-gdb] x86: Remove i386-*-kaos* and i386-*-chaos targets sergiodj+buildbot
2019-04-12  4:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-08 19:35 [binutils-gdb] Some gdb_exception{,error,quit} tweaks sergiodj+buildbot
2019-04-12  6:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09  3:51 [binutils-gdb] Introduce target_ops method thread_info_to_thread_handle sergiodj+buildbot
2019-04-12  9:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09  4:09 [binutils-gdb] Add python method InferiorThread.handle sergiodj+buildbot
2019-04-12 10:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09  4:40 [binutils-gdb] Tests for gdb.InferiorThread.handle sergiodj+buildbot
2019-04-12 14:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09 16:15 [binutils-gdb] Remove parser_state "initial_size" parameter sergiodj+buildbot
2019-04-09 16:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09 18:18 [binutils-gdb] Consistently use bool for fake_pid_p sergiodj+buildbot
2019-04-12 22:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09 18:36 [binutils-gdb] Use find_thread_in_random in select_event_lwp sergiodj+buildbot
2019-04-12 23:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09 19:44 [binutils-gdb] Fix Rust lexer buglet sergiodj+buildbot
2019-04-13  1:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-09 19:44 [binutils-gdb] Turn parse_language into a method sergiodj+buildbot
2019-04-09 20:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10  5:50 [binutils-gdb] Move arglist_len et al to parser_state sergiodj+buildbot
2019-04-10  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10  9:17 [binutils-gdb] Move type stack handling to a new class sergiodj+buildbot
2019-04-10 10:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10 12:44 [binutils-gdb] Use upper-case for metasyntactic in gdbserver help sergiodj+buildbot
2019-04-10 13:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10 14:24 [binutils-gdb] Remove some uses of "object_files" sergiodj+buildbot
2019-04-13  4:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10 14:42 [binutils-gdb] Fix a couple of comments sergiodj+buildbot
2019-04-13  6:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10 15:14 [binutils-gdb] Pull in patch for libiberty that fixes a stack exhaustion bug when demangling a pathalogically constructed mangled name sergiodj+buildbot
2019-04-13 10:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-10 16:12 [binutils-gdb] x86: Support Intel AVX512 BF16 sergiodj+buildbot
2019-04-10 17:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11  9:21 [binutils-gdb] print_insn_powerpc tidy sergiodj+buildbot
2019-04-11 10:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11  9:56 [binutils-gdb] [BINUTILS, AArch64, 2/2] Update Store Allocation Tag instructions sergiodj+buildbot
2019-04-13 17:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11 10:57 [binutils-gdb] AArch64: When DF_BIND_NOW don't use TLSDESC GOT value sergiodj+buildbot
2019-04-13 20:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11 11:45 [binutils-gdb] PR24435, buffer overflow reading dynamic entries sergiodj+buildbot
2019-04-13 21:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11 17:50 [binutils-gdb] Rename gdb exception types sergiodj+buildbot
2019-04-11 19:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11 19:21 [binutils-gdb] Make "msg" const in internal_vproblem sergiodj+buildbot
2019-04-14  3:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-11 23:12 [binutils-gdb] gdb: Fix alignment computation for structs with only static fields sergiodj+buildbot
2019-04-14  7:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12  6:05 [binutils-gdb] x86: Define GNU_PROPERTY_X86_ISA_1_AVX512_BF16 sergiodj+buildbot
2019-04-12  7:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12  8:47 [binutils-gdb] gdb: Remove LANG_MAGIC sergiodj+buildbot
2019-04-14 11:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 10:57 [binutils-gdb] Testsuite: Add gdbserver sysroot test sergiodj+buildbot
2019-04-14 12:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 12:53 [binutils-gdb] Another fix for GDB styling sergiodj+buildbot
2019-04-14 14:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 14:57 [binutils-gdb] Rename python function thread_from_thread_handle to thread_from_handle sergiodj+buildbot
2019-04-12 16:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:20 [binutils-gdb] Introduce a separate debug objfile iterator sergiodj+buildbot
2019-04-13  8:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:22 [binutils-gdb] AArch64: Ensure regcache is reset between tests sergiodj+buildbot
2019-04-13 13:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:25 [binutils-gdb] Check corrupt VTENTRY entry in bfd_elf_gc_record_vtentry sergiodj+buildbot
2019-04-13 23:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:25 [binutils-gdb] x86: Add -z cet-report=[none|warning|error] sergiodj+buildbot
2019-04-14  0:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:27 [binutils-gdb] gdb/riscv: Handle empty C++ structs during argument passing sergiodj+buildbot
2019-04-14  5:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 15:29 [binutils-gdb] gdb/riscv: Remove riscv_type_alignment function sergiodj+buildbot
2019-04-14 10:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-12 16:44 [binutils-gdb] S12Z: opcodes: Replace "operator" with "optr" sergiodj+buildbot
2019-04-14 18:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-13  0:05 [binutils-gdb] gdb: Fix failure in gdb.base/complex-parts.exp for x86-32 sergiodj+buildbot
2019-04-14 20:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-13 21:26 [binutils-gdb] sim: Use host not target byte order for merging and splitting values sergiodj+buildbot
2019-04-14 22:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 12:26 [binutils-gdb] [binutils, ARM, 5/16] BF insns infrastructure with new global reloc R_ARM_THM_BF16 sergiodj+buildbot
2019-04-15 17:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 12:41 [binutils-gdb] [binutils, ARM, 6/16] New BF instruction for Armv8.1-M Mainline sergiodj+buildbot
2019-04-15 18:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 13:09 [binutils-gdb] [binutils, ARM, 7/16] New BFX and BFLX instruction for Armv8.1-M Mainline sergiodj+buildbot
2019-04-15 21:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 13:18 [binutils-gdb] [binutils, ARM, 8/16] BFL infrastructure with new global reloc R_ARM_THM_BF18 sergiodj+buildbot
2019-04-15 22:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 13:33 [binutils-gdb] [binutils, ARM, 9/16] New BFL instruction for Armv8.1-M Mainline sergiodj+buildbot
2019-04-16  0:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 13:50 [binutils-gdb] [binutils, ARM, 10/16] BFCSEL infrastructure with new global reloc R_ARM_THM_BF12 sergiodj+buildbot
2019-04-16  2:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 14:07 [binutils-gdb] [binutils, ARM, 11/16] New BFCSEL instruction for Armv8.1-M Mainline sergiodj+buildbot
2019-04-16  3:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 14:41 [binutils-gdb] [binutils, ARM, 13/16] Add support for CLRM sergiodj+buildbot
2019-04-16  7:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 15:06 [binutils-gdb] [binutils, ARM, 3/16] BF insns infrastructure with new bfd_reloc_code_real for fallback branch sergiodj+buildbot
2019-04-15 15:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 15:14 [binutils-gdb] [binutils, ARM, 15/16] Add support for VSCCLRM sergiodj+buildbot
2019-04-16 11:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 15:32 [binutils-gdb] [binutils, ARM, 16/16] Add support to VLDR and VSTR of system registers sergiodj+buildbot
2019-04-16 13:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 15:51 [binutils-gdb] AArch64: Tidy up aarch64_gdbarch_init sergiodj+buildbot
2019-04-16 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-15 16:46 [binutils-gdb] Fix AMD64 return value ABI in expression evaluation sergiodj+buildbot
2019-04-16 19:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-16  4:47 [binutils-gdb] [binutils, ARM, 12/16] Scalar Low Overhead loop instructions for Armv8.1-M Mainline sergiodj+buildbot
2019-04-16  5:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-16  7:40 [binutils-gdb] [opcodes, ARM, 14/16] Add mode availability to coprocessor table entries sergiodj+buildbot
2019-04-16  8:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-17  0:08 [binutils-gdb] gdb/riscv: Allow breakpoints to be created at invalid addresses sergiodj+buildbot
2019-04-17  3:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-17  9:15 [binutils-gdb] gdbserver: Move remote_debug to a single place sergiodj+buildbot
2019-04-17 10:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-17 13:19 [binutils-gdb] Avoid crash in dwarf2_init_complex_target_type sergiodj+buildbot
2019-04-17 16:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-17 13:47 [binutils-gdb] gdbserver: Ensure all debug output uses debug functions sergiodj+buildbot
2019-04-17 14:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-17 17:44 [binutils-gdb] x86: Suggest -fPIE when not building shared object sergiodj+buildbot
2019-04-17 19:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-18 16:30 [binutils-gdb] [gdb] Handle vfork in thread with follow-fork-mode child sergiodj+buildbot
2019-04-18 18:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-18 21:56 [binutils-gdb] [gdb/testsuite] Fix gdb.base/break-probes.exp with native-gdbserver sergiodj+buildbot
2019-04-18 23:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-19  8:42 [binutils-gdb] s12z and h8300 no-print-map-discarded fails sergiodj+buildbot
2019-04-20 15:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 15:04 [binutils-gdb] OBVIOUS move add_comm_alias "!" <=> "shell" near the add_com "shell" sergiodj+buildbot
2019-04-20 17:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 15:36 [binutils-gdb] Fix GDB crash when registers cannot be modified sergiodj+buildbot
2019-04-20 23:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 15:56 [binutils-gdb] Fix "list" when control characters are seen sergiodj+buildbot
2019-04-20 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 17:12 [binutils-gdb] Make copy_name return std::string sergiodj+buildbot
2019-04-21 10:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 17:28 [binutils-gdb] Make objfile::static_links an htab_up sergiodj+buildbot
2019-04-21 11:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 17:46 [binutils-gdb] Use std::list for event notifications in gdbserver sergiodj+buildbot
2019-04-21 13:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 18:22 [binutils-gdb] Remove an include of common/queue.h sergiodj+buildbot
2019-04-21 16:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-20 18:38 [binutils-gdb] Remove common/queue.h sergiodj+buildbot
2019-04-21 18:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-21  3:01 [binutils-gdb] Print non-Ada unions without crashing sergiodj+buildbot
2019-04-21  4:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-21  4:17 [binutils-gdb] gdb/configure.ac: add --enable-source-highlight sergiodj+buildbot
2019-04-21  5:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-21 14:06 [binutils-gdb] Use std::list for remote_notif_state::notif_queue sergiodj+buildbot
2019-04-21 14:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-22 14:57 [binutils-gdb] Fix "nosharedlibrary + continue + shared lib event" crash sergiodj+buildbot
2019-04-22 15:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23  3:32 [binutils-gdb] RISC-V: Enable 32-bit linux gdb core file support sergiodj+buildbot
2019-04-23  6:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23  3:48 [binutils-gdb] [FYI] Add myself to gdb/MAINTAINERS sergiodj+buildbot
2019-04-23  7:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23  4:05 [binutils-gdb] Support for DW_OP_addrx and DW_FORM_addrx tags sergiodj+buildbot
2019-04-23  9:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 13:32 [binutils-gdb] Testsuite: Remove pie from trace tests sergiodj+buildbot
2019-04-23 15:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 14:16 [binutils-gdb] [gdb/testsuite] Fix gdb.btrace/reconnect.exp with native-gdbserver sergiodj+buildbot
2019-04-23 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 17:28 [binutils-gdb] Remove unused overload of line_header::file_name_at sergiodj+buildbot
2019-04-23 22:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 22:28 [binutils-gdb] gdb/iq2000: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-24 12:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 22:46 [binutils-gdb] gdb/aarch64: Use type_align instead of aarch64_type_align sergiodj+buildbot
2019-04-24  5:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-23 23:54 [binutils-gdb] gdb/m32c: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-24 16:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  0:27 [binutils-gdb] gdb/m68hc11: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-24 20:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  1:00 [binutils-gdb] gdb/mn10300: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25  2:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  1:15 [binutils-gdb] gdb/moxie: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25  4:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  1:49 [binutils-gdb] gdb/nds32: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25  7:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  2:06 [binutils-gdb] gdb/nios2: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25  9:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  2:22 [binutils-gdb] gdb/or1k: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25 11:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  2:39 [binutils-gdb] gdb/rs6000: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25 12:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  3:46 [binutils-gdb] gdb/sparc: Use default_unwind_pc sergiodj+buildbot
2019-04-25 20:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  4:34 [binutils-gdb] gdb/v850: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-26  2:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  4:50 [binutils-gdb] gdb/vax: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-26  4:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  5:24 [binutils-gdb] gdb/rl78: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-26  7:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  7:30 [binutils-gdb] gdb/arm: Use type_align instead of arm_type_align sergiodj+buildbot
2019-04-24  9:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  9:43 [binutils-gdb] S12Z: Opcodes: Handle bit map operations with non-canonical operands sergiodj+buildbot
2019-04-26 13:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24  9:43 [binutils-gdb] S12Z: s12z-opc.h: Add extern "C" bracketing sergiodj+buildbot
2019-04-26 11:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24 17:03 [binutils-gdb] gdb/m32r: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-24 17:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24 18:26 [binutils-gdb] Fix passing of struct with bitfields on x86-64 sergiodj+buildbot
2019-04-26 15:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-24 23:39 [binutils-gdb] gdb/mep: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-25  0:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-25 14:51 [binutils-gdb] Detect invalid length field in debug frame FDE header sergiodj+buildbot
2019-04-27  0:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-25 19:27 [binutils-gdb] Remove exception_none sergiodj+buildbot
2019-04-27  9:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-25 19:44 [binutils-gdb] Make SJLJ exceptions more efficient sergiodj+buildbot
2019-04-27 10:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-25 20:51 [binutils-gdb] c++/24367: Infinite recursion of typedef substitution sergiodj+buildbot
2019-04-27 19:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-25 23:25 [binutils-gdb] gdb/tilegx: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-26  0:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-26  8:03 [binutils-gdb] gdb/s12z: Use default gdbarch methods where possible sergiodj+buildbot
2019-04-26  9:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-26 19:50 [binutils-gdb] MIPS/include: opcode/mips.h: Update stale comment for CODE20 operand sergiodj+buildbot
2019-04-26 21:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27  0:04 [binutils-gdb] testsuite: Add option to capture gdbserver debug sergiodj+buildbot
2019-04-27  1:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27  1:55 [binutils-gdb] [MIPS] Add load-link, store-conditional paired instructions sergiodj+buildbot
2019-04-27 23:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27 10:41 [binutils-gdb] Avoid undefined behavior in Guile exception handling sergiodj+buildbot
2019-04-27 12:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27 11:41 [binutils-gdb] Implement show | set may-call-functions [on|off] sergiodj+buildbot
2019-04-28  1:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27 12:26 [binutils-gdb] Make exception handling more efficient sergiodj+buildbot
2019-04-27 14:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27 15:51 [binutils-gdb] Fix memory leak in exception code sergiodj+buildbot
2019-04-27 16:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-27 20:23 [binutils-gdb] Don't complain undefined weak dynamic reference sergiodj+buildbot
2019-04-27 21:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-28  1:28 [binutils-gdb] Have 'thread|frame apply' style their output sergiodj+buildbot
2019-04-28  2:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-29 15:13 [binutils-gdb] [gdb/testsuite] Fix regexp in skip_opencl_tests sergiodj+buildbot
2019-04-29 19:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-29 21:38 [binutils-gdb] gdb: Introduce new language field la_struct_too_deep_ellipsis sergiodj+buildbot
2019-04-30  0:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-29 21:43 [binutils-gdb] gdb/ada: Update some predicate functions to return bool sergiodj+buildbot
2019-04-29 22:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-29 21:55 [binutils-gdb] gdb: Introduce new language field la_is_string_type_p sergiodj+buildbot
2019-04-30  3:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-29 22:12 [binutils-gdb] gdb: Introduce 'print max-depth' feature sergiodj+buildbot
2019-04-30  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 12:53 [binutils-gdb] gdb: Remove an unbalanced stray double quote from a comment sergiodj+buildbot
2019-04-30 14:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 13:16 [binutils-gdb] gdb/fortran: Additional builtin procedures sergiodj+buildbot
2019-04-30 19:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 13:50 [binutils-gdb] gdb/fortran: print function arguments when printing function type sergiodj+buildbot
2019-04-30 22:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 14:07 [binutils-gdb] gdb/fortran: Update rules for printing whitespace in types sergiodj+buildbot
2019-05-01  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 14:23 [binutils-gdb] gdb/fortran: Add allocatable type qualifier sergiodj+buildbot
2019-05-01  2:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 15:12 [binutils-gdb] Fix crash in dwarf2read.c with template parameters sergiodj+buildbot
2019-05-01  9:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 15:28 [binutils-gdb] Fix "catch exception" with dynamic linking sergiodj+buildbot
2019-05-01 10:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 19:57 [binutils-gdb] gdb/fortran: Print 'void' type in lower case sergiodj+buildbot
2019-04-30 21:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 21:55 [binutils-gdb] gdb/windows-nat.c: Get rid of main_thread_id global sergiodj+buildbot
2019-05-01 16:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-04-30 23:41 [binutils-gdb] Support DW_FORM_strx1, _strx2, _strx3, _strx4 forms sergiodj+buildbot
2019-05-01 18:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-01 13:10 [binutils-gdb] (Windows) fix thr != nullptr assert failure in delete_thread_1 sergiodj+buildbot
2019-05-01 14:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-01 14:52 [binutils-gdb] Fix bug in assignment to nested packed structure sergiodj+buildbot
2019-05-02  1:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-01 16:32 [binutils-gdb] [BINUTILS, AArch64] Enable Transactional Memory Extension sergiodj+buildbot
2019-05-02  4:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-01 18:37 [binutils-gdb] [gdb/testsuite] Use cc-with-tweaks.exp in dwarf4-gdb-index.exp sergiodj+buildbot
2019-05-01 19:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-01 22:56 [binutils-gdb] Fix big-endian aggregate assignment in Ada sergiodj+buildbot
2019-05-02  0:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-02 14:51 [binutils-gdb] Treat the .gnu.debuglink and .gnu.debugaltlink sections as debug sections when reading them in from COFF/PE format files sergiodj+buildbot
2019-05-03  3:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03  1:02 [binutils-gdb] Remove _initialize_valarith sergiodj+buildbot
2019-05-03  4:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03  6:15 [binutils-gdb] gdb/rust: Handle printing structures containing strings sergiodj+buildbot
2019-05-03  6:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03 10:03 [binutils-gdb] Fix lookup of separate debug file on MS-Windows sergiodj+buildbot
2019-05-03 11:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03 11:15 [binutils-gdb] [gdb/testsuite] Add cc-with-gdb-index.exp sergiodj+buildbot
2019-05-03 21:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03 23:22 [binutils-gdb] Add noyywrap to ada-lex.l sergiodj+buildbot
2019-05-04  0:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-03 23:39 [binutils-gdb] Fix cast of character to enum type in Ada sergiodj+buildbot
2019-05-04  2:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04  3:19 [binutils-gdb] Remove "struct" from foreach statements sergiodj+buildbot
2019-05-04  4:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04  6:26 [binutils-gdb] Fix leaks by clearing registers and frame caches sergiodj+buildbot
2019-05-04  7:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04  8:16 [binutils-gdb] PR24511, nm should not mark symbols in .init_array as "t" sergiodj+buildbot
2019-05-04  9:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04 20:02 [binutils-gdb] Don't derive partial_symbol from general_symbol_info sergiodj+buildbot
2019-05-04 22:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04 21:04 [binutils-gdb] Change valid_user_defined_cmd_name_p to return bool sergiodj+buildbot
2019-05-05  5:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04 21:52 [binutils-gdb] Use bool, true, and false in arc-tdep.c sergiodj+buildbot
2019-05-05 10:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04 22:41 [binutils-gdb] Change arc_tdesc_init to return bool sergiodj+buildbot
2019-05-05 16:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-04 23:12 [binutils-gdb] Remove a VEC from aarch64-tdep.c sergiodj+buildbot
2019-05-05 19:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-05  1:02 [binutils-gdb] Fix incorrect use of 'is' operator for comparison in python/lib/gdb/command/prompt.py sergiodj+buildbot
2019-05-05  1:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-05  8:19 [binutils-gdb] Use "false" in select_frame_for_mi sergiodj+buildbot
2019-05-05  8:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-06  3:06 [binutils-gdb] PicoJava weak undefined symbols sergiodj+buildbot
2019-05-06  5:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-06  7:21 [binutils-gdb] [gdb/testsuite] Fix index-cache.exp with cc-with-{gdb-index, debug-names} sergiodj+buildbot
2019-05-06  8:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-06 14:09 [binutils-gdb] Add load-link, store-conditional paired EVA instructions sergiodj+buildbot
2019-05-06 15:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-07  4:22 [binutils-gdb] Fix scoped_mmap includes sergiodj+buildbot
2019-05-07  8:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-07  9:16 [binutils-gdb] [gdb/testsuite] Fix .debug_aranges in dw2-case-insensitive-debug.S sergiodj+buildbot
2019-05-07 11:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-07  9:52 [binutils-gdb] [gdb/testsuite] Fix .debug_aranges in watch-loc.c sergiodj+buildbot
2019-05-07 14:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-07 10:09 [binutils-gdb] [gdb/testsuite] Fix ls_host return in index-cache.exp sergiodj+buildbot
2019-05-07 15:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 16:34 [binutils-gdb] Fix VLA printing for Ada sergiodj+buildbot
2019-05-08 17:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 17:16 [binutils-gdb] Change ptype/o to print bit offset sergiodj+buildbot
2019-05-08 21:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 17:32 [binutils-gdb] Correctly handle non-C-style arrays in c_get_string sergiodj+buildbot
2019-05-08 23:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 18:11 [binutils-gdb] Fix build problem in fputs_maybe_filtered sergiodj+buildbot
2019-05-09  3:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 19:04 [binutils-gdb] Move "watchdog" to remote.c sergiodj+buildbot
2019-05-09  9:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 19:38 [binutils-gdb] When debugging a mixed Ada/C program using this scenario: sergiodj+buildbot
2019-05-09 12:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 20:19 [binutils-gdb] gdb: Merge two 'New commands' sections in NEWS file sergiodj+buildbot
2019-05-09 14:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 22:58 [binutils-gdb] Convert symbol_cache to type-safe registry API sergiodj+buildbot
2019-05-09 20:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 23:06 [binutils-gdb] Don't declare read_unsigned_leb128 in defs.h sergiodj+buildbot
2019-05-09  5:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 23:31 [binutils-gdb] Convert inflow to type-safe registry API sergiodj+buildbot
2019-05-09 23:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 23:46 [binutils-gdb] Convert break-catch-syscall.c to type-safe registry API sergiodj+buildbot
2019-05-10  1:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-08 23:56 [binutils-gdb] Move interpreter_p declaration to main.h sergiodj+buildbot
2019-05-09  7:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  0:18 [binutils-gdb] Convert auto-load.c to type-safe registry API sergiodj+buildbot
2019-05-10  5:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  0:36 [binutils-gdb] Convert dwarf2_per_objfile to type-safe registry API sergiodj+buildbot
2019-05-10  7:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  1:11 [binutils-gdb] Convert auxv.c to type-safe registry API sergiodj+buildbot
2019-05-10 11:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  1:46 [binutils-gdb] Convert breakpoint.c to type-safe registry API sergiodj+buildbot
2019-05-10 14:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  2:03 [binutils-gdb] Convert remote.c to type-safe registry API sergiodj+buildbot
2019-05-10 15:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  2:52 [binutils-gdb] Convert probes to type-safe registry API sergiodj+buildbot
2019-05-10 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  4:18 [binutils-gdb] Convert ada-lang.c to type-safe registry API sergiodj+buildbot
2019-05-11  5:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  4:52 [binutils-gdb] Add a noop deleter sergiodj+buildbot
2019-05-11  7:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  4:53 [binutils-gdb] Add a type-safe C++ interface to a registry sergiodj+buildbot
2019-05-09 16:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  5:09 [binutils-gdb] Convert mdebugread.c to type-safe registry API sergiodj+buildbot
2019-05-11  9:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  5:25 [binutils-gdb] Convert elfread.c to type-safe registry API sergiodj+buildbot
2019-05-11 11:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  5:43 [binutils-gdb] Convert hppa-tdep.c to type-safe registry API sergiodj+buildbot
2019-05-11 13:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  6:17 [binutils-gdb] Convert stabsread.c to type-safe registry API sergiodj+buildbot
2019-05-11 17:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  6:34 [binutils-gdb] Convert objc-lang.c to type-safe registry API sergiodj+buildbot
2019-05-11 18:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  7:05 [binutils-gdb] Convert gdbtypes.c to type-safe registry API sergiodj+buildbot
2019-05-11 22:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  7:22 [binutils-gdb] [gdb/testsuite] Fix gdb.arch/amd64-entry-value-paramref.S sergiodj+buildbot
2019-05-12  0:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09  9:44 [binutils-gdb] Convert objfiles.c to type-safe registry API sergiodj+buildbot
2019-05-10  3:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 10:37 [binutils-gdb] [binutils][aarch64] New iclass sve_size_hsd2 sergiodj+buildbot
2019-05-12  7:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 10:53 [binutils-gdb] [binutils][aarch64] New SVE_Zm3_11_INDEX operand sergiodj+buildbot
2019-05-12  9:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 11:25 [binutils-gdb] [binutils][aarch64] New sve_size_sd2 iclass sergiodj+buildbot
2019-05-12 12:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 11:57 [binutils-gdb] [binutils][aarch64] New sve_size_013 iclass sergiodj+buildbot
2019-05-12 16:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 12:14 [binutils-gdb] [binutils][aarch64] New SVE_SHRIMM_UNPRED_22 operand sergiodj+buildbot
2019-05-12 17:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 12:22 [binutils-gdb] Convert symfile-debug.c to type-safe registry API sergiodj+buildbot
2019-05-10  8:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 13:14 [binutils-gdb] [binutils][aarch64] New sve_size_tsz_bhs iclass sergiodj+buildbot
2019-05-12 23:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 13:21 [binutils-gdb] [binutils][aarch64] New SVE_SHLIMM_UNPRED_22 operand sergiodj+buildbot
2019-05-13  0:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 13:53 [binutils-gdb] [gdb/testsuite] Fix gdb.arch/amd64-tailcall-self.S sergiodj+buildbot
2019-05-13  4:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 17:08 [binutils-gdb] Convert solib-svr4.c to type-safe registry API sergiodj+buildbot
2019-05-10 17:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 18:08 [binutils-gdb] Convert xcoffread.c to type-safe registry API sergiodj+buildbot
2019-05-10 19:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 21:53 [binutils-gdb] Convert coffread.c to type-safe registry API sergiodj+buildbot
2019-05-11  2:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-09 23:40 [binutils-gdb] Convert nto-tdep.c to type-safe registry API sergiodj+buildbot
2019-05-11  6:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10  3:57 [binutils-gdb] Remove mips_pdr_data sergiodj+buildbot
2019-05-11 15:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10  6:46 [binutils-gdb] Convert dwarf2-frame.c to type-safe registry API sergiodj+buildbot
2019-05-11 20:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10 12:03 [binutils-gdb] [binutils][aarch64] SVE2 feature extension flags sergiodj+buildbot
2019-05-12  3:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10 13:40 [binutils-gdb] Two minor constifications sergiodj+buildbot
2019-05-13  8:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10 16:33 [binutils-gdb] [binutils][aarch64] New SVE_ADDR_ZX operand sergiodj+buildbot
2019-05-12 11:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10 18:23 [binutils-gdb] [binutils][aarch64] New sve_size_bh iclass sergiodj+buildbot
2019-05-12 14:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-10 22:03 [binutils-gdb] [binutils][aarch64] New SVE_Zm4_11_INDEX operand sergiodj+buildbot
2019-05-12 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-11  0:43 [binutils-gdb] [binutils][aarch64] Add SVE2 instructions sergiodj+buildbot
2019-05-13  2:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-11  8:39 [binutils-gdb] Fix GDB build when using --disable-gdbmi sergiodj+buildbot
2019-05-13 13:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-11 12:31 [binutils-gdb] Add macro expansions for ADD, SUB, DADD and DSUB for MIPS r6 sergiodj+buildbot
2019-05-13 16:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-12 16:12 [binutils-gdb] Fix two langauge -> language typos sergiodj+buildbot
2019-05-14  6:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-14  9:55 [binutils-gdb] AArch64: Add half float view to V registers sergiodj+buildbot
2019-05-14 11:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-14 10:31 [binutils-gdb] Add new option to objcopy: --verilog-data-width. Use this option to set the size of byte bundles generated in verilog format files sergiodj+buildbot
2019-05-14 14:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-14 14:08 [binutils-gdb] Add file name styling to "info sharedlibrary" sergiodj+buildbot
2019-05-14 17:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-15  5:50 [binutils-gdb] GDB (s12z): Improve reliability of the stack unwinder sergiodj+buildbot
2019-05-15  7:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-15  7:31 [binutils-gdb] ARM STM32L4XX erratum test failure sergiodj+buildbot
2019-05-15  8:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-15 21:57 [binutils-gdb] gdb/fortran: Add sizeof tests for indexed and sliced arrays sergiodj+buildbot
2019-05-15 23:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 13:25 [binutils-gdb] Revert "ARM STM32L4XX erratum test failure" sergiodj+buildbot
2019-05-16 14:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 15:57 [binutils-gdb] [PATCH 1/57][Arm][GAS]: Add support for +mve and +mve.fp sergiodj+buildbot
2019-05-16 16:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 16:29 [binutils-gdb] [PATCH 45/57][Arm][OBJDUMP] Add support for MVE instructions: vmov, vmvn, vorr, vorn, vmovx and vbic sergiodj+buildbot
2019-05-16 21:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 17:04 [binutils-gdb] [PATCH 47/57][Arm][OBJDUMP] Add support for MVE instructions: vaddv, vmlaldav, vmladav, vmlas, vrmlsldavh, vmlsldav, vmlsdav, vrmlaldavh, vqdmlah, vqrdmlash, vqrdmlash, vqdmlsdh, vqrdmlsdh, vqdmulh and vqrdmulh sergiodj+buildbot
2019-05-17  1:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 18:25 [binutils-gdb] [PATCH 52/57][Arm][OBJDUMP] Add support for MVE instructions: vadc, vabav, vabd, vabs, vadd, vsbc and vsub sergiodj+buildbot
2019-05-17 10:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 18:31 [binutils-gdb] [PATCH 46/57][Arm][OBJDUMP] Add support for MVE instructions: vmovl, vmull, vqdmull, vqmovn, vqmovun and vmovn sergiodj+buildbot
2019-05-16 23:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 18:42 [binutils-gdb] [PATCH 53/57][Arm][OBJDUMP] Add support for MVE instructions: vand, vbrsr, vcls, vclz and vctp sergiodj+buildbot
2019-05-17 12:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 19:46 [binutils-gdb] Fix darwin-nat.c build sergiodj+buildbot
2019-05-17 21:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 20:49 [binutils-gdb] Bool-ify stap-probe.c and stap-related code on i386-tdep.c sergiodj+buildbot
2019-05-17 23:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 21:12 [binutils-gdb] [PATCH 49/57][Arm][OBJDUMP] Add support for MVE complex number instructions sergiodj+buildbot
2019-05-17  4:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 21:21 [binutils-gdb] Slightly improve logic of some operations on stap-probe.c sergiodj+buildbot
2019-05-18  3:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-16 21:53 [binutils-gdb] Make stap-probe.c:stap_parse_register_operand's "regname" an std::string sergiodj+buildbot
2019-05-18  6:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17  2:14 [binutils-gdb] [PATCH 54/57][Arm][OBJDUMP] Add support for MVE instructions: vmax(a), vmax(a)v, vmaxnm(a), vmaxnm(a)v, vmin(a), vmin(a)v, vminnm(a), vminnm(a)v and vmla sergiodj+buildbot
2019-05-17 14:14 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17  3:55 [binutils-gdb] [PATCH 56/57][Arm][OBJDUMP] Add support for MVE instructions: vpnot, vpsel, vqabs, vqadd, vqsub, vqneg and vrev sergiodj+buildbot
2019-05-17 18:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 10:06 [binutils-gdb] Add myself to gdb/MAINTAINERS sergiodj+buildbot
2019-05-18 21:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 10:42 [binutils-gdb] MI: extract command completion logic from complete_command() sergiodj+buildbot
2019-05-18 23:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 11:02 [binutils-gdb] MI: Add new command -complete sergiodj+buildbot
2019-05-19  2:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 13:27 [binutils-gdb] Change file close behavior for tee_file sergiodj+buildbot
2019-05-19  5:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 15:53 [binutils-gdb] testsuite: Record all gdb input to gdb.in sergiodj+buildbot
2019-05-19 15:39 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 16:15 [binutils-gdb] testsuite: Create .cmd files for gdb and gdbserver sergiodj+buildbot
2019-05-19 17:30 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 16:26 [binutils-gdb] testsuite: Add replay logging to GDBSERVER_DEBUG sergiodj+buildbot
2019-05-19 19:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 16:43 [binutils-gdb] testsuite: Remove TRANSCRIPT support sergiodj+buildbot
2019-05-20 15:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 17:00 [binutils-gdb] Constify annotate_source sergiodj+buildbot
2019-05-20 16:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 17:37 [binutils-gdb] Don't cast away const in find_and_open_source sergiodj+buildbot
2019-05-20 17:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-17 19:13 [binutils-gdb] testsuite: Add option to capture GDB debug sergiodj+buildbot
2019-05-19 12:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-18  9:06 [binutils-gdb] gdb: Add constructor to struct cu_partial_die_info sergiodj+buildbot
2019-05-21  6:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21  9:03 [binutils-gdb] Fix PR 24564 - link fails for some rcalls/rjmps with wraparound sergiodj+buildbot
2019-05-21 10:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 13:10 [binutils-gdb] testsuite: Mark the kill in gdbserver_run as optional sergiodj+buildbot
2019-05-21 14:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 14:27 [binutils-gdb] AArch64: Implement choice between Cortex-A53 erratum workarounds. (PR ld/24373) sergiodj+buildbot
2019-05-21 15:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 15:16 [binutils-gdb] [binutils][Arm] Fix Branch Future relocation handling and testisms sergiodj+buildbot
2019-05-21 17:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 16:56 [binutils-gdb] [gdb/testsuite] Require c++11 where necessary sergiodj+buildbot
2019-05-21 18:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 17:09 [binutils-gdb] [gdb/cli] Fix use of uninitialized variable in complete_command sergiodj+buildbot
2019-05-21 20:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 19:31 [binutils-gdb] [binutils, ARM] <spec_reg> changes for VMRS and VMSR instructions sergiodj+buildbot
2019-05-22 10:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 20:39 [binutils-gdb] MIPS/LD: Fix memory fault linking non-PIC object in to shared library sergiodj+buildbot
2019-05-22 10:22 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-21 21:26 [binutils-gdb] MIPS/LD: Reject tprel_hi and tprel_lo relocations in shared library sergiodj+buildbot
2019-05-22 10:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22  0:49 [binutils-gdb] gdb/fortran: Handle gdbarch_floatformat_for_type returning nullptr sergiodj+buildbot
2019-05-22 13:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 11:18 [binutils-gdb] ARM STM32L4XX erratum test failure with MALLOC_PERTURB_ sergiodj+buildbot
2019-05-22 18:41 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 12:25 [binutils-gdb] vms-alpha gas segfault sergiodj+buildbot
2019-05-22 17:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 13:57 [binutils-gdb] gdb/riscv: Improve flen length determination sergiodj+buildbot
2019-05-22 21:03 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 16:32 [binutils-gdb] AArch64: Treat pauth ops as nops on non-pauth systems sergiodj+buildbot
2019-05-23 16:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 18:22 [binutils-gdb] [gdb/testsuite] Add missing mi_skip_python_tests to py-mi-var-info-path-expression.exp sergiodj+buildbot
2019-05-23 17:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-22 18:33 [binutils-gdb] [gdb/testsuite] Require c++11 for gdb.base/align.exp sergiodj+buildbot
2019-05-23 18:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-23  1:16 [binutils-gdb] Constify target_ops::follow_exec sergiodj+buildbot
2019-05-23 18:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-23 18:17 [binutils-gdb] config.guess, config.sub: synchronize with config project master sources sergiodj+buildbot
2019-05-23 18:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-23 20:19 [binutils-gdb] opcodes: add support for eBPF sergiodj+buildbot
2019-05-24  2:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-23 20:52 [binutils-gdb] bfd: add support for eBPF sergiodj+buildbot
2019-05-23 22:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24  1:59 [binutils-gdb] bfd: fix build with --enable-targets=all in 32-bit hosts sergiodj+buildbot
2019-05-24  2:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24  2:50 [binutils-gdb] PowerPC add initial -mfuture instruction support sergiodj+buildbot
2019-05-24  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24  3:11 [binutils-gdb] PowerPC D-form prefixed loads and stores sergiodj+buildbot
2019-05-24  6:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24  3:29 [binutils-gdb] PowerPC relocations for prefix insns sergiodj+buildbot
2019-05-24 12:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24  3:52 [binutils-gdb] PowerPC GOT_PCREL34 optimisation sergiodj+buildbot
2019-05-24 23:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-24 23:35 [binutils-gdb] [gdb/testsuite] Add test-case for gdb-add-index.sh sergiodj+buildbot
2019-05-25  0:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-25  0:33 [binutils-gdb] aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS sergiodj+buildbot
2019-05-27  7:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-25  0:56 [binutils-gdb] aarch64: handle STO_AARCH64_VARIANT_PCS in bfd sergiodj+buildbot
2019-05-27  7:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-25  1:22 [binutils-gdb] Regen POTFILES for bpf sergiodj+buildbot
2019-05-25  1:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-27  8:33 [binutils-gdb] Generic ELF target group signature symbol sergiodj+buildbot
2019-05-27  8:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-27  9:04 [binutils-gdb] Another generic ELF target assertion failure sergiodj+buildbot
2019-05-27 21:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-28  3:44 [binutils-gdb] Fix typo in gdb/NEWS sergiodj+buildbot
2019-05-28  4:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-28  4:24 [binutils-gdb] XCOFF linker segmentation fault sergiodj+buildbot
2019-05-28  4:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-28  5:01 [binutils-gdb] Obsolete tic30-aout, and linker segmentation faults sergiodj+buildbot
2019-05-28 23:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:02 [binutils-gdb] LM32 linker segmentation faults sergiodj+buildbot
2019-05-29  3:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:06 [binutils-gdb] Microblaze linker segmentation fault sergiodj+buildbot
2019-05-29  7:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:08 [binutils-gdb] Suppress SIGTTOU when handling errors sergiodj+buildbot
2019-05-29 10:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:11 [binutils-gdb] include: new header ctf-api.h sergiodj+buildbot
2019-05-29 14:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:24 [binutils-gdb] m68k linker segmentation faults sergiodj+buildbot
2019-05-29  1:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:36 [binutils-gdb] libctf: low-level list manipulation and helper utilities sergiodj+buildbot
2019-05-29 18:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:50 [binutils-gdb] libctf: build system sergiodj+buildbot
2019-06-01 10:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  0:56 [binutils-gdb] Add libctf to top-level MAINTAINERS; add myself as CTF maintainer sergiodj+buildbot
2019-06-01 11:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  1:04 [binutils-gdb] Remove find_old_style_renaming_symbol sergiodj+buildbot
2019-06-01 11:50 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  1:10 [binutils-gdb] x86: Add CheckRegSize to AVX512_BF16 instructions with Disp8ShiftVL sergiodj+buildbot
2019-06-01 11:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  1:53 [binutils-gdb] libctf: creation functions sergiodj+buildbot
2019-05-30  2:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  2:19 [binutils-gdb] libctf: opening sergiodj+buildbot
2019-05-30  3:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  3:14 [binutils-gdb] libctf: mmappable archives sergiodj+buildbot
2019-05-30  9:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  3:33 [binutils-gdb] libctf: core type lookup sergiodj+buildbot
2019-05-31 16:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  4:16 [binutils-gdb] libctf: library version enforcement sergiodj+buildbot
2019-05-31 19:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  4:47 [binutils-gdb] libctf: labels sergiodj+buildbot
2019-06-01  3:49 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  4:51 [binutils-gdb] libctf: debug dumping sergiodj+buildbot
2019-06-01  7:29 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  5:10 [binutils-gdb] COFF linker segmentation faults sergiodj+buildbot
2019-05-29  9:17 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  7:56 [binutils-gdb] include: new header ctf.h: file format description sergiodj+buildbot
2019-05-29 12:09 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29  9:28 [binutils-gdb] libctf: lowest-level memory allocation and debug-dumping wrappers sergiodj+buildbot
2019-05-29 15:48 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 10:40 [binutils-gdb] Fix libctf build on non-ELF targets sergiodj+buildbot
2019-06-01 11:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 10:59 [binutils-gdb] libctf: error handling sergiodj+buildbot
2019-05-29 20:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 11:42 [binutils-gdb] Do not build libctf for targets that do not use the ELF file format sergiodj+buildbot
2019-06-01 12:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 12:26 [binutils-gdb] libctf: implementation definitions related to file creation sergiodj+buildbot
2019-05-30  0:56 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 16:18 [binutils-gdb] libctf: ELF file opening via BFD sergiodj+buildbot
2019-05-31 16:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-29 19:15 [binutils-gdb] libctf: lookups by name and symbol sergiodj+buildbot
2019-05-31 16:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-30 14:19 [binutils-gdb] Initialize variable word in complete sergiodj+buildbot
2019-06-02  2:37 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-30 16:46 [binutils-gdb] Two comment fixes in gdbtypes.h sergiodj+buildbot
2019-06-02  3:08 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-31 15:41 [binutils-gdb] libctf: fix a number of build problems found on Solaris and NetBSD sergiodj+buildbot
2019-06-02 23:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-31 17:03 [binutils-gdb] Add previous_saved_command_line to allow a command to repeat a previous command sergiodj+buildbot
2019-06-02 23:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-31 18:04 [binutils-gdb] Implement | (pipe) command sergiodj+buildbot
2019-06-02 23:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-31 18:35 [binutils-gdb] NEWS and documentation for | (pipe) command sergiodj+buildbot
2019-06-03  2:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-05-31 19:53 [binutils-gdb] Test the | (pipe) command sergiodj+buildbot
2019-06-03  0:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03  2:58 [binutils-gdb] Remove fromhex implementation from gdbreplay sergiodj+buildbot
2019-06-03  3:27 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03 21:15 [binutils-gdb] Revert patch that disables building libctf for non-ELF based targets sergiodj+buildbot
2019-06-03 21:26 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03 21:49 [binutils-gdb] Add highlight style, title style, fputs_highlighted. Improve 'show style' sergiodj+buildbot
2019-06-03 22:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03 22:05 [binutils-gdb] Improve usability and/or readibility of help and apropos output sergiodj+buildbot
2019-06-04 16:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03 22:28 [binutils-gdb] Update tests following changes to "help" and "apropos" sergiodj+buildbot
2019-06-04 18:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-03 23:06 [binutils-gdb] Document in NEWS and gdb.texinfo the "help", "apropos" and "show style" changes sergiodj+buildbot
2019-06-04 20:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 16:15 [binutils-gdb] Remove an unnecessary set of parentheses in the arm-dis.c source file sergiodj+buildbot
2019-06-04 21:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 16:45 [binutils-gdb] Add an objfile getter to gdb.Type sergiodj+buildbot
2019-06-04 22:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 17:11 [binutils-gdb] Add support for Intel ENQCMD[S] instructions sergiodj+buildbot
2019-06-04 23:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 18:26 [binutils-gdb] libctf: fix the type of ctf_enum.cte_value sergiodj+buildbot
2019-06-05  1:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 19:32 [binutils-gdb] libctf: look for BSD versus GNU qsort_r signatures sergiodj+buildbot
2019-06-05  7:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 19:41 [binutils-gdb] libctf: work on platforms without O_CLOEXEC sergiodj+buildbot
2019-06-05  9:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 21:05 [binutils-gdb] i386: Check for reserved VEX.vvvv and EVEX.vvvv sergiodj+buildbot
2019-06-05  9:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 21:37 [binutils-gdb] Use CHAR_BIT instead of NBBY in libctf sergiodj+buildbot
2019-06-05 10:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 22:03 [binutils-gdb] libctf: fix use-after-free in function dumping sergiodj+buildbot
2019-06-05  3:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-04 23:38 [binutils-gdb] Introduce and use make_unique_xstrdup sergiodj+buildbot
2019-06-05 10:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-05 13:33 [binutils-gdb] gdb/testsuite: Improve comments in recently added test sergiodj+buildbot
2019-06-05 13:53 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-05 18:25 [binutils-gdb] libctf: eschew %zi format specifier sergiodj+buildbot
2019-06-05 18:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-06 12:11 [binutils-gdb] i386: Check vector length for EVEX vextractfXX and vinsertfXX sergiodj+buildbot
2019-06-06 12:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-06 13:19 [binutils-gdb] [LD, AArch64] Move ELF options behind -z sergiodj+buildbot
2019-06-06 13:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-06 18:15 [binutils-gdb] Add timestamps to "maint time" output sergiodj+buildbot
2019-06-06 18:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-06 19:36 [binutils-gdb] Add thread-exit annotation sergiodj+buildbot
2019-06-07  3:43 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-07 14:40 [binutils-gdb] libctf: mark various args as unused in the !HAVE_MMAP case sergiodj+buildbot
2019-06-07 15:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-07 15:10 [binutils-gdb] libctf: explicitly cast more size_t types used in printf()s sergiodj+buildbot
2019-06-07 16:18 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 13:53 [binutils-gdb] [gdb/symtab] Support DW_AT_main_subprogram with -readnow sergiodj+buildbot
2019-06-10 13:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 14:44 [binutils-gdb] Delay allocation of dbx_symfile_info sergiodj+buildbot
2019-06-10 14:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 14:58 [binutils-gdb] Use gdbpy_enter in py-breakpoint.c sergiodj+buildbot
2019-06-10 16:07 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 15:47 [binutils-gdb] Update help text in ada-lang.c sergiodj+buildbot
2019-06-10 18:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 18:19 [binutils-gdb] Remove newlines from warnings sergiodj+buildbot
2019-06-10 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 19:04 [binutils-gdb] [gdb/symtab] Fix symbol loading performance regression sergiodj+buildbot
2019-06-10 20:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-10 20:13 [binutils-gdb] [gdb] Fix heap-buffer-overflow in cp_find_first_component_aux sergiodj+buildbot
2019-06-10 23:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11  7:57 [binutils-gdb] gdb: Check for not allocated/associated values during array slicing sergiodj+buildbot
2019-06-11  8:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 11:55 [binutils-gdb] [gdb/testsuite] Add readnow.exp sergiodj+buildbot
2019-06-11 12:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 12:53 [binutils-gdb] [gdb/testsuite] Fix main high_pc in nonvar-access.exp sergiodj+buildbot
2019-06-11 13:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 13:39 [binutils-gdb] [gdb/testsuite] Fix remove-inferiors.exp FAIL with readnow board sergiodj+buildbot
2019-06-11 15:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 15:37 [binutils-gdb] Remove linux-waitpid.c debugging code sergiodj+buildbot
2019-06-11 17:16 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 15:52 [binutils-gdb] Remove trailing newlines from help text sergiodj+buildbot
2019-06-11 16:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-11 20:16 [binutils-gdb] Move gdb's xmalloc and friends to new file sergiodj+buildbot
2019-06-12  3:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-12 15:03 [binutils-gdb] Dwarf: Don't add nameless modules to partial symbol table sergiodj+buildbot
2019-06-12 15:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-12 21:16 [binutils-gdb] Prevent a seg-fault from objdup when disassembling binaries which do not contain a symbol table sergiodj+buildbot
2019-06-12 21:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-12 22:32 [binutils-gdb] Remove the ldmx mnemonic that never made it into POWER9 sergiodj+buildbot
2019-06-12 22:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-12 23:45 [binutils-gdb] opcodes/or1k: Regenerate opcodes sergiodj+buildbot
2019-06-13  0:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  0:53 [binutils-gdb] Fix latent bug in custom word point completion handling sergiodj+buildbot
2019-06-13  0:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  1:56 [binutils-gdb] Allow "unlimited" abbreviations sergiodj+buildbot
2019-06-13  7:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  2:36 [binutils-gdb] New set/show testing framework (gdb.base/settings.exp) sergiodj+buildbot
2019-06-13 11:02 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  2:43 [binutils-gdb] Fix TID parser bug sergiodj+buildbot
2019-06-13  2:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  2:48 [binutils-gdb] Introduce generic command options framework sergiodj+buildbot
2019-06-13 13:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  2:53 [binutils-gdb] Make "print" and "compile print" support -OPT options sergiodj+buildbot
2019-06-13 15:00 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  2:57 [binutils-gdb] Migrate rest of compile commands to new options framework sergiodj+buildbot
2019-06-13 15:54 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  3:03 [binutils-gdb] Make "backtrace" support -OPT options sergiodj+buildbot
2019-06-13 17:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  3:19 [binutils-gdb] "backtrace full/no-filters/hide" completer sergiodj+buildbot
2019-06-13 18:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  3:40 [binutils-gdb] lib/completion-support.exp: Add test_gdb_completion_offers_commands sergiodj+buildbot
2019-06-13 20:12 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  3:45 [binutils-gdb] Introduce complete_nested_command_line sergiodj+buildbot
2019-06-15  8:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  3:56 [binutils-gdb] Make "frame apply" support -OPT options sergiodj+buildbot
2019-06-15 12:11 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  4:08 [binutils-gdb] "thread apply 1 -- -" vs "frame apply level 0 -- -" sergiodj+buildbot
2019-06-15 13:15 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  4:21 [binutils-gdb] Make "thread apply" use the gdb::option framework sergiodj+buildbot
2019-06-15 14:33 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  4:29 [binutils-gdb] Delete parse_flags/parse_flags_qcs sergiodj+buildbot
2019-06-15 16:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13  9:38 [binutils-gdb] gdb.base/completion.exp: Fix comment typo sergiodj+buildbot
2019-06-13 10:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 10:19 [binutils-gdb] Fix gdb build with -std=gnu++11 sergiodj+buildbot
2019-06-15 17:23 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 11:12 [binutils-gdb] boolean/auto-boolean commands, make "o" ambiguous sergiodj+buildbot
2019-06-13 12:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 12:06 [binutils-gdb] number_or_range_parser::get_number, don't treat "1 -" as a range sergiodj+buildbot
2019-06-13 12:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 14:06 [binutils-gdb] sim/common: Wire in df/di conversion sergiodj+buildbot
2019-06-15 19:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 14:32 [binutils-gdb] sim/common: wire up new unordered comparisons sergiodj+buildbot
2019-06-15 20:36 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-13 15:25 [binutils-gdb] sim/testsuite/or1k: Add tests for unordered compares sergiodj+buildbot
2019-06-15 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14  4:38 [binutils-gdb] sim/or1k: Regenerate sim sergiodj+buildbot
2019-06-15 18:21 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14  6:59 [binutils-gdb] Regenerate with approved autotools version sergiodj+buildbot
2019-06-15 21:34 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14  7:17 [binutils-gdb] sim/testsuite/or1k: Add test for 64-bit fpu operations sergiodj+buildbot
2019-06-15 20:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14  7:49 [binutils-gdb] sim/testsuite/or1k: Add test case for l.adrp instruction sergiodj+buildbot
2019-06-15 21:01 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 14:49 [binutils-gdb] Add R_AARCH64_P32_MOVW_PREL_* ELF32 relocs sergiodj+buildbot
2019-06-15 21:47 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 14:57 [binutils-gdb] Updated French translation for the opcodes subdirectory sergiodj+buildbot
2019-06-15 21:35 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 15:12 [binutils-gdb] Remove alloca(0) calls sergiodj+buildbot
2019-06-15 22:42 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 16:19 [binutils-gdb] gdb: Use scoped_restore_terminal_state in annotate.c sergiodj+buildbot
2019-06-16  1:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 16:57 [binutils-gdb] Only compute realpath when basenames_may_differ is set sergiodj+buildbot
2019-06-16  2:57 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-14 23:38 [binutils-gdb] Minor NEWS rearrangement sergiodj+buildbot
2019-06-16 11:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-15  1:47 [binutils-gdb] Move gnulib to top level sergiodj+buildbot
2019-06-16 11:06 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-15 22:01 [binutils-gdb] gdb: Remove file path from test name sergiodj+buildbot
2019-06-16 12:45 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-15 23:07 [binutils-gdb] gdb: Remove an update of current_source_line and current_source_symtab sergiodj+buildbot
2019-06-16 15:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-15 23:31 [binutils-gdb] gdb: Remove unused parameter sergiodj+buildbot
2019-06-16 14:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16  0:13 [binutils-gdb] gdb/mi: New commands to catch C++ exceptions sergiodj+buildbot
2019-06-16 15:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16  1:15 [binutils-gdb] gdb/fortran: Show the type for non allocated / associated types sergiodj+buildbot
2019-06-16 15:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16  2:06 [binutils-gdb] gdb: Don't allow annotations to influence what else GDB prints sergiodj+buildbot
2019-06-16 15:38 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16 16:53 [binutils-gdb] Remove some NULL checks from the TUI sergiodj+buildbot
2019-06-16 19:55 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16 18:17 [binutils-gdb] Remove unnecessary casts of NULL sergiodj+buildbot
2019-06-16 21:24 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16 18:41 [binutils-gdb] Replace uses of concat with xstrdup sergiodj+buildbot
2019-06-16 22:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16 20:27 [binutils-gdb] gdb: Remove unused signal mask sergiodj+buildbot
2019-06-17 17:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-16 21:57 [binutils-gdb] Don't cast a tui_win_info directly to tui_gen_win_info sergiodj+buildbot
2019-06-17 17:58 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-17  1:14 [binutils-gdb] [gdb/contrib] Fix gdb/contrib/gdb-add-index.sh for dwz-m-ed execs sergiodj+buildbot
2019-06-17 18:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-17 18:56 [binutils-gdb] aarch64: remove unnecessary loc_hash_table traversal sergiodj+buildbot
2019-06-17 19:05 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-17 19:36 [binutils-gdb] i386: Check vector length for vshufXXX/vinsertXXX/vextractXXX sergiodj+buildbot
2019-06-17 20:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-18  7:53 [binutils-gdb] [gdb] Fix heap-buffer-overflow in child_path sergiodj+buildbot
2019-06-18 16:04 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-18 16:46 [binutils-gdb] [gdb/testsuite] Break up long debug_flags line in fission.exp sergiodj+buildbot
2019-06-18 16:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-18 17:21 [binutils-gdb] Add comment to list0.h sergiodj+buildbot
2019-06-18 17:28 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-18 18:43 [binutils-gdb] [gdb] Fix abstract_to_concrete type sergiodj+buildbot
2019-06-18 21:25 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-19  5:18 [binutils-gdb] gdb: Remove use of deprecated_interactive_hook sergiodj+buildbot
2019-06-19  7:10 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-19 12:58 [binutils-gdb] Instantiate a single source highlighter sergiodj+buildbot
2019-06-19 13:19 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-19 14:38 [binutils-gdb] Fix crash when setting breakpoint condition sergiodj+buildbot
2019-06-19 15:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-19 17:21 [binutils-gdb] [gdb] Fix clang buildbreaker sergiodj+buildbot
2019-06-20  7:20 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-19 17:31 [binutils-gdb] [gdb] Fix build breaker with gcc 4.8 sergiodj+buildbot
2019-06-19 17:46 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-20  9:51 [binutils-gdb] Don't declare tui_init_content_element sergiodj+buildbot
2019-06-20 10:31 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-20  9:51 [binutils-gdb] Don't declare tui_init_win_info sergiodj+buildbot
2019-06-20  9:51 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21  7:56 [binutils-gdb] [gdbserver] Fix s390x -m31 gdbserver build sergiodj+buildbot
2019-06-21  8:13 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21 13:47 [binutils-gdb] libctf: handle errors on dynhash insertion better sergiodj+buildbot
2019-06-21 13:59 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21 14:34 [binutils-gdb] libctf: dump header offsets into the debugging output sergiodj+buildbot
2019-06-21 16:32 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21 15:10 [binutils-gdb] libctf: unidentified type kinds on open are a sign of file corruption sergiodj+buildbot
2019-06-21 17:52 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21 18:32 [binutils-gdb] libctf: endianness fixes sergiodj+buildbot
2019-06-21 18:44 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-06-21 19:14 [binutils-gdb] libctf: fix ctf_open endianness problems with raw CTF files sergiodj+buildbot
2019-06-21 19:40 ` Failures on Debian-s390x-m64, branch master sergiodj+buildbot
2019-08-21 21:57 [binutils-gdb] Fix nullptr in with_command_1 gdb-buildbot
2019-08-21 22:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22  5:38 [binutils-gdb] ARM CMSE symbols gdb-buildbot
2019-08-22  9:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 10:46 [binutils-gdb] [AArch64][gas] Update MTE system register encodings gdb-buildbot
2019-08-22 11:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 11:36 [binutils-gdb] AArch64: Fix LD crash on weak and undefined TLS symbols. (PR/24602) gdb-buildbot
2019-08-22 11:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 12:18 [binutils-gdb] gdb/fortran: Remove some dead code from the parser gdb-buildbot
2019-08-22 12:18 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 14:33 [binutils-gdb] Fix an illegal memory access when dumping corrupt x86_64 PE unwind data gdb-buildbot
2019-08-22 14:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 15:14 [binutils-gdb] Arm: Add support for missing CPUs gdb-buildbot
2019-08-22 15:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-22 23:24 [binutils-gdb] Make GDB compile with Python 3 on MinGW gdb-buildbot
2019-08-22 23:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-23 10:41 [binutils-gdb] PR24933, Memory leak in elf_x86_64_get_synthetic_symtab gdb-buildbot
2019-08-23 11:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-23 13:01 [binutils-gdb] Stop the BFD library from failing when encountering a second set of relocs for the same section gdb-buildbot
2019-08-23 13:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-23 14:14 [binutils-gdb] or1k: Fix incorrect value in PLT GOT entries, causing infinite loop gdb-buildbot
2019-08-23 14:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-23 16:00 [binutils-gdb] Fix bug in nios2 prologue analysis gdb-buildbot
2019-08-23 16:41 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-23 18:28 [binutils-gdb] Move gdb-dlfcn.[ch] to gdbsupport/ gdb-buildbot
2019-08-23 18:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-24  1:17 [binutils-gdb] PowerPC64 segfault in ppc64_elf_edit_toc gdb-buildbot
2019-08-24  1:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-24 22:23 [binutils-gdb] Fix compile warning in symtab.c gdb-buildbot
2019-08-24 23:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-25 11:38 [binutils-gdb] Convert the RX target to make use of target descriptions gdb-buildbot
2019-08-25 11:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-25 23:11 [binutils-gdb] dwarf2read: replace gdb::optional<bool> with enum gdb-buildbot
2019-08-26  1:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-26  2:14 [binutils-gdb] dwarf2read: fix compilation issue with gcc 4.8 gdb-buildbot
2019-08-26  2:49 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-26 13:56 [binutils-gdb] Use raw strings on gdb.python/py-xmethods.exp (and fix Python 3.8's "SyntaxWarning: invalid escape sequence") gdb-buildbot
2019-08-26 14:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-26 17:29 [binutils-gdb] [gdb/testsuite] Make skip_libstdcxx_probe_tests return 1 if true gdb-buildbot
2019-08-26 17:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-26 18:01 [binutils-gdb] [gdb, c++] Improve error message when using libstdcxx without SDT probes gdb-buildbot
2019-08-26 18:24 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-26 22:05 [binutils-gdb] Factor out the common code in lookup_{static,global}_symbol gdb-buildbot
2019-08-26 22:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-27 11:48 [binutils-gdb] Add support for the MVE VMOV instruction to the ARM assembler. This instruction copies the value of one vector register to another vector register. The patch also modifies the decoding of VORR instruction which is effecting decoding of VMOV instruction gdb-buildbot
2019-08-27 12:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-27 16:22 [binutils-gdb] gdb: Add new -n flag to some info commands gdb-buildbot
2019-08-27 19:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-27 19:31 [binutils-gdb] Fix compiler warning in linux-namespaces.c gdb-buildbot
2019-08-27 19:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-28 13:33 [binutils-gdb] gdb/fortran: Implement la_print_typedef for Fortran gdb-buildbot
2019-08-28 13:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-28 13:58 [binutils-gdb] gdb/fortran: Don't include module symbols when searching for types gdb-buildbot
2019-08-28 14:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-28 15:15 [binutils-gdb] Fix Gnulib glob.c resource leaks found by Coverity gdb-buildbot
2019-08-28 16:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-28 17:56 [binutils-gdb] [gdb/testsuite] Fix info-var.exp for debug info from other files gdb-buildbot
2019-08-28 18:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29  0:55 [binutils-gdb] PR24891, objdump memory leaks when parsing malformed archive gdb-buildbot
2019-08-29  1:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29  1:25 [binutils-gdb] RISC-V: Fix a gp relaxation reloc overflow error gdb-buildbot
2019-08-29  2:04 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29  4:31 [binutils-gdb] PowerPC64 xlate_pcrel_opt gdb-buildbot
2019-08-29 11:52 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29 12:16 [binutils-gdb] PR24697, R_PPC_EMB_SDA21 cannot be used when making a shared object gdb-buildbot
2019-08-29 13:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29 13:44 [binutils-gdb] [gdb/testsuite] Fix gdb.fortran/info-types.exp regexp gdb-buildbot
2019-08-29 14:17 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29 17:21 [binutils-gdb] Fix PR win32/24284: tcp_auto_retry doesn't work in MinGW gdb-buildbot
2019-08-29 18:00 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-29 22:28 [binutils-gdb] Run argv0-symlink.exp only on native target and local host gdb-buildbot
2019-08-30  8:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30  9:11 [binutils-gdb] [ARC] [COMMITTED] Fix FASTMATH field gdb-buildbot
2019-08-30 14:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 15:17 [binutils-gdb] Copy BFD_COMPRESS/BFD_DECOMPRESS/BFD_COMPRESS_GABI for thin archive gdb-buildbot
2019-08-30 15:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 19:52 [binutils-gdb] Remove NO_DATA_STRING gdb-buildbot
2019-08-30 20:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 20:53 [binutils-gdb] Remove tui_data_window::display_all_data gdb-buildbot
2019-08-30 20:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 21:05 [binutils-gdb] Remove some checks of .empty() gdb-buildbot
2019-08-30 21:43 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 21:37 [binutils-gdb] Remove some calls in tui_data_window gdb-buildbot
2019-08-30 23:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 22:10 [binutils-gdb] Private data members in tui_data_window gdb-buildbot
2019-08-30 23:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 22:32 [binutils-gdb] Simplify register display gdb-buildbot
2019-08-31  1:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 23:36 [binutils-gdb] Remove NULL checks from box_win gdb-buildbot
2019-08-31  1:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-30 23:43 [binutils-gdb] Don't call touchwin in tui_gen_win_info::refresh_window gdb-buildbot
2019-08-31  2:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  0:20 [binutils-gdb] Don't call tui_refresh_all from show_layout gdb-buildbot
2019-08-31  3:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  1:42 [binutils-gdb] Turn two locator functions into methods gdb-buildbot
2019-08-31  4:23 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  2:53 [binutils-gdb] Minor rearrangement of tui-stack.c gdb-buildbot
2019-08-31  7:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  3:30 [binutils-gdb] Don't call wrefresh from tui_cont_sig gdb-buildbot
2019-08-31  8:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  4:56 [binutils-gdb] Remove "\nError: " suffix from nat/fork-inferior.c:trace_start_error warning message gdb-buildbot
2019-08-31 10:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  5:12 [binutils-gdb] RISC-V: Force linker error exit after unresolvable reloc gdb-buildbot
2019-08-31 11:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  5:30 [binutils-gdb] Swap tui_show_locator_content and tui_locator_window::rerender gdb-buildbot
2019-08-31  5:17 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  6:20 [binutils-gdb] Make tui_locator_window::set_locator_fullname re-render gdb-buildbot
2019-08-31  6:29 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-08-31  9:14 [binutils-gdb] Remove tui_win_info::refresh_all gdb-buildbot
2019-08-31  9:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-01  6:49 [binutils-gdb] RISC-V: Fix linker problems with tls copy relocs gdb-buildbot
2019-09-01  8:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-02  2:11 [binutils-gdb] Memory leak in dwarf2.c gdb-buildbot
2019-09-02  2:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-02  8:27 [binutils-gdb] Re: Memory leak in dwarf2.c gdb-buildbot
2019-09-02  9:05 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-02 14:04 [binutils-gdb] Refactor svr4_create_solib_event_breakpoints gdb-buildbot
2019-09-02 14:03 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-02 15:09 [binutils-gdb] Use gdbarch for probe::get_argument_count gdb-buildbot
2019-09-02 15:10 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-02 15:29 [binutils-gdb] Check arguments for all probes before using them gdb-buildbot
2019-09-02 16:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-03  9:35 [binutils-gdb] Fix a potential buffer overrun in the MMIX disassembler when processing a corrupt input file gdb-buildbot
2019-09-03 10:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-03 15:14 [binutils-gdb] Fix buffer underrun bug in the TI C30 disassembler gdb-buildbot
2019-09-03 15:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-03 17:01 [binutils-gdb] Handle biased types gdb-buildbot
2019-09-03 17:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-03 22:11 [binutils-gdb] gdb: Handle missing domain types in: maintenance print psymbols gdb-buildbot
2019-09-03 22:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-04 21:19 [binutils-gdb] Avoid expect's buffer overflow in info-var.exp test gdb-buildbot
2019-09-04 21:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-05  4:49 [binutils-gdb] PR24955, libbfd terminating program on out of memory gdb-buildbot
2019-09-05  5:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-05  5:56 [binutils-gdb] R_PPC64_PCREL_OPT gdb-buildbot
2019-09-05  6:37 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-05  7:02 [binutils-gdb] PowerPC64 GOT_PCREL relocs gdb-buildbot
2019-09-05  8:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-05 13:10 [binutils-gdb] [gdb/testsuite] Restore breakpoint command in ui-redirect.exp gdb-buildbot
2019-09-05 13:40 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-06 14:26 [binutils-gdb] bfd_get_filename gdb-buildbot
2019-09-06 14:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-06 20:12 [binutils-gdb] Change int to bool for the relocate_* functions gdb-buildbot
2019-09-06 20:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-06 21:56 [binutils-gdb] un-XFAIL under Clang tests using labels gdb-buildbot
2019-09-06 22:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-07 16:44 [binutils-gdb] Change lookup_symbol's block_index parameter type to block_enum gdb-buildbot
2019-09-07 16:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-08 20:44 [binutils-gdb] Truncate long TUI window titles gdb-buildbot
2019-09-08 21:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-09 10:14 [binutils-gdb] Add markers for 2.33 branch to NEWS and ChangeLog files gdb-buildbot
2019-09-09 10:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-09 22:31 [binutils-gdb] Fix leak detected in python.c initialization code gdb-buildbot
2019-09-09 22:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-09 23:50 [binutils-gdb] Use ui_out for "info win" gdb-buildbot
2019-09-10  0:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10  2:15 [binutils-gdb] DWARF 5 support: Handle dwo_id gdb-buildbot
2019-09-10  2:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 15:02 [binutils-gdb] Enhance the disassembler so that it will reliably determine whether a reloc applies to the middle of the next insn gdb-buildbot
2019-09-10 15:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 15:28 [binutils-gdb] Change map_matching_symbols to take a symbol_found_callback_ftype gdb-buildbot
2019-09-10 16:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 15:39 [binutils-gdb] Change iterate_over_symbols to return bool gdb-buildbot
2019-09-10 17:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 15:52 [binutils-gdb] Simplify psym_map_matching_symbols gdb-buildbot
2019-09-10 18:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 16:09 [binutils-gdb] Change map_matching_symbols to take a lookup_name_info gdb-buildbot
2019-09-10 19:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 16:18 [binutils-gdb] Fix latent bug in .debug_names file-name handling gdb-buildbot
2019-09-10 20:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 16:33 [binutils-gdb] Add Ada support for .debug_names gdb-buildbot
2019-09-10 21:19 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 16:50 [binutils-gdb] Add Ada support to cc-with-tweaks.exp gdb-buildbot
2019-09-10 21:59 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-10 17:05 [binutils-gdb] Use the correct alias for the M68K tdiv instruction gdb-buildbot
2019-09-10 23:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11  7:07 [binutils-gdb] Tidy ld/ldmisc.c gdb-buildbot
2019-09-11  9:12 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11 18:15 [binutils-gdb] Introduce bfd_set_filename gdb-buildbot
2019-09-11 18:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11 18:32 [binutils-gdb] Change the type of copy_names from int to bool gdb-buildbot
2019-09-11 19:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11 19:49 [binutils-gdb] Fix float to LONGEST conversion gdb-buildbot
2019-09-11 20:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11 22:11 [binutils-gdb] Refactor get_init_files to use std::string gdb-buildbot
2019-09-12  1:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-11 23:24 [binutils-gdb] Factor out the code to do the datadir-relocation for gdbinit gdb-buildbot
2019-09-12  2:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-12  0:41 [binutils-gdb] Make relocate_{path,gdb_directory} return std::string gdb-buildbot
2019-09-12  6:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-12  9:22 [binutils-gdb] Fix signals reported for faults on Solaris gdb-buildbot
2019-09-12 10:16 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-12 20:58 [binutils-gdb] Output the Ada task name in more messages gdb-buildbot
2019-09-12 21:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-12 21:01 [binutils-gdb] [gdb/testsuite] Allow some tests in gdb.base/store.exp to be unsupported gdb-buildbot
2019-09-12 22:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-13  1:11 [binutils-gdb] gdb: Don't fault for 'maint print psymbols' when using an index gdb-buildbot
2019-09-13  1:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-13  1:12 [binutils-gdb] gdb: Have 'maint info sections' print all sections again gdb-buildbot
2019-09-13  2:13 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-13  1:14 [binutils-gdb] gdb/testsuite: Make use of exec_has_index_section function gdb-buildbot
2019-09-13  3:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-13  2:09 [binutils-gdb] gdb: Force use of float version of log10 gdb-buildbot
2019-09-13  4:58 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-14  9:12 [binutils-gdb] [gdb/testsuite] Require gnatmake 8 for gdb.ada/rename_subscript_param.exp gdb-buildbot
2019-09-15  2:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-15  3:16 [binutils-gdb] Add a NEWS entry that gdb can be compiled with py3 on Windows gdb-buildbot
2019-09-15  3:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-16 10:47 [binutils-gdb] Update version to 2.33.50 and regenerate configure scripts gdb-buildbot
2019-09-16 11:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-17  3:49 [binutils-gdb] Don't duplicate comment in symfile.c and .h gdb-buildbot
2019-09-17  4:29 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-17 19:09 [binutils-gdb] (Ada) do not print Ada task names in quotes in "info tasks" output gdb-buildbot
2019-09-17 20:09 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-17 20:17 [binutils-gdb] gdb: Catch exceptions when accessing source cache gdb-buildbot
2019-09-17 21:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-17 21:49 [binutils-gdb] gdb: Look for compilation directory relative to directory search path gdb-buildbot
2019-09-17 21:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18  0:59 [binutils-gdb] Change boolean options to bool instead of int gdb-buildbot
2019-09-18  1:49 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18  1:40 [binutils-gdb] RISC-V: Gate opcode tables by enum rather than string gdb-buildbot
2019-09-18  2:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18  6:12 [binutils-gdb] Make extern declaration of dwarf_always_disassemble correct gdb-buildbot
2019-09-18 10:24 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 13:19 [binutils-gdb] PowerPC64, support medium model access to common symbols gdb-buildbot
2019-09-18 13:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 13:33 [binutils-gdb] Use bfd_set_filename more gdb-buildbot
2019-09-18 14:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 13:42 [binutils-gdb] Constify target name, reloc name, and carsym name gdb-buildbot
2019-09-18 15:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 13:54 [binutils-gdb] Constify bfd_octets_per_byte and related functions gdb-buildbot
2019-09-18 16:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 14:17 [binutils-gdb] Don't use bfd_get_* macro to set bfd fields gdb-buildbot
2019-09-18 17:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 14:17 [binutils-gdb] Re-generate many configure and Makefile.in files gdb-buildbot
2019-09-18 18:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 14:30 [binutils-gdb] bfd_asymbol_* macros gdb-buildbot
2019-09-18 19:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 17:17 [binutils-gdb] gdb/testsuite: Avoid directory names in test names gdb-buildbot
2019-09-18 20:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 18:13 [binutils-gdb] gdb: remove local extern declaration of cli_styling gdb-buildbot
2019-09-18 21:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 19:50 [binutils-gdb] gdb: Fix native build on Linux/Alpha gdb-buildbot
2019-09-18 21:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 21:35 [binutils-gdb] Give a name to the TUI SingleKey keymap gdb-buildbot
2019-09-18 22:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 23:21 [binutils-gdb] [gdb/testsuite] Handle unreachable network in server-connect.exp gdb-buildbot
2019-09-18 23:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-18 23:45 [binutils-gdb] [gdb/testsuite] Fix gdb_target_cmd gdb-buildbot
2019-09-19  0:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-19  1:02 [binutils-gdb] bfd_section_* macros gdb-buildbot
2019-09-19  2:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-19 18:20 [binutils-gdb] [gdb] Catch exception when constructing the highlighter gdb-buildbot
2019-09-19 18:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-19 18:42 [binutils-gdb] [gdb/testsuite] Don't use FOOBAR pattern in gdb_test gdb-buildbot
2019-09-19 23:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  0:39 [binutils-gdb] Declare dwarf_always_disassemble in dwarf2read.h gdb-buildbot
2019-09-20  1:28 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  0:53 [binutils-gdb] Move arm_apcs_32 extern declaration to header gdb-buildbot
2019-09-20  2:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  1:12 [binutils-gdb] Move declaration of overload_resolution to value.h gdb-buildbot
2019-09-20  3:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  7:59 [binutils-gdb] PowerPC64, error on unsupported dynamic relocation gdb-buildbot
2019-09-20  8:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  8:48 [binutils-gdb] x86-64: fix handling of PUSH/POP of segment register gdb-buildbot
2019-09-20  9:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  9:09 [binutils-gdb] bfd macro conversion to inline functions gdb-buildbot
2019-09-20 10:38 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  9:27 [binutils-gdb] bfd macro conversion to inline functions, asymbol gdb-buildbot
2019-09-20 11:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20  9:43 [binutils-gdb] bfd macro conversion to inline functions, section gdb-buildbot
2019-09-20 13:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 19:53 [binutils-gdb] Fix crash in Ada "catch exception" gdb-buildbot
2019-09-20 20:15 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 20:49 [binutils-gdb] Remove tui_clear_source_windows_detail gdb-buildbot
2019-09-20 21:01 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 21:04 [binutils-gdb] Change tui_source_element::line to be a unique_xmalloc_ptr gdb-buildbot
2019-09-20 21:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 21:15 [binutils-gdb] Move "fullname" to tui_source_window gdb-buildbot
2019-09-20 22:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 21:27 [binutils-gdb] Change tui_make_status_line to return std::string gdb-buildbot
2019-09-20 23:47 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 21:42 [binutils-gdb] Change tui_make_status_line to be a method gdb-buildbot
2019-09-21  0:54 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 21:56 [binutils-gdb] Remove some explicit re-rendering from the TUI gdb-buildbot
2019-09-21  1:57 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 22:05 [binutils-gdb] Simplify tui_source_window_base::show_source_content gdb-buildbot
2019-09-21  3:07 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 22:25 [binutils-gdb] Simplify TUI disassembly gdb-buildbot
2019-09-21  3:59 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 22:33 [binutils-gdb] Use "bool" in tui_data_window::show_register_group gdb-buildbot
2019-09-21  4:39 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 22:45 [binutils-gdb] Change "win_resized" to bool gdb-buildbot
2019-09-21  5:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 22:59 [binutils-gdb] Set TUI locator height to 1 gdb-buildbot
2019-09-21  6:50 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 23:08 [binutils-gdb] Don't call refresh in tui_resize_all gdb-buildbot
2019-09-21  7:53 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 23:22 [binutils-gdb] Remove a call to tui_locator_win_info_ptr gdb-buildbot
2019-09-21  8:52 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 23:35 [binutils-gdb] Change members of tui_locator_window to std::string gdb-buildbot
2019-09-21  9:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 23:46 [binutils-gdb] Rename private data members of tui_data_window gdb-buildbot
2019-09-21 10:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-20 23:58 [binutils-gdb] Rename a private data member in tui_source_window gdb-buildbot
2019-09-21 11:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  0:13 [binutils-gdb] Remove strcat_to_buf gdb-buildbot
2019-09-21 12:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  0:26 [binutils-gdb] Remove separator comments from TUI gdb-buildbot
2019-09-21 13:37 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  0:43 [binutils-gdb] Use make_unique_xstrdup in TUI gdb-buildbot
2019-09-21 14:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  0:53 [binutils-gdb] Change TUI window commands to be case-sensitive gdb-buildbot
2019-09-21 15:43 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  1:04 [binutils-gdb] Remove Cell Broadband Engine debugging support gdb-buildbot
2019-09-21 16:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  1:31 [binutils-gdb] RISC-V: Optimize lui and auipc relaxations for undefweak symbol gdb-buildbot
2019-09-21 19:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  2:11 [binutils-gdb] gdb/NEWS: Move entries about MI v3 and multi-loc breakpoints after GDB 8.3 gdb-buildbot
2019-09-21 22:51 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  2:32 [binutils-gdb] Move declarations of debug_threads and using_threads to header gdb-buildbot
2019-09-21 23:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-21  2:52 [binutils-gdb] Replace solib_global_lookup with gdbarch_iterate_over_objfiles_in_search_order gdb-buildbot
2019-09-22  0:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-22  0:17 [binutils-gdb] gdb: change "nonzero" to "true" in comments gdb-buildbot
2019-09-22  1:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-22  0:41 [binutils-gdb] gdb: make watchpoint::val_valid a bool gdb-buildbot
2019-09-22  2:22 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-22  2:47 [binutils-gdb] gdb: fix formatting in solib-svr4.c gdb-buildbot
2019-09-22  3:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-22  5:10 [binutils-gdb] [gdb/testsuite] Allow some tests in gdb.base/restore.exp to be unsupported gdb-buildbot
2019-09-22  5:48 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  1:25 [binutils-gdb] csky bfd.h tidy gdb-buildbot
2019-09-23  1:32 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  1:37 [binutils-gdb] mips bfd.h tidy gdb-buildbot
2019-09-23  2:34 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  1:59 [binutils-gdb] v850 bfd.h tidy gdb-buildbot
2019-09-23  3:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  2:01 [binutils-gdb] ia64 bfd.h tidy gdb-buildbot
2019-09-23  4:25 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  2:13 [binutils-gdb] h8300 bfd.h tidy gdb-buildbot
2019-09-23  6:18 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  2:32 [binutils-gdb] tic54x bfd.h tidy gdb-buildbot
2019-09-23  6:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  2:37 [binutils-gdb] aarch64 bfd.h tidy gdb-buildbot
2019-09-23  7:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  2:50 [binutils-gdb] tic6x bfd.h tidy gdb-buildbot
2019-09-23  8:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  3:03 [binutils-gdb] arm bfd.h tidy gdb-buildbot
2019-09-23  9:23 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  3:14 [binutils-gdb] coff bfd.h tidy gdb-buildbot
2019-09-23 10:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  3:27 [binutils-gdb] xcoff bfd.h tidy gdb-buildbot
2019-09-23 11:27 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  3:37 [binutils-gdb] obsoleted bfd.h tidy gdb-buildbot
2019-09-23 12:06 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  3:51 [binutils-gdb] cr16 bfd.h tidy gdb-buildbot
2019-09-23 14:02 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  4:12 [binutils-gdb] bfin bfd.h tidy gdb-buildbot
2019-09-23 14:31 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  4:13 [binutils-gdb] m68k bfd.h tidy gdb-buildbot
2019-09-23 14:44 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  4:36 [binutils-gdb] ecoff bfd.h tidy gdb-buildbot
2019-09-23 17:21 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  4:36 [binutils-gdb] elf bfd.h tidy gdb-buildbot
2019-09-23 16:11 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  4:45 [binutils-gdb] linker bfd.h tidy gdb-buildbot
2019-09-23 18:08 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23  5:57 [binutils-gdb] bfd Makefile update gdb-buildbot
2019-09-23 18:45 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23 15:16 [binutils-gdb] PowerPC64 dynamic symbol tweaks gdb-buildbot
2019-09-23 19:42 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23 19:29 [binutils-gdb] Make ada_decode not use a static buffer gdb-buildbot
2019-09-23 20:48 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23 21:43 [binutils-gdb] sim: Add PRU simulator port gdb-buildbot
2019-09-23 21:46 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23 21:49 [binutils-gdb] Add testsuite for the PRU simulator port gdb-buildbot
2019-09-23 22:06 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-23 22:26 [binutils-gdb] gdb/readline: fix use of an undefined variable gdb-buildbot
2019-09-24  0:36 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-24 22:13 [binutils-gdb] [gdb/tdep] Handle mxcsr kernel bug on Intel Skylake CPUs gdb-buildbot
2019-09-25  0:26 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-25 16:37 [binutils-gdb] Remove make_hex_string gdb-buildbot
2019-09-25 18:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-26 11:09 [binutils-gdb] PR24262, plugin search dir doesn't respect --libdir gdb-buildbot
2019-09-26 13:50 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-26 14:43 [binutils-gdb] Remove initialize_utils gdb-buildbot
2019-09-26 14:56 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-26 15:01 [binutils-gdb] Do not expose stub types to Python gdb-buildbot
2019-09-26 15:20 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-26 15:42 [binutils-gdb] Remove gdb_usleep.c gdb-buildbot
2019-09-26 16:55 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-26 17:41 [binutils-gdb] Convert symtab.h function signatures to use bool instead of int gdb-buildbot
2019-09-26 19:33 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
2019-09-27  7:01 [binutils-gdb] Improve ptrace-error detection on Linux targets gdb-buildbot
2019-09-27  9:30 ` Failures on Debian-s390x-m64, branch master gdb-buildbot
     [not found] <@gdb-build>
2019-09-27 10:20 ` gdb-buildbot
2019-09-27 11:33 ` gdb-buildbot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).