Alan Modra [Mon, 10 Sep 2012 23:10:41 +0000 (23:10 +0000)]
PR gold/14566
* layout.cc (Layout::set_segment_offsets): When using
common-page-size alignment, ensure we are on a new max-page-size
page.
* output.cc (Output_segment::set_section_addresses): Use
abi_pagesize, not common_pagesize for relro boundary.
(Output_segment::set_offset): Likewise.
Joel Brobecker [Mon, 10 Sep 2012 22:18:24 +0000 (22:18 +0000)]
crash printing optimized out variant type
Assuming the following declarations:
type Discriminants_Record (A : Integer; B : Boolean) is record
C : Float;
end record;
Z : Discriminants_Record := (A => 1, B => False, C => 2.0);
If variable Z is not used, and the compiler optimizes it out,
GDB would crash as follow:
(gdb) print Z
/[...]/gdb/valops.c:1121: internal-error: Unexpected lazy value type.
This is because the ada-lang module forgot to set the optimized_out
flag in the value returned by ada_evaluate_subexp during the value's
"fixing" process. Later on, when trying to print the resulting value,
GDB finds that the value is still lazily allocated, and thus tries to
fetch it. But this is not allowed for not_lval values, hence the internal
error.
gdb/ChangeLog:
* ada-lang.c (coerce_unspec_val_to_type): Make sure that
the optimized_out flag is preserved.
* gdb-index.cc (Gdb_index::pubnames_read): New parameter.
(Gdb_index::pubtypes_read): New parameter.
(Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
to calls.
* gdb-index.h (Gdb_index): New fields pubnames_object_ and
pubtypes_object_.
Keith Seitz [Mon, 10 Sep 2012 17:12:53 +0000 (17:12 +0000)]
PR gdb/13483
* gdbtypes.h (BOOL_PTR_CONVERSION_BADNESS): Rename to ...
(BOOL_CONVERSION_BADNESS): ... this.
* gdbtypes.c (BOOL_PTR_CONVERSION_BADNESS): Likewise.
(rank_one_type): Allow all boolean conversions
permitted by the standard.
* gdb.cp/converts.cc (A::A): Add ctor.
(A::member_): Add member.
(enum my_enum): New enumeration.
(main): Add calls to foo1_7 with various
permitted arguments.
* gdb.cp/converts.exp: Add tests for boolean
conversions permitted by the standard.
* emultempl/mmo.em (mmo_place_orphan): Rewrite to also attach
orphan sections to .data and .bss output sections, not just .text.
When giving up on finding a suitable output section, attach to any
output section other than .MMIX.reg_contents, if it exists.
* scripttempl/mmo.sc: Move output debug sections to just before
.MMIX.reg_contents. Add .gnu.attributes. Add new . = . NOP
assignments and move end-of-section provide-symbols after them
to force the end-of-section symbols to the address after orphan
placement. Add SORT_NONE to .init and .fini sections.
Alan Modra [Sun, 9 Sep 2012 03:43:51 +0000 (03:43 +0000)]
* target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
(Sized_target::gc_add_reference, do_gc_add_reference): New functions.
* gc.h (gc_process_relocs): Call target gc_add_reference.
* gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
* symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
(Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
unnecessary cast.
* powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
to cater for when we don't need code offset. Update use.
(Powerpc_relobj::access_from_map_, opd_valid_): New vars.
(Powerpc_relobj::access_from_map, add_reference, opd_valid,
set_opd_valid): New functions.
(Target_powerpc::do_gc_add_reference): New function.
(Target_powerpc::gc_process_relocs): Call gc()->add_reference on
stashed refs.
(Target_powerpc::do_gc_mark_symbol): New function.
Replace -nw option with $INTERNAL_GDBFLAGS in "xgdb" tests to
avoid spurious results due to ~/.gdbinit.
* gdb.gdb/complaint.exp (setup_test): Replace -nw option with
$INTERNAL_GDBFLAGS in run command.
* gdb.gdb/observer.exp (setup_test): Ditto.
* gdb.gdb/selftest.exp (test_with_self): Ditto.
* gdb.gdb/xfullpath.exp (setup_test): Ditto.
Andreas Krebbel [Thu, 6 Sep 2012 08:23:25 +0000 (08:23 +0000)]
2012-09-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/tc-s390.c (set_highgprs_p): New variable.
(s390_machinemode): New function.
(md_pseudo_table): Add new pseudo command machinemode.
(md_parse_option): Set set_highgprs_p to TRUE if -mzarch was
specified on command line.
(s390_elf_final_processing): Set the highgprs flag in the ELF
header depending on set_highgprs_p.
* doc/c-s390.texi: Document new pseudo machinemode.
H.J. Lu [Tue, 4 Sep 2012 13:52:06 +0000 (13:52 +0000)]
Add Intel Itanium Series 9500 support
bfd/
2012-09-04 Sergey A. Guriev <sergey.a.guriev@intel.com>
* cpu-ia64-opc.c (ins_cnt6a): New function.
(ext_cnt6a): Ditto.
(ins_strd5b): Ditto.
(ext_strd5b): Ditto.
(elf64_ia64_operands): Add new operand types.
gas/
2012-09-04 Sergey A. Guriev <sergey.a.guriev@intel.com>
* config/tc-ia64.c (reg_symbol): Add a new register.
(indirect_reg): Ditto.
(pseudo_func): Add new symbolic constants.
(operand_match): Add new operand types recognition.
(operand_insn): Add new register recognition.
(md_begin): Add new register definition.
(specify_resource): Add new register recognition.
gas/testsuite/
2012-09-04 Sergey A. Guriev <sergey.a.guriev@intel.com>
* gas/testsuite/gas/ia64/psn.d: New file.
* gas/testsuite/gas/ia64/psn.s: New file.
* gas/testsuite/gas/ia64/ia64.exp: Add new testcase.
* gas/testsuite/gas/ia64/opc-i.d: Fixed failing tests.
* gas/testsuite/gas/ia64/opc-m.d: Ditto.
include/opcode/
2012-09-04 Sergey A. Guriev <sergey.a.guriev@intel.com>
* ia64.h (ia64_opnd): Add new operand types.
opcodes/
2012-09-04 Sergey A. Guriev <sergey.a.guriev@intel.com>
* ia64-asmtab.h (completer_index): Extend bitfield to full uint.
* ia64-gen.c: Promote completer index type to longlong.
(irf_operand): Add new register recognition.
(in_iclass_mov_x): Add an entry for the new mov_* instruction type.
(lookup_specifier): Add new resource recognition.
(insert_bit_table_ent): Relax abort condition according to the
changed completer index type.
(print_dis_table): Fix printf format for completer index.
* ia64-ic.tbl: Add a new instruction class.
* ia64-opc-i.c (ia64_opcodes_i): Define new I-instructions.
* ia64-opc-m.c (ia64_opcodes_m): Define new M-instructions.
* ia64-opc.h: Define short names for new operand types.
* ia64-raw.tbl: Add new RAW resource for DAHR register.
* ia64-waw.tbl: Add new WAW resource for DAHR register.
* ia64-asmtab.c: Regenerate.
Do not enable -lmcheck by default when Python is enabled with
threading support.
* configure.ac: (python_has_threads) New variable, by testing
if WITH_THREAD is defined in Python.h.
Move --enable-lmcheck after --with-python.
Do not enable -lmcheck by default if python_has_threads=yes.
Warn if --enable-lmcheck and python_has_threads=yes.
* configure: Regenerate.
H.J. Lu [Fri, 31 Aug 2012 20:41:41 +0000 (20:41 +0000)]
Convert mov to lea in size_dynamic_sections
bfd/
* elf32-i386.c (elf_i386_convert_mov_to_lea): New.
(elf_i386_size_dynamic_sections): Use it on input sections.
(elf_i386_relocate_section): Don't convert
"mov foo@GOT(%reg), %reg" to "lea foo@GOTOFF(%reg), %reg"
for local symbols here.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): New.
(elf_x86_64_size_dynamic_sections): Use it on input sections.
(elf_x86_64_relocate_section): Don't convert
"mov foo@GOTPCREL(%rip), %reg" to "lea foo@GOTOFF(%reg), %reg"
for local symbols.
ld/testsuite/
* ld-i386/i386.exp: Run lea1d, lea1f, lea1f.
* ld-x86-64/x86-64.exp: Run lea1g, lea1h, lea1i, lea1j, lea1k,
lea1l.
Yao Qi [Fri, 31 Aug 2012 08:41:57 +0000 (08:41 +0000)]
gdb/
* mi/mi-cmds.c (mi_cmds): New macros DEF_MI_CMD_CLI
DEF_MI_CMD_MI DEF_MI_CMD_CLI_1 and DEF_MI_CMD_CLI_1.
Update some commands.
* mi/mi-cmds.h (struct mi_cmd) <suppress_notification>: New field.
* mi/mi-main.c (mi_cmd_execute): Set '*parse->cmd->suppress_notification'
to 1.
Alan Modra [Fri, 31 Aug 2012 01:09:52 +0000 (01:09 +0000)]
* powerpc.cc (Powerpc_relobj): Add and use Address typedef.
(Powerpc_relobj::toc_base_offset): New stub function.
(Target_powerpc): Add tp_offset, dtp_offset. Rename
got_mod_index_offset to tlsld_got_offset. Update all refs.
(Target_powerpc::Relocate::enum skip_tls): New.
(Target_powerpc::call_tls_get_addr_): New var.
(Target_powerpc::is_branch_reloc): Move to file scope.
(Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
(Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
New functions.
(Target_powerpc::enum Got_type): Delete old values, add new ones.
(powerpc_info): Correct common_pagesize for ppc64.
(at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
(Powerpc_relocate_functions): Add overflow check enums and functions.
Add non-shift version of rela, rela_ua. Delete all rel public
functions. Delete addr16_lo. Add addr64, addr64_u, addr32,
addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
addr16_ha3, addr14 functions.
(Output_data_got_powerpc::add_constant_pair): New function.
(Output_data_got_powerpc::got_base_offset): Likewise.
(Output_data_got_powerpc::do_write): Correct 64-bit got header.
(instruction constants): Sort, add some more.
(Output_data_glink::do_write): Add and use Address typedef. Use
object->toc_base_offset() stub for 64-bit.
(Target_powerpc::tlsld_got_offset): Use add_constant_pair.
(Target_powerpc::Scan::get_reference_flags): Handle more relocs.
(Target_powerpc::Scan::local, global): Emit relative dynamic reloc
for R_PPC64_TOC. Handle more relocs. Generate got entries for TLS.
Always treat .opd relocs as against locally defined symbol.
Correct condition for RELATIVE relocs.
(Target_powerpc::do_finalize_sections): Test for NULL sections.
(Target_powerpc::Relocate::relocate): Use plt call stub as value
for 32-bit syms with a plt entry. Correct ppc64 toc base
calculations. Handle TLS relocs, and more. Add overflow
checking and adjust for Powerpc_relocate_functions changes.
(Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
Reinstate --emit-relocs code with FIXME.
Alan Modra [Thu, 30 Aug 2012 05:57:05 +0000 (05:57 +0000)]
* layout.cc (Layout::set_segment_offsets): Set p_align to
abi_pagesize, not common_pagesize.
(Layout::relaxation_loop_body): Similarly use abi_pagesize
to determine whether file header can go in segment.
* ld-elf/export-class.sd: New test.
* ld-elf/export-class.vd: New test.
* ld-elf/export-class-def.s: New test source.
* ld-elf/export-class-dep.s: New test source.
* ld-elf/export-class-lib.s: New test source.
* ld-elf/export-class-ref.s: New test source.
* ld-elf/export-class-lib.ver: New test version script.
* ld-elf/export-class.exp: New test script.
* ld-arm/arm-export-class.rd: New test.
* ld-arm/arm-export-class.xd: New test.
* ld-arm/export-class.exp: New test script.
* ld-i386/i386-export-class.rd: New test.
* ld-i386/i386-export-class.xd: New test.
* ld-i386/export-class.exp: New test script.
* ld-mips-elf/mips-32-export-class.rd: New test.
* ld-mips-elf/mips-32-export-class.xd: New test.
* ld-mips-elf/mips-64-export-class.rd: New test.
* ld-mips-elf/mips-64-export-class.xd: New test.
* ld-mips-elf/export-class.exp: New test script.
* ld-powerpc/powerpc-32-export-class.rd: New test.
* ld-powerpc/powerpc-32-export-class.xd: New test.
* ld-powerpc/powerpc-64-export-class.rd: New test.
* ld-powerpc/powerpc-64-export-class.xd: New test.
* ld-powerpc/export-class.exp: New test script.
* ld-x86-64/x86-64-64-export-class.rd: New test.
* ld-x86-64/x86-64-x32-export-class.rd: New test.
* ld-x86-64/export-class.exp: New test script.