Cary Coutant [Mon, 7 Jul 2014 17:14:45 +0000 (10:14 -0700)]
Fix internal error with LTO on ARM.
This prevents the target-specific do_read_symbols methods from being called
twice when do_layout_deferred_sections needs to layout an .eh_frame section.
gold/
PR gold/15639
* dynobj.h (Sized_dynobj::base_read_symbols): New method.
* dynobj.cc (Sized_dynobj::do_read_symbols): Move body to...
(Sized_dynobj::base_read_symbols): ...new method.
* object.h (Sized_relobj_file::base_read_symbols): New method.
* object.cc (Sized_relobj_file::do_read_symbols): Move body to...
(Sized_relobj_file::base_read_symbols): ...new method.
* arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols.
* mips.cc: (Mips_relobj::do_read_symbols): Likewise.
* powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
Denis Chertykov [Tue, 8 Jul 2014 16:15:18 +0000 (20:15 +0400)]
* scripttempl/avr.sc: Remove KEEP for .data and
force .bss VMA to end of .data VMA.
Nick Clifton [Tue, 8 Jul 2014 15:20:48 +0000 (16:20 +0100)]
This fixes PR 17110 which shows that the SH section relocation code can be called
for input BFDs as well as output BFDs.
PR ld/17110
* elf32-sh.c (sh_elf_osec_to_segment): Do not look for output
segments in input bfds.
Ilya Tocar [Tue, 8 Jul 2014 09:45:43 +0000 (13:45 +0400)]
Fix disasm of vmovsd/vmovss with different length values.
gas/testsuite
* gas/i386/evex-lig256-intel.d: Updated.
* gas/i386/evex-lig256.d: Updated.
* gas/i386/evex-lig512-intel.d: Updated.
* gas/i386/evex-lig512-intel.d: Updated.
* gas/i386/x86-64-evex-lig256-intel.d: Updated.
* gas/i386/x86-64-evex-lig256.d: Updated.
* gas/i386/x86-64-evex-lig512-intel.d: Updated.
* gas/i386/x86-64-evex-lig512-intel.d: Updated.
opcodes
* i386-dis-evex.h (EVEX_W_0F10_P_1_M_1): Fix vmovss.
(EVEX_W_0F10_P_3_M_1): Fix vmovsd.
Will Newton [Thu, 26 Jun 2014 14:23:31 +0000 (15:23 +0100)]
ld/ARM: Increase maximum page size to 64kB
Increase the maximum page size to 64kB and align the TEXT_START_ADDR
to a 64kB boundary. This brings AArch32 in line with AArch64 and
improves compatability under certain conditions.
bfd/ChangeLog:
2014-07-08 Will Newton <will.newton@linaro.org>
* elf32-arm.c (ELF_MAXPAGESIZE): Increase the default
value to 64kB and remove custom setting for NaCl.
ld/ChangeLog:
2014-07-08 Will Newton <will.newton@linaro.org>
* emulparams/armelf_linux.sh (TEXT_START_ADDR): Increase
alignment to 64kB boundary.
ld/testsuite/ChangeLog:
2014-07-08 Will Newton <will.newton@linaro.org>
* ld-arm/arm-lib.ld: Increase MAXPAGESIZE value to
match bfd.
* ld-arm/cortex-a8-fix-bl-rel-plt.d: Update offsets to
take into account increased segment alignment.
* ld-arm/ifunc-gdesc.r: Likewise.
* ld-arm/tls-lib.d: Likewise.
Jiong Wang [Tue, 8 Jul 2014 11:14:56 +0000 (12:14 +0100)]
Fix PR 16722 by adding support for 8-byte vector constants.
* config/tc-arm.c (literal_pool): New field "alignment".
(find_or_make_literal_pool): Initialize "alignment" to 2.
(s_ltorg): Align the pool using value of "alignment"
(parse_big_immediate): New parameter "in_exp". Return
parsed expression if "in_exp" is not null.
(parse_address_main): Invoke "parse_big_immediate" for
constant parameter.
(add_to_lit_pool): Add one parameter 'nbytes'.
Split 8 byte entry into two 4 byte entry.
Add padding to align 8 byte entry to 8 byte boundary.
(encode_arm_cp_address): Generate literal pool entry if possible.
(move_or_literal_pool): Generate entry for vldr case.
(enum lit_type): New enum type.
(do_ldst): Use new enum type.
(do_ldstv4): Likewise.
(do_t_ldst): Likewise.
(neon_write_immbits): Support Thumb-2 mode.
* gas/arm/ldconst.s: Add test cases for symbol literal.
* gas/arm/ldconst.d: Likewise.
* gas/arm/vldconst.s: Add test cases for vldr.
* gas/arm/thumb2_vpool.s: Likewise.
* gas/arm/vldconst.d: New pattern for little-endian.
* gas/arm/thumb2_vpool.d: Likewise.
* gas/arm/vldconst_be.d: New pattern for big-endian.
* gas/arm/thumb2_vpool_be.d: Likewise.
Alan Modra [Tue, 8 Jul 2014 05:54:06 +0000 (15:24 +0930)]
Copy st_other for linker script symbol assignments
This fixes a problem seen on powerpc64le ELFv2 when creating a
function symbol alias with ld --defsym. st_other needs to be copied
from the source symbol to the alias in order to set up the local entry
offset for the alias. I decided to make this change in the generic
ELF code rather than in elf64-ppc.c since it looks like other targets
that use st_other bits might benefit too.
bfd/
* elflink.c (_bfd_elf_copy_link_hash_symbol_type): Copy st_other
bits from source to dest.
* linker.c (_bfd_generic_copy_link_hash_symbol_type): Update comment.
* targets.c (struct bfd_target <_bfd_copy_link_hash_symbol_type>):
Likewise.
* bfd-in2.h: Regenerate.
ld/testsuite/
* ld-powerpc/defsym.s, * ld-powerpc/defsym.d: New test.
* ld-powerpc/powerpc.exp: Run it.
Yao Qi [Tue, 1 Jul 2014 11:30:54 +0000 (19:30 +0800)]
Fix gdb.trace/entry-values.exp for thumb mode
We see some fails in gdb.trace/entry-values.exp in thumb mode
(-mthumb -march={armv4t,armv7-a}).
In thumb mode, the lsb of references to 'foo' and 'bar' in the assembly
(produced by dwarf assember) is set, so the generated debug
information is incorrect.
This patch copies the approach used by
[PATCH 4/4] Fix dw2-ifort-parameter.exp on PPC64
https://sourceware.org/ml/gdb-patches/2014-03/msg00202.html
to introduce new labels 'foo_start' and 'bar_start' which are about
the correct function address (without lsb set). This patch fixes
these fails we've seen.
gdb/testsuite:
2014-07-08 Yao Qi <yao@codesourcery.com>
* gdb.trace/entry-values.c: Define labels 'foo_start' and
'bar_start' at the beginning of functions 'foo' and 'bar'
respectively.
* gdb.trace/entry-values.exp: Use 'foo_start' and 'bar_start'
instead of 'foo' and 'bar'.
Jiong Wang [Tue, 8 Jul 2014 08:29:06 +0000 (09:29 +0100)]
Enable elf_backend_rela_normal for AArch64
If we are generating non-relocatable object and --emit-relocs specified,
aarch64 ld is actually generating wrong addend for rela entry when
relocate against local symbol.
for example, for simple testcase
foo.c
===
const char * const a = "foo";
const char *
foo ()
{
return a;
}
bar.c
===
const char * const b = "bar";
const char * bar ()
{
return b;
}
aarch64-none-linux-gnu-ld --emit-relocs -o x.o foo.o bar.o
aarch64-none-linux-gnu-readelf -r x.o
... R_AARCH64_ADR_PRE
0000000000400018 .rodata + 0
... R_AARCH64_ADD_ABS
0000000000400018 .rodata + 0
... R_AARCH64_ADR_PRE
0000000000400018 .rodata + 0
... R_AARCH64_ADD_ABS
0000000000400018 .rodata + 0
while it should be:
... R_AARCH64_ADR_PRE
0000000000400018 .rodata + 0
... R_AARCH64_ADD_ABS
0000000000400018 .rodata + 0
... R_AARCH64_ADR_PRE
0000000000400018 .rodata + 10
... R_AARCH64_ADD_ABS
0000000000400018 .rodata + 10
bfd generic code could actually handle this properly, but only when
elf_backend_rela_normal set to '1'.
this patch enable this and remove those target specific hack.
bfd/
* elfnn-aarch64.c (elf_backend_rela_normal): Set to 1.
(elfNN_aarch64_relocate_section): Remove duplicated addend adjustment
when info->relocatable be true.
ld/testsuite/
* ld-aarch64/emit-relocs-local-addend-bar.s: * New source file.
* ld-aarch64/emit-relocs-local-addend-foo.s: * Likewise.
* ld-aarch64/emit-relocs-local-addend.d: * New testcase.
* ld-aarch64/local-addend-r.d: Likewise.
Markus Metzger [Mon, 30 Jun 2014 09:47:30 +0000 (11:47 +0200)]
reverse-finish: turn internal error into normal error
The reverse-finish command results in an internal error if it cannot determine
the current function.
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) reverse-finish
Run back to call of #0 0x0000000000000000 in ?? ()
gdb/infcmd.c:1576: internal-error: Finish: couldn't find function.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y
This is not an internal error case since the command may be used in scenarios
where there is no function at the current PC, e.g. after calling through a bad
function pointer.
Turn this into a normal error.
gdb/
* infcmd.c (finish_backward): Turn internal error into normal error.
testsuite/
* gdb.btrace/segv.c: New.
* gdb.btrace/segv.exp: New.
Alan Modra [Sat, 5 Jul 2014 02:35:01 +0000 (12:05 +0930)]
Run ar with --plugin for LTO 11 test
Objects built with -fno-fat-lto-objects (the default for gcc-4.9) have
no normal symbols, except things like __gnu_lto_slim. These useless
symbols are the ones put into the archive index, and of course nothing
references them so no objects are extracted by the linker. Running
ar with --plugin changes ar behaviour to put the lto symbols into the
archive index.
PR 17112
* ld-plugin/lto.exp: When building liblti-11.a, pass
--plugin path_to_gcc/liblto_plugin.so to ar.
Alan Modra [Tue, 8 Jul 2014 00:00:45 +0000 (09:30 +0930)]
daily update
Pedro Alves [Mon, 7 Jul 2014 18:05:04 +0000 (19:05 +0100)]
Mention PR gdb/17096 in ChangeLog
Pedro Alves [Mon, 7 Jul 2014 16:51:04 +0000 (17:51 +0100)]
PR gdb/17096: async support breaks remote debugging on Windows
On Windows, with "maint set target-async on" (the default since
a09dd441), Ctrl-C fails to stop a remote target.
With maint target-async on, the SIGINT signal handler doesn't send the
remote interrupt request immediately. Instead, it marks an async
handler as ready, and then the main event loop wakes up and notices
that the SIGINT async signal handler token was set, and calls the
corresponding event handler, which sends the remote interrupt request.
On POSIX-like systems, the SIGINT signal makes the select/poll in the
main event loop wake up / return with EINTR. However, on Windows,
signal handlers run on a separate thread, and Windows doesn't really
have a concept of EINTR. So, just marking the async handler
(effectively just setting a flag) does not wake up gdb_select.
Instead, we need to call gdb_call_async_signal_handler from the signal
handler. The Windows version (in mingw-hdep.c) sets a Windows event
that gdb_select's WaitForMultipleObjects is waiting for.
Confirmed that with this, Ctrl-C interrupts the remote target on
Windows. Also regression tested on x86_64 Fedora 20 against
GDBserver.
gdb/
2014-07-07 Pedro Alves <palves@redhat.com>
* remote.c (async_handle_remote_sigint)
(async_handle_remote_sigint_twice): Call
gdb_call_async_signal_handler instead of
mark_async_signal_handler.
Nick Clifton [Mon, 7 Jul 2014 16:46:05 +0000 (17:46 +0100)]
Remove an accidental commit.
* readelf.c (get_symbol_type): Revert accidental change to
detection of thumb function symbols.
Barney Stratford [Mon, 7 Jul 2014 15:15:19 +0000 (16:15 +0100)]
Adds support for writing values to AVR system I/O registers.
* elf32-avr.c: Handle R_AVR_PORT5 and R_AVR_PORT6.
* reloc.c: Add BFD_RELOC_AVR_PORT5 and BFD_RELOC_AVR_PORT6.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* avr.h: Add R_AVR_PORT5 and R_AVR_PORT6.
* config/tc-avr.c (avr_operand): Permit referring to r26-r31 by
name as [xyz][hl]. Permit using a symbol whoes name begins with
`r' to refer to a register.
Allow arbitrary expressions for the P and p operators.
(md_apply_fix): Check the BFD_RELOC_AVR_PORT5 and
BFD_RELOC_AVR_PORT6 relocations.
Tom Tromey [Wed, 25 Jun 2014 16:23:35 +0000 (10:23 -0600)]
change to_info_record to use target delegation
This changes to_info_record to use target delegation.
Also, target_info_record was unused, so this patch removes it.
2014-07-07 Tom Tromey <tromey@redhat.com>
* target-delegates.c: Rebuild.
* target.c (target_info_record): Remove.
* record.c (info_record_command): Unconditionally call
to_info_record.
* target.h (struct target_ops) <to_info_record>: Use
TARGET_DEFAULT_IGNORE.
(target_info_record): Remove.
Tom Tromey [Wed, 25 Jun 2014 16:16:55 +0000 (10:16 -0600)]
convert to_get_thread_local_address to use target delegation
This converts to_get_thread_local_address to use
TARGET_DEFAULT_NORETURN. One possible oddity is that this changes the
text of the kind of exception thrown in some cases. This doesn't seem
to be a problem; in fact perhaps the final call to 'error' in
target_translate_tls_address should be changed to call
generic_tls_error.
2014-07-07 Tom Tromey <tromey@redhat.com>
* target.h (struct target_ops) <to_get_thread_local_address>: Use
TARGET_DEFAULT_NORETURN.
* target.c (generic_tls_error): New function.
(target_translate_tls_address): Don't search target stack.
* target-delegates.c: Rebuild.
* ppc-linux-tdep.c (ppc_linux_spe_context): Don't search target
stack.
* linux-thread-db.c (thread_db_get_thread_local_address):
Unconditionally call beneath target.
Alan Modra [Mon, 7 Jul 2014 14:12:45 +0000 (23:42 +0930)]
Reinstate compiler check
* lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler
check here too.
Nick Clifton [Mon, 7 Jul 2014 13:41:10 +0000 (14:41 +0100)]
This patch prevents a linker testsuite error if the checks are run with a
toolchain that just contains the binutils - ie without a compiler.
* lib/ld-lib.exp (check_lto_available): Check that a compiler is
available before testing for LTO support.
Alan Modra [Mon, 7 Jul 2014 04:07:16 +0000 (13:37 +0930)]
Ensure ld testsuite gcc -B options precede $CC -B options
Various ld-elf/shared.exp and ld-plugin/lto.exp tests simply appended
the testsuite -B options intended to force gcc use the linker under test.
This fails if $CC itself has -B options, as when setting CC to run gcc
out of a build directory. Net result is that tests were run using
the gcc build dir collect-ld.
* config/default.exp: Don't make tmpdir/gas. Put as symlink into
tmpdir/ld.
(gcc_gas_flag, gcc_ld_flag): Delete.
(gcc_B_opt, ld_L_opt): New globals.
ld-elf/shared.exp: Remove all refs to gcc_gas_flag and gcc_ld_flag.
ld-plugin/lto.exp: Likewise.
lib/ld-lib.exp (run_host_cmd): Add gcc_B_opt and ld_L_opt here.
(ld_simple_link): Remove -B handling now that this is done in
run_host_cmd. Simplify.
(default_ld_compile): Simplify.
(check_lto_available): Use run_host_cmd_yesno.
(check_lto_shared_available): Likewise.
Alan Modra [Mon, 7 Jul 2014 00:00:39 +0000 (09:30 +0930)]
daily update
Alan Modra [Sun, 6 Jul 2014 00:00:56 +0000 (09:30 +0930)]
daily update
Alan Modra [Sat, 5 Jul 2014 02:29:53 +0000 (11:59 +0930)]
Rid libdummy.a from lto.exp
libdummy.a is used to make run_cc_link_tests compile objects and
archive them. libdummy.a isn't used. What we're really doing is
preventing a final link. So do that directly.
* lib/ld-lib.exp (run_ld_link_tests): Stop after assembling objects
if binfile is empty.
(run_ld_link_exec_tests, run_cc_link_tests): Likewise. Tidy
status checks.
* ld-plugin/lto.exp: Don't use libdummy.a trick to compile objects.
Instead use an empty output file.
Alan Modra [Sat, 5 Jul 2014 00:01:46 +0000 (09:31 +0930)]
daily update
Alan Modra [Fri, 4 Jul 2014 05:36:40 +0000 (15:06 +0930)]
Update "configure.in" in comments and doco
bfd/
* Makefile.am: Update "configure.in" comments.
* PORTING: Likewise.
* aoutx.h: Likewise.
* configure.host: Likewise.
* doc/bfdint.texi: Likewise.
* targets.c: Likewise.
* warning.m4: Likewise.
* Makefile.in: Regenerate.
gas/
* doc/internals.texi: Update "configure.in" comments.
* acinclude.m4: Likewise.
* config/tc-sparc.c: Likewise.
ld/
* configure.ac: Update "configure.in" comments.
* configure: Regenerate.
Alan Modra [Fri, 4 Jul 2014 03:29:42 +0000 (12:59 +0930)]
Rename configure.in to configure.ac
bfd/
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* config.in: Regenerate.
* doc/Makefile.in: Regenerate.
opcodes/
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* config.in: Regenerate.
binutils/
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* config.in: Regenerate.
* doc/Makefile.in: Regenerate.
gas/
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* config.in: Regenerate.
* doc/Makefile.in: Regenerate.
gprof/
* configure.ac: Rename from configure.in.
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* gconfig.in: Regenerate.
ld/
* configure.ac: Rename from configure.in.
* Makefile.in: Regenerate.
* config.in: Regenerate.
Alan Modra [Fri, 4 Jul 2014 03:42:07 +0000 (13:12 +0930)]
Remove some more bfd/configure.in dependencies
Missed from
2e98a7bd
bfd/
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove configure.in.
* Makefile.in: Regenerate.
gas/
* doc/Makefile.am (CONFIG_STATUS_DEPENDENCIES): Delete.
* doc/Makefile.in: Regenerate.
Alan Modra [Fri, 4 Jul 2014 02:05:16 +0000 (11:35 +0930)]
Use modern AC_INIT in configure.in
This removes usage of the obsolete AC_INIT and AM_INIT_AUTOMAKE in all
binutils configure.in files. The BFD version is now in bfd/version.m4
rather than bfd/configure.in, which allows automake to automatically
track this dependency.
bfd/
* version.m4: New file.
* configure.in: Include version.m4.
(AC_INIT): Update.
* Makefile.am (RELEASE): Delete.
(bfdver.h): Depend on development.sh, use instead of RELEASE.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
opcodes/
* configure.in: Include bfd/version.m4.
(AC_INIT, AM_INIT_AUTOMAKE): Use modern form.
(BFD_VERSION): Delete.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in.
* configure: Regenerate.
* Makefile.in: Regenerate.
binutils/
* configure.in: Include bfd/version.m4.
(AC_INIT, AM_INIT_AUTOMAKE): Use modern form.
(BFD_VERSION): Delete.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
gas/
* configure.in: Include bfd/version.m4.
(AC_INIT, AM_INIT_AUTOMAKE): Use modern form.
(BFD_VERSION): Delete.
* configure.com: Get bfd version from bfd/version.m4.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
gprof/
* configure.in: Include bfd/version.m4.
(AC_INIT, AM_INIT_AUTOMAKE): Use modern form.
(BFD_VERSION): Delete.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in.
* configure: Regenerate.
* Makefile.in: Regenerate.
ld/
* configure.in: Include bfd/version.m4.
(AC_INIT, AM_INIT_AUTOMAKE): Use modern form.
(BFD_VERSION): Delete.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in.
* configure: Regenerate.
* Makefile.in: Regenerate.
Alan Modra [Fri, 4 Jul 2014 02:03:38 +0000 (11:33 +0930)]
Update gold POTFILES.in
for recent aarch64 and mips support.
* po/POTFILES.in: Regenerate
Alan Modra [Fri, 4 Jul 2014 00:01:17 +0000 (09:31 +0930)]
daily update
Marc Khouzam [Thu, 3 Jul 2014 18:55:36 +0000 (14:55 -0400)]
Assign 'targerr' instead of 'targ' to gdb_stdtargerr.
Tristan Gingold [Thu, 3 Jul 2014 15:30:49 +0000 (17:30 +0200)]
Clarify doc on addr2line output.
binutils/
* doc/binutils.texi: Clarify addr2line output.
Andrew Burgess [Thu, 3 Jul 2014 13:26:04 +0000 (14:26 +0100)]
Update email address in MAINTAINERS list.
Alan Modra [Thu, 3 Jul 2014 07:02:45 +0000 (16:32 +0930)]
Reload --as-needed libraries inside groups
When a shared library appears within --start-group/--end-group ld may
only discover a need for loading the library on the second or
subsequent pass over archive libraries, as more objects are extracted.
ld/
PR 17068
* ldlang.c (load_symbols): Always check flags.reload.
(open_input_bfds): Always reload --as-needed shared libraries,
not just when rescanning.
* ldlang.h (struct lang_input_statement_flags): Update reload comment.
* plugin.c (plugin_should_reload): Assume shared library arg.
* plugin.h (plugin_should_reload): Update comment.
ld/testsuite
* ld-elf/pr17068.s: New.
* ld-elf/pr17068a.s: New.
* ld-elf/pr17068b.s: New.
* ld-elf/pr17068c.s: New.
* ld-elf/pr17068d.s: New.
* ld-elf/pr17068e.s: New.
* ld-elf/pr17068ez.s: New.
* ld-elf/elf.exp: Run new test.
Alan Modra [Thu, 3 Jul 2014 00:01:38 +0000 (09:31 +0930)]
daily update
Jing Yu [Wed, 2 Jul 2014 23:21:23 +0000 (16:21 -0700)]
2014-07-02 Jing Yu <jingyu@google.com>
Initial patch to enable gold aarch64 backend.
This patch is just a skeleton which almost does nothing.
It does not support ILP32 now.
gold/ChangeLog:
* aarch64.cc: New file
* Makefile.am (TARGETSOURCES): Add aarch64.cc
(ALL_TARGETOBJS): Add aarch64.$(OBJEXT)
* Makefile.in: Regenerate.
* configure.tgt: Add entries for aarch64*.
* configure.ac: Likewise.
* configure: Likewise.
elfcpp/ChangeLog:
* aarch64.h: New file. New enums for aarch64-elf64 relocations.
* elfcpp.h (EM_AARCH64, SHT_AARCH64_ATTRIBUTES, PT_AARCH64_ARCHEXT,
PT_AARCH64_UNWIND): New enum constant.
Luis Machado [Wed, 2 Jul 2014 10:59:02 +0000 (11:59 +0100)]
This testcase currently does not handle powerpc branches. It kinda
does in a way, because the arm/aarch64 branch instruction is the
same as powerpc's, but the target triplet pattern is not there.
In summary, the testcase fails to locate the branch offset and causes
a failure and the early termination of the test.
The following patch adds a separate conditional block for powerpc (to keep
things organized), allowing the testcase to continue.
2014-07-02 Luis Machado <lgustavo@codesourcery.com>
* gdb.trace/entry-values.exp: Handle powerpc-specific branch
instruction.
Alan Modra [Wed, 2 Jul 2014 05:37:18 +0000 (15:07 +0930)]
Taking an undefined function's address in an executable
doesn't always mean you need to define a function symbol on plt code.
If all references are in read-write sections, then using dynamic relocs
is OK.
bfd/
* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Clear
pointer_equality_needed when !readonly_dynrelocs.
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise.
ld/testsuite/
* ld-powerpc/ambiguousv1.d: Match symbol table too.
* ld-powerpc/ambiguousv2.d: Likewise.
* ld-powerpc/ambiguousv1b.d: New.
* ld-powerpc/ambiguousv2b.d: New.
* ld-powerpc/powerpc.exp: Run new tests.
Gary Benson [Tue, 1 Jul 2014 14:07:24 +0000 (15:07 +0100)]
Remove unused Linux libthread_db callbacks
gdb/proc-service.c includes several libthread_db callbacks that do not
exist in gdb/gdbserver/proc-service.c. Other than in proc_service.h,
there is no reference to any of these callbacks in any revision of
nptl_db or linuxthreads_db in glibc's git repo so it seems likely that
these functions have never been called. This commit removes them.
gdb/
2014-07-02 Gary Benson <gbenson@redhat.com>
* proc-service.c (ps_xfer_memory): Update comment.
(ps_pstop): Remove unused function.
(ps_pcontinue): Likewise.
(ps_lstop): Likewise.
(ps_lcontinue): Likewise.
(ps_lgetxregsize): Likewise.
(ps_lgetxregs): Likewise.
(ps_lsetxregs): Likewise.
(ps_plog): Likewise.
(ps_ptread): Likewise.
(ps_ptwrite): Likewise.
Alan Modra [Wed, 2 Jul 2014 04:34:21 +0000 (14:04 +0930)]
Set DF_STATIC_TLS for PIEs
If we can dlopen an object then DF_STATIC_TLS is relevant.
* elf32-ppc.c (ppc_elf_check_relocs): Set DF_STATIC_TLS for PIEs too.
* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
Alan Modra [Wed, 2 Jul 2014 00:01:18 +0000 (09:31 +0930)]
daily update
Mark Wielaard [Mon, 30 Jun 2014 21:21:52 +0000 (23:21 +0200)]
Handle volatile array types in dwarf2read.c.
read_tag_const_type propagates the cv-qualifier to the array element type,
but read_tag_volatile_type didn't. Make sure that both cv-qualifiers that
apply to array types are handled the same.
gdb/ChangeLog
* dwarf2read.c (add_array_cv_type): New function.
(read_tag_const_type): Call add_array_cv_type for TYPE_CODE_ARRAY.
(read_tag_volatile_type): Likewise.
gdb/testsuite/ChangeLog
* gdb.base/constvars.c (violent, violet, vips, virgen, vulgar,
vulture, vilify, villar): New volatile array constants.
(vindictive, vegetation): New const volatile array constants.
* gdb.base/volatile.exp: Test volatile and const volatile array
types.
Tom Tromey [Mon, 19 Nov 2012 02:24:22 +0000 (19:24 -0700)]
use cmd_sfunc_ftype and cmd_cfunc_ftype more
This patch changes a few more spots to use either cmd_sfunc_ftype or
cmd_cfunc_ftype, as appropriate. This is a bit cleaner.
Tested by rebuilding.
2014-07-01 Tom Tromey <tromey@redhat.com>
* breakpoint.c (add_catch_command): Use cmd_sfunc_ftype.
* breakpoint.h (add_catch_command): Use cmd_sfunc_ftype.
* cli/cli-decode.c (cmd_cfunc_eq, add_cmd, add_prefix_cmd)
(add_abbrev_prefix_cmd, add_info, add_com): Use cmd_cfunc_ftype.
* command.h (cmd_cfunc_ftype): Move earlier.
(add_cmd, add_prefix_cmd, add_abbrev_prefix_cmd, cmd_cfunc_eq)
(add_com, add_info): Use cmd_cfunc_ftype.
Alan Modra [Tue, 1 Jul 2014 11:13:14 +0000 (20:43 +0930)]
Reorganise struct bfd
for better packing. Removes a field and a flag that are never set.
bfd/
* bfd.c (struct bfd): Reorganise for better packing. Delete
"ifd" field. Make "format", "direction" and "flags" bitfields.
(HAS_LOAD_PAGE): Delete, renumber following flags.
* bfd-in2.h: Regenerate.
* coff-tic4x.c: Remove HAS_LOAD_PAGE from extra flags in target vecs.
binutils/
* objdump.c (dump_bfd_header): Don't print HAS_LOAD_PAGE.
Alan Modra [Tue, 1 Jul 2014 10:02:25 +0000 (19:32 +0930)]
Add symbols for global entry stub, and report stats
The undefined function symbols (with non-zero value) on global entry
stubs are discarded by objdump when disassembling, so give objdump
another symbol to mark the stubs.
Also fixes a couple of bugs:
- entry_section was set to .opd for ELFv2, which meant a hard error
rather than a warning when _start wasn't defined.
- global entry stubs were not built if they were the only type of
stub in an executable.
bfd/
* elf64-ppc.c (ppc_stub_type): Add ppc_stub_global_entry.
(struct ppc_link_hash_table): Increase size of stub_count array.
(build_global_entry_stubs): Emit symbol on global entry stub.
(ppc64_elf_build_stubs): NULL check htab->brlt. Add global entry
stub stats.
ld/
* emultempl/ppc64elf.em (stub_added): Delete.
(gld${EMULATION_NAME}_finish): Call ppc64_elf_build_stubs even when
none of the usual stubs have been added. Only change entry_section
for ELFv1.
Alan Modra [Tue, 1 Jul 2014 08:40:25 +0000 (18:10 +0930)]
Don't include sys/param.h
sys/param.h on recent versions of powerpc glibc ends up including
asm/elf.h via asm/sigcontex.h. asm/elf.h defines R_PPC_* and R_PPC64_*
macros, which clash with our include/elf/ppc.h and include/elf/ppc64.h.
It turns out that no current source uses LD_PATHMAX, so there is no
need for limits.h or sys/param.h, except for one occurrence of UINT_MAX.
I don't have a quarrel with limits.h, but it seems unnecessary just
for UINT_MAX.
* sysdep.h: Don't include limits.h and sys/param.h. Don't
include unistd.h twice.
(LD_PATHMAX): Don't define.
* ldlang.c (lang_common): Don't use UINT_MAX.
Alan Modra [Tue, 1 Jul 2014 03:36:20 +0000 (13:06 +0930)]
Linker foreign output format support for PowerPC64 ELFv2
Makes the ld srec tests pass. Uses a horrible scan through symbols to
find ELF fields for symbol definitions, but the generic linker doesn't
offer anything better. Might be slow. Anyway, sane people will link
to ELF output then objcopy to convert formats.
* elf64-ppc.c (abiversion, set_abiversion): Move earlier.
(ppc64_elf_branch_reloc): Adjust addend for ELFv2 local offset.
(ppc64_elf_set_toc): Set ".TOC." symbol value when using
generic linker.
(ppc64_elf_relocate_section): Disable ELFv2 function entry
optimisation when --traditional-format.
Barney Stratford [Tue, 1 Jul 2014 09:20:17 +0000 (10:20 +0100)]
Add support for the AVR Tiny series of microcontrollers.
* archures.c: add avrtiny architecture for avr target.
* bfd-in2.h: Regenerate.
* cpu-avr.c (arch_info_struct): add avrtiny arch info.
* elf32-avr.c (elf_avr_howto_table): new relocation R_AVR_LDS_STS_16
added for 16 bit LDS/STS instruction of avrtiny arch.
(avr_reloc_map): reloc R_AVR_LDS_STS_16 is mapped to
BFD_RELOC_AVR_LDS_STS_16.
(bfd_elf_avr_final_write_processing): select machine number avrtiny arch.
(elf32_avr_object_p): set machine number for avrtiny arch.
* libbfd.h: Regenerate.
* reloc.c: Add documentation for BFD_RELOC_AVR_LDS_STS_16 reloc.
* config/tc-avr.c (mcu_types): Add avrtiny arch.
Add avrtiny arch devices attiny4, attiny5, attiny9, attiny10, attiny20
and attiny40.
(md_show_usage): Add avrtiny arch in usage message.
(avr_operand): validate and issue error for invalid register for avrtiny.
add new reloc exp for 16 bit lds/sts instruction.
(md_apply_fix): check 16 bit lds/sts operand for out of range and encode.
(md_assemble): check ISA for arch and issue diagnostic.
* include/elf/avr.h (E_AVR_MACH_AVRTINY): define avrtiny machine number.
(R_AVR_LDS_STS_16): define 16 bit lds/sts reloc number.
* include/opcode/avr.h (AVR_ISA_TINY): define avrtiny specific ISA.
(AVR_ISA_2xxxa): define ISA without LPM.
(AVR_ISA_AVRTINY): define avrtiny arch ISA.
Add doc for contraint used in 16 bit lds/sts.
Adjust ISA group for icall, ijmp, pop and push.
Add 16 bit lds/sts encoding and update 32 bit lds/sts constraints.
* opcodes/avr-dis.c (avr_operand): Handle constraint j for 16 bit lds/sts.
(print_insn_avr): do not select opcode if insn ISA is avrtiny and machine
is not avrtiny.
* Makefile.am (ALL_EMULATION_SOURCES): add avrtiny emulation source.
(eavrtiny.c): add rules for avrtiny emulation source.
* Makefile.in: Regenerate.
* configure.tgt: Add avrtiny to avr target emulations.
* scripttempl/avrtiny.sc: New file.
linker script template for avrtiny arch.
* emulparams/avrtiny.sh: New file.
emulation parameters for avrtiny arch.
Michael Eager [Tue, 1 Jul 2014 00:38:15 +0000 (17:38 -0700)]
Sim - Use long int format instead of int to avoid compiling warning
2014-07-01 Chen Gang <gang.chen.5i5j@gmail.com>
* sim/microblaze/interp.c: Use long int format instead of int
format to avoid compiling warnings.
Michael Eager [Tue, 7 Jan 2014 17:15:48 +0000 (09:15 -0800)]
2014-01-07 Michael Eager <eager@eagercon.com>
* dwarf2read.c (read_structure_type): Set stub if ICC & length == 0.
Alan Modra [Tue, 1 Jul 2014 00:00:39 +0000 (09:30 +0930)]
daily update
Tom Tromey [Thu, 28 Mar 2013 17:08:31 +0000 (11:08 -0600)]
constify search_symbols
This constifies the parameters to search_symbols and fixes up the
fallout.
Tested by rebuilding.
2014-06-30 Tom Tromey <tromey@redhat.com>
* symtab.c (operator_chars): Make parameters and return type
const.
(file_matches): Make "files" const.
(struct search_symbols_data) <files>: Now const.
(search_symbols): Make "regexp" and "files" parameters const.
Update.
(symtab_symbol_info): Remove cast.
(rbreak_command): Update.
* symtab.h (search_symbols): Update.
Andreas Arnez [Thu, 26 Jun 2014 15:21:08 +0000 (17:21 +0200)]
watchpoint-reuse-slot.exp: Correctly skip unsupported commands.
The test case "watchpoint-reuse-slot.exp" yields a lot of failures on
s390/s390x: all instances of awatch, rwatch, and hbreak are performed
even though they aren't supported on these targets. This is because
the test case ignores non-support error messages when probing for
support of these commands, like:
(gdb) rwatch buf.byte[0]
Target does not support this type of hardware watchpoint.
The patch adds handling for this case in the appropriate
gdb_test_multiple invocations.
gdb/testsuite/
* gdb.base/watchpoint-reuse-slot.exp: Handle the case that the
target lacks support for awatch, rwatch, or hbreak.
Ulrich Drepper [Mon, 30 Jun 2014 10:58:52 +0000 (06:58 -0400)]
lexsup.c (parse_args): Check whether provided SONAME is empty
string. If yes, warn and ignore it. Don't overwrite valid SONAME
with empty string.
Alan Modra [Mon, 30 Jun 2014 00:42:59 +0000 (10:12 +0930)]
daily update
Alan Modra [Sat, 28 Jun 2014 00:00:39 +0000 (09:30 +0930)]
daily update
Alan Modra [Fri, 27 Jun 2014 01:24:03 +0000 (10:54 +0930)]
Avoid cascading errors due to write_object_file change
* config/obj-macho.c (obj_mach_o_set_symbol_qualifier): Don't set
SYM_MACHO_FIELDS_NOT_VALIDATED after reporting an error.
(obj_mach_o_frob_label): Avoid cascading errors.
(obj_mach_o_frob_symbol): Don't set SYM_MACHO_FIELDS_NOT_VALIDATED.
Yao Qi [Wed, 25 Jun 2014 03:52:52 +0000 (11:52 +0800)]
Associate dummy_frame with ptid
This patch is to add ptid into dummy_frame and extend frame_id to
dummy_frame_id (which has a ptid field). With this change, GDB uses
dummy_frame_id (thread ptid and frame_id) to find the dummy frames.
Currently, dummy frames are looked up by frame_id, which isn't
accurate in non-stop or multi-process mode. The test case
gdb.multi/dummy-frame-restore.exp shows the problem and this patch can
fix it.
Test dummy-frame-restore.exp makes two inferiors stop at
different functions, say, inferior 1 stops at f1 while inferior 2
stops at f2. Set a breakpoint to a function, do the inferior call
in two inferiors, and GDB has two dummy frames of the same frame_id.
When the inferior call is finished, GDB will look up a dummy frame
from its stack/list and restore the inferior's regcache. Two
inferiors are finished in different orders, the inferiors' states are
restored differently, which is wrong. Running dummy-frame-restore.exp
under un-patched GDB, we'll get two fails:
FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 2
FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 1
With this patch applied, GDB will choose the correct dummy_frame to
restore for a given inferior, because ptid is considered when looking up
dummy frames. Two fails above are fixed.
Regression tested on x86_64-linux, both native and gdbserver.
gdb:
2014-06-27 Yao Qi <yao@codesourcery.com>
* breakpoint.c (check_longjmp_breakpoint_for_call_dummy):
Change parameter type to 'struct thread_info *'. Caller
updated.
* breakpoint.h (check_longjmp_breakpoint_for_call_dummy):
Update declaration.
* dummy-frame.c (struct dummy_frame_id): New.
(dummy_frame_id_eq): New function.
(struct dummy_frame) <id>: Change its type to 'struct
dummy_frame_id'.
(dummy_frame_push): Add parameter ptid and save it in
dummy_frame_id.
(pop_dummy_frame_bpt): Use ptid of dummy_frame instead of
inferior_ptid.
(pop_dummy_frame): Assert that the ptid of dummy_frame equals
to inferior_ptid.
(lookup_dummy_frame): Change parameter type to 'struct
dummy_frame_id *'. Callers updated. Call dummy_frame_id_eq
instead of frame_id_eq.
(dummy_frame_pop): Add parameter ptid. Callers updated.
Update comments. Compose dummy_frame_id and pass it to
lookup_dummy_frame.
(dummy_frame_discard): Add parameter ptid.
(dummy_frame_sniffer): Compose dummy_frame_id and call
dummy_frame_id_eq instead of frame_id_eq.
(fprint_dummy_frames): Print ptid.
* dummy-frame.h: Remove comments.
(dummy_frame_push): Add ptid in declaration.
(dummy_frame_pop, dummy_frame_discard): Likewise.
gdb/testsuite:
2014-06-27 Yao Qi <yao@codesourcery.com>
* gdb.multi/dummy-frame-restore.exp: New.
* gdb.multi/dummy-frame-restore.c: New.
gdb/doc:
2014-06-27 Yao Qi <yao@codesourcery.com>
* gdb.texinfo (Maintenance Commands): Update the output of
'maint print dummy-frames' command.
Ludovic Courtès [Mon, 5 May 2014 15:33:16 +0000 (17:33 +0200)]
PR external/{16327,16328}: Remove etc/configure.texi and etc/standards.texi.
etc/ChangeLog
2014-06-27 Ludovic Courtès <ludo@gnu.org>
PR external/16327
PR external/16328
* Makefile.in (MAKEINFO, TEXI2DVI, TEXI2PDF, TEXI2HTML, DVIPS)
(TEXIDIR, INFOFILES, DVIFILES, PDFFILES, HTMLFILES): Remove.
(all): Remove dependency on 'info'.
(install): Remove dependency on 'install-info'.
(standards.info, standards.html, standards.dvi, standards.ps)
(standards.pdf, configure.info, configure.dvi, configure.ps)
(configure.pdf, configure.pdf): Remove.
(info, install-info, html, install-html, dvi, pdf, install-pdf)
clean, maintainer-clean, realclean): Remove body.
* etc/configbuild.ein, etc/configbuild.fig, etc/configbuild.jin,
etc/configbuild.tin, etc/configdev.ein, etc/configdev.fig,
etc/configdev.jin, etc/configdev.tin, etc/configure.texi,
etc/fdl.texi, etc/gnu-oids.texi, etc/make-stds.texi,
etc/standards.texi: Remove.
Alan Modra [Fri, 27 Jun 2014 01:11:31 +0000 (10:41 +0930)]
Fix undefined symbol errors from mips.cc
* symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline.
Alan Modra [Fri, 27 Jun 2014 00:00:38 +0000 (09:30 +0930)]
daily update
Tom Tromey [Fri, 27 Dec 2013 21:36:35 +0000 (14:36 -0700)]
constify error_no_arg
This is a trivial patch to make error_no_arg take a const argument.
2014-06-26 Tom Tromey <tromey@redhat.com>
* cli/cli-cmds.c (error_no_arg): Make "why" const.
* command.h (error_no_arg): Update.
Tom Tromey [Fri, 27 Dec 2013 05:31:32 +0000 (22:31 -0700)]
constify do_set_command and do_show_command
This changes do_set_command and do_show_command to take const
arguments.
2014-06-26 Tom Tromey <tromey@redhat.com>
* cli/cli-setshow.c (do_set_command): Make "arg" const.
(do_show_command): Make "arg" const.
* cli/cli-setshow.h (do_set_command, do_show_command): Update.
Tom Tromey [Mon, 15 Apr 2013 14:59:03 +0000 (08:59 -0600)]
constify get_bookmark and goto_bookmark
This makes arguments to to_get_bookmark and to_goto_bookmark const and
fixes the fallout. Tested by rebuilding. The only thing of note is
the new split between cmd_record_goto and record_goto -- basically
separating the CLI function from a new internal API, to allow const
propagation.
2014-06-26 Tom Tromey <tromey@redhat.com>
* record-full.c (record_full_get_bookmark): Make "args" const.
(record_full_goto_bookmark): Make "raw_bookmark" const.
* record.c (record_goto): New function.
(cmd_record_goto): Use it. Now static.
* record.h (record_goto): Declare.
(cmd_record_goto): Remove declaration.
* target-delegates.c: Rebuild.
* target.h (struct target_ops) <to_get_bookmark,
to_goto_bookmark>: Make parameter const.
Tom Tromey [Wed, 27 Mar 2013 20:14:26 +0000 (14:14 -0600)]
constify to_load
This makes the argument to the target_ops to_load method "const", and
fixes up the fallout. Tested by rebuilding all the affected files.
2014-06-26 Tom Tromey <tromey@redhat.com>
* defs.h (generic_load): Update.
* m32r-rom.c (m32r_load_gen): Make "filename" const.
* monitor.c (monitor_load): Make "args" const.
* remote-m32r-sdi.c (m32r_load): Make "args" const.
* remote-mips.c (mips_load_srec, pmon_load_fast): Make "args"
const.
(mips_load): Make "file" const.
* remote-sim.c (gdbsim_load): Make "args" const.
* remote.c (remote_load): Make "name" const.
* symfile.c (generic_load): Make "args" const.
* target-delegates.c: Rebuild.
* target.c (target_load): Make "arg" const.
(debug_to_load): Make "args" const.
* target.h (struct target_ops) <to_load>: Make parameter const.
(target_load): Update.
Tom Tromey [Mon, 16 Jun 2014 09:17:19 +0000 (03:17 -0600)]
fix memory errors with demangled name hash
This fixes a regression that Jan pointed out.
The bug is that some names were allocated by dwarf2read on the objfile
obstack, but then passed to SYMBOL_SET_NAMES with copy_name=0. This
violates the invariant that the names must have a lifetime tied to the
lifetime of the BFD.
The fix is to allocate names on the per-BFD obstack.
I looked at all callers, direct or indirect, of SYMBOL_SET_NAMES that
pass copy_name=0. Note that only the ELF and DWARF readers do this;
other symbol readers were never updated (and perhaps cannot be,
depending on the details of the formats). This is why the patch is
relatively small.
Built and regtested on x86-64 Fedora 20.
2014-06-26 Tom Tromey <tromey@redhat.com>
PR symtab/16902:
* dwarf2read.c (fixup_go_packaging, dwarf2_compute_name)
(dwarf2_physname, read_partial_die)
(guess_partial_die_structure_name, fixup_partial_die)
(guess_full_die_structure_name, anonymous_struct_prefix)
(dwarf2_name): Use per-BFD obstack.
Erik Akermann [Thu, 26 Jun 2014 13:10:48 +0000 (14:10 +0100)]
This adds the ability to the strings program to display strings that contain \n and \r characters.
* strings.c: Add -w/--include-all-whitespace option to include any
whitespace character in the displayed strings.
* NEWS: Mention the new feature.
* doc/binutils.texi (strings): Document the new command line
option.
Philippe De Muyter [Thu, 26 Jun 2014 12:18:04 +0000 (13:18 +0100)]
Fix a compile time warning on 32-bit hosts.
* or1k-desc.h (spr_field_masks): Add U suffix to the end of long
constants.
Linda Zhang [Thu, 26 Jun 2014 11:18:39 +0000 (12:18 +0100)]
Change the default behaviour of the PE targeted linker so that timestamps are
inserted. This is for compatibility with other, non-GNU tools. Deterministic
binaries can still be created by using the new --no-insert-timestamp command line
option.
* emultempl/pe.em: Initialise insert_timestamp to true.
Add a --no-insert-timestamp command line option.
* emultempl/pep.em: Likewise.
* ld.texinfo: Document that --insert-timestamp is enabled by
default and that it now has an inverse command line option.
* NEWS: Mention the new behaviour.
Nick Clifton [Thu, 26 Jun 2014 08:32:25 +0000 (09:32 +0100)]
Fixes part of a problem reading deliberately non-conforming ELF binaries - where a
note segment is present but no note section.
* readelf.c (process_note_sections): If there are no note sections
try processing note segments instead.
Yao Qi [Tue, 24 Jun 2014 13:47:14 +0000 (21:47 +0800)]
Move local variables to inner block
dummy_frame_sniffer has two local variables dummyframe and this_id,
but they are only used in the if block below. This patch is to move
them into the inner block.
gdb:
2014-06-26 Yao Qi <yao@codesourcery.com>
* dummy-frame.c (dummy_frame_sniffer): Move local variables
dummyframe and this_id into inner block below.
Nick Clifton [Thu, 26 Jun 2014 08:12:55 +0000 (09:12 +0100)]
Fixes a problem displaying the contents of a binary containing corrupt debug
information, specifically a DW_AT_MIPS_linkage_name attribute that has a numeric
value rather than a string value.
PR binutils/16949
* dwarf2.c (is_str_attr): New function.
(find_abstract_instance_name): Use it to determine when an
attribute has a string value.
Yao Qi [Thu, 26 Jun 2014 06:25:22 +0000 (14:25 +0800)]
Typo fix in signal_pass initialization
When I read the code, I happen to see this:
signal_pass = (unsigned char *)
xmalloc (sizeof (signal_program[0]) * numsigs);
^^^^^^^^^^^^^^
It is a typo, and this patch is to fix it.
gdb:
2014-06-26 Yao Qi <yao@codesourcery.com>
* infrun.c (_initialize_infrun): Replace "signal_program[0]"
with "signal_pass[0]" in the initialization of signal_pass.
Alan Modra [Thu, 26 Jun 2014 00:00:37 +0000 (09:30 +0930)]
daily update
Nick Clifton [Wed, 25 Jun 2014 15:35:58 +0000 (16:35 +0100)]
Fixes to allow a toolchain configured with --enable-all to build on a 32-bit host.
* Makefile.am (ALL_EMULATION_SOURCES): Move ei386pep.c from
here...
(ALL_64_EMULATION_SOURCES): ... to here.
(ALL_EMUL_EXTRA_OFILES): Move pep-dll.o from here...
(ALL_64_EMUL_EXTRA_OFILES): New. ... to here.
* configure.in (EMUL_EXTRA_OFILES): Include
ALL_64_EMUL_EXTRA_OFILES when making a 64-bit enabled build.
* Makefile.in: Regenerate.
* configure: Regenerate.
Kyle McMartin [Wed, 25 Jun 2014 14:57:45 +0000 (10:57 -0400)]
ld/arm: adjust offsets in tls-gdierelax2.d
Addition of DF_STATIC_TLS in
eea6dad2 results in the addition of
flags to the dynamic section, which in turn changes these addresses.
Fix them up to match their new positions.
ld/testsuite/Changelog:
2014-06-24 Kyle McMartin <kyle@redhat.com>
* ld-arm/tls-gdierelax2.d: Fix expected offsets.
Markus Metzger [Tue, 20 May 2014 13:53:44 +0000 (15:53 +0200)]
btrace: pretend we're not replaying when generating a core file
When generating a core file using the "generate-core-file" command while
replaying with the btrace record target, we won't be able to access all
registers and all memory. This leads to the following assertion:
gdb/regcache.c:1034: internal-error: regcache_raw_supply: Assertion `regnum >= 0 && regnum < regcache->descr->nr_raw_registers' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.btrace/gcore.exp: generate-core-file core (GDB internal error)
Resyncing due to internal error.
Pretend that we are not replaying while generating a core file. This will
forward fetch and store registers as well as xfer memory calls to the target
beneath.
gdb/
* record-btrace.c (record_btrace_generating_corefile)
(record_btrace_prepare_to_generate_core)
(record_btrace_done_generating_core): New.
(record_btrace_xfer_partial, record_btrace_fetch_registers)
(record_btrace_store_registers, record_btrace_prepare_to_store):
Forward request when generating a core file.
(record_btrace_open): Set record_btrace_generating_corefile to zero.
(init_record_btrace_ops): Set to_prepare_to_generate_core and
to_done_generating_core.
testsuite/
* gdb.btrace/gcore.exp: New.
Markus Metzger [Tue, 20 May 2014 13:22:53 +0000 (15:22 +0200)]
gcore, target: allow target to prepare/cleanup for/after core file generation
Add new target functions to_prepare_to_generate_core and
to_done_generating_core that are called before and after generating a core
file, respectively.
This allows targets to prepare for core file generation and to clean up
afterwards.
gdb/
* target.h (target_ops) <to_prepare_to_generate_core>
<to_done_generating_core>: New.
(target_prepare_to_generate_core, target_done_generating_core): New.
* target.c (target_prepare_to_generate_core)
(target_done_generating_core): New.
* target-delegates.c: Regenerate.
* gcore.c: (write_gcore_file): Rename to ...
(write_gcore_file_1): ...this.
(write_gcore_file): Call target_prepare_to_generate_core
and target_done_generating_core.
Markus Metzger [Thu, 22 May 2014 06:47:42 +0000 (08:47 +0200)]
make_corefile_notes: have caller free returned memory
The various make_corefile_notes implementations for gdbarch as well as target
currently make an xfree cleanup on the data they return. This causes problems
when trying to put a TRY_CATCH around the make_corefile_notes call.
Specifically, we get a stale cleanup error in restore_my_cleanups.
Omit the make_cleanup and have the caller free the memory.
gdb/
* fbsd-nat.c (fbsd_make_corefile_notes): Remove make_cleanup call.
* gcore.c (write_gcore_file): Free memory returned from
make_corefile_notes.
* linux-tdep.c (linux_make_corefile_notes): Remove make_cleanup call.
* procfs.c (procfs_make_note_section): Remove make_cleanup call.
Alan Modra [Wed, 25 Jun 2014 00:00:37 +0000 (09:30 +0930)]
daily update
Cary Coutant [Tue, 24 Jun 2014 19:17:09 +0000 (12:17 -0700)]
Fix dwp to allow intermediate .dwp files with no .debug_types sections.
gold/
* dwp.cc (Dwo_file::read): Allow files with no .debug_types
sections.
(Dwo_file::sized_read_unit_index): Likewise.
Eli Zaretskii [Tue, 24 Jun 2014 16:28:40 +0000 (19:28 +0300)]
Minor improvements in manual indexing.
* doc/gdb.texinfo (Screen Size): Add more index entries.
Alan Modra [Tue, 24 Jun 2014 03:53:04 +0000 (13:23 +0930)]
Don't strip section defining _SDA_BASE_
Prior to
93d1b056 _SDA_BASE_ used to be defined in a linker script
output section. Now _SDA_BASE_ is defined in an input section that is
subject to being stripped. If the section is stripped we don't output
the symbol, which results in --emit-relocs trying to emit relocs with
dangling references to _SDA_BASE_.
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Arrange to keep
.sdata/.sdata2 when _SDA_BASE_/_SDA2_BASE_ should be output
for --emit-relocs.
Yao Qi [Fri, 30 May 2014 08:08:10 +0000 (16:08 +0800)]
Skip 'bx reg' on arm-linux
In arm-tdep.c, arm_skip_stub is installed to gdbarch
skip_trampoline_code, but in arm-linux-tdep.c,
find_solib_trampoline_target is installed to skip_trampoline_code.
That means gdb configured for arm-linux target doesn't recognize some
arm specific trampolines or stubs. Beside handling generic solib
trampoline, gdb for arm-linux target should be able to handle arm
specific trampolines. This patch is to skip arm specific stubs, if
any, and as a fallback, skip the generic solib trampoline.
gdb:
2014-06-24 Yao Qi <yao@codesourcery.com>
* arm-linux-tdep.c (arm_linux_skip_trampoline_code): New.
(arm_linux_init_abi): Set skip_trampoline_code with
gdbarch_skip_trampoline_code instead of
find_solib_trampoline_target.
Yao Qi [Fri, 30 May 2014 08:06:32 +0000 (16:06 +0800)]
Apply stub unwinder to 'bx reg' trampoline
In target arm-none-eabi, prologue unwinder is used for trampoline
'bx reg'. However, in target arm-linux, exidx unwinder is selected for
trampoline at first, which is not expected. The main function and the
trampoline is,
0x00009dfc <main+0>: push {r4, r5, r6, r7, lr}
......
0x0000ac30 <main+3636>: ldrdeq r3, [r1], -r8
0x0000ac34: bx r2
0x0000ac36: bx r4
and .ARM.exidx is:
0x9dfc <main>: @0xb404
Compact model index: 1
0x97 vsp = r7
0x20 vsp = vsp + 132
0x3f vsp = vsp + 256
0x80 0xf0 pop {r8, r9, r10, r11}
0xab pop {r4, r5, r6, r7, r14}
0xac38 <__aeabi_drsub>: 0x1 [cantunwind]
Trampolines 'bx r2' and 'bx r4' doesn't belong to main, but the exidx
for main is still selected form them because there is no end address
of each exidx entry.
Instead of teaching exidx unwinder ignore this trampoline (which looks
complicated and error prone), I decide to let stub unwinder to handle
trampoline, because stub undwinder is installed before exidx unwinder,
and this trampoline can be regarded as a stub too.
This patch is to add the code to match 'bx reg' trampoline in the
sniffer of stub unwinder.
gdb:
2014-06-24 Yao Qi <yao@codesourcery.com>
* arm-tdep.c (arm_stub_unwind_sniffer): Return 1 if
arm_skip_bx_reg returns non-zero.
Yao Qi [Fri, 30 May 2014 07:51:45 +0000 (15:51 +0800)]
Skip 'bx reg' trampoline on arm-none-eabi
After this patch
<https://gcc.gnu.org/ml/gcc-patches/2005-01/msg00813.html> applied to
GCC, a new trampoline is generated but GDB doesn't recognize it. This
patch is to teach GDB to understand this trampoline. See details
about this trampoline and the heuristics in the comments.
gdb:
2014-06-24 Yao Qi <yao@codesourcery.com>
* arm-tdep.c (arm_skip_bx_reg): New function.
(arm_skip_stub): Call arm_skip_bx_reg.
Alan Modra [Tue, 24 Jun 2014 00:01:18 +0000 (09:31 +0930)]
daily update
Sasa Stankovic [Mon, 23 Jun 2014 18:52:34 +0000 (11:52 -0700)]
gold/
* mips.cc: New file.
* Makefile.am (TARGETSOURCES): Add mips.cc
(ALL_TARGETOBJS): Add mips.$(OBJEXT)
* configure.tgt: Add entries for mips*.
* configure.ac: Likewise.
* Makefile.in: Regenerate.
* configure: Likewise.
Don Breazeal [Mon, 23 Jun 2014 18:24:43 +0000 (11:24 -0700)]
Add myself as write-after-approval maintainer.
Pedro Alves [Mon, 23 Jun 2014 15:44:04 +0000 (16:44 +0100)]
x86 Linux watchpoints: Couldn't write debug register: Invalid argument.
This patch fixes this on x86 Linux:
(gdb) watch *buf@2
Hardware watchpoint 8: *buf@2
(gdb) si
0x00000000004005a7 34 for (i = 0; i < 100000; i++); /* stepi line */
(gdb) del
Delete all breakpoints? (y or n) y
(gdb) watch *(buf+1)@1
Hardware watchpoint 9: *(buf+1)@1
(gdb) si
0x00000000004005a7 in main () at ../../../src/gdb/testsuite/gdb.base/watchpoint-reuse-slot.c:34
34 for (i = 0; i < 100000; i++); /* stepi line */
Couldn't write debug register: Invalid argument.
(gdb)
In the example above the debug registers are being switched from this
state:
CONTROL (DR7):
0000000000050101 STATUS (DR6):
0000000000000000
DR0: addr=0x0000000000601040, ref.count=1 DR1: addr=0x0000000000000000, ref.count=0
DR2: addr=0x0000000000000000, ref.count=0 DR3: addr=0x0000000000000000, ref.count=0
to this:
CONTROL (DR7):
0000000000010101 STATUS (DR6):
0000000000000000
DR0: addr=0x0000000000601041, ref.count=1 DR1: addr=0x0000000000000000, ref.count=0
DR2: addr=0x0000000000000000, ref.count=0 DR3: addr=0x0000000000000000, ref.count=0
That is, before, DR7 was setup for watching a 2 byte region starting
at what's in DR0 (0x601040).
And after, DR7 is setup for watching a 1 byte region starting at
what's in DR0 (0x601041).
We always write DR0..DR3 before DR7, because if we enable a slot's
bits in DR7, you need to have already written the corresponding
DR0..DR3 registers -- the kernel rejects the DR7 write with EINVAL
otherwise.
The error shown above is the opposite scenario. When we try to write
0x601041 to DR0, DR7's bits still indicate intent of watching a 2-byte
region. That DR0/DR7 combination is invalid, because 0x601041 is
unaligned. To watch two bytes, we'd have to use two slots. So the
kernel errors out with EINVAL.
Fix this by always first clearing DR7, then writing DR0..DR3, and then
setting DR7's bits.
A little optimization -- if we're disabling the last watchpoint, then
we can clear DR7 just once. The changes to nat/i386-dregs.c make that
easier to detect, and as bonus, they make it a little easier to make
sense of DR7 in the debug logs, as we no longer need to remember we're
seeing stale bits.
Tested on x86_64 Fedora 20, native and GDBserver.
This adds an exhaustive test that switches between many different
combinations of watchpoint types and addresses and widths.
gdb/
2014-06-23 Pedro Alves <palves@redhat.com>
* amd64-linux-nat.c (amd64_linux_prepare_to_resume): Clear
DR_CONTROL before setting DR0..DR3.
* i386-linux-nat.c (i386_linux_prepare_to_resume): Likewise.
* nat/i386-dregs.c (i386_remove_aligned_watchpoint): Clear all
bits of DR_CONTROL related to the debug register slot being
disabled. If all slots are vacant, clear local slowdown as well,
and assert DR_CONTROL is 0.
gdb/gdbserver/
2014-06-23 Pedro Alves <palves@redhat.com>
* linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR_CONTROL
before setting DR0..DR3.
gdb/testsuite/
2014-06-23 Pedro Alves <palves@redhat.com>
* gdb.base/watchpoint-reuse-slot.c: New file.
* gdb.base/watchpoint-reuse-slot.exp: New file.
Siva Chandra [Wed, 18 Jun 2014 10:46:37 +0000 (03:46 -0700)]
Align behavior of xmethod commands with that of pretty-printer commands.
Currently, the xmethod commands lookup xmethod matchers in the current
progspace even if the locus regular expression matches the progspace's
filename. Pretty printer commands do not match the current progspace's
filename.
gdb/
* python/lib/gdb/command/xmethods.py
(get_method_matchers_in_loci): Lookup xmethod matchers in the
current progspace only if the string "progspace" matches LOCUS_RE.
gdb/testsuite
* gdb.python/py-xmethods.exp: Use "progspace" instead of the
progspace's filename in 'info', 'enable' and 'disable' command
tests.
Jan Kratochvil [Mon, 23 Jun 2014 06:24:36 +0000 (08:24 +0200)]
testsuite: Use istarget and is_lp64_target for 3 testcases.
On x86_64 with -m32 or on i686 it will:
Running ./gdb.arch/amd64-stap-special-operands.exp ...
gdb compile failed, amd64-stap-triplet.c: Assembler messages:
amd64-stap-triplet.c:35: Error: bad register name `%rbp'
amd64-stap-triplet.c:38: Error: bad register name `%rsp'
amd64-stap-triplet.c:40: Error: bad register name `%rbp)'
amd64-stap-triplet.c:41: Error: bad register name `%rsi'
amd64-stap-triplet.c:42: Error: bad register name `%rbp)'
/tmp/ccjOdmpl.s:63: Error: bad register name `%rbp'
2014-06-23 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/amd64-stap-special-operands.exp: Use is_lp64_target.
* gdb.arch/amd64-stap-optional-prefix.exp: Likewise.
* gdb.dwarf2/dw2-error.exp: Use istarget and is_lp64_target.
Message-ID: <
20140622211401.GA3716@host2.jankratochvil.net>
Alan Modra [Mon, 23 Jun 2014 00:00:34 +0000 (09:30 +0930)]
daily update
Alan Modra [Sun, 22 Jun 2014 00:00:37 +0000 (09:30 +0930)]
daily update
Alan Modra [Sat, 21 Jun 2014 00:00:43 +0000 (09:30 +0930)]
daily update
Philippe De Muyter [Fri, 20 Jun 2014 23:46:15 +0000 (09:16 +0930)]
Fix fallout from
6d00b590
* targets.c (_bfd_target_vector): Add missing #ifdef BFD64 for
a number of targets.
Jan Kratochvil [Fri, 20 Jun 2014 15:43:56 +0000 (17:43 +0200)]
Fix --with-system-readline with readline-6.3 patch 5
I have filed now:
--with-system-readline uses bundled readline include files
https://sourceware.org/bugzilla/show_bug.cgi?id=17077
To see any effect of the patch below you have to do:
rm -rf readline
Otherwise readline include files get used the bundled ones from GDB which are
currently 6.2 while system readline may be 6.3 already.
You also have to use system readline-6.3 including its upstream patch:
[Bug-readline] Readline-6.3 Official Patch 5
http://lists.gnu.org/archive/html/bug-readline/2014-04/msg00018.html
Message-ID: <
140415125618.
AA57598.SM@caleb.ins.cwru.edu>
In short it happens on Fedora Rawhide since:
readline-6.3-1.fc21
https://koji.fedoraproject.org/koji/buildinfo?buildID=538941
The error is:
../../gdb/tui/tui-io.c:132:1: error: 'Function' is deprecated [-Werror=deprecated-declarations]
static Function *tui_old_rl_getc_function;
^
../../gdb/tui/tui-io.c:133:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations]
static VFunction *tui_old_rl_redisplay_function;
^
../../gdb/tui/tui-io.c:134:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations]
static VFunction *tui_old_rl_prep_terminal;
^
../../gdb/tui/tui-io.c:135:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations]
static VFunction *tui_old_rl_deprep_terminal;
^
It is since bash change:
lib/readline/rltypedefs.h
- remove old Function/VFunction/CPFunction/CPPFunction typedefs as
suggested by Tom Tromey <tromey@redhat.com>
The new typedefs used below are present in readline/rltypedefs.h since:
git://git.savannah.gnu.org/bash.git
commit
28ef6c316f1aff914bb95ac09787a3c83c1815fd
Date: Fri Apr 6 19:14:31 2001 +0000
gdb/
2014-06-20 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix --with-system-readline with readline-6.3 patch 5.
* tui/tui-io.c (tui_old_rl_getc_function, tui_old_rl_redisplay_function)
(tui_old_rl_prep_terminal, tui_old_rl_deprep_terminal): Use rl_*_t
types.
Message-ID: <
20140620105004.GA22236@host2.jankratochvil.net>
Tom Tromey [Fri, 13 Jun 2014 19:08:23 +0000 (13:08 -0600)]
make obstack object allocators more type-safe
This changes OBSTACK_ZALLOC and OBSTACK_CALLOC to cast their value to
the correct type. This is more type-safe and also is more in line
with the other object-allocation macros in libiberty.h.
Making this change revealed one trivial error in dwarf2read.c.
On the whole that seems pretty good to me.
Tested by rebuilding.
2014-06-20 Tom Tromey <tromey@redhat.com>
* dwarf2read.c (dw2_get_real_path): Use correct type in
OBSTACK_CALLOC.
* gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Cast result.
Gary Benson [Fri, 20 Jun 2014 14:41:28 +0000 (15:41 +0100)]
Fix mingw32 build on x86-64 RHEL 6.5
This commit fixes the mingw32 build on x86-64 RHEL 6.5.
gdb/gdbserver/
2014-06-20 Gary Benson <gbenson@redhat.com>
* configure.ac (AC_REPLACE_FUNCS) <vasprintf, vsnprintf>: Removed.
* configure: Regenerated.
* config.in: Likewise.