103135 Commits

Author SHA1 Message Date
e062fcc8c2 ld: Change NOSANTIZE_CFLAGS to NOSANITIZE_CFLAGS
* testsuite/config/default.exp: Change NOSANTIZE_CFLAGS to
	NOSANITIZE_CFLAGS.
	* testsuite/ld-elf/dwarf.exp: Likewise.
	* testsuite/ld-elf/indirect.exp: Likewise.
	* testsuite/ld-elf/linux-x86.exp: Likewise.
	* testsuite/ld-elf/shared.exp: Likewise.
	* testsuite/ld-elf/tls.exp: Likewise.
	* testsuite/ld-elfcomm/elfcomm.exp: Likewise.
	* testsuite/ld-elfvers/vers.exp: Likewise.
	* testsuite/ld-elfvsb/elfvsb.exp: Likewise.
	* testsuite/ld-elfweak/elfweak.exp: Likewise.
	* testsuite/ld-gc/gc.exp: Likewise.
	* testsuite/ld-plugin/lto.exp: Likewise.
	* testsuite/ld-plugin/plugin.exp: Likewise.
	* testsuite/ld-scripts/crossref.exp: Likewise.
	* testsuite/ld-selective/selective.exp: Likewise.
	* testsuite/ld-shared/shared.exp: Likewise.
	* testsuite/ld-size/size.exp: Likewise.
	* testsuite/ld-srec/srec.exp: Likewise.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
2020-09-03 17:17:19 -07:00
cdafde0beb Automatic date update in version.in 2020-09-04 00:00:14 +00:00
c5cd900e4f Allow Flang kind printing in complex.exp,pointer-to-pointer.exp,vla-ptr-info.exp
In the test cases complex.exp,pointer-to-pointer.exp,vla-ptr-info.exp
fortran.exp routines are not used, which are to determine the type/kind
string. Due to this these test incorrectly fail for Flang.
Now test cases are modified to use fortran.exp routines. fortran.exp
file is modified to add absent routines fortran_complex8 and
fortran_complex16.

gdb/testsuite/ChangeLog

	* lib/fortran.exp (fortran_complex8): New proc.
	(fortran_complex16): New proc.
	* gdb.fortran/complex.exp: Use routines from fortran.exp
	* gdb.fortran/pointer-to-pointer.exp: Likewise.
	* gdb.fortran/vla-ptr-info.exp: Likewise.
2020-09-03 22:05:18 +05:30
e56798df08 Support printing of 16 byte real/complex type for Flang compiler
Currently GDB is not able to print correct value for real/complex type
from binary generated from Flang compiler. This is due to GDB not able
to recognise and determine correct format floatformats_ia64_quad and
instead falling back to default_floatformat_for_type. This leads
incorrect output.
Now function i386_floatformat_for_type is fixed to correctly identify
Flang generated 16 byte real/complex type.

gdb/ChangeLog

	* gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
	to match 16 byte real/complex type generated by Flang compiler.
2020-09-03 21:57:16 +05:30
0316fb52d6 bpf: several small fixes in the simulator
This patch fixes the following problems:
- Missing includes in several files leading to implicit function
  declarations.
- Missing prototype for bpf_trace_printk in bpf-helpers.h
- The simulator bitsize was set to 32 bits, causing truncation of
  the program counter.

Tested in bpf-unknown-none.

sim/ChangeLog:

2020-09-03  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* bpf/bpf.c: Include bpf-helpers.h.
	* bpf/bpf-helpers.h: Provide a prototype for bpf_trace_printk.
	* bpf/configure.ac: Set simulator bitsize to 64.
	* bpf/configure (includedir): Regenerate.
	* bpf/sim-if.c: Include stdlib.h.
	* bpf/traps.c: Likewise.
2020-09-03 18:22:08 +02:00
1d01693f55 sim: better handle builds of primary targets lacking sims
When building with a primary target that doesn't feature a simulator,
one would expect for nothing to be done in sim/.  However, a
$(top_builddir)/sim/testsuite directory is created, with a Makefile
containing a rule like:

check-DEJAGNU: site.exp
	echo "Dejagnu-checking in `pwd` directory ..."
	rootme=`pwd`; export rootme; echo rootme = $$rootme; \
	srcdir=`cd ${srcdir}; pwd`; export srcdir ; echo srcdir = $$srcdir; \
	EXPECT=${EXPECT} ; export EXPECT ; echo EXPECT = $$EXPECT; \
	if [ -f $$rootme/../../expect/expect ]; then \
	  TCL_LIBRARY=`cd $$srcdir/../../tcl/library && pwd`; \
	  export TCL_LIBRARY; \
	fi; \
        echo TCL_LIBRARY = $$TCL_LIBRARY; \
	runtest=$(RUNTEST); echo runtest = $$runtest; \
	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
	  $$runtest $(RUNTESTFLAGS); \
	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
	fi

Consequently, when `make check' recurses into sim/testsuite, the above
rule is executed.  Until now, the desired effect (of doing nothing)
was achieved because `runtest --version' fails due to a malformed
site.exp being generated in objdir: it is malformed because the
primary target doesn't configure a $sim_arch. i.e. this was doing the
right thing just by chance.

However, the git version of dejagnu seems to have changed in a way
runtest doesn't try to load site.exp when it gets --version.  The net
effect is that the rule above tries to actually run the tests, failing
miserably.

This little patch makes sim/configure to not recurse into
sim/testsuite if the primary target didn't configure a simulator.

Tested with:
- A simulator target (bpf-unkonwn-none).
- A simulator-less target (x86_64-linux-gnu).
- A simulator-less target and --build-targets=all.

sim/ChangeLog:

2020-09-03  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* configure.ac: Do not configure sim/testsuite nor sim/igen if the
	primary target doesn't have a simulator.
	* configure: Regenerate.
2020-09-03 18:21:20 +02:00
dd216e07a1 gas: Use DW_FORM_sec_offset for DWARF version 4 or higher.
Older DWARF versions used DW_FORM_data4 or DW_FORM_data8 for offsets
into sections for e.g. DW_AT_stmt_list ot DW_AT_ranges. But version 4
introduced a dedicated form for such section offsets. Make sure to emit
the proper form for newer DWARF versions.

gas/ChangeLog:

	* dwarf2dbg.c (out_debug_abbrev): Use DW_FORM_sec_offset for DWARF
	version 4 or higher.
2020-09-03 18:00:03 +02:00
ac267c754c Fix a division by zero error when processing secondary relocs in a fuzzed input file.
PR 26521
	* elf.c (_bfd_elf_write_secondary_reloc_section): Check for
	secondary reloc sections with a zero sh_entsize field.
2020-09-03 16:11:43 +01:00
8f5c6526eb [gdb/breakpoint, PIE] Handle setting breakpoint on label without address
When adding:
...
if ![runto_main] then {
    fail "can't run to main"
    return 0
}
...
to test-case gdb.base/label-without-address.exp and running it with target
board unix/-fPIE/-pie, we run into:
...
(gdb) break main:L1^M
Breakpoint 2 at 0x555555554000: file label-without-address.c, line 22.^M
...
That is, for a label with optimized-out address, we set a breakpoint at the
relocation base.

The root cause is that the dwarf reader, despite finding that attribute
DW_AT_low_pc is missing, still tags the L1 symbol as having LOC_LABEL, which
means it has a valid address, which defaults to 0.

Fix this by instead tagging the L1 symbol with LOC_OPTIMIZED_OUT.

Tested on x86_64-linux.

gdb/ChangeLog:

2020-09-03  Tom de Vries  <tdevries@suse.de>

	PR breakpoint/26546
	* dwarf2/read.c (new_symbol): Tag label symbol without DW_AT_low_pc as
	LOC_OPTIMIZED_OUT instead of LOC_LABEL.

gdb/testsuite/ChangeLog:

2020-09-03  Tom de Vries  <tdevries@suse.de>

	PR breakpoint/26546
	* gdb.base/label-without-address.exp: Runto main first.
2020-09-03 12:30:10 +02:00
9184ef8a92 RISC-V: Minor cleanup and typos when merging elf attributes.
bfd/
	* elfnn-riscv.c (riscv_i_or_e_p): Minor cleanup for warnings/errors.
	(riscv_merge_std_ext): Likewise.
	(riscv_merge_arch_attr_info): Likewise.
	(riscv_merge_attributes): Likewise and fix comment typos.

	ld/
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-01.d: Remove
	the useless `warnings` keywords.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-02.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-03.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-04.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-05.d: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-06.d: Likewise.
