Commit Graph

92037 Commits

Author SHA1 Message Date
Nick Clifton 6753e38a5c Fix compile time warning message when running the PR19874 linker test.
PR ld/19874
	* testsuite/ld-x86-64/pr19784c.c (bar): Change return type to void.
2017-10-09 15:00:31 +01:00
Andreas Krebbel e61933afce Add missing changelog entries 2017-10-09 15:40:15 +02:00
Pedro Alves 5c9e4427a7 Fix gdb.base/print-file-var-main.c value check logic
Fix a typo introduced in commit c56e7c4390 ("Make ctxobj.exp and
print-file-var.exp work on all platforms.").

This doesn't really affect the outcome of the testcase.  I only
noticed the typo because I stepped through the program manually.

To avoid such problems if the test is extended, this moves the STOP
marker until after the program self-validates the values.  With the
typo in place, this alone would have resulted in a test FAIL.  I.e.,
it'd have caught the typo.

gdb/testsuite/ChangeLog:
2017-10-09  Pedro Alves  <palves@redhat.com>

	* gdb.base/print-file-var-main.c: Fix get_version_2 value check
	logic.  Move STOP marker after the value checks.
	* gdb.base/print-file-var.exp (continue to STOP marker): Tighten
	regexp.
2017-10-09 12:33:31 +01:00
H.J. Lu 76f361eb49 ld: Don't allow '~' as the first char in symbol name
Don't allow '~' as the first character in symbol name in linker script.

	PR ld/22267
	* ldlex.l (SYMBOLNAMECHAR1) New.
	(DEFSYMEXP): Replace FILENAMECHAR1 with SYMBOLNAMECHAR1.
	(EXPRESSION): Likewise.
	* testsuite/ld-scripts/expr.exp: Run pr22267.
	* testsuite/ld-scripts/pr22267.d: New file.
	* testsuite/ld-scripts/pr22267.s: Likewise.
	* testsuite/ld-scripts/pr22267.t: Likewise.
2017-10-09 04:17:24 -07:00
Andreas Krebbel 5d3b558acd Replace nop in fill-1.s testcase.
gas/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* testsuite/gas/all/fill-1.s: Replace nop with .word 42
2017-10-09 12:25:16 +02:00
Andreas Krebbel 4f2358bca6 Enable .fill forward labels
gas/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* read.c (s_fill): Invoke expression instead of
	get_known_segmented_expression.
	* testsuite/gas/all/fill-1.s: New testcase.
	* testsuite/gas/all/gas.exp: Run fill-1 testcase
2017-10-09 09:28:02 +02:00
Tom Tromey 791afaa233 Remove some cleanups from dwarf2read.c
This removes a number of cleanups from dwarf2read.c in a
straightforward way.

Note that some places in dwarf2read create dangling cleanups.  I don't
believe any of the changes in this patch interact with those spots.

Regression tested by the buildbot.

gdb/ChangeLog
2017-10-08  Tom Tromey  <tom@tromey.com>

	* dwarf2read.c (dwarf2_get_dwz_file): Use
	gdb::unique_xmalloc_ptr.
	(find_slot_in_mapped_hash): Likewise.
	(dwarf2_physname): Likewise.
	(create_dwo_unit_in_dwp_v1): Use std::string.
	(create_dwo_unit_in_dwp_v2): Likewise.
	(lookup_dwo_cutu): Likewise.
	(inherit_abstract_dies): Use std::vector.
	(read_array_type): Likewise.
	(dwarf_decode_macros): Remove unused declaration.
	(unsigned_int_compar): Remove.
	(dwarf2_build_psymtabs_hard): Use scoped_restore.
	(psymtabs_addrmap_cleanup): Remove.
2017-10-08 23:22:58 -06:00
Tom Tromey 30a9c02fef Remove cleanup from frame_prepare_for_sniffer
Currently frame_prepare_for_sniffer returns a cleanup.  This patch
changes it to return void, and exposes frame_cleanup_after_sniffer to
the caller.

Normally I would write an RAII class for this sort of thing; but
because there was just a single caller of frame_prepare_for_sniffer,
and because this caller is already using try/catch, I thought it
seemed ok to require explicit calls in this instance.

Regression tested by the buildbot.

gdb/ChangeLog
2017-10-08  Tom Tromey  <tom@tromey.com>

	* frame-unwind.c (frame_unwind_try_unwinder): Update.
	* frame.h (frame_cleanup_after_sniffer): Declare.
	(frame_prepare_for_sniffer): Return void.
	* frame.c (frame_cleanup_after_sniffer): No longer static.  Change
	type of argument.
	(frame_prepare_for_sniffer): Return void.
2017-10-08 23:16:42 -06:00
Tom Tromey 757325a3f2 Remove make_cleanup_value_free
This removes make_cleanup_value_free, in favor of a unique_ptr
specialization.

Regression tested by the buildbot.

gdb/ChangeLog
2017-10-08  Tom Tromey  <tom@tromey.com>

	* utils.h (make_cleanup_value_free): Remove.
	* utils.c (do_value_free, struct cleanup): Remove.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full) <DWARF_VALUE_STACK>:
	Use gdb_value_up.
	* value.h (struct value_deleter): New.
	(gdb_value_up): New typedef.
