Commit Graph

99283 Commits

Author SHA1 Message Date
Matthew Malcomson
c96f148b7b [Patch][binutils] Generic support for parsing numbers in bfloat16 format [5/X]
Hi,

This patch is part of a series that adds support for Armv8.6-A
(Matrix Multiply and BFloat16 extensions).

This patch contains some general refactoring of the atof_ieee
function, exposing a function that allows a higher level of control
over the format of IEEE-like floating point numbers.
This has been done in order to be able to add a directive for assembling
floating point literals in the bfloat16 format in the following patches.

Committed on behalf of Mihail Ionescu.

Tested on arm-none-eabi, arm-none-linux-gnueabihf, aarch64-none-elf
and aarch64-none-linux-gnuwith no issues.

gas/ChangeLog:

2019-10-21  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-10-21  Barnaby Wilks  <barnaby.wilks@arm.com>

	* as.h (atof_ieee_detail): Add prototype for atof_ieee_detail function.
	(atof_ieee): Move some code into the atof_ieee_detail function.
	(atof_ieee_detail): Add function that provides a higher level of control over generating
	IEEE-like numbers.

Is it ok for trunk?

Regards,
Mihail
2019-11-07 17:01:04 +00:00
Matthew Malcomson
aab2c27d9f [binutils][arm] BFloat16 enablement [4/X]
Hi,

This patch is part of a series that adds support for Armv8.6-A
(Matrix Multiply and BFloat16 extensions) to binutils.

This patch introduces BFloat16 instructions to the arm backend.
The following BFloat16 instructions are added: vdot, vfma{l/t},
vmmla, vfmal{t/b}, vcvt, vcvt{t/b}.

gas/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-arm.c (arm_archs): Add armv8.6-a option.
	(cpu_arch_ver): Add TAG_CPU_ARCH_V8 tag for Armv8.6-a.
	* doc/c-arm.texi (-march): New armv8.6-a arch.
	* config/tc-arm.c (arm_ext_bf16): New feature set.
	(enum neon_el_type): Add NT_bfloat value.
	(B_MNEM_vfmat, B_MNEM_vfmab): New bfloat16 encoder
	helpers.
	(BAD_BF16): New message.
	(parse_neon_type): Add bf16 type specifier.
	(enum neon_type_mask): Add N_BF16 type.
	(type_chk_of_el_type): Account for NT_bfloat.
	(el_type_of_type_chk): Account for N_BF16.
	(neon_three_args): Split out from neon_three_same.
	(neon_three_same): Part split out into neon_three_args.
	(CVT_FLAVOUR_VAR): Add bf16_f32 cvt flavour.
	(do_neon_cvt_1): Account for vcvt.bf16.f32.
	(do_bfloat_vmla): New.
	(do_mve_vfma): New function to deal with the mnemonic clash between the BF16
	vfmat and the MVE vfma in a VPT block with a 't'rue condition.
	(do_neon_cvttb_1): Account for vcvt{t,b}.bf16.f32.
	(do_vdot): New
	(do_vmmla): New
	(insns): Add vdot and vmmla mnemonics.
	(arm_extensions): Add "bf16" extension.
	* doc/c-arm.texi: Document "bf16" extension.
	* testsuite/gas/arm/attr-march-armv8_6-a.d: New test.
	* testsuite/gas/arm/bfloat16-bad.d: New test.
	* testsuite/gas/arm/bfloat16-bad.l: New test.
	* testsuite/gas/arm/bfloat16-bad.s: New test.
	* testsuite/gas/arm/bfloat16-cmdline-bad-2.d: New test.
	* testsuite/gas/arm/bfloat16-cmdline-bad-3.d: New test.
	* testsuite/gas/arm/bfloat16-cmdline-bad.d: New test.
	* testsuite/gas/arm/bfloat16-neon.s: New test.
	* testsuite/gas/arm/bfloat16-non-neon.s: New test.
	* testsuite/gas/arm/bfloat16-thumb-bad.d: New test.
	* testsuite/gas/arm/bfloat16-thumb-bad.l: New test.
	* testsuite/gas/arm/bfloat16-thumb.d: New test.
	* testsuite/gas/arm/bfloat16-vfp.d: New test.
	* testsuite/gas/arm/bfloat16.d: New test.
	* testsuite/gas/arm/bfloat16.s: New test.

include/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/arm.h (ARM_EXT2_V8_6A, ARM_AEXT2_V8_6A,
	ARM_ARCH_V8_6A): New.
	* opcode/arm.h (ARM_EXT2_BF16): New feature macro.
	(ARM_AEXT2_V8_6A): Include above macro in definition.

opcodes/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* arm-dis.c (select_arm_features): Update bfd_march_arm_8 with
	Armv8.6-A.
	(coprocessor_opcodes): Add bfloat16 vcvt{t,b}.
	(neon_opcodes): Add bfloat SIMD instructions.
	(print_insn_coprocessor): Add new control character %b to print
	condition code without checking cp_num.
	(print_insn_neon): Account for BFloat16 instructions that have no
	special top-byte handling.

Regression tested on arm-none-eabi.

Is it ok for trunk?

Regards,
Mihail
2019-11-07 16:56:12 +00:00
Matthew Malcomson
33593eafc9 [Patch][binutils][arm] Create a new generic coprocessor array [3/10]
Hi,

This patch is part of a series that adds support for Armv8.6-A
(Matrix Multiply and BFloat16 extensions) to binutils.

Some generic instructions match a large range of encoding space (e.g.
stc, mcr, mrc).
Currently these instructions are in the coprocessor_opcodes array, which
means they are checked before many other instructions when disassembling
arm and thumb32 codes.

This patch moves the generic instructions into a separate array to be
checked later on.
This is done in order to avoid instruction conflict between the generic
instructions and newer ones -- this has already been seen with MVE, and
is also a problem with BFloat16.