2020-09-03 11:12:02 +08:00
32f0ce4db9 RISC-V: Report warnings rather than errors for the mis-matched ISA versions.
Same as the privileged spec attributes check - different ISA versions
should be compatible, unless there are some known conflicts.  Therefore,
we should allow to link objects with different ISA versions, and update
the output ISA versions once the corresponding input ones are newer.
But it's better to also warn people that the conflicts may happen when
the ISA versions are mis-matched.

	bfd/
	* elfnn-riscv.c (riscv_version_mismatch): Change the return type
	from void to bfd_boolean.  Report warnings rather than errors
	when the ISA versions are mis-matched.  Afterwards, remember to
	update the output ISA versions to the newest ones.
	(riscv_merge_std_ext): Allow to link objects with different
	standard ISA versions.  Try to add output ISA versions to
	merged_subsets first.
	(riscv_merge_multi_letter_ext): Likewise.  But for standard additional
	ISA and non-standard ISA versions.

	ld/
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Update the
	message from error to warning.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-02.d: New testcases.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-02a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-02b.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-02c.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-02d.s: Likewise.
	* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated.
2020-09-03 11:11:51 +08:00
72bd6912ea RISC-V: Improve the error message for the mis-matched ISA versions.
Consider the updated attr-merge-arch-failed-01.d testcase.  Extension
A's version are mis-matched between attr-merge-arch-failed-01a.s and
attr-merge-arch-failed-01b.s.  But the old binutils reports that the
mis-matched extension is M rather than A.  This commit is used to fix
the wrong mis-matched error message.

Besides, when parsing the arch string in the riscv_parse_subset, it
shouldn't be NULL or empty.  However, it might be empty when we failed
to merge the arch string in the riscv_merge_attributes.  Since we should
already issue the correct error message in another side, and the message
- ISA string must begin with rv32 or rv64 - is meaninglesss when the arch
string is empty, so do not issue it.

	bfd/
	* elfnn-riscv.c (riscv_merge_std_ext): Fix to report the correct
	error message when the versions of extension are mis-matched.
	* elfxx-riscv.c (riscv_parse_subset): Don't issue the error when
	the string is empty.

	ld/
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Updated.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01a.s: Likewise.
	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01b.s: Likewise.
2020-09-03 11:11:38 +08:00
d48b742bc1 heap use after free in xcoff_archive_info_eq
Using an input file objalloc memory for anything that isn't created
when opening the bfd is not a good idea.  The problem is that this
memory can disappear if bfd_free_cached_info is called or when bfd
closes files in order to keep the number of open files reasonable.

bfd/
	* xcofflink.c (xcoff_get_archive_info): Allocate xcoff_archive_info
	on the output bfd objalloc memory.
ld/
	* testsuite/ld-scripts/sysroot-prefix.exp (single_sysroot_prefix_test):
	Log $scriptname.
2020-09-03 11:04:46 +09:30
8807b2206d Automatic date update in version.in 2020-09-03 00:00:08 +00:00
c5065df043 gdb: remove maint_print_section_data
Since the "maintenance info sections" helper functions are not used
through a callback with a void* parameter anymore, the
maint_print_section_data is not needed anymore.  Remove it, replace it
with regular parameters.

Break out the index digits computation in its own function.

gdb/ChangeLog:

	* maint.c (index_digits): New function.
	(struct maint_print_section_data): Remove.
	(print_bfd_section_info): Remove print_data parameter, add arg
	and index_digits.
	(print_objfile_section_info): Likewise.
	(print_bfd_section_info_maybe_relocated): Likewise (plus
	objfile).
	(maintenance_info_sections): Adjust calls.

Change-Id: Idfeca5e7e0a95e72fade15cb1488058865c0258e
2020-09-02 14:36:50 -04:00
02c6f3f1fc Do not auto-dereference null pointers in Ada MI varobj
The Ada varobj code automatically dereferences access types.  This is
often handy, but it also does so for null pointers -- showing children
with empty values.