2017-10-08 23:07:37 -06:00
Tom Tromey b9c04fb268 Change search_symbols to return std::vector
This changes search_symbols to return a std::vector, replacing the
previous linked list approach.  This allows the removal of some
cleanups, as well as the use of std::sort and std::unique, saving some
code and extra allocations in sort_search_symbols_remove_dups.

Regression tested by the buildbot.

gdb/ChangeLog
2017-10-08  Tom Tromey  <tom@tromey.com>

	* symtab.c (free_search_symbols, do_free_search_symbols_cleanup)
	(make_cleanup_free_search_symbols): Remove.
	(search_symbols): Return std::vector.
	(symbol_search::compare_search_syms): Now member of
	symbol_search.  Change arguments.
	(sort_search_symbols_remove_dups): Change arguments.  Rewrite.
	(symtab_symbol_info, rbreak_command): Update.
	* symtab.h (struct symbol_search) <next>: Remove.
	Add constructors.
	(symbol_search::operator<): New function.
	(symbol_search::operator==): New function.
	(search_symbols): Remove std::vector.
	(free_search_symbols, make_cleanup_free_search_symbols): Remove.
	(symbol_search::compare_search_syms): Declare.
2017-10-08 22:53:53 -06:00
Alan Modra b55ec8b676 PR22212, memory leak in nm
PR 22212
	* dwarf2.c (_bfd_dwarf2_cleanup_debug_info): Free
	funcinfo_hash_table and varinfo_hash_table.
2017-10-09 13:23:00 +10:30
H.J. Lu a72f95f776 sh: Dump dynamic relocation info to the map file
Dump dynamic relocation info to the map file when generating dynamic
relocation in read-only section relocations if -Map is used.

	* elf32-sh.c (readonly_dynrelocs): Dump dynamic relocation
	in read-only section with minfo.
	(sh_elf_size_dynamic_sections): Likewise.
2017-10-08 17:17:29 -07:00
H.J. Lu f9799aae8e sparc: Remove a strayed comment
* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Remove
	a strayed comment.
2017-10-08 17:11:07 -07:00
GDB Administrator effaa0a1e8 Automatic date update in version.in 2017-10-09 00:00:30 +00:00
H.J. Lu 4c7236d3cb tilegx: Set this_hdr.sh_entsize only if section size > 0
This fixes:

/export/build/gnu/binutils-cross/build-tilegx-linux/ld/ld-new   -o tmpdir/comm-data -z norelro -L/export/gnu/import/git/sources/binutils-gdb/ld/testsuite/ld-elf  -T comm-data2.ld -Ltmpdir -lcomm-data tmpdir/comm-data2.o
sh: line 1:  9208 Segmentation fault      (core dumped) /export/build/gnu/binutils-cross/build-tilegx-linux/ld/ld-new -o tmpdir/comm-data -z norelro -L/export/gnu/import/git/sources/binutils-gdb/ld/testsuite/ld-elf -T comm-data2.ld -Ltmpdir -lcomm-data tmpdir/comm-data2.o 2>&1
FAIL: Common symbol override test

	* elfxx-tilegx.c (tilegx_elf_finish_dynamic_sections): Set
	this_hdr.sh_entsize only if section size > 0.
2017-10-08 14:29:52 -07:00
H.J. Lu 70090aa5f6 Reformat elf_x86_allocate_dynrelocs
* elfxx-x86.c (elf_x86_allocate_dynrelocs): Reformat.
2017-10-08 13:20:17 -07:00
H.J. Lu f0f07ad182 sparc: Dump dynamic relocation info to the map file
Dump dynamic relocation info to the map file when generating dynamic
relocation in read-only section relocations if -Map is used.

	* elfxx-sparc.c (readonly_dynrelocs): Dump dynamic relocation
	in read-only section with minfo.
	(_bfd_sparc_elf_size_dynamic_sections): Likewise.