One way to avoid the conflict could be to swap the search order between
coprocessor_opcodes and neon_opcodes.
We avoid this since it's a larger change that may introduce extra bugs
(that aren't caught by the testsuite).

We have decided against searching the generic array after searching the
arm specific and thumb32 specific arrays with a similar reasoning about
keeping the change small.

Regression tested with arm-none-linux-gnueabihf.

Committed on behalf of Mihail Ionescu.

opcodes/ChangeLog:

2019-10-29  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-10-29  Matthew Malcomson  <matthew.malcomson@arm.com>

	* arm-dis.c (print_insn_coprocessor,
	print_insn_generic_coprocessor): Create wrapper functions around
	the implementation of the print_insn_coprocessor control codes.
	(print_insn_coprocessor_1): Original print_insn_coprocessor
	function that now takes which array to look at as an argument.
	(print_insn_arm): Use both print_insn_coprocessor and
	print_insn_generic_coprocessor.
	(print_insn_thumb32): As above.

Is it ok for trunk?

Regards,
Mihail
2019-11-07 16:55:29 +00:00
Matthew Malcomson
df6780137d [binutils][aarch64] Bfloat16 enablement [2/X]
Hi,

This patch is part of a series that adds support for Armv8.6-A
(Matrix Multiply and BFloat16 extensions) to binutils.

This patch introduces the following BFloat16 instructions to the
aarch64 backend: bfdot, bfmmla, bfcvt, bfcvtnt, bfmlal[t/b],
bfcvtn2.

Committed on behalf of Mihail Ionescu.

gas/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (vectype_to_qualifier): Special case the
	S_2H operand qualifier.
	* doc/c-aarch64.texi: Document bf16 and bf16mmla4 extensions.
	* testsuite/gas/aarch64/bfloat16.d: New test.
	* testsuite/gas/aarch64/bfloat16.s: New test.
	* testsuite/gas/aarch64/illegal-bfloat16.d: New test.
	* testsuite/gas/aarch64/illegal-bfloat16.l: New test.
	* testsuite/gas/aarch64/illegal-bfloat16.s: New test.
	* testsuite/gas/aarch64/sve-bfloat-movprfx.s: New test.
	* testsuite/gas/aarch64/sve-bfloat-movprfx.d: New test.

include/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (AARCH64_FEATURE_BFLOAT16): New feature macros.
	(AARCH64_ARCH_V8_6): Include BFloat16 feature macros.
	(enum aarch64_opnd_qualifier): Introduce new operand qualifier
	AARCH64_OPND_QLF_S_2H.
	(enum aarch64_insn_class): Introduce new class "bfloat16".
	(BFLOAT16_SVE_INSNC): New feature set for bfloat16
	instructions to support the movprfx constraint.

opcodes/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-asm.c (aarch64_ins_reglane): Use AARCH64_OPND_QLF_S_2H
	in reglane special case.
	* aarch64-dis-2.c (aarch64_opcode_lookup_1,
	aarch64_find_next_opcode): Account for new instructions.
	* aarch64-dis.c (aarch64_ext_reglane): Use AARCH64_OPND_QLF_S_2H
	in reglane special case.
	* aarch64-opc.c (struct operand_qualifier_data): Add data for
	new AARCH64_OPND_QLF_S_2H qualifier.
	* aarch64-tbl.h (QL_BFDOT QL_BFDOT64, QL_BFDOT64I, QL_BFMMLA2,
	QL_BFCVT64, QL_BFCVTN64, QL_BFCVTN2_64): New qualifiers.
	(aarch64_feature_bfloat16, aarch64_feature_bfloat16_sve,
	aarch64_feature_bfloat16_bfmmla4): New feature sets.
	(BFLOAT_SVE, BFLOAT): New feature set macros.
	(BFLOAT_SVE_INSN, BFLOAT_BFMMLA4_INSN, BFLOAT_INSN): New macros
	to define BFloat16 instructions.
	(aarch64_opcode_table): Define new instructions bfdot,
	bfmmla, bfcvt, bfcvtnt, bfdot, bfdot, bfcvtn, bfmlal[b/t]
	bfcvtn2, bfcvt.

Regression tested on aarch64-elf.

Is it ok for trunk?

Regards,
Mihail
2019-11-07 16:42:36 +00:00
Matthew Malcomson
8ae2d3d9ea [gas][aarch64] Armv8.6-a option [1/X]
Hi,

This patch is part of a series that adds support for Armv8.6-A
to binutils.
This first patch adds the Armv8.6-A flag to binutils.
No instructions are behind it at the moment.

Commited on behalf of Mihail Ionescu.

gas/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/tc-aarch64.c (armv8.6-a): New arch.
	* doc/c-aarch64.texi (armv8.6-a): Document new arch.

include/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* opcode/aarch64.h (AARCH64_FEATURE_V8_6): New.
	(AARCH64_ARCH_V8_6): New.

opcodes/ChangeLog:

2019-11-07  Mihail Ionescu  <mihail.ionescu@arm.com>
2019-11-07  Matthew Malcomson  <matthew.malcomson@arm.com>

	* aarch64-tbl.h (ARMV8_6): New macro.

Is it ok for trunk?

Regards,
Mihail
2019-11-07 16:21:17 +00:00
Nick Clifton
e264b5b7a5 Allow the --output option of the "ar" prorgam to extract files to locations outside of the current directory.
* ar.c (open_output_file): Check for filename validity before
	prefixing with output directory.
	Display the constructed output filename if in verbose mode.
	(extract_file): Let open_output_file display the filename.
2019-11-07 11:56:54 +00:00
Nick Clifton
ef07b8082e Fix bug merging notes with objcopy when no merging results in zeroes being written back into the note section.
* objcopy.c (copy_object): Skip note sections that do not have
	an output section.  Always copy note sections, even if no
	changes are made.
2019-11-07 11:36:06 +00:00
Tom de Vries
496af5c811 [gdb/contrib] Add words.sh script
Add a script that takes a list of files as arguments and output a list of
words from the C comments with their frequencies.

For:
...
$ ./gdb/contrib/words.sh $(find gdb -type f -name "*.c" -o -name "*.h")
...
it generates a list of ~15000 words prefixed with frequency.

This could be used to generate a dictionary that is kept as part of the
sources, against which new code can be checked, generating a warning or
error.  The hope is that misspellings would trigger this frequently, and rare
words rarely, otherwise the burden of updating the dictionary would be too
much.

And for:
...
$ ./gdb/contrib/words.sh -f 1 $(find gdb -type f -name "*.c" -o -name "*.h")
...
it generates a list of ~5000 words with frequency 1.

This can be used to scan for misspellings manually.

Change-Id: I7b119c9a4519cdbf62a3243d1df2927c80813e8b
2019-11-07 10:49:56 +01:00
Alan Modra
595d3787e9 Remove CR16C support
I think it is past time to remove CR16C support.  CR16C was added in
2004, and only for ld.  gas and binutils support is lacking, and there
have been no commits to bfd/elf32-cr16c.c other than warning fixes or
global maintainers making changes to all targets.  I see no maintainer
listed for CR16C, and no commits from anyone at NSC supporting the
target.  Furthermore, at the time the CR16 support was added in 2007,
config.sub was changed upstream to no longer recognise cr16c as a
valid cpu.  That means the CR16C ld support is only available as a
secondary target by configuring with, for example,
--enable-targets=all or --enable-targets=cr16c-unknown-elf.  No
testing of the CR16C target is possible.

include/
	* elf/cr16c.h: Delete.
bfd/
	* cpu-cr16c.c: Delete.
	* elf32-cr16c.c: Delete.
	* Makefile.am,
	* archures.c,
	* config.bfd,
	* configure.ac,
	* reloc.c,
	* targets.c: Remove cr16c support.
	* Makefile.in,
	* bfd-in2.h,
	* configure,
	* libbfd.h,
	* po/SRC-POTFILES.in: Regenerate.
ld/
	* emulparams/elf32cr16c.sh: Delete.
	* scripttempl/elf32cr16c.sc: Delete.
	* Makefile.am,
	* configure.tgt: Remove cr16c support.
	* NEWS: Mention removal of cr16c.
	* Makefile.in,
	* po/BLD-POTFILES.in: Regenerate.
2019-11-07 20:09:20 +10:30
Alan Modra
984b909a23 Order targets in ld/configure.tgt
The target list was supposed to be more or less alphabetically sorted,
but this wasn't anywhere near the case.  The comment about keeping
architecture variants together seems odd to me, and is no doubt the
reason why ix86 and x86_64 were grouped together, so I removed that
comment.  The patch doesn't change order of entries for a given cpu.

	* configure.tgt: Order targets by cpu.
2019-11-07 20:09:20 +10:30
Jan Beulich
142861dfd5 x86: support further AMD Zen2 instructions
Both RDPRU and MCOMMIT have been publicly documented meanwhile:
https://www.amd.com/system/files/TechDocs/24594.pdf.
2019-11-07 09:29:14 +01:00
Jan Beulich
081e283faf x86: adjust register names printed for MONITOR/MWAIT
As the comments (here: almost, in the opcode table: fully) correctly
state - all register operands except MONITOR's address one are fixed
at 32 bit size. Don't print 64-bit registers there.

Also adjust x86-64-suffix.d's name such that it wouldn't be identical to
x86-64-rep-suffix.d's, but instead resemble that of its sibling
x86-64-suffix-intel.d.
2019-11-07 09:28:20 +01:00
Jan Beulich
c050c89a80 x86/Intel: drop IgnoreSize from operand-less MOVSD/CMPSD again
These were mistakenly added by d241b91073 ("x86/Intel: correct MOVSD and
CMPSD handling"). This addresses part of PR/gas 25167.
2019-11-07 09:27:16 +01:00
Alan Modra
3c3358ca1a aarch64 and arm testsuite fixes for targets lacking shared libs
* testsuite/ld-aarch64/aarch64-elf.exp: Run tests requiring pie
	or shared library support only when check_shared_lib_support.
	* testsuite/ld-aarch64/bti-pac-plt-1.d: Likewise.
	* 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/dt_textrel.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-258-dyn-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-259-dyn-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-264-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-266-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-268-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-269-bad.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-515-be.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-515.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-516-be.d: Likewise.
	* testsuite/ld-aarch64/emit-relocs-516.d: Likewise.
	* testsuite/ld-aarch64/farcall-b-plt.d: Likewise.
	* testsuite/ld-aarch64/farcall-bl-plt.d: Likewise.
	* testsuite/ld-aarch64/gc-plt-relocs.d: Likewise.
	* testsuite/ld-aarch64/gc-relocs-257-dyn.d: Likewise.
	* testsuite/ld-aarch64/ifunc-1-local.d: Likewise.
	* testsuite/ld-aarch64/ifunc-1.d: Likewise.
	* testsuite/ld-aarch64/ifunc-12.d: Likewise.
	* testsuite/ld-aarch64/ifunc-13.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14a.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14c.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14d.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14e.d: Likewise.
	* testsuite/ld-aarch64/ifunc-14f.d: Likewise.
	* testsuite/ld-aarch64/ifunc-15.d: Likewise.
	* testsuite/ld-aarch64/ifunc-16.d: Likewise.
	* testsuite/ld-aarch64/ifunc-18a.d: Likewise.
	* testsuite/ld-aarch64/ifunc-18b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-19a.d: Likewise.
	* testsuite/ld-aarch64/ifunc-19b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-2-local.d: Likewise.
	* testsuite/ld-aarch64/ifunc-2.d: Likewise.
	* testsuite/ld-aarch64/ifunc-20.d: Likewise.
	* testsuite/ld-aarch64/ifunc-21.d: Likewise.
	* testsuite/ld-aarch64/ifunc-3a.d: Likewise.
	* testsuite/ld-aarch64/ifunc-3b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-5b-local.d: Likewise.
	* testsuite/ld-aarch64/ifunc-5b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-6b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-7b.d: Likewise.
	* testsuite/ld-aarch64/ifunc-7c.d: Likewise.
	* testsuite/ld-aarch64/pac-plt-1.d: Likewise.
	* testsuite/ld-aarch64/pac-plt-2.d: Likewise.
	* testsuite/ld-aarch64/pcrel_pic_defined.d: Likewise.
	* testsuite/ld-aarch64/pcrel_pic_undefined.d: Likewise.
	* testsuite/ld-aarch64/pie-bind-locally.d: Likewise.
	* testsuite/ld-aarch64/plt_mapping_symbol.d: Likewise.
	* testsuite/ld-aarch64/pr20402.d: Likewise.
	* testsuite/ld-aarch64/pr22764.d: Likewise.
	* testsuite/ld-aarch64/property-bti-pac1.d: Likewise.
	* testsuite/ld-aarch64/protected-data.d: Likewise.
	* testsuite/ld-aarch64/rela-abs-relative-be.d: Likewise.
	* testsuite/ld-aarch64/rela-abs-relative-opt.d: Likewise.
	* testsuite/ld-aarch64/rela-abs-relative.d: Likewise.
	* testsuite/ld-aarch64/relasz.d: Likewise.
	* testsuite/ld-aarch64/relocs-1027-symbolic-func.d: Likewise.
	* testsuite/ld-aarch64/tls-desc-ie-ilp32.d: Likewise.
	* testsuite/ld-aarch64/tls-desc-ie.d: Likewise.
	* testsuite/ld-aarch64/tls-large-desc-be.d: Likewise.
	* testsuite/ld-aarch64/tls-large-desc.d: Likewise.
	* testsuite/ld-aarch64/tls-large-ie-be.d: Likewise.
	* testsuite/ld-aarch64/tls-large-ie.d: Likewise.
	* testsuite/ld-aarch64/tls-relax-gdesc-le-now.d: Likewise.
	* testsuite/ld-aarch64/tls-small-ld.d: Likewise.
	* testsuite/ld-aarch64/tls-tiny-desc.d: Likewise.
	* testsuite/ld-aarch64/tls-tiny-gd.d: Likewise.
	* testsuite/ld-aarch64/tls-tiny-ie.d: Likewise.
	* testsuite/ld-aarch64/tls-tiny-ld.d: Likewise.
	* testsuite/ld-aarch64/tlsle-symbol-offset.d: Likewise.
	* testsuite/ld-aarch64/tlsle.d: Likewise.
	* testsuite/ld-aarch64/variant_pcs-now.d: Likewise.
	* testsuite/ld-aarch64/variant_pcs-shared.d: Likewise.
	* testsuite/ld-arm/arm-elf.exp: Likewise.  Remove --hash-style=sysv
	from static tests.  Consolidate armelftests_common_* vars into one.
	* testsuite/ld-arm/gc-hidden-1.d: Require check_shared_lib_support.
	* testsuite/ld-arm/movw-shared-1.d: Likewise.
	* testsuite/ld-arm/movw-shared-2.d: Likewise.
	* testsuite/ld-arm/movw-shared-3.d: Likewise.
	* testsuite/ld-arm/movw-shared-4.d: Likewise.
	* testsuite/ld-arm/pie-bind-locally.d: Likewise.
	* testsuite/ld-arm/protected-data.d: Likewise.
	* testsuite/ld-arm/rel32-reject-pie.d: Likewise.
	* testsuite/ld-arm/rel32-reject.d: Likewise.
	* testsuite/ld-arm/thumb2-bl-undefweak.d: Likewise.
	* testsuite/ld-arm/thumb2-bl-undefweak1.d: Likewise.
2019-11-07 11:55:28 +10:30
GDB Administrator
d70fc6126f Automatic date update in version.in 2019-11-07 00:00:32 +00:00
Christian Biesinger
ca3a04f65d Use strtok_r instead of strtok
Improves threadsafety. This will be important when the patch series at
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/176
lands.

gdb/ChangeLog:

2019-11-06  Christian Biesinger  <cbiesinger@google.com>

	* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
	* mi/mi-main.c (output_cores): Likewise.
	* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
	(linux_xfer_osdata_modules): Likewise.
	* remote.c (register_remote_support_xml): Likewise.
	* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
	* xml-syscall.c (syscall_create_syscall_desc): Likewise.

gdb/gdbserver/ChangeLog:

2019-11-06  Christian Biesinger  <cbiesinger@google.com>

	* linux-x86-low.c (x86_linux_process_qsupported): Use strtok_r
	instead of strtok.
	* server.c (handle_query): Likewise.
	(captured_main): Likewise.

Change-Id: Ief6138965a24398e5fc064598cd8f2abd3b5047c
2019-11-06 14:03:11 -06:00
Christian Biesinger
848288b363 Regenerate gnulib files
It looks like autoheader and automake weren't run for commit
73cc72729a.

Note, it looks like the installed gettext version affects the
generated output here, I used 0.19.8.1 to get no diff.

gnulib/ChangeLog:

2019-11-06  Christian Biesinger  <cbiesinger@google.com>

	* config.in: Regenerate.
	* import/Makefile.in: Regenerate.

Change-Id: Iadd43023713a77921b0f850184a19afb1517be02
2019-11-06 12:34:02 -06:00
Tom Tromey
e0eac551da Remove some includes of readline.h
I went through most of the spots that include readline.h and, when
appropriate, either removed the include or changed it to include
tilde.h.

Note that remote-sim.c and bsd-kvm.c could probably include tilde.h
instead, but I did not change these.  I think I can't build the
latter, and I didn't want to set up a sim build for the former.

Tested by rebuilding.

gdb/ChangeLog
2019-11-06  Tom Tromey  <tom@tromey.com>

	* tui/tui-interp.c: Don't include readline.h.
	* tui/tui-hooks.c: Don't include readline.h.
	* symmisc.c: Include tilde.h, not readline.h.
	* symfile.c: Include tilde.h, not readline.h.
	* source.c: Include tilde.h, not readline.h.
	* solib.c: Include tilde.h, not readline.h.
	* psymtab.c: Include tilde.h, not readline.h.
	* exec.c: Include tilde.h, not readline.h.
	* corelow.c: Include tilde.h, not readline.h.
	* cli/cli-dump.c: Include tilde.h, not readline.h.
	* cli/cli-cmds.c: Don't include readline.h.

Change-Id: I60487a190c43128b800ef77517d1ab42957571d7
2019-11-06 07:29:43 -07:00
Christian Eggers
75802ccb60 Fix an off-by-one error in the IN_RANGE macro used by readelf. Add another use of the macro.
* readelf.c (IN_RANGE): Rename parameter OFF to NELEM. Add
	comment.  Catch potential integer overflow and fix off by one
	error whilst checking reloc location against section size.
	(apply_relocations): Use IN_RANGE macro.
2019-11-06 12:29:23 +00:00
Christian Eggers
b0a7971ad4 ld: Fix printed sizes in map file
For targets with octets_per_byte > 1, testsuite/ld-scripts/rgn-over*
produce wrong sizes in the generated map files:

.text           0x0000000000001000        0x6
                                          ^^^ # correct
 *(.txt)
 .txt           0x0000000000001000        0xc tmpdir/rgn-over.o
                                          ^^^ # should also be 0x6

	* ldlang.c (print_input_section): Shift printed size by opb_shift.
2019-11-06 17:53:34 +10:30
Tom Tromey
825165c57e Fix regression from TUI disassembly style patch
My previous patch to add styling to the TUI disassembly failed to
correctly fix a bug that Simon had pointed out in review.  This patch
fixes the bug.

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

	* tui/tui-disasm.c (struct tui_asm_line) <addr_size>: New member.
	(tui_disassemble): Set addr_size.
	(tui_disasm_window::set_contents): Use addr_size.

Change-Id: Ic0152f3b82a2f79be28ae46d590096661f271580
2019-11-05 18:39:23 -07:00
GDB Administrator
8e71a6e725 Automatic date update in version.in 2019-11-06 00:00:41 +00:00
Tom Tromey
91ae903f89 Remove la_get_string member
The la_get_string member of struct language_defn was intended to
provide a way to fetch string data from a "string" object in a
language-dependent way.  However, it turned out that this was never
needed, and was only ever implemented for C.  This patch removes the
language hook entirely.

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

	* rust-lang.c (rust_language_defn): Update.
	* python/py-value.c (valpy_string): Call c_get_string.
	* p-lang.c (pascal_language_defn): Update.
	* opencl-lang.c (opencl_language_defn): Update.
	* objc-lang.c (objc_language_defn): Update.
	* m2-lang.c (m2_language_defn): Update.
	* language.c (unknown_language_defn, auto_language_defn): Update.
	(default_get_string): Remove.
	* guile/scm-value.c (gdbscm_value_to_string): Use c_get_string.
	* go-lang.c (go_language_defn): Update.
	* f-lang.c (f_language_defn): Update.
	* d-lang.c (d_language_defn): Update.
	* c-lang.c (c_language_defn, cplus_language_defn)
	(asm_language_defn, minimal_language_defn): Update.
	* ada-lang.c (ada_language_defn): Update.
	* language.h (struct language_defn) <la_get_string>: Remove.
	(LA_GET_STRING): Remove.
	(default_get_string): Don't declare.

Change-Id: Ia97763dfe34dc8ecb46587f7a651f8af9be8fdbd
2019-11-05 15:36:28 -07:00
Tom Tromey
1df2f9ef6c Style disassembly in the TUI
This patch changes the TUI disassembly window to style its contents.
The styling should be identical to what is seen in the CLI.  This
involved a bit of rearrangement, so that the source and disassembly
windows could share both the copy_source_line utility function, and
the ability to react to changes in "set style enabled".

This version introduces a new function to strip the styling from the
address string when computing the length.  As a byproduct, it also
removes the unused "insn_size" computation from
tui_disasm_window::set_contents.

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

	* tui/tui-source.h (struct tui_source_window): Inline
	constructor.  Remove destructor.
	<style_changed, m_observable>: Move to superclass.
	* tui/tui-winsource.h (tui_copy_source_line): Declare.
	(struct tui_source_window_base): Move private members to end.
	<style_changed, m_observable>: Move from tui_source_window.
	* tui/tui-winsource.c (tui_copy_source_line): Move from
	tui-source.c.  Rename from copy_source_line.  Add special handling
	for negative line number.
	(tui_source_window_base::style_changed): Move from
	tui_source_window.
	(tui_source_window_base): Register observer.
	(~tui_source_window_base): New.
	* tui/tui-source.c (copy_source_line): Move to tui-winsource.c;
	rename.
	(tui_source_window::set_contents): Use tui_copy_source_line.
	(tui_source_window::tui_source_window): Move to tui-source.h.
	(tui_source_window::~tui_source_window): Remove.
	(tui_source_window::style_changed): Move to superclass.
	* tui/tui-disasm.c (tui_disassemble): Create string file with
	styling, when possible.  Add "addr_size" parameter.
	(tui_disasm_window::set_contents): Use tui_copy_source_line.
	Don't compute maximum size.
	(len_without_escapes): New function

Change-Id: I8722635eeecbbb1633d943a65b856404c2d467b0
2019-11-05 15:23:36 -07:00
Tom Tromey
5d0510553e Change tui_source_element::line to have type std::string
This changes tui_source_element::line to be of type std::string.  This
reduces the number of copies made.

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

	* tui/tui-winsource.h (struct tui_source_element) <line>: Now a
	std::string.
	* 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.

Change-Id: Id600f3e1d386a2911f187366e05e2ec599068dd2
2019-11-05 15:23:36 -07:00
Christian Biesinger
ade7beeae4 Fix ARI warning in symtab.h
gdb/ChangeLog:

2019-11-05  Christian Biesinger  <cbiesinger@google.com>

	* symtab.h (gdb_static_assert): Put && operator at the beginning
	of the line instead of the end.

Change-Id: I6d05c2f5e46c3f317ba97458509b2da9fd03464b
2019-11-05 14:54:27 -06:00
Tim R?hsen
3a70f7e8e3 Fix memory allocation and release problems in the bfd documentation processor.
* doc/chew.c (add_to_definition): Use correct type when
	calculating size of array reallocation.
	(nextword): Always initialise the word return parameter.
	(compile): Check return value of nextword().
2019-11-05 16:03:07 +00:00
Jan Beulich
7abb8d8111 x86: fold OP_Mwaitx() into OP_Mwait()
There's no need to have separate functions, the difference can easily be
expressed using the function arguments.
2019-11-05 09:19:50 +01:00
Jan Beulich
267b8516f2 x86: split MONITORX/MWAITX entries
Both encodings do not ignore the 66/F3/F2 prefixes, so don't have the
disassembler ignore them either.
2019-11-05 09:19:10 +01:00
Jan Beulich
f8687e93a6 x86: consolidate disassembler enum naming a little
The original idea looks to have been for names to be composed in the
order that decoding gets done, which helps both reading and modifying
the code. Switch (back) to this model for some of the affected non-
vector insn enumerators.
2019-11-05 09:18:23 +01:00
Alan Modra
f2aaebdb97 GENERATE_SHLIB_SCRIPT vs. EMBEDDED.
A target that sets EMBEDDED non-empty is one that doesn't want to put
the ELF file header or program header in a memory image.  Likely the
target isn't interested in supporting dynamically loaded executables,
shared libraries, or PIEs, because loaders for such binaries generally
require program headers to be present.  This isn't 100% true though.
The target might be one where the loader accesses the file system in
order to retrieve headers.

Also, note that not all "shared libraries" require gcc -shared or the
shared library support in the linker.  I believe one implementation of
shared libraries on uclinux is like this.

So, this patch removes GENERATE_SHLIB_SCRIPT and GENERATE_PIE_SCRIPT
in most emulparams files where EMBEDDED is set, restoring the shared
lib and pie support in emulparams files that unset EMBEDDED after
including a file where the support is removed.

Exceptions to the general rule that EMBEDDED disables shared libs are:
  arm*-*-symbianelf*, where the OS wants shared library support
  without ELF program headers in the image, and

  sh*-*-uclinux*, where I've left things as they were, ie. both
  EMBEDDED and GENERATE_SHLIB_SCRIPT because I'm unsure as to the
  shared library scheme.

	* emulparams/aarch64elf.sh (GENERATE_SHLIB_SCRIPT),
	(GENERATE_PIE_SCRIPT): Don't set.
	* emulparams/aarch64elf32.sh (GENERATE_SHLIB_SCRIPT),
	(GENERATE_PIE_SCRIPT): Don't set.
	* emulparams/arcelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
	* emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT),
	(GENERATE_PIE_SCRIPT): Don't set.
	* emulparams/armelf_fbsd.sh (GENERATE_SHLIB_SCRIPT): Set.
	* emulparams/armelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
	(GENERATE_PIE_SCRIPT): Set.
	* emulparams/armelf_vxworks.sh (GENERATE_SHLIB_SCRIPT): Set.
	* emulparams/armsymbian.sh (GENERATE_SHLIB_SCRIPT): Set.
	* emulparams/elf32bfin.sh (GENERATE_SHLIB_SCRIPT): Don't set.
	* emulparams/elf32microblaze.sh (GENERATE_SHLIB_SCRIPT): Don't set.
	* emulparams/score3_elf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
	* emulparams/shelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
	* emulparams/shelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
	(GENERATE_PIE_SCRIPT): Set.
	* emulparams/shelf_uclinux.sh (GENERATE_SHLIB_SCRIPT): Set.
2019-11-05 14:32:19 +10:30
Alan Modra
cbb54a288a Unset EMBEDDED rather than assigning as empty
No real changes here, just making it that much easier to find targets
that set EMBEDDED to a non-empty string.

	* emulparams/elf32bfinfd.sh: Unset EMBEDDED rather assigning as empty.
	* emulparams/elf32frvfd.sh: Likewise.
	* emulparams/elf32lm32fd.sh: Likewise.
	* emulparams/i386lynx.sh: Likewise.
2019-11-05 13:58:01 +10:30
GDB Administrator
73ddaae155 Automatic date update in version.in 2019-11-05 00:00:18 +00:00
Christian Biesinger
3573abe1de Add static_asserts for the sizes of space-critical structs
Specifically the three structs mentioned in symtab.h:
- general_symbol_info
- symbol
- partial_symbol

This ensures that those structs won't accidentally get bigger.

gdb/ChangeLog:

2019-11-04  Christian Biesinger  <cbiesinger@google.com>

	* psympriv.h: Add static_asserts for sizeof (general_symbol_info)
	and sizeof (symbol).
	* symtab.h: Add a static_assert for sizeof (partial_symbol).

Change-Id: Idd68320aa3e79ee7cc749019724636a58ce4b9c6
2019-11-04 12:13:09 -06:00
Rainer Orth
dae8b3eb23 Obsolete Solaris 10 support
Here's the patch corresponding to the Solaris 10 obsoletion announcement

	https://sourceware.org/ml/gdb/2019-10/msg00008.html

Right now it doesn't remove any code, but obviates the need to test on
that ancient platform.  Besides, some of the patches I have in my queue
would require different solutions for Solaris 10 and 11.

There are a few comment-only references that I've kept since they are
still correct as is, even when GDB doesn't support Solaris 10 any
longer.  The only code fragment I've left in is support for
/proc/<pid/path/a.out in procfs.c (procfs_target::pid_to_exec_file):
while current Solaris 11 updates provide /proc/<pid>/execname, that
wasn't present in Solaris 11.0 and still isn't in current Illumos and I
didn't want to make live harder for them.

Tested on i386-pc-solaris2.10 (obsolete configuration rejected) and
x86_64-pc-linux-gnu x sparc64-solaris2.10 (likewise)
resp. x86_64-pc-linux-gnu x sparcv9-solaris2.11 (still builds; I'm using
the sparcv9 form for 64-bit SPARC customary on Solaris in the
MAINTAINERS file now).

	* NEWS (Changes since GDB 8.3): Document Solaris 10 removal.
	* configure.host: Mark *-*-solaris2.10* obsolete.
	* configure.tgt: Mark Solaris < 11 obsolete.
	* MAINTAINERS (Target Instruction Set Architectures) <sparc>:
	Update target triplet.
2019-11-04 18:13:14 +01:00
Jan Beulich
85b80b0f9b x86: re-arrange process_operands()
Alter the sequence of conditions evaluated, without affecting the
overall result. This is going to help subsequent changes (and as a nice
side effect also slightly reduces overall indentation depth).

While doing this take the liberty of simplifying the calculation of the
operand index of the register operand in ShortForm handling.
2019-11-04 15:48:38 +01:00
Nick Clifton
5103274ffc Fix potential array overruns when disassembling corrupt v850 binaries.
* v850-dis.c (get_v850_sreg_name): New function.  Returns the name
	of a v850 system register.  Move the v850_sreg_names array into
	this function.
	(get_v850_reg_name): Likewise for ordinary register names.
	(get_v850_vreg_name): Likewise for vector register names.
	(get_v850_cc_name): Likewise for condition codes.
	* get_v850_float_cc_name): Likewise for floating point condition
	codes.
	(get_v850_cacheop_name): Likewise for cache-ops.
	(get_v850_prefop_name): Likewise for pref-ops.
	(disassemble): Use the new accessor functions.