These children are weird, but even weirder when a variant type is
involved, because only the non-varying parts of the type are
displayed.  This behavior conflicts a bit with my ongoing quest to
move the Ada code to use DWARF rather than gnat encodings, in that
reproducing this behavior with the DWARF code seems rather hacky.

So, this patch instead changes the Ada varobj code so that it does not
automatically dereference null pointers.

As this patch only affects Ada, and it was already reviewed internally
by Joel, I am checking it in.

2020-09-02  Tom Tromey  <tromey@adacore.com>

	* ada-varobj.c (ada_varobj_get_ptr_number_of_children): Return 0
	for null pointers.
	(ada_varobj_adjust_for_child_access): Special-case null pointers.

gdb/testsuite/ChangeLog
2020-09-02  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/mi_var_access.exp: Test children of access variable.
	* gdb.ada/mi_var_access/mi_access.adb: Add new stop markers.
	* gdb.ada/mi_var_array.exp: Update.
2020-09-02 11:30:51 -06:00
7c80dd4c2c ubsan: v850-opc.c:412 left shift cannot be represented
include/
	* opcode/v850.h (struct v850_operand <insert>): Make param op an
	unsigned long.
opcodes/
	* v850-opc.c (insert_i5div1, insert_i5div2, insert_i5div3),
	(insert_d5_4, insert_d8_6, insert_d8_7, insert_v8, insert_d9),
	(insert_u16_loop, insert_d16_15, insert_d16_16, insert_d17_16),
	(insert_d22, insert_d23, insert_d23_align1, insert_i9, insert_u9),
	(insert_spe, insert_r4, insert_POS, insert_WIDTH, insert_SELID),
	(insert_VECTOR8, insert_VECTOR5, insert_CACHEOP, insert_PREFOP),
	(nsert_IMM10U, insert_SRSEL1, insert_SRSEL2): Use unsigned long
	for value parameter and update code to suit.
	(extract_d9, extract_d16_15, extract_d16_16, extract_d17_16),
	(extract_d22, extract_d23, extract_i9): Use unsigned long variables.
2020-09-02 16:30:44 +09:30
b4b393495f ubsan: i386-dis.c
i386-dis.c:12207 left shift of 128 by 24 places cannot be represented in type 'long int'
i386-dis.c:12220 left shift of 128 by 24 places cannot be represented in type 'long int'
i386-dis.c:12222 left shift of 1 by 31 places cannot be represented in type 'long int'
i386-dis.c:12222 signed integer overflow: 162254319 - -2147483648 cannot be represented in type 'long int'

	* i386-dis.c (OP_E_memory): Don't cast to signed type when
	negating.
	(get32, get32s): Use unsigned types in shift expressions.
2020-09-02 16:30:44 +09:30
caf4537af5 ubsan: csky-dis.c:1038 left shift cannot be represented
* csky-dis.c (print_insn_csky): Use unsigned type for "given".
2020-09-02 16:30:44 +09:30
3c5097eae4 ubsan: crx-dis.c:571 left shift of negative value
* crx-dis.c: Whitespace.
	(print_arg): Use unsigned type for longdisp and mask variables,
	and for left shift constant.
2020-09-02 16:30:44 +09:30
ae3e98b418 ubsan: *-ibld.c
bfin-dis.c:160 shift exponent 32 is too large for 32-bit type 'long unsigned int'
bpf-ibld.c:196 left shift of 1 by 31 places cannot be represented in type 'long int'
bpf-ibld.c:196 negation of -2147483648 cannot be represented in type 'long int'; cast to an unsigned type to negate this
 itself
bpf-ibld.c:197 left shift of 1 by 31 places cannot be represented in type 'long int'
bpf-ibld.c:197 signed integer overflow: -2147483648 - 1 cannot be represented in type 'long int'
bpf-ibld.c:501 left shift of 1 by 31 places cannot be represented in type 'long int'

	* cgen-ibld.in (insert_normal, extract_normal): Use 1UL in left shift.
	* bpf-ibld.c: Regenerate.
	* epiphany-ibld.c: Regenerate.
	* fr30-ibld.c: Regenerate.
	* frv-ibld.c: Regenerate.
	* ip2k-ibld.c: Regenerate.
	* iq2000-ibld.c: Regenerate.
	* lm32-ibld.c: Regenerate.
	* m32c-ibld.c: Regenerate.
	* m32r-ibld.c: Regenerate.
	* mep-ibld.c: Regenerate.
	* mt-ibld.c: Regenerate.
	* or1k-ibld.c: Regenerate.
	* xc16x-ibld.c: Regenerate.
	* xstormy16-ibld.c: Regenerate.