2017-10-07 17:30:54 -07:00
GDB Administrator b05c287c18 Automatic date update in version.in 2017-10-08 00:00:25 +00:00
H.J. Lu 2458d83bbc ld-elf/merge.d: Don't expect to fail for sparc
It passed with cross binutils to sparc-linux and sparc64-linux.

	* testsuite/ld-elf/merge.d: Don't expect to fail for sparc.
2017-10-07 16:14:50 -07:00
GDB Administrator 0ee6e554c4 Automatic date update in version.in 2017-10-07 00:00:17 +00:00
H.J. Lu 99180bccaf x86: Update UNDEFINED_WEAK_RESOLVED_TO_ZERO comments
* elfxx-x86.h (UNDEFINED_WEAK_RESOLVED_TO_ZERO): Update
	comments.
2017-10-06 16:45:37 -07:00
H.J. Lu 98b273dc13 x86: Use zero_undefweak in elf_x86_link_hash_entry
Replace has_got_reloc and has_non_got_reloc in elf_x86_link_hash_entry
with zero_undefweak:

Bit 0: Symbol has no GOT nor PLT relocations.
Bit 1: Symbol has non-GOT/non-PLT relocations in text sections.

zero_undefweak is initialized to 1 and undefined weak symbol should be
resolved to 0 if zero_undefweak > 0.

	* elf32-i386.c (elf_i386_check_relocs): Replace has_got_reloc
	and has_non_got_reloc with zero_undefweak.
	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
	* elfxx-x86.c (_bfd_x86_elf_link_hash_newfunc): Initialize
	zero_undefweak to 1.
	(_bfd_x86_elf_copy_indirect_symbol): Replace has_got_reloc and
	has_non_got_reloc with zero_undefweak.
	* elfxx-x86.h (UNDEFINED_WEAK_RESOLVED_TO_ZERO): Replace
	has_got_reloc and has_non_got_reloc with zero_undefweak.
	(elf_x86_link_hash_entry): Likewise.
2017-10-06 15:29:32 -07:00
Sandra Loosemore b3b7c42388 Skip gdb.mi/mi-threads-interrupt.exp if nointerrupts.
2017-10-06  Sandra Loosemore  <sandra@codesourcery.com>

	gdb/testsuite/
	* gdb.mi/mi-threads-interrupt.exp: Skip test if nointerrupts.