2019-11-04 12:02:20 +00:00
Fāng-ruì Sòng
64f52b3ec1 Implement objcopy/strip --keep-section=<sectionpattern>
llvm-objcopy and llvm-strip support an option --keep-section that
keeps some sections from being removed.

	* objcopy.c (enum option_values): Add OPTION_KEEP_SECTION.
	(SECTION_CONTEXT_KEEP): Define.  Adjust other SECTION_CONTEXT macros.
	(copy_usage): Describe --keep-section.
	(strip_usage): Likewise.
	(copy_main): Handle SECTION_CONTEXT_KEEP.
	(strip_main): Likewise.
	(is_strip_section_1): Likewise.
	* testsuite/binutils-all/objcopy.exp: Add tests.
	* testsuite/binutils-all/keep-section-1.d: New test driver file.
	* testsuite/binutils-all/keep-section-2.d: Likewise.
	* doc/binutils.texi: Document the new feature.
	* NEWS: Mention the new feature.
2019-11-04 11:55:28 +10:30
GDB Administrator
5e874de30b Automatic date update in version.in 2019-11-04 00:00:16 +00:00
GDB Administrator
10d2e6b9c9 Automatic date update in version.in 2019-11-03 00:01:13 +00:00
Tom de Vries
11af934b5c [gdb/testsuite] Remove superfluous 3rd argument from gdb_test call (4)
There's a pattern:
...
gdb_test <command> <pattern> <command>
...
that can be written shorter as:
...
gdb_test <command> <pattern>
...