2020-09-02 16:30:44 +09:30
427202d967 ubsan: bfin-dis.c:160 shift exponent 32 is too large
* bfin-dis.c (MASKBITS): Use SIGNBIT.
2020-09-02 16:30:44 +09:30
c77a6ef610 ubsan: expr.c:1725,1741 signed integer overflow
* expr.c (add_to_result, subtract_from_result): Use unsigned
	addition and subtraction.
2020-09-02 16:30:43 +09:30
01a6f9da64 ubsan: tc-z80.c:3656 shift exponent 32 is too large
* config/tc-z80.c (is_overflow): Avoid too large shift.
2020-09-02 16:30:43 +09:30
6228e2790a ubsan: tc-sparc.c:1146 left shift cannot be represented
* config/tc-sparc.c (in_signed_range): Use an unsigned type for
	sign mask.
2020-09-02 16:30:43 +09:30
1929210d46 ubsan: tc-nios2.c:1403 shift exponent 32 is too large
* config/tc-nios2.c (md_apply_fix): Avoid too large shift.
2020-09-02 16:30:43 +09:30
7697028a6c ubsan: tc-mips.c:9606 shift exponent 32 is too large
* config/tc-mips.c (load_register): Avoid too large shift.
2020-09-02 16:30:43 +09:30
602e9f0ae7 ubsan: tc-d30v.c left shift cannot be represented
* config/tc-d30v.c (parallel_ok): Use 1UL for left shift expression.
2020-09-02 16:30:43 +09:30
17e782e94f ubsan: rx-parse.y:1743 shift exponent 32 is too large
* config/rx-parse.y (rx_intop): Avoid too large shifts.
	(rx_intop, rx_uintop, rx_disp3op, rx_disp5op, displacement),
	(rtsd_immediate): Use correctly typed unsigned variables.
2020-09-02 16:30:43 +09:30
4dda287bf6 ubsan: obj-macho.c:503 left shift cannot be represented
* config/obj-macho.c (obj_mach_o_zerofill): Correct type of
	constant shifted left.
2020-09-02 16:30:43 +09:30
251150adb1 ubsan: bfin-lex.l:503 left shift cannot be represented
* config/bfin-lex.l: Use an unsigned type for "value".
2020-09-02 16:30:42 +09:30
839f41a323 ubsan: objdump.c:3009 negation of -2147483648
* objdump.c (disassemble_bytes): Use an unsigned type for "addend".
2020-09-02 16:30:42 +09:30
26009aa763 ubsan elfnn-aarch64.c:7142 shift exponent 32 is too large
* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Correct type
	of constant shifted left.
2020-09-02 16:30:42 +09:30
2f26cc79cc ubasn: elf32-pru.c:570 left shift of negative value
* elf32-pru.c (pru_elf32_do_ldi32_relocate): Use an unsigned
	type for "relocation".
2020-09-02 16:30:42 +09:30
f6e6b05211 32-bit host pdp11 breakage
If bfd_vma is 32 bits, gcc complains about shift counts exceeding
width of the type.

	* config/tc-pdp11.c (md_number_to_chars): Condition nbytes=8 code
	on BFD64.
2020-09-02 16:30:42 +09:30
4211a34001 CSKY: Add CPU CK803r3.
Move divul and divsl to CSKYV2_ISA_3E3R3 instruction set, which is
enabled by ck803r3, and it's still a part of enhance DSP instruction
set.

gas/
	* config/tc-csky.c (csky_cpus): Add ck803r3.
	(CSKY_ISA_803R3): Define.
	(CSKY_ISA_803R2): Refine, use CSKY_ISA_803R1.

include/
	* opcode/csky.h (CSKYV2_ISA_3E3R3): Define.

opcodes/
	* csky-opc.h (csky_v2_opcodes): Move divul and divsl
	to CSKYV2_ISA_3E3R3 instruction set.