2017-10-06 15:24:01 -07:00
John Baldwin 544c67cda1 Account for padding in FreeBSD/mipsn32 NT_PRSTATUS notes.
Add a new ELF backend method to grok FreeBSD NT_PRSTATUS core dump
notes.  Define a method for MIPS N32 to override the default
elfcore_grok_freebsd_prstatus that accounts for additional padding
between pr_pid and pr_reg that is not present in other 32-bit FreeBSD
platforms.

	* elf-bfd.h (struct elf_backend_data): Add
	`elf_backend_grok_freebsd_prstatus'.
	* elf.c (elfcore_grok_freebsd_note): Call
	`elf_backend_grok_freebsd_prstatus' to handle NT_PRSTATUS if
	present.
	* elfn32-mips.c (elf_n32_mips_grok_freebsd_prstatus): New
	function.
	(elf_backend_grok_freebsd_prstatus): Define.
	* elfxx-target.h (elf_backend_grok_freebsd_prstatus): Define.
	(elfNN_bed): Initialize `elf_backend_grok_freebsd_prstatus'.
2017-10-06 11:43:07 -07:00
Yao Qi 0d28b0a5ca Move aarch64-insn.o to arch/aarch64-insn.o and Remove a rule for arch/*.c
This patch moves aarch64-insn.o to arch/aarch64-insn.o.  Then, all
arch/*.c are built to arch/*.o, so we don't need a Makefile rule to build
*.o from arch/*.c.  This patch removes it too.

gdb:

2017-10-06  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (ALL_64_TARGET_OBS): Replace aarch64-insn.o with
	arch/aarch64-insn.o.
	Remove one rule.
	* configure.tgt: Replace aarch64-insn.o with arch/aarch64-insn.o.
2017-10-06 14:53:39 +01:00
Yao Qi 71917808c3 Move arm.o arm-get-next-pcs.o arm-linux.o to arch/
It is tested by building GDB for some targets, arm-elf, arm-netbsd,
arm-linux, and aarch64-linux.

gdb:

2017-10-06  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (ALL_TARGET_OBS): Replace arm.o, arm-get-next-pcs.o,
	and arm-linux.o with arch/arm.o, arch/arm-get-next-pcs.o and
	arch/arm-linux.o respectively.
	* configure.tgt: Likewise.
2017-10-06 14:36:04 +01:00
Yao Qi 2081b2b2ca Move i386.o to arch/i386.o
This patch changes the build that arch/i386.c is built to arch/i386.o,
instead of i386.o.

gdb:

2017-10-06  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (ALL_TARGET_OBS): Rename i386.o to arch/i386.o.
	* configure.tgt (i386_tobjs): Replace i386.o with arch/i386.o.
2017-10-06 14:07:29 +01:00
H.J. Lu e0d8f43169 Add "do/while(0);" to COPY_INPUT_RELOC_P/VERIFY_COPY_RELOC
Add "do/while(0);" to COPY_INPUT_RELOC_P/VERIFY_COPY_RELOC to avoid
potential dangling else problems.

	* elfxx-x86.h (COPY_INPUT_RELOC_P): Add "do/while(0);".
	(VERIFY_COPY_RELOC): Likewise.
2017-10-06 05:49:48 -07:00
Pedro Alves a1b85d282f Fix more GDB build breakage on mingw32
With F23's mingw gcc 5.3.0, I'm seeing:

 i686-w64-mingw32-g++ -x c++ -std=gnu++11 -g3 -O0   -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../../src/gdb/../zlib -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber  -I../../src/gdb/gnulib/import -Ibuild-gnulib/import   -I/home/pedro/src/expat/install-win32//include   -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized -Wno-format -Werror -c -o windows-nat.o -MT windows-nat.o -MMD -MP -MF ./.deps/windows-nat.o.Tpo ../../src/gdb/windows-nat.c
 ../../src/gdb/windows-nat.c: In function 'void windows_create_inferior(target_ops*, const char*, const string&, char**, int)':
 ../../src/gdb/windows-nat.c:2476:7: error: 'replace' is not a member of 'std'
	std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
	^

gdb/Changelog:
2017-10-06  Pedro Alves  <palves@redhat.com>

	* windows-nat.c: Include <algorithm>.
2017-10-06 11:58:56 +01:00
Yuanhui Zhang b79f7801a2 Fix GDB build under msys+mingw gcc 32bit
I see a build error when building GDB under msys+mingw gcc 32bit:

 g++ -x c++ -std=gnu++11 -g -O2    -I. -I../../../binutils-gdb/gdb/gdbserver -I../../../binutils-gdb/gdb/gdbserver/../common -I../../../binutils-gdb/gdb/gdbserver/../regformats -I../../../binutils-gdb/gdb/gdbserver/.. -I../../../binutils-gdb/gdb/gdbserver/../../include -I../../../binutils-gdb/gdb/gdbserver/../gnulib/import -Ibuild-gnulib-gdbserver/import  -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized -Wno-format -Werror -DGDBSERVER -c -o win32-low.o -MT win32-low.o -MMD -MP -MF .deps/win32-low.Tpo ../../../binutils-gdb/gdb/gdbserver/win32-low.c
 ../../../binutils-gdb/gdb/gdbserver/win32-low.c: In function 'BOOL create_process(const char*, char*, DWORD, PROCESS_INFORMATION*)':
 ../../../binutils-gdb/gdb/gdbserver/win32-low.c:566:48: error: 'get_inferior_cwd' was not declared in this scope
    const char *inferior_cwd = get_inferior_cwd ();
						 ^
 make[4]: *** [win32-low.o] Error 1

It can be fixed by simply including the right header file.

gdb/gdbserver/ChangeLog:
2017-10-06  Yuanhui Zhang  <asmwarrior@gmail.com>

	* win32-low.c: Include "common-inferior.h".
2017-10-06 11:44:54 +01:00
Yao Qi d97987e219 Share code updating gdb_target_obs
Nowadays, there are much duplications in configure.tgt to update
gdb_target_obs, some cpu specific object files are added to gdb_target_obs
to some different target triplets of the same cpu.  The same problem
exists for os specific object files too.  It is fragile to update them,
and build with all targets enabled doesn't find the problem.

This patch splits the gdb_target_obs update to three steps, cpu steps, os
steps, and the rest.

I tested this patch by build gdb for each different target triplets
respectively,

aarch64-elf aarch64-rtems aarch64-freebsd aarch64-linux alpha-elf
alpha-linux alpha-netbsd alpha-openbsd arm-elf arm-wince-pe arm-linux
arm-netbsd arm-symbianelf avr cris-elf frv-elf h8300-elf i386-elf
i386-darwin i386-dicos i386-freebsd i386-netbsdelf i386-openbsd
i386-nto i386-solaris i386-linux i386-gnu i386-cygwin i386-mingw32
i386-go32 ia64-linux-gnu ia64-vms lm32-elf m32c-elf m32r-elf m32r-linux
m68hc11-elf m68k-elf m68k-linux m68k-netbsd m68k-openbsd m88k-openbsd
mep-elf microblaze-xilinx-elf microblaze-linux-gnu mips-elf moxie-elf
ms1-elf nios2-elf nios2-linux-gnu hppa-elf hppa-linux hppa-netbsd
hppa-openbsd powerpc-eabi powerpc-freebsd powerpc-netbsd powerpc-openbsd
powerpc-linux powerpc-lynx178 rl78-elf rx-elf s390-linux-gnu score-elf
sh-elf sh-linux sh-openbsd sh64-elf sh64-linux sh64-openbsd sparc64-linux
sparc-linux sparc-freebsd sparc64-freebsd sparc-netbsd sparc64-netbsd
sparc-openbsd sparc64-openbsd spu-elf tic6x-elf tic6x-uclinux v850-elf
vax-netbsd vax-openbsd x86_64-linux-gnu x86_64-darwin x86_64-dicos
x86_64-elf x86_64-freebsd x86_64-mingw32 x86_64-netbsd x86_64-openbsd
x86_64-rtems xstormy16-elf xtensa-elf xtensa-linux

gdb:

2017-10-06  Yao Qi  <yao.qi@linaro.org>

	* configure.tgt (i386_tobjs): New variable.
	(amd64_tobjs): New variable.
	Set $cpu_obs and $os_obs.
2017-10-06 11:18:48 +01:00
Yao Qi f38307f593 [RFC] Replicate src dir in build dir
Nowadays, GDB build tree is almost flat, but source tree isn't.  We
have arch/ nat/ target/ common/ cli/ mi/ tui/ python/ guile/ directories.
We need to some rules in Makefile for source files in different source
directories, like,

 # Rules for compiling .c files in the various source subdirectories.
%.o: ${srcdir}/arch/%.c
	$(COMPILE) $<
	$(POSTCOMPILE)

%.o: ${srcdir}/nat/%.c
	$(COMPILE) $<
	$(POSTCOMPILE)

so we should take care of some special case that files' base name is the
same, like,

 # Specify an explicit rule for gdb/common/agent.c, to avoid a clash with the
 # object file generate by gdb/agent.c.
common-agent.o: $(srcdir)/common/agent.c
	$(COMPILE) $(srcdir)/common/agent.c
	$(POSTCOMPILE)

As we add more and more files in different directories, it becomes tricky
to name files, because we need take this into account.

This patch takes the first step toward "Replicate src dir in build dir",
that is, we create arch/ directory in buildtree, and put amd64.o there
as an example.  Dependency tracking is updated for files with directory
name.  Currently, when we build amd64.o,

  "-c -o amd64.o -MT amd64.o -MMD -MP -MF .deps/amd64.Tpo"

with this patch applied, it becomes,

  "-c -o arch/amd64.o -MT arch/amd64.o -MMD -MP -MF arch/.deps/amd64.o.Tpo"

"make clean" removes the object files, and "make distclean" removes .deps
additionally.  configure file create .deps directory in each of
CONFIG_SRC_SUBDIR, and pass it to Makefile.in, so that "make clean" and
"make distclean" can remove stuffs there.

If people agree with this change, I'll add more directories to
CONFIG_SRC_SUBDIR.

gdb:

2017-10-06  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (CONFIG_SRC_SUBDIR): New.
	(ALL_64_TARGET_OBS): Replace amd64.o with arch/amd64.o.
	(clean): Remove object files and dependency files.
	(distclean): Remove the directory.
	* configure.ac: Invoke AC_CONFIG_COMMANDS.
	* configure: Re-generated.
	* configure.tgt: Replace amd64.o with arch/amd64.o.
2017-10-06 11:13:30 +01:00
Jose E. Marchesi 2f924de654 gdb: Fix decoding of ARM neon memory hint insns.
gdb/ChangeLog:

2017-10-05  Jose E. Marchesi  <jose.marchesi@oracle.com>

	PR build/22188
	* arm-tdep.c (arm_decode_misc_memhint_neon): Fix decoding of CPS
	and SETEND.
2017-10-06 11:51:15 +02:00
H.J. Lu ff38b4cc55 x86: Add VERIFY_COPY_RELOC
Add VERIFY_COPY_RELOC to verify that symbol supports copy relocation.

	* elfxx-x86.h (VERIFY_COPY_RELOC): New.
	* elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it.
	* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
2017-10-06 00:51:40 -07:00
H.J. Lu f3180fa9ee x86: Add VERIFY_PLT_ENTRY
Add VERIFY_PLT_ENTRY to verify that symbol has an entry in the procedure
linkage table.

	* elfxx-x86.h (VERIFY_PLT_ENTRY): New.
	* elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it.
	* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
2017-10-06 00:48:26 -07:00
H.J. Lu e74399c47c x86: Add COPY_INPUT_RELOC_P
Add COPY_INPUT_RELOC_P which returns TRUE if input relocation should
be copied to output.

	* elfxx-x86.h (COPY_INPUT_RELOC_P): New.
	* elf32-i386.c (elf_i386_relocate_section): Use it.
	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06 00:44:38 -07:00
H.J. Lu aebcc8ffd2 x86: Add GENERATE_DYNAMIC_RELOCATION_P
Add GENERATE_DYNAMIC_RELOCATION_P which returns TRUE if dynamic
relocation should be generated.

	* elf32-i386.c (X86_SIZE_TYPE_P): New.
	(elf_i386_relocate_section): Use GENERATE_DYNAMIC_RELOCATION_P.
	* elf64-x86-64.c (X86_SIZE_TYPE_P): New.
	(elf_x86_64_relocate_section): Use GENERATE_DYNAMIC_RELOCATION_P.
	* elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): New.
2017-10-06 00:41:58 -07:00
H.J. Lu cf1070f1a1 x86: Add POINTER_LOCAL_IFUNC_P/PLT_LOCAL_IFUNC_P
Add POINTER_LOCAL_IFUNC_P which returns TRUE for pointer reference to
local IFUNC symbol.  Add PLT_LOCAL_IFUNC_P which returns TRUE for PLT
reference to local IFUNC symbol.

	* elfxx-x86.h (POINTER_LOCAL_IFUNC_P): New.
	(PLT_LOCAL_IFUNC_P): Likewise.
	* elf32-i386.c (elf_i386_relocate_section): Use them.
	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06 00:37:43 -07:00
H.J. Lu f70656b260 x86: Add GENERATE_RELATIVE_RELOC_P
Add GENERATE_RELATIVE_RELOC_P which returns TRUE if dynamic relative
relocation should be generated.

	* elfxx-x86.h (GENERATE_RELATIVE_RELOC_P): New.
	* elf32-i386.c (elf_i386_relocate_section): Use it.
	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06 00:32:43 -07:00
H.J. Lu 1f92404c50 x86: Add RESOLVED_LOCALLY_P
Add RESOLVED_LOCALLY_P which returns TRUE if symbol is resolved to
local definition at link-time.

	* elfxx-x86.h (RESOLVED_LOCALLY_P): New.
	* elf32-i386.c (elf_i386_relocate_section): Use it.
	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06 00:26:17 -07:00
H.J. Lu 2eba97c207 Add RESOLVED_LOCALLY_P 2017-10-06 00:24:23 -07:00
H.J. Lu daf1c414a4 x86: Add NEED_DYNAMIC_RELOCATION_P
Add NEED_DYNAMIC_RELOCATION_P which returns TRUE if dynamic relocation
is needed.

	* elf32-i386.c (X86_PCREL_TYPE_P): New.
	(elf_i386_check_relocs): Use NEED_DYNAMIC_RELOCATION_P.
	* elf64-x86-64.c (IS_X86_64_PCREL_TYPE): Renamed to ...
	(X86_PCREL_TYPE_P): This.
	(elf_x86_64_check_relocs): Use NEED_DYNAMIC_RELOCATION_P.
	Replace IS_X86_64_PCREL_TYPE with X86_PCREL_TYPE_P.
	(elf_x86_64_relocate_section): Replace IS_X86_64_PCREL_TYPE with
	X86_PCREL_TYPE_P.
	* elfxx-x86.h (NEED_DYNAMIC_RELOCATION_P): New.
2017-10-06 00:23:00 -07:00
H.J. Lu 51537393bd x86: Add TLS_TRANSITION_IE_TO_LE_P
Add TLS_TRANSITION_IE_TO_LE_P which returns TRUE if TLS IE->LE transition
is OK.

	* elfxx-x86.h (TLS_TRANSITION_IE_TO_LE_P): New.
	* elf32-i386.c (elf_i386_tls_transition): Use it.
	* elf64-x86-64.c (elf_x86_64_tls_transition): Likewise.
2017-10-06 00:13:52 -07:00
Alan Modra e98fdf1ab0 DWARF header checks
This patch tidies DWARF header checks, consolidating the "negative"
checks (which are really overflow checks) with the section size
check.  In a number of cases this also ensures that small negative
lengths are caught.  For instance

      hdrptr = start + arange.ar_length + initial_length_size;
      if (hdrptr < start || hdrptr > end)

does not detect ar_length in the range [-initial_length_size,-1].

	* dwarf.c (process_debug_info): Consolidate header length checks.
	(display_debug_pubnames_worker): Use "start" to read header.
	Properly check header length and report errors earlier.
	Simplify loop printing pubnames.
	(get_line_filename_and_dirname): Catch small negative "length"
	values.
	(display_debug_aranges): Likewise.  Report header errors
	earlier using standardized message.
	(display_debug_names): Likewise.
2017-10-06 16:13:08 +10:30
H.J. Lu 0caf6c82ab powerpc: Dump dynamic relocation info to the map file
Dump dynamic relocation info to the map file when generating dynamic
relocation in read-only section relocations if -Map is used.

	* elf32-ppc.c (readonly_dynrelocs): Add a link_info argument.
	Dump dynamic relocation in read-only section with minfo if
	needed.
	(ppc_elf_adjust_dynamic_symbol): Pass NULL to readonly_dynrelocs.
	(maybe_set_textrel): Likewise.
	(ppc_elf_size_dynamic_sections): Dump dynamic relocation in
	read-only section with minfo.
2017-10-05 18:09:19 -07:00
GDB Administrator 46e31de783 Automatic date update in version.in 2017-10-06 00:00:28 +00:00
Pedro Alves 2fd9d7ca17 Fix fork-related regressions on GNU/Linux
Commit 5cd63fda03 ("Fix "Remote 'g' packet reply is too long"
problems with multiple inferiors") caused a number of regressions on
native GNU/Linux, all related to follow-fork support.  E.g.:

  src/gdb/target.c:3141: internal-error: gdbarch* default_thread_architecture(target_ops*, ptid_t): Assertion `inf != NULL' failed.
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n)
  Resyncing due to internal error.
  FAIL: gdb.base/catch-signal-fork.exp: got SIGHUP after fork (GDB internal error)