Detect this pattern in proc gdb_test:
...
     global gdb_prompt
     upvar timeout timeout

     if [llength $args]>2 then {
        set message [lindex $args 2]
+       if { $message == [lindex $args 0] && [llength $args] == 3 } {
+           error "HERE"
+       }
     } else {
         set message [lindex $args 0]
     }
...
and fix all occurrences in the testsuite/gdb.base subdir.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-11-02  Tom de Vries  <tdevries@suse.de>

	* gdb.base/advance.exp: Drop superfluous 3rd argument to gdb_test.
	* gdb.base/anon.exp: Same.
	* gdb.base/auto-connect-native-target.exp: Same.
	* gdb.base/call-ar-st.exp: Same.
	* gdb.base/catch-syscall.exp: Same.
	* gdb.base/commands.exp: Same.
	* gdb.base/default.exp: Same.
	* gdb.base/display.exp: Same.
	* gdb.base/float.exp: Same.
	* gdb.base/foll-fork.exp: Same.
	* gdb.base/help.exp: Same.
	* gdb.base/info-macros.exp: Same.
	* gdb.base/info-proc.exp: Same.
	* gdb.base/info-target.exp: Same.
	* gdb.base/long_long.exp: Same.
	* gdb.base/macscp.exp: Same.
	* gdb.base/memattr.exp: Same.
	* gdb.base/nofield.exp: Same.
	* gdb.base/pointers.exp: Same.
	* gdb.base/printcmds.exp: Same.
	* gdb.base/ptype.exp: Same.
	* gdb.base/restore.exp: Same.
	* gdb.base/return.exp: Same.
	* gdb.base/scope.exp: Same.
	* gdb.base/set-noassign.exp: Same.
	* gdb.base/setshow.exp: Same.
	* gdb.base/shlib-call.exp: Same.
	* gdb.base/signals.exp: Same.
	* gdb.base/sigstep.exp: Same.
	* gdb.base/skip.exp: Same.
	* gdb.base/solib-symbol.exp: Same.
	* gdb.base/stap-probe.exp: Same.
	* gdb.base/step-line.exp: Same.
	* gdb.base/step-test.exp: Same.
	* gdb.base/style.exp: Same.
	* gdb.base/varargs.exp: Same.
	* gdb.base/vla-datatypes.exp: Same.
	* gdb.base/vla-ptr.exp: Same.
	* gdb.base/vla-sideeffect.exp: Same.
	* gdb.base/volatile.exp: Same.
	* gdb.base/watch-cond-infcall.exp: Same.
	* gdb.base/watchpoint.exp: Same.

