Tom Tromey [Fri, 7 Dec 2012 19:58:10 +0000 (19:58 +0000)]
* typeprint.c (_initialize_typeprint): Set completer
for "whatis" and "ptype".
testsuite
* gdb.base/completion.exp: Add tests for ptype and whatis
completion.
Joel Brobecker [Fri, 7 Dec 2012 10:00:57 +0000 (10:00 +0000)]
Update copyright.py:NOT_FSF_LIST for sim/common subdir.
There was a duplicate ("sim/common/cgen-fpu.h"), and one entry where
we do have an FSF copyright header ("sim/common/sim-fpu.c").
gdb/ChangeLog:
* copyright.py (NOT_FSF_LIST): Remove duplicate entry
"sim/common/cgen-fpu.h". Remove invalid entries
"sim/common/sim-fpu.c" and "sim/mn10300/sim-main.h",
which actually have an FSF copyright header.
* configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
Tom Tromey [Thu, 6 Dec 2012 21:41:07 +0000 (21:41 +0000)]
2012-12-06 Pedro Alves <palves@redhat.com>
Tom Tromey <tromey@redhat.com>
* valops.c (value_cast): Move TYPE_CODE_VOID case earlier.
testsuite
* gdb.base/exprs.exp: Add tests for cast to void.
PR mi/14741:
* mi/mi-cmd-var.c (varobj_update_one): Take value of
attribute "dynamic" and "displayhint" from printed child,
not the root variable.
* gdb.python/py-mi.exp: Correct expected results for attribute
"dynamic" returned by -var-update.
Add test case for correct handling of "diplayhint" for children
of dynamic varobjs.
* gdb.python/py-prettyprint.c (set_itme): New function.
(bug_14741) New function.
(main) Add call to bug_14741().
* gdb.python/py-prettyprint.py (class ArrayPrinter): New class.
Yufeng Zhang [Thu, 6 Dec 2012 15:45:38 +0000 (15:45 +0000)]
gas/
2012-12-06 Yufeng Zhang <yufeng.zhang@arm.com>
* config/tc-aarch64.c (exp_has_bignum_p): Remove.
(my_get_expression): Not get rid of bignums.
(s_ltorg): Increase the range of 'align'.
(programmer_friendly_fixup): Allow bignum expression.
gas/testsuite/
2012-12-06 Yufeng Zhang <yufeng.zhang@arm.com>
* gas/aarch64/illegal.s: Add test for unaccepted LDR literal.
* gas/aarch64/illegal.l: Update.
* gas/aarch64/programmer-friendly.s: Add tests for LDR literal with
the auto-generation of literal in pool.
* gas/aarch64/programmer-friendly.d: Update.
Alan Modra [Thu, 6 Dec 2012 03:13:17 +0000 (03:13 +0000)]
* options.h (General_options): Add plt_align, plt_static_chain,
plt_thread_safe. Update stub_group_size help text.
* powerpc.cc (Target_powerpc::plt_thread_safe): New access function
for new plt_thread_safe_ var.
(use_plt_offset): Correct comments.
(Target_powerpc::do_relax): Look for thread creation symbols to
determine default plt_thread_safe value. Clear plt call stubs
as well as branch stubs each iteration.
(add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
insn constants.
(l, hi, ha, write_insn): Move earlier.
(Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
(Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
plt stubs too.
(Stub_table::update_size): Adjust.
(Stub_table::prev_size, set_prev_size): Delete.
(Stub_table::stub_align): Let --plt-align affect result.
(Stub_table::plt_call_size): Calculate sizes for various stubs.
(Stub_table::branch_stub_size): Use last_plt_size in address calc.
(Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
(Stub_table::do_write): Support more stub variants.
H.J. Lu [Thu, 6 Dec 2012 00:25:19 +0000 (00:25 +0000)]
Extend --copy-dt-needed-entries to creating DSO
ld/
PR ld/14915
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Also
check DT_NEEDED entries when creating shared object with
--copy-dt-needed-entries.
ld/testsuite/
PR ld/14915
* ld-elf/shared.exp (build_tests): Test --add-needed,
--copy-dt-needed-entries, --no-add-needed and
--no-copy-dt-needed-entries with -shared.
Add tests for --no-add-needed and --no-copy-dt-needed-entries
with -shared.
Pierre Muller [Wed, 5 Dec 2012 23:23:22 +0000 (23:23 +0000)]
Avoid memory leaks on struct cmd_list_element.doc field.
* cli/cli-decode.c (add_alias_cmd): Make a copy of doc field
if flags contains DOC_ALLOCATED.
(add_setshow_cmd_full): Add DOC_ALLOCATED to set and show
flags.
(delete_cmd): Handle DOC_ALLOCATED flag.
* cli/cli-decode.h (DOC_ALLOCATED): New macro for use
in flags filed of struct cmd_list_element.
(struct cmd_list_element): Document new flag item.
H.J. Lu [Tue, 4 Dec 2012 17:44:43 +0000 (17:44 +0000)]
Add tests for --add-needed/--copy-dt-needed-entries
* ld-elf/shared.exp (build_tests): Build libneeded1b.so,
libneeded1a.so and libneeded1c.o.
(run_tests): Test --add-needed and --copy-dt-needed-entries.
Add tests for --no-add-needed and --no-copy-dt-needed-entries.
PR ld/10629
* elfxx-mips.c (mips_elf_link_hash_table): Update comment for
use_rld_obj_head.
(_bfd_mips_elf_create_dynamic_sections): Always create a
.rld_map section if no __rld_obj_head symbol has been seen.
bfd/
* elfxx-mips.c (mips_elf_merge_obj_attributes): Correct messages
for the -mdouble-float and -msingle-float cases throughout; make
all the messages report the output file consistently on the
left-hand side.
ld/testsuite/
* ld-mips-elf/attr-gnu-4-12.d: Adjust the warning expected
according to changes to BFD.
* ld-mips-elf/attr-gnu-4-14.d: Likewise.
* ld-mips-elf/attr-gnu-4-31.d: Likewise.
* ld-mips-elf/attr-gnu-4-32.d: Likewise.
* ld-mips-elf/attr-gnu-4-34.d: Likewise.
* ld-mips-elf/attr-gnu-4-41.d: Likewise.
* plugin.c (dlerror): New. Defined if HAVE_DLFCN_H isn't
defined.
(plugin_opt_plugin): Change return type to void. Stop on
dlopen error and report error with dlerror ().
(plugin_load_plugins): Change return type to void. Stop on
dlsym error and report error with dlerror (). Don't use
set_plugin_error.
(plugin_call_cleanup): Issue an error for each plugin.
* plugin.h (plugin_opt_plugin): Change return type to void.
(plugin_load_plugins): Likewise.
Alan Modra [Mon, 3 Dec 2012 05:30:59 +0000 (05:30 +0000)]
* layout.h (Layout::get_executable_sections): Declare.
* layout.cc (Layout::get_executable_sections): New function.
* arm.cc (Target_arm::group_sections): Use it.
(Arm_output_section::group_sections): Delete now redundant test.
* output.cc (Output_reloc::Output_reloc): Add is_relative.
param to handle relative relocs.
* output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
(Output_data_reloc::add_absolute): Adjust.
(Output_data_reloc::add_relative): New function.
(Output_data::reset_data_size): New function.
(Output_relaxed_input_section::set_relobj, set_shndx): New functions.
(Output_section::set_addralign): New function.
(Output_section::checkpoint_set_addralign): New function.
(Output_section::clear_section_offsets_need_adjustment): New function.
(Output_section::input_sections): Make public.
* powerpc.cc (class Output_data_brlt_powerpc): New.
(class Stub_table, class Stub_control): New.
(Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
stub_table_, set_stub_table, stub_table): New vectors and accessor
functions.
(Target_powerpc::do_may_relax, do_relax, push_branch,
new_stub_table, stub_tables, brlt_section, group_sections,
add_branch_lookup_table, find_branch_lookup_table,
write_branch_lookup_table, make_brlt_section): New functions.
(Target_powerpc::struct Sort_sections, class Branch_info): New.
(Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
branch_info_): New vars.
(Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
make call stubs here.
(Output_data_glink): Remove all call stub handling from this class.
(Target_powerpc::Scan::local, global): Save interesting branch
relocs and relocs for ifunc. Adjust calls to plt entry functions.
(Target_powerpc::do_finalize_sections): Only make reg save/restore
functions on final link.
(Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
Handle long branch destinations too.
(Target_powerpc::do_dynsym_value, do_plt_address_for_global,
do_plt_address_for_local): Adjust lookup of plt call stubs.
Yao Qi [Fri, 30 Nov 2012 14:35:50 +0000 (14:35 +0000)]
gdb/
2012-11-30 Yao Qi <yao@codesourcery.com>
* infrun.c (error_is_running, ensure_not_running): Move them
to ...
* infcmd.c (error_is_running, ensure_not_running): ... here.
Make them 'static'.
* inferior.h: Remove declarations of error_is_running and
ensure_not_running.
Alan Modra [Fri, 30 Nov 2012 04:47:08 +0000 (04:47 +0000)]
* powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
_GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
(Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
value if it already exists.
Jerome Guitton [Thu, 29 Nov 2012 16:28:10 +0000 (16:28 +0000)]
Full view of interface-wide types
For displaying the full view of a class-wide object, GDB relies on
the assumption that this view will have the same address as the
address of the object. In the case of simple inheritance, this
assumption is correct; the proper type is deduced by decoding
the tag of the object and converting the result to this full-view
type.
Consider for example an abstract class Shape, a child Circle
which implements an interface Drawable, and the corresponding
following objects:
Then the type specific data and the expanded name of the tag is read
from there:
(gdb) p my_shape'tag
$3 = (access ada.tags.dispatch_table) 0x8059ec4 (classes.circle)
To get the full view, the debugger converts to the corresponding type:
(gdb) p {classes.circle}0x8063e28
$4 = (center => (x => 1, y => 2), radius => 3)
Now, in the case of multiple inheritance, the assumption does not hold
anymore. The address that we have usually points to some
place lower. The offset to the original address is saved in the field
Offset_To_Top of the metadata that are above the tag, at address
obj'tag - 8. In the case of my_shape, this offset is 0:
The following change handles this relocation in the most common cases.
Remaining cases that are still to be investigated are signaled by
comments.
gdb/ChangeLog:
* ada-lang.h (ada_tag_value_at_base_address): New function
declaration.
* ada-lang.c (is_ada95_tag, ada_tag_value_at_base_address):
New functions.
(ada_to_fixed_type_1, ada_evaluate_subexp): Let ada_tag_base_address
relocate the class-wide value if need be.
(ada_value_struct_elt, ada_value_ind, ada_coerce_ref):
Let ada_tag_value_at_base_address relocate the class-wide access/ref
before dereferencing it.
* ada-valprint.c (ada_val_print_1): Relocate to base address
before displaying the content of an interface-wide ref.
gdb/testsuite/ChangeLog:
* gdb.ada/ptype_tagged_param.exp: Adjust expected output in
ptype test.
Jerome Guitton [Thu, 29 Nov 2012 16:26:12 +0000 (16:26 +0000)]
Handle other cases than EVAL_NORMAL in the default case
In the evaluation of an expression in Ada mode, the default case
unwraps the argument unconditionally. For an object of a variant
record type, this unwrapping builds a fixed type from the
specification of the variant type and the actual values of the
object's discriminants. It means that unwrapping needs the "proper"
value for the object, not just a zero value with the proper type.
When not in EVAL_NORMAL, we cannot assume that the evaluation returns
such a proper value; it may well return a zero value of the
appropriate type e.g in EVAL_AVOID_SIDE_EFFECTS. It is wrong to try to
unwrap in that case.
In particular, a problem shows up when using expression of the form
{VARIANT_TYPE}OBJ. GDB first evaluates this expression in
EVAL_AVOID_SIDE_EFFECTS to compute the type, the evaluation of OBJ
in most cases returns a zero value of its type, and as UNOP_MEMVAL
is mapped to the default case its evaluation ends up trying to
read memory around address 0.
gdb/ChangeLog:
* ada-lang.c (ada_evaluate_subexp): Unwrap only in EVAL_NORMAL.
2009-10-19 Edgar E. Iglesias <edgar@axis.com>
Hans-Peter Nilsson <hp@axis.com>
* elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_32_DTPREL>:
Don't subtract the size of the TLS block for non-shared objects
from the relocation.