2020-09-02 14:21:31 +08:00
8119cc3837 CSKY: Fix Encode of mulsws.
gas/
	* testsuite/gas/csky/cskyv2_dsp.d : Fix Encode of mulsws.

opcodes/
	* csky-opc.h (csky_v2_opcodes): Fix Encode of mulsws.
2020-09-02 14:21:21 +08:00
e61ef79e3a CSKY: Refine literals pool dump process and float register parser.
gas/
	* config/tc-csky.c (struct literal): New member bignum.
	(dump_literals): Handle big constant.
	(enter_literal): Likewise.
	(parse_type_freg): Handle vector register.
2020-09-02 14:21:02 +08:00
7d0a7dce39 Automatic date update in version.in 2020-09-02 00:00:09 +00:00
ef5e5b0b65 gdb: change bcache::insert added parameter to bool
It is currently an int, but it is used as a bool.

gdb/ChangeLog:

	* bcache.h (struct bcache) <insert>: Change type of `added` to
	pointer to bool.
	* bcache.c (bcache::insert): Likewise.
	* gdbtypes.c (check_types_worklist): Adjust.
	* psymtab.c (add_psymbol_to_bcache): Adjust.

Change-Id: I06b1041636c656782a89cb6106c9ae2593f61616
2020-09-01 12:55:57 -04:00
4c8584be76 ELF: Document the .tls_common directive
Document the .tls_common directive added by

commit b8871f357fdfa9c0c06d2d3e5600391d8c994f37
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Feb 22 09:18:52 2016 -0800

    Properly implement STT_COMMON

	* doc/as.texi: Document the .tls_common directive.
2020-09-01 07:47:00 -07:00
8dbe96f070 mep: ubsan: mep-ibld.c:1635,1645,1652 left shift of negative value
cpu/
	* mep-core.cpu (f-8s8a2, f-12s4a2, f-17s16a2): Multiply signed
	value by two rather than shifting left.
	(f-24s5a2n): Similarly multiply signed f-24s5a2n-hi to extract.
opcodes/
	* mep-ibld.c: Regenerate.
2020-09-01 16:03:08 +09:30
821e059c26 arm: ubsan: shift exponent 4G
* reloc.c (N_ONES): Handle N=0.
	* elf32-arm.c (elf32_arm_howto_table_1): Set complain_overflow_dont
	for R_ARM_TLS_DESCSEQ and R_ARM_THM_TLS_DESCSEQ.
2020-09-01 16:02:48 +09:30
7af677524e PR26420, PR26421, PR26425, PR26427 UBSAN: tc-arm.c left shifts
PR 26420
	PR 26421
	PR 26425
	PR 26427
	* config/tc-arm.c (struct arm_it): Make size, size_req, cond and
	uncond_value unsigned.
	(parse_vfp_reg_list): Make setmask unsigned, vpr_str_len size_t.
	(parse_big_immediate): Cast generic_bignum elements to unsigned.
	(encode_thumb32_immediate): Shift left 0xffU.
	(double_to_single): Make sign unsigned.  Tidy.
	(move_or_literal_pool): Cast LITTLE_NUM elements to uint64_t or
	valueT.
	(vfp_or_neon_is_neon): Adjust inst.uncond_value expression.
	(md_assemble): Likewise.
	(handle_pred_state): Make cond unsigned.
	(thumb32_negate_data_op): Make variables unsigned.
	(md_apply_fix): Make value and newval unsigned, adjust uses.
2020-09-01 16:02:48 +09:30
f911bb2201 PR26429 UBSAN: elf32-arm.c load /store misaligned address
PR 26429
	* elf32-arm.c (elf32_arm_allocate_local_sym_info): Allocate arrays
	in descending order of alignment.
2020-09-01 16:02:48 +09:30
00c91124d4 PR26423 UBSAN: elf32-arm.c:10237 left shift cannot be represented
PR 26423
	* elf32-arm.c (calculate_group_reloc_mask): Use 3u in shift.
2020-09-01 16:02:48 +09:30
efe24f056f corefile.exp: XFAIL warning-free test when testing on docker
When testing on docker using the AUFS storage driver, loading a core
file will often print a number of warnings.  Here's an example (with
the pathname shortened somewhat):