Change-Id: Ifd24dc13d552e7dd03f9049db419b08c6adc4112
2019-11-02 06:55:10 +01:00
Tom de Vries
e96ec2bab7 [gdb/testsuite] Remove superfluous 3rd argument from gdb_test call (3)
There's a pattern:
...
gdb_test <command> <pattern> <command>
...
that can be written shorter as:
...
gdb_test <command> <pattern>
...

Detect this pattern in proc gdb_test:
...
     global gdb_prompt
     upvar timeout timeout

     if [llength $args]>2 then {
        set message [lindex $args 2]
+       if { $message == [lindex $args 0] && [llength $args] == 3 } {
+           error "HERE"
+       }
     } else {
         set message [lindex $args 0]
     }
...
and fix all occurrences in the testsuite/gdb.cp subdir.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-11-02  Tom de Vries  <tdevries@suse.de>

	* gdb.cp/anon-union.exp: Drop superfluous 3rd argument to gdb_test.
	* gdb.cp/cpexprs.exp: Same.
	* gdb.cp/except-multi-location.exp: Same.
	* gdb.cp/exceptprint.exp: Same.
	* gdb.cp/gdb2384.exp: Same.
	* gdb.cp/inherit.exp: Same.
	* gdb.cp/m-static.exp: Same.
	* gdb.cp/meth-typedefs.exp: Same.
	* gdb.cp/misc.exp: Same.
	* gdb.cp/namespace.exp: Same.
	* gdb.cp/non-trivial-retval.exp: Same.
	* gdb.cp/overload.exp: Same.
	* gdb.cp/pr17132.exp: Same.
	* gdb.cp/re-set-overloaded.exp: Same.
	* gdb.cp/rvalue-ref-types.exp: Same.
	* gdb.cp/templates.exp: Same.