This commit fixes it.

gdb/ChangeLog:
2017-10-05  Pedro Alves  <palves@redhat.com>

	* linux-nat.c (linux_child_follow_fork): When following the parent
	and detaching the child, consult the parent thread's architecture
	instead of the child's.
2017-10-05 18:33:22 +01:00
Ulrich Weigand d13b8493cb Remove unused "union agent_val" from ax.h
The ax.h header file contains a use of DOUBLEST in the type "union agent_val".

However, that type is never used anywhere, so it can be simply removed.

gdb/ChangeLog:
2017-10-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* ax.h: Do not include "doublest.h".
	(union agent_val): Remove.
2017-10-05 19:15:11 +02:00
Ulrich Weigand 3b4b2f160d Clean up some DFP interfaces
This cleans up a number of interfaces in dfp.c / dfp.h.  Specifically:

- The decimal_from_string / decimal_to_string routines are C++-ified
  to operate on std::string instead of character buffers.  In the
  decimal_from_string, the boolean return value now actually is bool
  instead of an int.

- The decimal_from_integral and decimal_from_doublest routines take
  an struct value as input.  This is not really appropriate at the low
  level the DFP routines sit, so this replaced them with new routines
  decimal_from_longest / decimal_from_ulongest / decimal_from_doublest
  that operate on contents instead.