warning: Can't open file /var/lib/docker/aufs/diff/d07..e21/lib/x86_64-linux-gnu/libc-2.27.so during file-backed mapping note processing

The "warning-free" test in gdb.base/corefile.exp will fail if any
warnings are printed, but this particular warning is unavoidable when
running in the docker environment.  Fortunately, the path mentions
both "docker" and "aufs", making it easy to XFAIL this case.

gdb/testsuite/ChangeLog:

	* gdb.base/corefile.exp (warning-free): XFAIL test when running
	on docker w/ AUFS storage driver.
2020-08-31 18:57:35 -07:00
973695d6bb Work around incorrect/broken pathnames in NT_FILE note
Luis Machado reported some regressions after I pushed recent core file
related patches fixing BZ 25631:

    FAIL: gdb.base/corefile.exp: backtrace in corefile.exp
    FAIL: gdb.base/corefile.exp: core-file warning-free
    FAIL: gdb.base/corefile.exp: print func2::coremaker_local
    FAIL: gdb.base/corefile.exp: up in corefile.exp
    FAIL: gdb.base/corefile.exp: up in corefile.exp (reinit)

This commit fixes these regressions.  Thanks to Luis for testing
an earlier version of the patch.  (I was unable to reproduce these
regressions in various test environments that I created.)

Luis is testing in a docker container which is using the AUFS storage
driver.  It turns out that the kernel is placing docker host paths in
the NT_FILE note instead of paths within the container.

I've made a similar docker environment (though apparently not similar
enough to reproduce the regressions).  This is one of the paths that
I see mentioned in the warning messages printed while loading the
core file during NT_FILE note processing - note that I've shortened
the path component starting with "d07c4":

/var/lib/docker/aufs/diff/d07c4...21/lib/x86_64-linux-gnu/ld-2.27.so

This is a path on the docker host; it does not exist in the
container.  In the docker container, this is the path:

/lib/x86_64-linux-gnu/ld-2.27.so

My first thought was to disable all NT_FILE mappings when any path was
found to be bad.  This would have caused GDB to fall back to accessing
memory using the file stratum as it did before I added the NT_FILE
note loading code.  After further consideration, I realized that we
could do better than this.  For file-backed memory access, we can
still use the NT_FILE mappings when available, and then attempt to
access memory using the file stratum constrained to those address
ranges corresponding to the "broken" mappings.

In order to test it, I made some additions to corefile2.exp in which
the test case's executable is renamed.  The core file is then loaded;
due to the fact that the executable has been renamed, those mappings
will be unavailable.  After loading the core file, the executable is
renamed back to its original name at which point it is loaded using
GDB's "file" command.  The "interesting" tests are then run.  These
tests will print out values in file-backed memory regions along with
mmap'd regions placed within/over the file-backed regions.  Despite
the fact that the executable could not be found during the NT_FILE
note processing, these tests still work correctly due to the fact that
memory is available from the file stratum combined with the fact that
the broken NT_FILE mappings are used to prevent file-backed access
outside of the "broken" mappings.

gdb/ChangeLog:

	* corelow.c (unordered_set): Include.
	(class core_target): Add field 'm_core_unavailable_mappings'.
	(core_target::build_file_mappings): Print only one warning
	per inaccessible file.  Add unavailable/broken mappings
	to m_core_unavailable_mappings.
	(core_target::xfer_partial): Call...
	(core_target::xfer_memory_via_mappings): New method.

gdb/testsuite/ChangeLog:

	* gdb.base/corefile2.exp (renamed binfile): New tests.
2020-08-31 18:53:17 -07:00
264fc0e27b gdb: change type of field_info::non_public_fields to bool
gdb/ChangeLog:

	* dwarf2/read.c (struct field_info) <non_public_fields>: Change
	type to bool.
	(dwarf2_add_field): Use true instead of 1.

Change-Id: I7e9c86429402c28d4f15861d17976b9c50049f94
2020-08-31 21:06:20 -04:00
2de01bdb2e gdb: fix indentation of struct field_info
The indentation is off, fix it before doing other changes.

gdb/ChangeLog:

	* dwarf2/read.c (struct field_info): Fix indentation.

Change-Id: Ife6a3d017abcf0a33e49e47e51429e95d504343c
2020-08-31 21:05:37 -04:00