Change-Id: I0254d0cea71e7376aedb078166188a8010eeaebe
2019-11-02 06:55:10 +01:00
GDB Administrator
a1dc3a23d0 Automatic date update in version.in 2019-11-02 00:00:15 +00:00
Tom Tromey
5df96a4e6e Simplify print_sys_errmsg
On irc, Christian pointed out that print_sys_errmsg could be
simplified by avoiding alloca entirely.  This patch implements this.

gdb/ChangeLog
2019-11-01  Tom Tromey  <tromey@adacore.com>

	* utils.c (print_sys_errmsg): Simplify.

Change-Id: Ic399dade274ea61b63ef0540b3a3be2f0f80160a
2019-11-01 10:34:21 -06:00
Tom Tromey
b74816496d Fix up safe_strerror constification
The earlier patch to constify safe_strerror missed a couple of spots,
corrected here.

gdb/ChangeLog
2019-11-01  Tom Tromey  <tromey@adacore.com>

	* gdbsupport/mingw-strerror.c (safe_strerror): Constify result.

Change-Id: I36d5ced144d27b1a6734d9ab9a10a7b9f339ae88
2019-11-01 10:34:21 -06:00
Christian Biesinger
e48f6033b0 Move check for strerror_r to common.m4 where it belongs
gdb/ChangeLog:

2019-11-01  Christian Biesinger  <cbiesinger@google.com>

	* configure: Regenerate.
	* configure.ac: Remove check for strerror_r.
	* gdbsupport/common.m4: Check for strerror_r.

gdb/gdbserver/ChangeLog:

2019-11-01  Christian Biesinger  <cbiesinger@google.com>

	* configure: Regenerate.
	* configure.ac: Remove check for strerror_r.

Change-Id: Ibc290c3f84b1db23e998cffdbe2c1f97651d2a8d
2019-11-01 10:13:44 -05:00
Luis Machado
bd5766ec68 [ARM, thumb] Fix disassembling bug after reloading a symbol file
The speed optimization from commit 5f6cac4085
made GDB skip reloading all symbols when the same symbol file is reloaded.

As a result, ARM targets only read the mapping symbols the first time we
load a symbol file. When reloaded, the speed optimization above will
cause an early return and gdbarch_record_special_symbol won't be called to
save mapping symbol data, which in turn affects disassembling of thumb
instructions.

First load and correct disassemble output:

Dump of assembler code for function main:
    0x0000821c <+0>:     bx      pc
    0x0000821e <+2>:     nop
    0x00008220 <+4>:     mov     r0, #0
    0x00008224 <+8>:     bx      lr

Second load and incorrect disassemble output:

Dump of assembler code for function main:
    0x0000821c <+0>:     bx      pc
    0x0000821e <+2>:     nop
    0x00008220 <+4>:     movs    r0, r0
    0x00008222 <+6>:     b.n     0x8966
    0x00008224 <+8>:     vrhadd.u16      d14, d14, d31

This happens because the mapping symbol data is stored in an objfile_key-based
container, and that data isn't preserved across the two symbol loading
operations.

The following patch fixes this by storing the mapping symbol data in a
bfd_key-based container, which doesn't change as long as the bfd is the same.

I've also added a new test to verify the correct disassemble output.

gdb/ChangeLog:

2019-11-01  Luis Machado  <luis.machado@linaro.org>

	PR gdb/25124

	* arm-tdep.c (arm_per_objfile): Rename to ...
	(arm_per_bfd): ... this.
	(arm_objfile_data_key): Rename to ...
	(arm_bfd_data_key): ... this.
	(arm_find_mapping_symbol): Adjust access to new bfd_key-based
	data.
	(arm_record_special_symbol): Likewise.

gdb/testsuite/ChangeLog:

2019-11-01  Luis Machado  <luis.machado@linaro.org>

	PR gdb/25124

	* gdb.arch/pr25124.S: New file.
	* gdb.arch/pr25124.exp: New file.

Change-Id: I22c3e6ebe9bfedad66d56fe9656994fa1761c485
2019-11-01 10:11:17 -03:00
GDB Administrator
d0d6922c68 Automatic date update in version.in 2019-11-01 00:00:27 +00:00
Andrew Burgess
e170989694 gdb: Don't print a newline in language la_print_typedef methods
When calling the language la_print_typedef method, don't include a
newline at the end, instead print the newline from the users of
la_print_typedef.

This change will be useful in a later commit when the output from
la_print_typedef will be placed into an MI output field, in which case
the trailing newline is not required.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* ada-typeprint.c (ada_print_typedef): Don't print newline at the
	end.
	* c-typeprint.c (c_print_typedef): Likewise.
	* f-typeprint.c (f_print_typedef): Likewise.
	* m2-typeprint.c (m2_print_typedef): Likewise.
	* p-typeprint.c (pascal_print_typedef): Likewise.
	* rust-lang.c (rust_print_typedef): Likewise.
	* symtab.c (print_symbol_info): Print a newline after calling
	typedef_print.

Change-Id: I6e697ea1ec0eadaa31aefaea959b2055188d680d
2019-10-31 23:02:59 +00:00
Andrew Burgess
165f8965d7 gdb: Add new commands to list module variables and functions
This patch adds two new commands "info module functions" and "info
module variables".  These commands list all of the functions and
variables grouped by module and then by file.

For example:

  (gdb) info module functions
  All functions in all modules:

  Module "mod1":

  File /some/path/gdb/testsuite/gdb.fortran/info-types.f90:
  35:	void mod1::__copy_mod1_M1t1(Type m1t1, Type m1t1);
  25:	void mod1::sub_m1_a(integer(kind=4));
  31:	integer(kind=4) mod1::sub_m1_b(void);

  Module "mod2":

  File /some/path/gdb/testsuite/gdb.fortran/info-types.f90:
  41:	void mod2::sub_m2_a(integer(kind=4), logical(kind=4));
  49:	logical(kind=4) mod2::sub_m2_b(real(kind=4));

The new commands take set of flags that allow the output to be
filtered, the user can filter by variable/function name, type, or
containing module.

As GDB doesn't currently track the relationship between a module and
the variables or functions within it in the symbol table, so I filter
based on the module prefix in order to find the functions or variables
in each module.  What this makes clear is that a user could get this
same information using "info variables" and simply provide the prefix
themselves, for example:

  (gdb) info module functions -m mod1 _a
  All functions matching regular expression "_a",
  	in all modules matching regular expression "mod1":

  Module "mod1":

  File /some/path/gdb/testsuite/gdb.fortran/info-types.f90:
  25:	void mod1::sub_m1_a(integer(kind=4));

Is similar to:

  (gdb) info functions mod1::.*_a.*
  All functions matching regular expression "mod1::.*_a":

  File /some/path/gdb/testsuite/gdb.fortran/info-types.f90:
  25:	void mod1::sub_m1_a(integer(kind=4));

The benefits I see for a separate command are that the user doesn't
have to think (or know) about the module prefix format, nor worry
about building a proper regexp.  The user can also easily scan across
modules without having to build complex regexps.

The new function search_module_symbols is extern in this patch despite
only being used within symtab.c, this is because a later patch in this
series will also be using this function from outside symtab.c.

This patch is a new implementation of an idea originally worked on by
Mark O'Connor, Chris January, David Lecomber, and Xavier Oro from ARM.

gdb/ChangeLog:

	* symtab.c (info_module_cmdlist): New variable.
	(info_module_command): New function.
	(search_module_symbols): New function.
	(info_module_subcommand): New function.
	(struct info_modules_var_func_options): New struct.
	(info_modules_var_func_options_defs): New variable.
	(make_info_modules_var_func_options_def_group): New function.
	(info_module_functions_command): New function.
	(info_module_variables_command): New function.
	(info_module_var_func_command_completer): New function.
	(_initialize_symtab): Register new 'info module functions' and
	'info module variables' commands.
	* symtab.h (typedef symbol_search_in_module): New typedef.
	(search_module_symbols): Declare new function.
	* NEWS: Mention new commands.

gdb/doc/ChangeLog:

	* gdb.texinfo (Symbols): Document new 'info module variables' and
	'info module functions' commands.

gdb/testsuite/ChangeLog:

	* gdb.fortran/info-modules.exp: Update expected results, and add
	additional tests for 'info module functinos', and 'info module
	variables'.
	* gdb.fortran/info-types.exp: Update expected results.
	* gdb.fortran/info-types.f90: Extend testcase with additional
	module variables and functions.

Change-Id: I8c2960640e2e101b77eff54027d687e21ec22e2b
2019-10-31 23:02:59 +00:00