- To mirror the decimal_from_[u]longest, a new decimal_to_longest
  routine is added as well, which can be used in unpack_long to
  avoid an unnecessary conversion via DOUBLEST.

Note that the decimal_from_longest / decimal_from_ulongest routines
are actually more powerful than decimal_from_integral: the old routine
would only accept integer *types* of at most four bytes size, while
the new routines accept all integer *values* that fit in an [u]int32_t,
no matter which type they came from.  The DFP tests are updated to
allow for this larger range of integers that can be converted.

gdb/ChangeLog:
2017-10-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* dfp.h (MAX_DECIMAL_STRING): Move to dfp.c.
	(decimal_to_string): Return std::string object.
	(decimal_from_string): Accept std::string object.  Return bool.
	(decimal_from_integral, decimal_from_doublest): Remove.
	(decimal_from_longest): Add prototype.
	(decimal_from_ulongest): Likewise.
	(decimal_to_longest): Likewise.
	(decimal_from_doublest): Likewise.
	* dfp.c: Do not include "gdbtypes.h" or "value.h".
	(MAX_DECIMAL_STRING): Move here.
	(decimal_to_string): Return std::string object.
	(decimal_from_string): Accept std::string object.  Return bool.
	(decimal_from_integral): Remove, replace by ...
	(decimal_from_longest, decimal_from_ulongest): ... these new functions.
	(decimal_to_longest): New function.
	(decimal_from_floating): Remove, replace by ...
	(decimal_from_doublest): ... this new function.
	(decimal_to_doublest): Update to new decimal_to_string interface.

	* value.c (unpack_long): Use decimal_to_longest.
	* valops.c (value_cast): Use decimal_from_doublest instead of
	decimal_from_floating.  Use decimal_from_[u]longest isntead of
	decimal_from_integral.
	* valarith.c (value_args_as_decimal): Likewise.
	* valprint.c (print_decimal_floating): Update to new
	decimal_to_string interface.
	* printcmd.c (printf_decfloat): Likewise.
	* c-exp.y (parse_number): Update to new decimal_from_string interface.

gdb/testsuite/ChangeLog:
2017-10-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* gdb.base/dfp-exprs.exp: Update tests to larger range of supported
	integer-to-dfp conversion.
	* gdb.base/dfp-test.exp: Likewise.
2017-10-05 19:14:08 +02:00
Ulrich Weigand 1841ee5d03 Clean up includes of doublest.h and floatformat.h
As a first small step to getting rid of doublest.h, this patch removes the
include of "floatformat.h" in "doublest.h".  This is actually not needed
for the file itself.  A few source files now need to include "floatformat.h"
directly, since they got it indirectly via "doublest.h" and still need it.

In reviewing which files need it, I found a number of files that include
"floatformat.h" directly without actually needing it at all.  Similarly,
a number of files include "doublest.h" without needing it.  I've also
removed those unnecessary include statements.

gdb/ChangeLog:
2017-10-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* doublest.h: Do not include "floatformat.h".  Remove stale comments.
	* gdbtypes.c: Include "floatformat.h".
	* value.c: Likewise.
	* m68k-tdep.c: Likewise.

	* findvar.c: Do not include "floatformat.h".
	* amd64-darwin-tdep.c: Likewise.
	* arm-linux-tdep.c: Likewise.
	* i386-darwin-tdep.c: Likewise.
	* i387-tdep.c: Likewise.
	* m68k-linux-tdep.c: Likewise.
	* mep-tdep.c: Likewise.
	* mips-tdep.c: Likewise.
	* nios2-tdep.c: Likewise.
	* s390-linux-tdep.c: Likewise.
	* sparc-obsd-tdep.c: Likewise.
	* sparc-tdep.c: Likewise.
	* sparc64-tdep.c: Likewise.
	* spu-tdep.c: Likewise.
	* tic6x-tdep.c: Likewise.
	* tilegx-tdep.c: Likewise.
	* vax-tdep.c: Likewise.
	* xstormy16-tdep.c: Likewise.
	* xtensa-tdep.c: Likewise.

	* top.c: Do not include "doublest.h".
	* aarch64-tdep.c: Likewise.
	* alpha-tdep.c: Likewise.
	* arm-linux-tdep.c: Likewise.
	* m68k-linux-tdep.c: Likewise.
	* tilegx-tdep.c: Likewise.
	* xstormy16-tdep.c: Likewise.
2017-10-05 19:12:45 +02:00