Nick Clifton
91d6fa6a03
Add -Wshadow to the gcc command line options used when compiling the binutils.
...
Fix up all warnings generated by the addition of this switch.
2009-12-11 13:42:17 +00:00
Nick Clifton
28d5f67740
PR ld/10956
...
* ld.h (struct args_type): Rename 'relax' field to
'disable_target_specific_optimizations' and turn it into a
tri-state variable.
(RELAXATION_DISABLED_BY_DEFAULT): New macro.
(RELAXATION_DISABLED_BY_USER): New macro.
(RELAXATION_ENABLED): New macro.
(DISABLE_RELAXATION): New macro.
(ENABLE_RELAXATION): New macro.
* lexsup (enum option_values): Add OPTION_NO_RELAX.
(struct ld_options): Add --no-relax.
(parse_args): Handle OPTION_NO_RELAX. Use DISABLE_RELAXATION and
ENABLE_RELAXATION macros.
* ldlang.c (lang_relax_sections): Use RELAXATION_ENABLED macro.
(lang_process): Likewise.
* ldmain.c (main): Initialise
disable_target_specific_optimizations field.
(multiple_definition): Use RELAXATION_ENABLED macro.
* ld.texinfo: Document new command line option.
* emultempl/alphaelf.em: Remove --no-relax option.
(before_allocation): Test RELAXATION_DISABLED_BY_USER macro.
Use ENABLE_RELAXATION macro.
* emultempl/avrelf.em: (after_allocation): Test RELAXATION_ENABLED
macro.
* emultempl/cr16elf.em: Remove --no-relax option.
(before_allocation): Test RELAXATION_DISABLED_BY_USER macro.
Use ENABLE_RELAXATION macro.
* emultempl/crxelf.em: Remove --no-relax option.
(before_allocation): Test RELAXATION_DISABLED_BY_USER macro.
Use ENABLE_RELAXATION macro.
* emultempl/mmix-elfnmmo.em: (before_allocation): Use
ENABLE_RELAXATION macro.
* emultempl/needrelax.em: (before_allocation): Use
ENABLE_RELAXATION macro.
* emultempl/ppc32elf.em: (before_allocation): Test
RELAXATION_DISABLED_BY_DEFAULT macro. Use
ENABLE_RELAXATION macro.
* emultempl/sh64elf.em: (before_allocation): Test
RELAXATION_ENABLED macro. Use DISABLE_RELAXATION macro.
* emultempl/xtensaelf.em: Remove --no-relax option.
(before_allocation): Test RELAXATION_ENABLED macro.
Use ENABLE_RELAXATION macro.
2009-11-26 13:45:25 +00:00
Nick Clifton
ddbb8a31d5
* lexsup.c: Rename --add-needed to --copy-dt-needed-entries.
...
* ldlang.h (struct lang_input_statement_struct): Rename add_needed
to add_DT_NEEDED_for_dynamic. Rename as_needed to
add_DT_NEEDED_for_regular.
* ldlang.c: Likewise.
* ldlang.h: Likewise.
* ldlang.c: Use the new variable names.
* ldgram.y: Likewise.
* emultempl/elf32.em: Likewise.
* ld.texinfo: Document the renamed option. Also mention its
affect on the resolution of dynamic symbols.
* NEWS: Mention the changed option name.
2009-11-05 15:35:50 +00:00
Alan Modra
fc1ed73727
* ldlang.c (load_symbols): Set whole_archive from entry when
...
parsing a linker script.
2009-10-14 01:48:53 +00:00
Alan Modra
fd68d03d92
PR ld/10749
...
* ldlang.c (lang_size_sections_1): Zero section vmas only for COFF.
2009-10-09 05:19:37 +00:00
Alan Modra
4100cea361
PR ld/10744
...
* ldlang.c (lang_new_phdr): Allow FILEHDR/PHDRS on more than the
first PT_LOAD header.
* ld.texinfo: Update.
2009-10-08 01:00:27 +00:00
Nathan Sidwell
5c1a3f0fa7
ld/
...
* ldlang.c (lang_new_phdr): Check PHDRS and FILEHDR in loadable
segments do not appear after a different loadable segment.
* ld.texinfo (PHDRS): Document order of processing segments.
Document where PHDRS and FILEHDR may appear.
ld/testsuite/
* ld-scripts/phdrs3.d: New.
* ld-scripts/phdrs3.t: New.
* ld-scripts/phdrs3.exp: New.
2009-10-07 07:25:36 +00:00
Alan Modra
cafed8af5a
* ldlang.c (lang_size_sections_1): Allow scripts to specify a
...
non-zero vma even when relocatable.
2009-09-29 02:24:56 +00:00
Christopher Faylor
eceda120cd
* ldlang.c (lang_size_sections_1): Always force output vma to zero for
...
relocatable sections.
(lang_size_sections_1): Revert previous COFF-only accommodation for relocatable
sections.
2009-09-27 16:08:34 +00:00
Nick Clifton
1e9cc1c27b
* po/bfd.pot: Updated by the Translation project.
...
* po/binutils.pot: Updated by the Translation project.
* po/gold.pot: Updated by the Translation project.
* po/gold.pot: Updated by the Translation project.
* po/gprof.pot: Updated by the Translation project.
* po/sv.po: Updated Swedish translation.
* po/ld.pot: Updated by the Translation project.
* po/fi.po: Updated Finnish translation.
* po/ld.pot: Updated by the Translation project.
* po/fi.po: Updated Finnish translation.
Updated sources to compile cleanly with -Wc++-compat:
* basic_blocks.c: Add casts.
* cg_dfn.c: Add cast.
* corefile.c: Add casts.
* gmon_io.c: Add casts.
* hist.c: Add cast.
* source.c: Add cast.
* sym_ids.c (struct match): Moved to top level.
Updated soruces in ld/* to compile cleanly with -Wc++-compat:
* ld.h (enum endian_enum,enum symbolic_enum,enum dynamic_list_enum): Move to top level.
* ldcref.c: Add casts.
* ldctor.c: Add casts.
* ldexp.c
* ldexp.h (enum node_tree_enum,enum phase_enum): Move to top level.
* ldlang.c: Add casts. (lang_insert_orphan): Use enum name instead of integer.
* ldlang.h (enum statement_enum): Move to top level.
* ldmain.c: Add casts.
* ldwrite.c: Add casts.
* lexsup.c: Add casts. (enum control_enum): Move to top level.
* mri.c: Add casts. (mri_draw_tree): Use enum name instead of integer.
Updated sources to compile cleanly with -Wc++-compat:
* basic_blocks.c: Add casts.
* cg_dfn.c: Add cast.
* corefile.c: Add casts.
* gmon_io.c: Add casts.
* hist.c: Add cast.
* source.c: Add cast.
* sym_ids.c (struct match): Moved to top level.
* as.c (main): Call dwarf2_init.
* config/obj-elf.c (struct group_list): New field.
(build_group_lists): Use hash lookup.
(free_section_idx): New function.
(elf_frob_file): Adjust.
* dwarf2dbg.c (all_segs_hash, last_seg_ptr): New variables.
(get_line_subseg): Adjust.
(dwarf2_init): New function.
* dwarf2dbg.h (dwarf2_init): New declaration.
2009-09-11 15:27:38 +00:00
Alan Modra
8be573a79b
PR ld/10569
...
* ldexp.c (fold_name <MAXPAGESIZE>): Return config.maxpagesize.
(fold_name <COMMONPAGESIZE>): Similarly.
* ldlang.c (output_target): Make global.
* ldlang.h (output_target): Declare.
* ldmain.c (main): Set config.maxpagesize from bfd_emul_get_maxpagesize.
Similarly for config.commonpagesize.
* ldemul.c (set_output_arch_default): Call bfd_emul_set_maxpagesize
and bfd_emul_set_commonpagesize.
* emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Don't call
bfd_emul_set_maxpagesize or bfd_emul_set_commonpagesize here.
2009-08-30 05:47:43 +00:00
Nick Clifton
d3ce72d070
Updated sources to avoid using the identifier name "new", which is a
...
keyword in c++.
* bfd/aoutx.h (NAME (aout, make_empty_symbol)): Rename variable
new to new_symbol.
* bfd/coffgen.c (coff_make_empty_symbol)
(coff_bfd_make_debug_symbol): Rename variable new to new_symbol.
* bfd/cpu-ia64-opc.c (ext_reg, ins_imms_scaled): Rename variable
new to new_insn.
* bfd/doc/chew.c (newentry, add_intrinsic): Rename variable new to
new_d.
* bfd/ecoff.c (_bfd_ecoff_make_empty_symbol): Rename variable new
to new_symbol.
* bfd/elf32-m68k.c (elf_m68k_get_got_entry_type): Rename argument
new to new_reloc.
* bfd/hash.c (bfd_hash_lookup): Rename variable new to new_string.
* bfd/ieee.c (ieee_make_empty_symbol): Rename variable new to
new_symbol.
* bfd/linker.c (bfd_new_link_order): Rename variable new to
new_lo.
* bfd/mach-o.c (bfd_mach_o_sizeof_headers): Rename variable new to
symbol.
* bfd/oasys.c (oasys_make_empty_symbol): Rename variable new to
new_symbol_type.
* bfd/pdp11.c (NAME (aout, make_empty_symbol)): Rename variable
new to new_symbol_type.
* bfd/plugin.c (bfd_plugin_make_empty_symbol): Rename variable new
to new_symbol.
* bfd/rs6000-core.c (CoreHdr, VmInfo): Rename union member new to
new_dump.
(read_hdr, rs6000coff_core_p)
(rs6000coff_core_file_matches_executable_p)
(rs6000coff_core_file_failing_command)
(rs6000coff_core_file_failing_signal): Updated function to use new
union member name.
* bfd/som.c (som_make_empty_symbol): Rename variable new to
new_symbol_type.
* bfd/syms.c (_bfd_generic_make_empty_symbol): Rename variable new
to new_symbol.
* bfd/tekhex.c (first_phase, tekhex_make_empty_symbol): Rename
variable new to new_symbol.
* binutils/nlmconv.c (main): Rename variable new to new_name.
* gas/config/tc-arm.c (insert_reg_alias): Rename variable new to
new_reg.
* gas/config/tc-dlx.c (parse_operand): Rename variable new to
new_pos.
* gas/config/tc-ia64.c (ia64_gen_real_reloc_type): Rename variable
new to newr.
* gas/config/tc-mcore.c (parse_exp, parse_imm): Rename variable
new to new_pointer.
* gas/config/tc-microblaze.c (parse_exp, parse_imm, check_got):
Change name from new to new_pointer.
* gas/config/tc-or32.c (parse_operand): Rename variable new to
new_pointer.
* gas/config/tc-pdp11.c (md_assemble): Rename variable new to
new_pointer.
* gas/config/tc-pj.c (alias): Change argument new to new_name.
* gas/config/tc-score.c (s3_build_score_ops_hsh): Rename variable
new to new_opcode. (s3_build_dependency_insn_hsh) Rename variable
new to new_i2n. (s3_convert): Rename variables old and new to
r_old and r_new.
* gas/config/tc-score7.c (s7_build_score_ops_hsh): Rename variable
new to new_opcode. (s7_build_dependency_insn_hsh): Rename variable
new to new_i2d. (s7_b32_relax_to_b16, s7_convert_frag): Rename
variables old and new to r_old and r_new.
* gas/config/tc-sh.c (parse_exp): Rename variable new to
new_pointer.
* gas/config/tc-sh64.c (shmedia_parse_exp): Rename variable new to
new_pointer.
* gas/config/tc-tic4x.c (tic4x_operand_parse): Rename variable new
to new_pointer.
* gas/config/tc-z8k.c (parse_exp): Rename variable new to
new_pointer.
* gas/listing.c (listing_newline): Rename variable new to new_i.
* ld/ldexp.c (exp_intop, exp_bigintop, exp_relop, exp_binop)
(exp_trinop, exp_unop, exp_nameop, exp_assop): Rename variable new
to new_e.
* ld/ldfile.c (ldfile_add_library_path): Rename variable new to
new_dirs. (ldfile_add_arch): Rename variable new to new_arch.
* ld/ldlang.c (new_statement, lang_final, lang_add_wild)
(lang_target, lang_add_fill, lang_add_data, lang_add_assignment)
(lang_add_insert): Rename variable new to new_stmt. (new_afile):
Added missing cast. (lang_memory_region_lookup): Rename variable
new to new_region. (init_os): Rename variable new to
new_userdata. (lang_add_section): Rename variable new to
new_section. (ldlang_add_undef): Rename variable new to
new_undef. (realsymbol): Rename variable new to new_name.
* opcodes/z8kgen.c (internal, gas): Rename variable new to new_op.
Updated sources to avoid using the identifier name "template",
which is a keyword in c++.
* bfd/elf32-arm.c (struct stub_def): Rename member template to
template_sequence. (arm_build_one_stub,
find_stub_size_and_template, arm_size_one_stub, arm_map_one_stub):
Rename variable template to template_sequence.
* bfd/elfxx-ia64.c (elfNN_ia64_relax_br, elfNN_ia64_relax_brl):
Rename variable template to template_val.
* gas/config/tc-arm.c (struct asm_cond, struct asm_psr, struct
asm_barrier_opt): Change member template to
template_name. (md_begin): Update code to reflect new member
names.
* gas/config/tc-i386.c (struct templates, struct _i386_insn)
(match_template, cpu_flags_match, match_reg_size, match_mem_size)
(operand_size_match, md_begin, i386_print_statistics, pi)
(build_vex_prefix, md_assemble, parse_insn, optimize_imm)
(optimize_disp): Updated code to use new names. (parse_insn):
Added casts.
* gas/config/tc-ia64.c (dot_template, emit_one_bundle): Updated
code to use new names.
* gas/config/tc-score.c (struct s3_asm_opcode): Renamed member
template to template_name. (s3_parse_16_32_inst, s3_parse_48_inst,
s3_do_macro_ldst_label, s3_build_score_ops_hsh): Update code to
use new names.
* gas/config/tc-score7.c (struct s7_asm_opcode): Renamed member
template to template_name. (s7_parse_16_32_inst,
s7_do_macro_ldst_label, s7_build_score_ops_hsh): Update code to
use new names.
* gas/config/tc-tic30.c (md_begin, struct tic30_insn)
(md_assemble): Update code to use new names.
* gas/config/tc-tic54x.c (struct _tic54x_insn, md_begin)
(optimize_insn, tic54x_parse_insn, next_line_shows_parallel):
Update code to use new names.
* include/opcode/tic30.h (template): Rename type template to
insn_template. Updated code to use new name.
* include/opcode/tic54x.h (template): Rename type template to
insn_template.
* opcodes/cris-dis.c (bytes_to_skip): Update code to use new name.
* opcodes/i386-dis.c (putop): Update code to use new name.
* opcodes/i386-gen.c (process_i386_opcodes): Update code to use
new name.
* opcodes/i386-opc.h (struct template): Rename struct template to
insn_template. Update code accordingly.
* opcodes/i386-tbl.h (i386_optab): Update type to use new name.
* opcodes/ia64-dis.c (print_insn_ia64): Rename variable template
to template_val.
* opcodes/tic30-dis.c (struct instruction, get_tic30_instruction):
Update code to use new name.
* opcodes/tic54x-dis.c (has_lkaddr, get_insn_size)
(print_parallel_instruction, print_insn_tic54x, tic54x_get_insn):
Update code to use new name.
* opcodes/tic54x-opc.c (tic54x_unknown_opcode, tic54x_optab):
Update type to new name.
2009-08-29 22:11:02 +00:00
Tristan Gingold
02688209cd
2009-08-12 Tristan Gingold <gingold@adacore.com>
...
* ld.h (fat_user_section_struct): Add map_symbol_def_count field.
* ldlang.c (hash_entry_addr_cmp): New function.
(print_all_symbols): Sort the symbols by address before printing them.
2009-08-12 12:40:55 +00:00
Alan Modra
eaeb0a9d5c
PR 10474
...
* ldemul.c (after_allocation_default): Run lang_relax_sections.
* ldlang.h (lang_relax_sections): Declare.
* ldlang.c (relax_sections): Delete.
(lang_relax_sections): New function.
(lang_process): Don't relax directly from here.
* emultempl/alphaelf.em (alpha_finish): Call finish_default.
* emultempl/armelf.em (arm_elf_after_allocation): Delete. Move body..
(gld${EMULATION_NAME}_finish): ..to here. Move existing code..
(gld${EMULATION_NAME}_after_allocation): ..to here. New function.
(LDEMUL_AFTER_ALLOCATION): Update.
* emultempl/avrelf.em (avr_elf_finish, LDEMUL_FINISH): Delete.
(avr_elf_after_allocation): New function.
(LDEMUL_AFTER_ALLOCATION): Define.
* emultempl/elf-generic.em (gld${EMULATION_NAME}_map_segments): Call
lang_relax_sections.
* emultempl/elf32.em (gld${EMULATION_NAME}_finish): Delete. Move..
(gld${EMULATION_NAME}_after_allocation): ..code to here. New function.
(LDEMUL_AFTER_ALLOCATION, LDEMUL_FINISH): Update.
* emultempl/genelf.em (gld${EMULATION_NAME}_finish): Delete. Move..
(gld${EMULATION_NAME}_after_allocation): ..code to here. New function.
(LDEMUL_FINISH): Delete.
(LDEMUL_AFTER_ALLOCATION): Define.
* emultempl/hppaelf.em (gld${EMULATION_NAME}_finish): Delete. Move..
(gld${EMULATION_NAME}_after_allocation): ..to here. New function.
(LDEMUL_FINISH): Delete.
(LDEMUL_AFTER_ALLOCATION): Define.
* emultempl/m68hc1xelf.em (m68hc11elf_finish): Delete. Move..
(m68hc11elf_after_allocation): ..to here. New function.
(LDEMUL_FINISH): Delete.
(LDEMUL_AFTER_ALLOCATION): Define.
* emultempl/m68kelf.em (m68k_elf_after_allocation): Call
gld${EMULATION_NAME}_after_allocation.
* emultempl/mmix-elfnmmo.em (mmix_after_allocation): Call
gld${EMULATION_NAME}_after_allocation.
* emultempl/mmo.em (mmo_finish): Delete. Move body..
(gld${EMULATION_NAME}_after_allocation): ..to here. New function.
(LDEMUL_FINISH): Define.
* emultempl/ppc64elf.em (ppc_layout_sections_again): Set elf_gp.
(gld${EMULATION_NAME}_finish): Move code sizing sections..
(gld${EMULATION_NAME}_after_allocation): ..to here.
* emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation):
Call gld${EMULATION_NAME}_after_allocation.
* emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Delete
bfd_elf_discard_info and map_segments call.
2009-08-10 07:50:56 +00:00
H.J. Lu
249b2a84f4
2009-07-22 H.J. Lu <hongjiu.lu@intel.com>
...
PR ld/10429
* ldlang.c (insert_os_after): Tie assignments to non-alloc
output sections if there is no-input section.
2009-07-23 00:08:22 +00:00
Alan Modra
0fa4d7cf2d
* ldlang.c (insert_os_after): Don't tie assignments to non-alloc
...
output sections.
2009-07-11 00:10:29 +00:00
Tristan Gingold
d64703c6e8
2009-06-25 Tristan Gingold <gingold@adacore.com>
...
* ldlang.c (print_input_section): Add is_discarded parameter. Adjust
prototype.
(lang_map): Print the size of discarded sections.
(print_statement): Adjust call to print_input_section.
2009-06-25 13:18:46 +00:00
Alan Modra
e50d6125d6
* ldlang.c (lang_check_section_addresses): Ignore non-alloc sections.
2009-05-26 01:20:39 +00:00
Nathan Sidwell
ec6d26bed6
* ldlang.c (lang_check_section_addresses): Ignore non-loadable
...
sections when checking for overlap. Clarify error message
concerns load address.
testsuite/
* ld-scripts/rgn-at4.t: New.
* ld-scripts/rgn-at4.d: New.
2009-05-22 11:27:44 +00:00
Alan Modra
d127ecce68
ld/
...
* ldlang.c (lang_output_section_statement_lookup): Add function
comment. Make "name" non-const. Ensure duplicate entries use
the same string, allowing simple comparison in hash bucket loop.
Tweak constraint check.
(next_matching_output_section_statement): New function.
* ldlang.h (lang_output_section_statement_lookup): Update.
(next_matching_output_section_statement): Declare.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
combine orphan sections when input sections flags differ in
alloc or load.
* emultempl/pe.em: Formatting throughout.
(gld${EMULATION_NAME}_place_orphan): As for elf32.em.
* emultempl/pep.em: Formatting throughout.
(gld${EMULATION_NAME}_place_orphan): As for elf32.em.
ld/testsuite/
* ld-elf/orphan3.d, * ld-elf/orphan3a.s, * ld-elf/orphan3b.s,
* ld-elf/orphan3c.s, * ld-elf/orphan3d.s, * ld-elf/orphan3e.s,
* ld-elf/orphan3f.s: New test.
* ld-pe/orphan.d, * ld-pe/orphana.s, * ld-pe/orphanb.s,
* ld-pe/orphand.s, * ld-pe/orphane.s: New test.
* ld-pe/direct.exp: Use is_pecoff_format.
* ld-pe/longsecn.exp: Delete.
* ld-pe/pe.exp: Run new test and longsecn tests.
2009-05-15 14:22:36 +00:00
Alan Modra
011aa75f62
* ldlang.c (lang_insert_orphan): Add __start_<section> symbol
...
assignment inside output section statement. Ensure only one
set of symbols per output section.
* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Add non-
dollar sections before dollar sections. Correct add_child
list insertion.
* emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
2009-05-14 02:21:45 +00:00
Richard Sandiford
3023e3f66a
bfd/
...
* aout-adobe.c (aout_32_bfd_define_common_symbol): Define.
* aout-target.h (MY_bfd_define_common_symbol): Likewise.
* aout-tic30.c (MY_bfd_define_common_symbol): Likewise.
* binary.c (binary_bfd_define_common_symbol): Likewise.
* bout.c (b_out_bfd_define_common_symbol): Likewise.
* coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
* coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
* coffcode.h (coff_bfd_define_common_symbol): Likewise.
* elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise.
* i386msdos.c (msdos_bfd_define_common_symbol): Likewise.
* i386os9k.c (os9k_bfd_define_common_symbol): Likewise.
* ieee.c (ieee_bfd_define_common_symbol): Likewise.
* ihex.c (ihex_bfd_define_common_symbol): Likewise.
* libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise.
* mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise.
* mmo.c (mmo_bfd_define_common_symbol): Likewise.
* nlm-target.h (nlm_bfd_define_common_symbol): Likewise.
* oasys.c (oasys_bfd_define_common_symbol): Likewise.
* pef.c (bfd_pef_bfd_define_common_symbol): Likewise.
* ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise.
* som.c (som_bfd_define_common_symbol): Likewise.
* srec.c (srec_bfd_define_common_symbol): Likewise.
* tekhex.c (tekhex_bfd_define_common_symbol): Likewise.
* versados.c (versados_bfd_define_common_symbol): Likewise.
* vms.c (vms_bfd_define_common_symbol): Likewise.
* xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise.
* xsym.c (bfd_sym_bfd_define_common_symbol): Likewise.
* coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c (rs6000coff64_vec): Likewise.
(aix5coff64_vec): Likewise.
* linker.c (bfd_generic_define_common_symbol): New function.
* targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol.
(_bfd_define_common_symbol): New field.
* libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare.
* xcofflink.c (_bfd_xcoff_define_common_symbol): New function.
(xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common
symbols here.
* bfd-in2.h: Regenerate.
* libbfd.h: Likewise.
* libcoff.h: Likewise.
ld/
* ldlang.c (lang_one_common): Use bfd_define_common_symbol.
ld/testsuite/
* ld-powerpc/aix-export-2.s, ld-powerpc/aix-export-2.nd: New test.
* ld-powerpc/aix52.exp: Run it.
2009-04-16 23:07:00 +00:00
Kazu Hirata
39e65143d2
gprof/
...
* gprof.h: Include gconfig.h. #undef PACKAGE.
ld/
* ldlang.c: Do not include limits.h.
2009-04-15 03:22:42 +00:00
Nathan Sidwell
113e68452e
* ldlang.c (lang_leave_output_section_statement): Set lma_region
...
if it is not overridden and section is for the same vma region as
the previous section.
* ld-scripts/rgn-at.exp: New.
* ld-scripts/rgn-at.s: New.
* ld-scripts/rgn-at1.d: New.
* ld-scripts/rgn-at1.t: New.
* ld-scripts/rgn-at2.d: New.
* ld-scripts/rgn-at2.t: New.
* ld-scripts/rgn-at3.d: New.
* ld-scripts/rgn-at3.t: New.
2009-04-03 07:45:28 +00:00
H.J. Lu
4bf27aa9ba
ld/
...
2009-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/9970
* ldlang.c (lang_end): Warn missing entry symbol for -pie.
ld/testsuite/
2009-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/9970
* ld-pie/pie.exp: Use -fpie to compile. Run *.d tests.
* ld-pie/start.d: New.
* ld-pie/start.s: Likewise.
2009-03-20 17:39:04 +00:00
Nick Clifton
4a93e18003
* ldgram.y: Add support for REGION_ALIAS operator.
...
* ldlang.c: Likewise.
* ldlang.h: Likewise.
* ldlex.l: Likewise.
* NEWS: Mention the new feature.
* ld.texinfo: Document the new feature.
* ld-scripts/regions-alias-1.t: New file.
* ld-scripts/regions-alias-2.t: New file.
* ld-scripts/regions-alias-3.t: New file.
* ld-scripts/regions-alias-4.t: New file.
* ld-scripts/script.exp: Run region alias tests.
2009-03-02 17:27:36 +00:00
Alan Modra
d2ae7be0b2
* ldlang.c (process_insert_statements): ASSERT that output section
...
statements are in order.
2009-02-16 08:02:29 +00:00
Alan Modra
bde18da45e
* ldlang.c (push_stat_ptr, pop_stat_ptr): New functions.
...
(stat_save, stat_save_ptr): New variables.
(lang_insert_orphan): Use push_stat_ptr and pop_stat_ptr.
(load_symbols): Likewise. Delete dead "bad_load" code.
(open_input_bfds): Warn on script containing output sections.
(lang_enter_output_section_statement): Use push_stat_ptr.
(lang_enter_group): Likewise.
(lang_leave_output_section_statement): Use pop_stat_ptr.
(lang_leave_group): Likewise.
* ldlang.h (push_stat_ptr, pop_stat_ptr): Declare.
* ldctor.c (ldctor_build_sets): Use push_stat_ptr and pop_stat_ptr.
* emultempl/beos.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
* emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
* emultempl/pep.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
* emultempl/spuelf.em (spu_place_special_section): Likewise.
* emultempl/xtensaelf.em (ld_xtensa_insert_page_offsets): Likewise.
2009-02-16 07:25:52 +00:00
Nathan Sidwell
662ef24b70
Missing piece of 2009-01-26 commit
...
* ldlang.c (lang_process): Don't consider relocatable flag when
checking for overlap.
2009-02-09 14:46:40 +00:00
Alan Modra
ae5a359786
include/
...
PR 7047
* bfdlink.h (struct bfd_elf_version_expr): Delete "symbol".
Add "literal".
bfd/
PR 7047
* configure.in: Bump version.
* configure: Regenerate.
* elflink.c (_bfd_elf_link_assign_sym_version): Continue matching
against version nodes when a global match is a wildcard. Similarly
continue matching on local wildcard matches, rather than only
continuing for "*". Have any global wildcard match override a
local wildcard match. Correct logic hiding unversioned symbol.
(bfd_elf_size_dynamic_sections): Update for changes to struct
bfd_elf_version_expr.
ld/
PR 7047
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): Update
for changes to struct bfd_elf_version_expr.
* ldlang.c (lang_vers_match, version_expr_head_hash): Likewise.
(version_expr_head_eq, lang_finalize_version_expr_head): Likewise.
(lang_register_vers_node): Likewise.
(lang_new_vers_pattern): Likewise. Ensure "literal" is set when
no glob chars found in "pattern".
(realsymbol): Correct backslash quote logic.
* ld.texinfo (VERSION): Warn about global wildcards.
2008-11-26 01:04:17 +00:00
Alan Modra
7512c3973e
* ldlang.c (lang_record_phdrs): Don't add orphans to PT_INTERP header.
2008-11-24 07:54:34 +00:00
Nick Clifton
fb6cee9639
PR 6945
...
* ldlang.c (lang_size_sections_1): Do not update the VMAs of
output sections when performing a relocatable link on COFF
objects.
2008-10-25 09:54:01 +00:00
Alan Modra
07890c0736
* ldlang.c (lang_output_section_find_by_flags): Handle non-alloc
...
sections.
* emultempl/elf32.em (enum orphan_save_index): Add orphan_nonalloc.
(hold): Likewise.
(gld${EMULATION_NAME}_place_orphan): Handle non-alloc orphans.
2008-10-21 22:55:04 +00:00
Alan Modra
8a99a385a7
* ldemul.c (ldemul_place_orphan): Add "constraint" param.
...
* ldemul.h (ldemul_place_orphan): Update prototype.
(struct ld_emulation_xfer_struct <place_orphan>): Likewise add param.
* ldlang.c (unique_section_p): Make static.
(lang_output_section_statement_lookup): Optimise creation of SPECIAL
sections.
(lang_insert_orphan): Add "constraint" param. Pass to
lang_enter_output_section_statement.
(init_os): Don't use an existing bfd section for SPECIAL sections.
(lang_place_orphans): Don't rename unique output sections, instead
mark their output section statements SPECIAL.
* ldlang.h (lang_insert_orphan): Update prototype.
(unique_section_p): Delete.
* emultempl/beos.em (place_orphan): Add "constraint" param.
* emultempl/elf32.em (place_orphan): Likewise. Don't match existing
output sections if set.
* emultempl/pe.em (place_orphan): Likewise.
* emultempl/pep.em (place_orphan): Likewise.
* emultempl/mmo.em (mmo_place_orphan): Update.
* emultempl/spuelf.em (spu_place_special_section): Update.
2008-10-04 06:08:59 +00:00
Alan Modra
bcacc0f587
bfd/
...
* elf.c (bfd_elf_set_group_contents): Assign sh_info for ld -r when
the signature symbol is global.
* elflink.c (elf_link_input_bfd): Ensure group signature symbol
is output when ld -r. Set group sh_info when local.
* linker.c (default_indirect_link_order): Handle group sections
specially.
ld/
* ldemul.c (ldemul_place_orphan): Add "name" param.
* ldemul.h (ldemul_place_orphan): Update prototype.
(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
* ldlang.c (lang_place_orphans): Generate unique section names here..
* emultempl/elf32.em (place_orphan): ..rather than here. Don't
directly use an existing output section statement that has no
bfd section.
* emultempl/pe.em (place_orphan): Likewise.
* emultempl/pep.em (place_orphan): Likewise.
* emultempl/beos.em (place_orphan): Adjust.
* emultempl/spuelf.em (spu_place_special_section): Adjust
place_orphan call.
* emultempl/genelf.em (gld${EMULATION_NAME}_after_open): New function.
(LDEMUL_AFTER_OPEN): Define.
2008-10-03 09:40:49 +00:00
Alan Modra
66c103b772
* ldlang.h (lang_output_section_find): Define.
...
(lang_output_section_statement_lookup): Update prototype.
* ldlang.c (lang_output_section_find,
lang_output_section_statement_lookup_1): Merge into..
(lang_output_section_statement_lookup): ..here. Update all callers.
(process_insert_statements): Set constraint negative
for output section statements we might be inserting. Make error
fatal on not finding insertion section.
(lang_output_section_find): Rather than comparing
output_section_statement.constraint against -1, test whether
it is postive.
(lang_output_section_statement_lookup_1): Likewise.
(output_prev_sec_find, strip_excluded_output_sections): Likewise.
(lang_record_phdrs): Likewise.
* emultempl/elf32.em (output_rel_find): Likewise.
* NEWS: Mention INSERT.
2008-09-07 04:02:31 +00:00
Jan Kratochvil
2b60860a4c
PR ld/6833
...
* ldexp.c (fold_binary <DATA_SEGMENT_ALIGN>): Do not align
EXPLD.DATASEG.MIN_BASE.
* ldlang.c (lang_size_sections): New variable OLD_BASE. Rename
OLD_MIN_BASE to MIN_BASE with the former alignment from `ldexp.c'.
Use OLD_BASE now for the minimal base check after the base decrease by
the maximum alignment found.
2008-08-21 13:10:54 +00:00
Alan Modra
5c1d2f5f4c
bfd/
...
* bfd.c (struct _bfd): Correct outsymbols comment.
* bfd-in2.h: Regenerate.
* linker.c (bfd_generic_link_read_symbols): Renamed from..
(generic_link_read_symbols): ..this, and made global.
include/
* bfdlink.h (bfd_generic_link_read_symbols): Declare.
ld/
PR 6478
* ldcref.c (check_local_sym_xref): Use bfd_generic_link_read_symbols.
Don't free symbol pointer array.
(check_refs): Likewise.
* ldmain.c (warning_callback): Likewise.
* ldmisc.c (vfinfo): Likewise.
* pe-dll.c (process_def_file): Likewise.
(pe_walk_relocs_of_symbol, generate_reloc): Likewise.
* emultempl/pe.em (pe_find_data_imports): Likewise.
(gld_${EMULATION_NAME}_after_open): Likewise.
* emultempl/pep.em (pep_find_data_imports): Likewise.
(gld_${EMULATION_NAME}_after_open): Likewise.
* ldlang.h (lang_input_statement_type): Delete asymbols, symbol_count,
passive_position, closed.
* ldlang.c (new_afile): Don't set asymbols and symbol_count.
* ldmain.c (add_archive_element): xcalloc lang_input_statement_type.
2008-08-17 03:12:50 +00:00
Nick Clifton
5590fba953
* ldlang.c (print_output_section_statement): If the output section
...
statement has an update_dot_tree expression, apply it to
print_dot.
(print_input_section): Do not update print_dot if it would move
print_dot backwards.
(lang_do_assignments_1): If the output section statement has an
update_dot_tree expression apply it to dot.
* ld-scripts/overlay-size.t (end_of_bss_overlays): Define.
(end_of_text_overlays): Define.
(end_of_data_overlays): Define.
* ld-scripts/overlay-size-map.d: Add expected values for
end_of_bss_overlays, end_of_text_overlays and
end_of_data_overlays.
2008-06-12 11:27:38 +00:00
Alan Modra
967928e916
* NEWS: Mention archive:path patterns.
...
* ld.texinfo: Likewise.
* ldlang.c: Formatting throughout.
(archive_path): Only assume "[A-Za-z]:" is a dos drive.
(input_statement_is_archive_path): New function, extracted from..
(walk_wild): ..here.
(walk_wild_consider_section): Match archive:path here too.
(init_map_userdata, sort_def_symbol): Convert to ISO C.
* ldmain.c (main): Set link_info.path_separator.
* emultempl/spuelf.em (choose_target): Don't set it here.
2008-06-07 11:35:46 +00:00
Alan Modra
97407faf3d
include/
...
* bfdlink.h (struct bfd_link_info): Add "path_separator".
bfd/
* elf32-spu.c (spu_elf_auto_overlay): Relax requirement that
file names be unique. Specify archive:path in overlay script.
ld/
* ldlang.c (name_match): New function.
(unique_section_p, walk_wild_consider_section): Use it here.
(walk_wild_section_general): And here.
(archive_path): New function.
(walk_wild): Match archive:path filespecs.
(open_input_bfds): Don't load archive:path files.
* emultempl/spuelf.em (choose_target): Set path_separator.
* emulparams/elf32_spu.sh: Add ._ea.* sections to ._ea output.
2008-06-06 06:02:00 +00:00
Nick Clifton
de7dd2bdee
PR ld/6430
...
* testsuite/ld-elfcomm/elfcomm.exp (test_sort_common): Test the
ascending/descending argument to the --sort-common command line
option.
* testsuite/ld-elfcomm/sort-common.s: New file.
* ld.h (enum sort_order): New.
* ldlang.c (lang_check: Fix comment.
(lang_common): Sort commons in ascending or descending order.
(lang_one_common): Likewise.
* lexsup.c (ld_options): Have --sort-common take an option
argument.
(parse_args): Handle argument to --sort-common.
* ld.texinfo (--sort-common): Document new optional argument.
* NEWS: Mention new feature.
2008-05-31 16:35:56 +00:00
Nick Clifton
906e58cab5
bfd/
...
* elf32-arm.c (THM2_MAX_FWD_BRANCH_OFFSET): Define.
(THM2_MAX_BWD_BRANCH_OFFSET): Define.
(ARM_MAX_FWD_BRANCH_OFFSET): Define.
(ARM_MAX_BWD_BRANCH_OFFSET): Define.
(THM_MAX_FWD_BRANCH_OFFSET): Define.
(THM_MAX_BWD_BRANCH_OFFSET): Define.
(arm_long_branch_stub): Define.
(arm_pic_long_branch_stub): Define.
(arm_thumb_v4t_long_branch_stub): Define.
(arm_thumb_thumb_long_branch_stub): Define.
(arm_thumb_arm_v4t_long_branch_stub): Define.
(STUB_SUFFIX): Define.
(elf32_arm_stub_type): Define.
(elf32_arm_stub_hash_entry): Define.
(elf32_arm_link_hash_entry): Add stub_cache field.
(arm_stub_hash_lookup): Define.
(elf32_arm_link_hash_table): Add stub_hash_table, stub_bfd,
add_stub_section, layout_sections_again, stub_group, bfd_count,
top_index, input_list fields.
(elf32_arm_link_hash_newfunc): Init new field.
(stub_hash_newfunc): New function.
(elf32_arm_link_hash_table_create): Init stub_hash_table.
(elf32_arm_hash_table_free): New function.
(arm_type_of_stub): New function.
(elf32_arm_stub_name): New function.
(elf32_arm_get_stub_entry): New function.
(elf32_arm_stub_add_mapping_symbol): New function.
(elf32_arm_add_stub): New function.
(arm_build_one_stub): New function.
(arm_size_one_stub): New function.
(elf32_arm_setup_section_lists): New function.
(elf32_arm_next_input_section): New function.
(group_sections): New function.
(elf32_arm_size_stubs): New function.
(elf32_arm_build_stubs): New function.
(bfd_elf32_arm_add_glue_sections_to_bfd): Skip stub sections.
(bfd_elf32_arm_process_before_allocation): No longer handle
R_ARM_CALL and R_ARM_THM_CALL.
(using_thumb_only): New function.
(elf32_arm_final_link_relocate): Redirect calls to stub if range
exceeds encoding capabilities.
(bfd_elf32_bfd_link_hash_table_free): Define.
* bfd-in.h (R_ARM_max): Fix value to 130.
(elf32_arm_setup_section_lists): Protype.
(elf32_arm_next_input_section): Protype.
(elf32_arm_size_stubs): Protype.
(elf32_arm_build_stubs): Protype.
ld/
* emultempl/armelf.em (build_section_lists): New function.
(stub_file): Define.
(need_laying_out): Define.
(group_size): Define.
(hook_stub_info): Define.
(hook_in_stub): New function.
(elf32_arm_add_stub_section): New function.
(gldarm_layout_sections_again): New function.
(gld${EMULATION_NAME}_finish): Replace arm_elf_finish(). Generate
stubs for long calls if needed.
(arm_elf_create_output_section_statements): create stub_file bfd.
(arm_for_each_input_file_wrapper): New function.
(arm_lang_for_each_input_file): New function.
(lang_for_each_input_file): Define.
(PARSE_AND_LIST_PROLOGUE): Add option token OPTION_STUBGROUP_SIZE.
(PARSE_AND_LIST_LONGOPTS): Add option stub-group-size.
(PARSE_AND_LIST_OPTIONS): Add option stub-group-size.
(PARSE_AND_LIST_ARGS_CASES): Add OPTION_STUBGROUP_SIZE case.
(LDEMUL_FINISH): Update to gld${EMULATION_NAME}_finish.
* ld/lang.c (print_input_statement): Skip if bfd has
BFD_LINKER_CREATED.
ld/testsuite
* ld-arm/arm-elf.exp (armelftests): Add farcall-arm-arm,
farcall-arm-arm-pic-veneer, farcall-arm-arm-be8 farcall-arm-thumb,
farcall-arm-thumb-blx, farcall-arm-thumb-pic-veneer,
farcall-arm-thumb-blx-pic-veneer, farcall-thumb-thumb,
farcall-thumb-thumb-pic-veneer, farcall-thumb-thumb-blx,
farcall-thumb-thumb-m, farcall-thumb-thumb-m-pic-veneer,
farcall-thumb-thumb-blx-pic-veneer, farcall-thumb-arm,
farcall-thumb-arm-pic-veneer, farcall-thumb-arm-blx,
farcall-thumb-arm-blx-pic-veneer.
Change thumb2-bl-as-thumb1-bad, thumb2-bl-bad.
* ld-arm/thumb2-bl-as-thumb1-bad.d: Reflects farcall stub
generation.
* ld-arm/thumb2-bl-bad.d: Likewise.
* ld-arm/thumb2-bl-as-thumb1-bad.s: Update comments.
* ld-arm/thumb2-bl-bad.s: Likewise.
2008-05-15 17:00:15 +00:00
Nathan Sidwell
a2cab75396
ld/
...
* ldlang.c (lang_size_sections_1): Don't check LMA overflow on
non-load sections.
ld/testsuite/
* ld-scripts/rgn-over.exp: Allow -ok file names to pass.
* ld-scripts/rgn-over8.s: New.
* ld-scripts/rgn-over8.t: New.
* ld-scripts/rgn-over8-ok.d: New.
2008-04-28 12:45:34 +00:00
Nick Clifton
07dfcf3884
PR ld/5785
...
* ldlang.c (lang_size_sections_1): Honour the setting of an
lma_region even if there is no vma region set, or the vma region
is the same as the lma region.
2008-02-22 14:19:43 +00:00
Alan Modra
f13a99db51
include/
...
* bfdlink.h (struct bfd_link_hash_table): Delete creator field.
(struct bfd_link_info): Add output_bfd.
bfd/
* elflink.c: Replace all accesses to hash->creator field with
output_bfd->xvec.
* cofflink.c: Likewise.
* coff-h8300.c: Likewise.
* ecoff.c: Likewise.
* elf32-m68hc1x.c: Likewise.
* elf32-ppc.c: Likewise.
* elf64-alpha.c: Likewise.
* elf64-ppc.c: Likewise.
* elf64-sparc.c: Likewise.
* elfxx-mips.c: Likewise.
* i386linux.c: Likewise.
* m68klinux.c: Likewise.
* sparclinux.c: Likewise.
* sunos.c: Likewise.
* xcofflink.c: Likewise.
* linker.c: Likewise.
(_bfd_link_hash_table_init): Don't store creator.
ld/
* ldmain.h (output_bfd): Delete.
* ldmain.c (output_bfd): Delete.
Replace all occurrences of output_bfd with link_info.output_bfd.
* ldcref.c: Likewise.
* ldctor.c: Likewise.
* ldemul.c: Likewise.
* ldexp.c: Likewise.
* ldfile.c: Likewise.
* ldlang.c: Likewise.
* ldmisc.c: Likewise.
* ldwrite.c: Likewise.
* pe-dll.c: Likewise.
* emultempl/aix.em: Likewise.
* emultempl/alphaelf.em: Likewise.
* emultempl/armcoff.em: Likewise.
* emultempl/armelf.em: Likewise.
* emultempl/avrelf.em: Likewise.
* emultempl/beos.em: Likewise.
* emultempl/elf-generic.em: Likewise.
* emultempl/elf32.em: Likewise.
* emultempl/gld960.em: Likewise.
* emultempl/hppaelf.em: Likewise.
* emultempl/irix.em: Likewise.
* emultempl/linux.em: Likewise.
* emultempl/lnk960.em: Likewise.
* emultempl/m68hc1xelf.em: Likewise.
* emultempl/mmix-elfnmmo.em: Likewise.
* emultempl/mmo.em: Likewise.
* emultempl/pe.em: Likewise.
* emultempl/pep.em: Likewise.
* emultempl/ppc32elf.em: Likewise.
* emultempl/ppc64elf.em: Likewise.
* emultempl/scoreelf.em: Likewise.
* emultempl/sh64elf.em: Likewise.
* emultempl/spuelf.em: Likewise.
* emultempl/sunos.em: Likewise.
* emultempl/vanilla.em: Likewise.
* emultempl/vxworks.em: Likewise.
* emultempl/xtensaelf.em: Likewise.
* emultempl/z80.em: Likewise.
* ldlang.c (open_output): Don't return output, instead write
link_info_output_bfd directly.
* emultempl/alphaelf.em: Replace occurrences of link_info.hash->creator
with link_info.output_bfd->xvec.
* emultempl/hppaelf.em: Likewise.
* emultempl/ppc32elf.em: Likewise.
* emultempl/ppc64elf.em: Likewise.
* emultempl/spuelf.em: Likewise.
2008-02-15 03:35:53 +00:00
Alan Modra
ff7a0acf26
* ldlang.c (new_afile): Don't pass unadorned NULL to concat.
...
* ldfile.c (ldfile_add_library_path): Likewise.
* emultempl/elf32.em (check_ld_elf_hints, check_ld_so_conf): Likewise.
* emultempl/lnk960.em (lnk960_before_parse): Likewise.
* emultempl/spuelf.em (embedded_spu_file): Likewise.
2008-02-07 08:41:10 +00:00
H.J. Lu
29183214f7
2008-01-25 H.J. Lu <hongjiu.lu@intel.com>
...
PR ld/5670
* ldlang.c (process_insert_statements): Silence gcc 4.1 alias
warning.
2008-01-25 17:34:29 +00:00
Alan Modra
53d25da64b
ld/
...
* ld.texinfo (INSERT): Describe.
* ldgram.y (ldgram_in_script, ldgram_had_equals): Delete.
(INSERT_K, AFTER, BEFORE): Add as tokens.
(ifile_p1): Handle INSERT statements.
(saved_script_handle, force_make_executable): Move to..
* ldmain.c: ..here.
(previous_script_handle): New global var.
* ldmain.h (saved_script_handle, force_make_executable): Declare.
(previous_script_handle): Likewise.
* ldlex.l (INSERT_K, AFTER, BEFORE): Add tokens.
* lexsup.c (parge_args <-T>): Set previous_script_handle.
* ldlang.c (lang_for_each_statement_worker): Handle insert statement.
(map_input_to_output_sections, print_statement): Likewise.
(lang_size_sections_1, lang_do_assignments_1): Likewise.
(insert_os_after): New function, extracted from..
(lang_insert_orphan): ..here.
(process_insert_statements): New function.
(lang_process): Call it.
(lang_add_insert): New function.
* ldlang.h (lang_insert_statement_enum): New.
(lang_insert_statement_type): New.
(lang_statement_union_type): Add insert_statement.
(lang_add_insert): Declare.
ld/testsuite/
* ld-spu/ovl.lnk: Delete overlay.
* ld-spu/ovl1.lnk: New file.
* ld-spu/ovl2.lnk: New file.
* ld-spu/ovl.d: Update.
* ld-spu/ovl2.d: Update.
2008-01-25 12:03:37 +00:00
Alan Modra
14ac84b444
* ldlang.c (lang_size_sections_1): Simplify SEC_NEVER_LOAD test.
2008-01-16 01:28:21 +00:00
Alan Modra
3d00b095cc
* ldlang.h (lang_afile_asection_pair_statement_enum): Delete.
...
(lang_afile_asection_pair_statement_type): Delete.
(lang_statement_union_type): Delete afile_asection_pair_statement.
* ldlang.c (lang_insert_orphan): Delete case handling the above.
(map_input_to_output_sections, print_statement): Likewise.
2008-01-16 00:31:18 +00:00
Alan Modra
74f0fb5065
bfd/
...
PR 5604
* elf-bfd.h (struct elf_backend_data): Add gc_keep. Remove param
names from others.
(_bfd_elf_gc_keep): Declare.
* elfxx-target.h (elf_backend_gc_keep): Define.
(elfNN_bed): Init new field.
* elflink.c (_bfd_elf_gc_keep): New function.
(bfd_elf_gc_sections): Call gc_keep.
* elf64-ppc.c (elf_backend_gc_keep): Define.
(struct _ppc64_elf_section_data): Move .opd related fields to
a struct so they don't occupy the same storage. Adjust accesses
throughout file.
(ppc64_elf_gc_keep): New function, split out from..
(ppc64_elf_gc_mark_hook): ..here. Don't call _bfd_elf_gc_mark
to mark .opd section, just set gc_mark.
(ppc64_elf_edit_opd): Remove no_opd_opt parm. Don't set opd->adjust
unless we are changing .opd. Test non-NULL opd->adjust at all
accesses throughout file.
* elf64-ppc.h (ppc64_elf_edit_opd): Update prototype.
ld/
PR 5604
* ldlang.c (lang_gc_sections): Move code to set SEC_KEEP on entry
syms to _bfd_elf_gc_keep.
* emultempl/ppc64elf.em (ppc_before_allocation): Don't call
ppc64_elf_edit_opd if no_opd_opt.
2008-01-15 07:25:49 +00:00
Tristan Gingold
ac69cbc672
ld:
...
2008-01-11 Tristan Gingold <gingold@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* ldlang.c (lang_end): Warns if the entry point is not found when
--gc-sections.
Emit an error if no root is specified when --gc-sections -r.
* ld.texinfo (Options): Document that --gc-sections is compatible
with -r and -q.
* ldmain.c (main): Do not error out if -r and --gc-sections.
* scripttempl/elf.sc: Emit ENTRY command only if relocating.
ld/testsuite:
2008-01-11 Tristan Gingold <gingold@adacore.com>
* lib/ld-lib.exp (check_gc_sections_available): Now available on
VxWorks.
* ld-gc: New directory for testing --gc-sections.
* ld-gc/gc.c: New file.
* ld-gc/gc.exp: New file.
* ld-gc/noent.s: New file.
* ld-gc/noent.d: New file.
2008-01-11 09:11:18 +00:00
Nick Clifton
71934f948a
PR ld/5533
...
* ldlang.c (lang_end): Issue a warning for a missing start symbol
of a shared library if the symbol was specified on the command
line.
2008-01-10 14:28:49 +00:00
Daniel Jacobowitz
20e5635130
2007-10-17 Zack Weinberg <zack@codesourcery.com>
...
* ldlang.c (lang_check_section_addresses): Also report size of
overflow for any overflowed memory regions.
(os_region_check): Diagnose an overflowed region only once per
region. Do not reset region->current on overflow.
2007-10-17 Zack Weinberg <zack@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* ld-scripts/rgn-over.exp: New driver.
* ld-scripts/rgn-over.s: New file.
* ld-scripts/rgn-over1.d, ld-scripts/rgn-over1.t,
ld-scripts/rgn-over2.d, ld-scripts/rgn-over2.t,
ld-scripts/rgn-over3.d, ld-scripts/rgn-over3.t,
ld-scripts/rgn-over4.d, ld-scripts/rgn-over4.t,
ld-scripts/rgn-over5.d, ld-scripts/rgn-over5.t,
ld-scripts/rgn-over6.d, ld-scripts/rgn-over6.t,
ld-scripts/rgn-over7.d, ld-scripts/rgn-over7.t:
New test cases.
2007-10-17 19:26:10 +00:00
H.J. Lu
b10a8ae01c
bfd/
...
2007-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/3281
PR binutils/5037
* elf-bfd.h (elf_obj_tdata): Remove relro.
* elf.c (get_program_header_size): Check info->relro instead
of elf_tdata (abfd)->relro.
(_bfd_elf_map_sections_to_segments): Likewise.
(assign_file_positions_for_load_sections): Don't set
PT_GNU_RELRO segment alignment here.
(assign_file_positions_for_non_load_sections): Properly set up
PT_GNU_RELRO segment for copying executable/shared library.
(rewrite_elf_program_header): Remove PT_GNU_RELRO segment.
(copy_elf_program_header): Set p_size and p_size_valid fields for
PT_GNU_RELRO segment.
include/elf/
2007-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/3281
PR binutils/5037
* internal.h (elf_segment_map): Add p_size and p_size_valid.
(ELF_IS_SECTION_IN_SEGMENT): Allow SHF_TLS sections in
PT_GNU_RELRO segments.
ld/
2007-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/3281
PR binutils/5037
* ldexp.h (ldexp_control): Add relro, relro_start_stat and
relro_end_stat.
* ldexp.c (fold_binary): Set expld.dataseg.relro to
exp_dataseg_relro_start or exp_dataseg_relro_end when
seeing DATA_SEGMENT_ALIGN or DATA_SEGMENT_RELRO_END,
respectively.
* ldlang.c (lang_size_sections_1): Properly set
expld.dataseg.relro_start_stat and
expld.dataseg.relro_end_stat.
(find_relro_section_callback): New function.
(lang_find_relro_sections_1): Likewise.
(lang_find_relro_sections): Likewise.
(lang_process): Call lang_find_relro_sections for
non-relocatable link.
ld/testsuite/
2007-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/3281
PR binutils/5037
* ld-elf/binutils.exp: Update "-z relro" tests to use relro1.s.
Add "-z relro" tests with relro2.s. Add "-z relro" tests with
TLS for objcopy.
* ld-elf/relro1.s: New file.
* ld-elf/relro2.s: Likewise.
2007-09-18 00:25:07 +00:00
Nick Clifton
a1438fce30
* ldlang.c (lang_map): Increment lang_statement_iteration so that DEFINED() expressions are correctly computed.
...
* testsuite/ld-script/map-address.d,
* testsuite/ld-script/map-address.t: Add a test for testing DEFINED in map output.
2007-08-31 14:46:55 +00:00
Alan Modra
e94425729c
* ldlang.c (lang_record_phdrs): Give a fatal error if no sections
...
assigned to phdrs. Avoid multiple forward scans for a section
with phdr assignment.
2007-08-31 00:39:53 +00:00
Joseph Myers
7f6a71ffb6
bfd:
...
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* elf32-arm.c (elf32_arm_compare_mapping): Compare first on vma,
then on type.
binutils/testsuite:
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* binutils-all/ar.exp (long_filenames): Delete temporary files on
the host.
* binutils-all/arm/objdump.exp: Only check "which $OBJDUMP" if
host is local.
* binutils-all/objcopy.exp: Use ${srecfile} to get the name of the
srec file to be passed to binutils_run.
(objcopy_test_readelf): Use remote_exec.
* binutils-all/readelf.exp (readelf_find_size): Use remote_exec.
(readelf_test): Likewise.
(readelf_wi_test): Likewise.
* lib/utils-lib.exp (run_dump_test): Only check "which $binary" if
host is local. Use remote_exec. Use $tempfile not
tmpdir/bintest.o.
gas:
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* as.c (main): Flush stderr before printing listings to ensure
consistent output order across platforms.
gas/testsuite:
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* lib/gas-defs.exp (gas_version): Use remote_* functions instead
of exec.
(gas_host_run): New.
(gas_run): Use gas_host_run.
(gas_start): Likewise.
(run_dump_test): Likewise.
(objdump): Use gas_host_run.
(objdump_start_no_subdir): Likewise.
* lib/gas-dg.exp (gas-dg-test): Use "remote_file host delete".
* lib/run: Remove.
* gas/macros/macros.exp: Download app4b.s to host.
* gas/i386/i386.exp (gas_64_check): Use gas_host_run.
(gas_32_check): Likewise.
* gas/maxq10/maxq10.exp (gas_64_check): Likewise
(gas_32_check): Likewise.
* gas/maxq20/maxq20.exp (gas_64_check): Likewise
(gas_32_check): Likewise.
* gas/sparc/sparc.exp (gas_64_check): Likewise.
* gas/cfi/cfi.exp: Likewise.
* gas/elf/elf.exp (run_list_test): Likewise. Use temporary file
for readelf output in place of pipe.
* gas/all/gas.exp: Download incbin.dat to host.
(do_comment): Allow \r\r\n.
ld:
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* ldlang.c (sort_sections_by_lma): Sort by internal id after lma
for stable sort.
ld/testsuite:
2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
* ld-elfcomm/elfcomm.exp: Use run_host_cmd. Only check "which
$CC" if host is local.
* ld-checks/checks.exp: Use run_host_cmd.
* ld-elf/exclude.exp: Likewise.
* ld-elf/elf.exp: Download merge.ld if host is remote.
* ld-elf/binutils.exp (binutils_test): Use remote_exec.
* ld-elf/tls_common.exp: Use run_host_cmd.
* lib/ld-lib.exp (ld_version): Only check "which $ld" if host is
local. Use remote_exec.
(run_host_cmd): New.
(run_host_cmd_yesno): New.
(default_ld_relocate): Use run_host_cmd_yesno.
(default_ld_link): Likewise.
(default_ld_simple_link): Use run_host_cmd.
(default_ld_compile): Only check "which $ccprog" if host is local.
Use remote_file and remote_exec.
(default_ld_assemble): Only check "which $as" if host is local.
Use run_host_cmd.
(default_ld_nm): Use remote_exec, remote_upload and remote_file.
(run_dump_test): Use remote_exec, remote_upload and remote_file.
Only check "which $binary" if host is local.
(run_ld_link_tests): Use remote_exec, remote_upload and
remote_file.
* ld-selective/selective.exp: Only check "which $CXX" if host is
local. Use remote_exec.
* ld-scripts/phdrs.exp: Only check "which $objdump" if host is
local. Use run_host_cmd.
* ld-scripts/phdrs2.exp: Likewise.
* ld-scripts/weak.exp: Likewise.
* ld-undefined/weak-undef.exp: Likewise.
* ld-scripts/crossref.exp: Only check "which $CC" if host is local.
Use run_host_cmd.
* ld-scripts/map-address.exp: Upload map_address.map if host is
remote.
* ld-srec/srec.exp (run_srec_tests): Use run_host_cmd. Only check
"which $CC" and "which $CXX" if host is local.
* ld-undefined/undefined.exp: Only check "which $CC" if host is
local. Use remote_file and run_host_cmd.
* config/default.exp: Use remote_exec to create tmpdir.
2007-08-28 13:21:58 +00:00
Alan Modra
48f2ff543d
ld/
...
* ldlang.c (lang_insert_orphan): When searching through linker
script to place an orphan, don't stop on statements that appear
outside of SECTIONS.
* emultempl/elf32.em (output_rel_find): Prefer read-only alloc
sections over read/write alloc sections.
ld/testsuite/
* ld-elf/weak-dyn-1.rd: Adjust.
2007-07-29 12:33:38 +00:00
Alan Modra
3d263d86a5
* ldlang.c (strip_excluded_output_sections): Don't ignore sections
...
with update_dot_tree.
2007-07-13 07:34:25 +00:00
Alan Modra
3bf9618b71
PR 4782
...
* ldlang.c (lang_size_sections_1 <output_section_statement>): Only
use expld.result when valid.
2007-07-12 01:40:25 +00:00
Nick Clifton
f96b4a7b0f
Update sources to GPLv3
2007-07-06 14:09:45 +00:00
Alan Modra
a9a4c53ecc
include/
...
* bfdlink.h (struct bfd_link_info): Add input_bfds_tail.
bfd/
* simple.c (bfd_simple_get_relocated_section_content): Init
input_bfds_tail.
ld/
* ldlang.c (ldlang_add_file): Use input_bfds_tail.
* ldmain.c (main): Init input_bfds_tail. Sort link_info
initialization.
2007-05-31 15:04:52 +00:00
Alan Modra
9e7750f2ab
commit the Robert's removal of "warning:"
2007-05-02 01:22:40 +00:00
Alan Modra
79ac49f00d
* ldlang.c (lang_check): Error on architecture mismatch.
2007-05-01 13:35:34 +00:00
Alan Modra
d7d4c8debe
* ldcref.c (struct cref_hash_entry): Make "demangled" const.
...
(cref_fill_array): Adjust for changed demangler.
* ldlang.c (lang_one_common): Likewise.
2007-04-28 06:04:28 +00:00
Alan Modra
3db64b0092
bfd/
...
Many files: Include sysdep.h before bfd.h.
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
binutils/
* bucumm.h: Split off host dependencies to..
* sysdep.h: ..here.
Many files: Include sysdep.h. Remove duplicate headers and reorder.
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
ld/
Many files: Include sysdep.h first. Remove duplicate headers.
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
opcodes/
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
* ns32k-dis.c: Include sysdep.h first.
2007-04-26 14:47:00 +00:00
Alan Modra
73705ac309
* ldcref.c (cref_fill_array): Call bfd_demangle rather than demangle.
...
* ldlang.c (lang_one_common): Likewise.
* ldmisc.c (vfinfo): Likewise.
(demangle): Delete.
* ldmisc.h (demangle): Delete.
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
2007-04-19 10:45:59 +00:00
Alan Modra
152d792f47
ld/
...
* ldlang.h (enum section_type): Add overlay_section.
* ldlang.c (lang_add_section): Handle flags for overlay_section
as per normal_section.
(lang_size_sections_1): When setting lma, detect overlays by
os->sectype rather than by looking for overlapping vmas.
(lang_enter_overlay_section): Use overlay_section type.
(lang_leave_overlay): Set first overlay section to normal.
ld/testsuite/
* ld-spu/ovl.lnk: Use OVERLAY keyword.
2007-04-18 03:55:10 +00:00
Richard Henderson
4a828aab99
bfd/
...
* elf64-alpha.c (struct alpha_elf_link_hash_table): Add relax_trip.
(elf64_alpha_size_got_sections): Remove unused something_changed local.
(elf64_alpha_size_plt_section): Return void.
(elf64_alpha_size_rela_got_section): Likewise.
(elf64_alpha_relax_section): Only regenerate got+plt if the
relax_trip counter has changed.
include/
* bfdlink.h (struct bfd_link_info): Add relax_trip.
ld/
* ldlang.c (relax_sections): Initialize and increment
link_info.relax_trip.
2007-04-10 18:00:26 +00:00
Richard Sandiford
bcb674cff7
ld/
...
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* NEWS: Mention -l:foo.
* ld.texinfo: Document it.
* ldlang.c (new_afile): If a lang_input_file_is_l_enum
entry as a name beginning with a coloh, convert it to a
lang_input_file_is_search_file_enum entry without the colon.
ld/testsuite/
* ld-libs/lib-1.s, ld-libs/lib-2.s, ld-libs/lib-2.d,
* ld-libs/libs.exp: New files.
2007-03-29 17:16:05 +00:00
Alan Modra
dc27aea4b8
* Makefile.am: Add dependency on ldemul-list.h for powerpc and
...
spu target emul files.
* configure.in: Check for mkstemp and waitpid.
* Makefile.in: Regenerate.
* configure: Regenerate.
* config.in: Regenerate.
* ldlang.c (input_file_chain): Make global.
(lang_add_input_file): Don't set lang_has_input_file here.
* ldlang.h (input_file_chain): Declare.
* emultempl/ppc32elf.em (ppc_recognized_file): New function.
(LDEMUL_RECOGNIZED_FILE): Define.
* emultempl/ppc64elf.em (ppc64_recognized_file): New function.
(LDEMUL_RECOGNIZED_FILE): Define.
* emultempl/spuelf.em (struct tflist): New.
(tmp_file_list): New var.
2007-03-26 11:10:44 +00:00
Alan Modra
34711ca3dd
ld/
...
* ldlang.c (lang_insert_orphan): Provide start/stop loadaddr syms
rather than defining unconditionally.
(lang_leave_overlay_section): Likewise.
* ld.texinfo (Overlay Description): Update description and examples
for start/stop syms.
ld/testsuite/
* ld-elf/overlay.d: -u symbols we want to see in the output.
2007-03-24 06:49:03 +00:00
Nick Clifton
591a748af9
Use pc-relative relocation instead of an absolute relocation for x86_64-pc-mingw32 target.
2007-03-16 15:13:21 +00:00
Alan Modra
91eb6c46de
* ldlang.c (lang_size_sections_1): Correct backwards dot move
...
test to not trigger on overlays. Only warn on backwards move
if non-default lma.
2007-03-08 04:38:45 +00:00
Nick Clifton
2889e75bfb
Take into account MEMORY regions when creating a segment map.
2007-02-21 16:43:50 +00:00
H.J. Lu
ea0c3cd5bd
2007-02-06 H.J. Lu <hongjiu.lu@intel.com>
...
* ldlang.c (lang_size_sections_1): Add a missing `)'.
2007-02-06 16:03:52 +00:00
Alan Modra
264b62058b
* ldlang.c (lang_size_sections_1): Don't warn on backwards dot
...
move unless section size is non-zero.
2007-02-06 13:56:38 +00:00
H.J. Lu
40b36307e3
bfd/
...
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* elf-bfd.h (bfd_elf_link_mark_dynamic_symbol): Add an
argument, Elf_Internal_Sym *.
* elflink.c (bfd_elf_link_mark_dynamic_symbol): Mark a data
symbol dynamic if info->dynamic_data is TRUE.
(bfd_elf_record_link_assignment): Updated call to
bfd_elf_record_link_assignment.
(_bfd_elf_merge_symbol): Likewise. Always call
bfd_elf_link_mark_dynamic_symbol.
include/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* bfdlink.h (bfd_link_info): Rename dynamic to dynamic_list.
Add dynamic and dynamic_data.
ld/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* NEWS: Mention -Bsymbolic-functions, --dynamic-list-data and
--dynamic-list-cpp-new.
* ld.texinfo: Document -Bsymbolic-functions, --dynamic-list-data
and --dynamic-list-cpp-new.
* ldlang.c (lang_append_dynamic_list_cpp_new): New.
(lang_process): Change link_info.dynamic to
link_info.dynamic_list.
(lang_append_dynamic_list): Likewise.
* ldmain.c (main): Likewise. Initialize link_info.dynamic and
link_info.dynamic_data to FALSE.
* ldlang.h (lang_append_dynamic_list_cpp_new): New.
* lexsup.c (option_values): Add OPTION_DYNAMIC_LIST_DATA and
OPTION_DYNAMIC_LIST_CPP_NEW.
(ld_options): Add entries for -Bsymbolic-functions,
--dynamic-list-data and --dynamic-list-cpp-new. Make
-Bsymbolic-functions an alias of --dynamic-list-data.
(parse_args): Change link_info.dynamic to link_info.dynamic_list.
Set link_info.dynamic to TRUE for --dynamic-list and
--dynamic-list-cpp-typeinfo. Handle --dynamic-list-data and
--dynamic-list-cpp-new.
ld/testsuite/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* ld-elf/del.cc: New.
* ld-elf/dl5.cc: Likewise.
* ld-elf/dl5.out: Likewise.
* ld-elf/new.cc: Likewise.
* ld-elf/shared.exp: Add tests for --dynamic-list-data and
--dynamic-list-cpp-new.
2007-01-16 14:56:32 +00:00
Alan Modra
67f744f3bc
* ldlang.c (print_output_section_statement): Print load address
...
when lma differs from vma.
testsuite/
* ld-scripts/overlay-size-map.d: Update.
2006-12-12 08:10:40 +00:00
H.J. Lu
c0f0068602
bfd/
...
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* elf-bfd.h (elf_obj_tdata): Add symbuf.
(_bfd_elf_section_already_linked): Add struct bfd_link_info *.
(_bfd_elf_check_kept_section): Likewise.
(bfd_elf_match_symbols_in_sections): Likewise.
* elf.c (assign_section_numbers): Updated to add
struct bfd_link_info *.
(bfd_elf_match_symbols_in_sections): Updated. Cache symbol
buffer if info->reduce_memory_overheads is false.
* elflink.c (match_group_member): Updated to add
struct bfd_link_info *.
(_bfd_elf_check_kept_section): Likewise.
(elf_link_input_bfd): Likewise.
(_bfd_elf_section_already_linked): Likewise.
(bfd_elf_final_link): Free symbol buffer if
info->reduce_memory_overheads is false.
* libbfd-in.h (_bfd_nolink_section_already_linked): Add
struct bfd_link_info *.
(_bfd_generic_section_already_linked): Likewise.
* libbfd.h: Regenerated.
* linker.c (bfd_section_already_linked): Add
struct bfd_link_info *.
(_bfd_generic_section_already_linked): Likewise.
* targets.c (bfd_target): Add struct bfd_link_info * to
_section_already_linked.
* bfd-in2.h: Regenerated.
include/
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* bfdlink.h (bfd_link_info): Add reduce_memory_overheads.
ld/
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* ld.h (args_type): Remove reduce_memory_overheads.
* ldlang.c (lang_map): Updated.
(section_already_linked): Likewise.
(print_input_section): Likewise.
* ldmain.c (main): Likewise.
* lexsup.c (parse_args): Likewise.
2006-10-30 23:25:51 +00:00
Alan Modra
a14a5de357
bfd/
...
* section.c (SEC_KEEP): Update comment.
* bfd-in2.h: Regenerate.
* elflink.c (bfd_elf_gc_sections): Ignore SEC_EXCLUDE sections.
* merge.c (_bfd_merge_sections): Set SEC_KEEP on excluded sections.
* stabs.c (_bfd_discard_section_stabs): Likewise.
(_bfd_link_section_stabs): Likewise. Simplify abs_section check.
ld/
* ldlang.c (lang_map): Don't say SEC_LINKER_CREATED and SEC_KEEP
sections have been discarded.
(lang_do_version_exports_section): Set SEC_KEEP on export section.
* emultempl/elf32.em (before_allocation): Set SEC_KEEP on warning
sections.
2006-10-27 03:22:09 +00:00
Alan Modra
e9f5312993
New Cell SPU port.
2006-10-25 06:49:21 +00:00
Alan Modra
2f4754876f
bfd/
...
* elf32-arm.c (bfd_elf32_arm_allocate_interworking_sect): Check,
don't set, glue section size.
(record_arm_to_thumb_glue): Set glue section size here.
(record_thumb_to_arm_glue): Likewise.
(bfd_elf32_arm_add_glue_sections_to_bfd): Formatting.
(bfd_elf32_arm_process_before_allocation): Ignore exluded sections.
ld/
* emultempl/armelf.em (arm_elf_before_allocation): Run
gld${EMULATION_NAME}_before_allocation later.
* ldlang.c (lang_size_sections_1): Revert 2006-09-15 change.
2006-10-19 02:10:41 +00:00
Alan Modra
74541ad4c0
bfd/
...
* elf-bfd.h (struct elf_link_hash_table): Reorder. Add
text_index_section and data_index_section.
(struct elf_backend_data): Add elf_backend_init_index_section.
(_bfd_elf_init_1_index_section): Declare.
(_bfd_elf_init_2_index_sections): Declare.
* elfxx-target.h (elf_backend_init_index_section): Define.
(elfNN_bed): Init new field.
* elflink.c (_bfd_elf_link_omit_section_dynsym): Keep first tls
section and text_index_section plus data_index_section.
(_bfd_elf_link_renumber_dynsyms): Clear dynindx on omitted sections.
(_bfd_elf_init_1_index_section): New function.
(_bfd_elf_init_2_index_sections): New function.
(bfd_elf_size_dynsym_hash_dynstr): Call elf_backend_init_index_section.
(elf_link_input_bfd): When emitting relocs, use text_index_section
and data_index_section for removed sections.
* elf-m10300.c (elf_backend_omit_section_dynsym): Define.
* elf32-i386.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-sh.c: Likewise.
* elf32-xstormy16.c: Likewise.
* elf32-xtensa.c: Likewise.
* elf64-alpha.c: Likewise.
* elf64-hppa.c: Likewise.
* elf64-mmix.c: Likewise.
* elf64-sh64.c: Likewise.
* elfxx-ia64.c: Likewise.
* elf32-arm.c (elf32_arm_final_link_relocate): Use text_index_section
and data_index_section sym for relocs against sections with no dynamic
section sym.
(elf_backend_init_index_section): Define.
* elf32-cris.c: Similarly.
* elf32-hppa.c: Similarly.
* elf32-i370.c: Similarly.
* elf32-m68k.c: Similarly.
* elf32-mips.c: Similarly.
* elf32-ppc.c: Similarly.
* elf32-s390.c: Similarly.
* elf32-sparc.c: Similarly.
* elf32-vax.c: Similarly.
* elf64-mips.c: Similarly.
* elf64-ppc.c: Similarly.
* elf64-s390.c: Similarly.
* elf64-sparc.c: Similarly.
* elf64-x86-64.c: Similarly.
* elfn32-mips.c: Similarly.
* elfxx-mips.c: Similarly.
* elfxx-sparc.c: Similarly.
* linker.c (fix_syms): Base symbols in removed sections on
previous section in preference to using absolute section.
ld/
* ldlang.c (strip_excluded_output_sections): Do strip sections
that define syms, but don't ignore them.
* ld.texinfo (Output Section Discarding): Revise.
* emultempl/armcoff.em (gld${EMULATION_NAME}_finish): Always call
finish_default.
ld/testsuite/
Update for section sym changes.
2006-10-17 13:41:49 +00:00
Jakub Jelinek
07806542d5
* ldlang.c (lang_append_dynamic_list): When appending, add all elements
...
of the dynamic list rather than just the first entry.
2006-10-11 14:58:19 +00:00
H.J. Lu
49c13adb16
bfd/
...
2006-09-26 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3223
PR ld/3267
* elf.c (assign_file_positions_for_non_load_sections): Don't
warn zero size allocated sections.
ld/
2006-09-26 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3223
PR ld/3267
* ld.texinfo: Updated Output Section Discarding.
* ldlang.h (lang_output_section_statement_type): Add
section_relative_symbol.
* ldlang.c (strip_excluded_output_sections): Don't strip a
section with a symbol relative to it.
(lang_size_sections_1): Mark if an output section has a symbol
symbol relative to it.
ld/testsuite/
2006-09-26 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3223
PR ld/3267
* ld-scripts/empty-address-1.d: New file.
* ld-scripts/empty-address-1.s: Likewise.
* ld-scripts/empty-address-1.t: Likewise.
* ld-scripts/empty-address-2.s: Likewise.
* ld-scripts/empty-address-2a.d: Likewise.
* ld-scripts/empty-address-2a.t: Likewise.
* ld-scripts/empty-address-2b.d: Likewise.
* ld-scripts/empty-address-2b.t: Likewise.
* ld-scripts/empty-address-3.s: Likewise.
* ld-scripts/empty-address-3a.d: Likewise.
* ld-scripts/empty-address-3a.t: Likewise.
* ld-scripts/empty-address-3b.d: Likewise.
* ld-scripts/empty-address-3b.t: Likewise.
* ld-scripts/empty-address-3c.d: Likewise.
* ld-scripts/empty-address-3c.t: Likewise.
* ld-scripts/empty-address.exp: Likewise.
2006-09-27 04:18:16 +00:00
Nick Clifton
99643f697e
PR ld/3107
...
* ldlang.c (lang_size_sections_1): Do not abort when encountering a non-empty
section that is ignored. Instead produce a warning message.
2006-09-15 09:48:58 +00:00
H.J. Lu
55255daec3
bfd/
...
2006-09-07 H.J. Lu <hongjiu.lu@intel.com>
* elf-bfd.h (elf_link_hash_entry): Add a dynamic field.
(bfd_elf_link_mark_dynamic_symbol): New.
(SYMBOLIC_BIND): New.
* elf32-i386.c (elf_i386_check_relocs): Replace info->symbolic
with SYMBOLIC_BIND (info, h).
(elf_i386_relocate_section): Likewise.
* elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise.
(elf64_x86_64_relocate_section): Likewise.
* elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise.
* elflink.c (bfd_elf_link_mark_dynamic_symbol): New.
(bfd_elf_record_link_assignment): Call
bfd_elf_link_mark_dynamic_symbol on new entry.
(_bfd_elf_merge_symbol): Likewise.
(_bfd_elf_export_symbol): Return if the symbol isn't exported.
(_bfd_elf_fix_symbol_flags): Replace info->symbolic with
SYMBOLIC_BIND (info, h).
(_bfd_elf_dynamic_symbol_p): Likewise.
(_bfd_elf_symbol_refs_local_p): Likewise.
(bfd_elf_size_dynamic_sections): Updated.
include/
2006-09-07 H.J. Lu <hongjiu.lu@intel.com>
* bfdlink.h (bfd_elf_dynamic_list): New.
(bfd_link_info): Add a dynamic field.
ld/
2006-09-07 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (CXX): Set to g++.
(CXX_FOR_TARGET): Likewise.
* Makefile.in: Regenerated.
* NEWS: Mention --dynamic-list.
* ld.texinfo: Document --dynamic-list.
* ldgram.y: Support dynamic list.
* ldlang.c (lang_process): Call lang_finalize_version_expr_head
on link_info.dynamic if needed.
(lang_append_dynamic_list): New.
(lang_append_dynamic_list_cpp_typeinfo): New.
* ldlang.h (lang_append_dynamic_list): Likewise.
* ldlang.h (lang_append_dynamic_list_cpp_typeinfo): Likewise.
* ldlex.h (input_enum): Add input_dynamic_list.
* ldlex.l: Handle it.
* ldmain.c (main): Initialize link_info.dynamic.
* lexsup.c (option_values): Add OPTION_DYNAMIC_LIST and
OPTION_DYNAMIC_LIST_CPP_TYPEINFO.
(ld_options): Add entries for OPTION_DYNAMIC_LIST and
OPTION_DYNAMIC_LIST_CPP_TYPEINFO.
(parse_args): Handle OPTION_DYNAMIC_LIST and
OPTION_DYNAMIC_LIST_CPP_TYPEINFO.
ld/testsuite/
2006-09-07 H.J. Lu <hongjiu.lu@intel.com>
* ld-elf/dl1.c: New file.
* ld-elf/dl1.list: Likewise.
* ld-elf/dl1.out: Likewise.
* ld-elf/dl1main.c: Likewise.
* ld-elf/dl2.c: Likewise.
* ld-elf/dl2.list: Likewise.
* ld-elf/dl2a.out: Likewise.
* ld-elf/dl2b.out: Likewise.
* ld-elf/dl2main.c: Likewise.
* ld-elf/dl2xxx.c: Likewise.
* ld-elf/dl2xxx.list: Likewise.
* ld-elf/dl3.cc: Likewise.
* ld-elf/dl3.list: Likewise.
* ld-elf/dl3a.out: Likewise.
* ld-elf/dl3b.out: Likewise.
* ld-elf/dl3header.h: Likewise.
* ld-elf/dl3main.cc: Likewise.
* ld-elf/shared.exp: Updated.
* lib/ld-lib.exp (run_ld_link_exec_tests): Take an optional
argument for source language. Use CC/CXX for link, depending
on source language.
(run_cc_link_tests): Likewise.
2006-09-07 17:16:34 +00:00
Nathan Sidwell
68bbb9f788
* ldlang.c (walk_wild): Allow * to glob '/' in wildcarded match.
2006-08-29 11:27:45 +00:00
Nick Clifton
85852e367c
* ldlang.c (lang_size_sections_1, lang_assignment_statement_enum):
...
Adjust the current address of DEFAULT_MEMORY_REGION even when dot hasn't changed.
2006-08-24 14:59:24 +00:00
Alan Modra
dc0b6aa05a
* NEWS: Mention LMA default change.
...
* ld.texinfo (Output Section LMA): Update default description.
(Location Counter): Clarify backward movement.
* ldlang.c (lang_size_sections_1): Leave non-alloc sections with
default lma equal to vma. Warn on backward movement of dot.
2006-08-22 07:41:05 +00:00
Alan Modra
cde9e0be8b
ld/
...
PR 3052
* ldlang.h (lang_output_section_statement_type): Replace
"processed" field with "processed_vma" and "processed_lma".
* ldlang.c (lang_do_assignments_1): Move lma setting code..
(lang_size_sections_1): ..to here.
(lang_reset_memory_regions): Adjust for
lang_output_section_statement_type change.
* ldexp.c (fold_name): Likewise.
And this is something I forgot the check in from the previous patch.
ld/testsuite/
* ld-scripts/overlay-size-map.d: Adjust.
2006-08-16 08:31:45 +00:00
H.J. Lu
e6f2cbf536
2006-08-08 H.J. Lu <hongjiu.lu@intel.com>
...
PR ld/3006
* ldlang.c (lang_section_bst_type): Moved to ...
* ldlang.h: Here.
* ldlang.h (lang_wild_statement_struct): Add a tree field.
* ldlang.c (wild_sort_fast): Use the tree field for BST.
(wild): Likeise.
(analyze_walk_wild_section_handler): Initialize the tree field.
2006-08-08 16:08:47 +00:00
H.J. Lu
0d0999db2f
ld/
...
2006-08-08 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3009
* ldlang.c (update_wild_statements): Update the whole wild
section list.
ld/testsuite/
2006-08-08 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3009
* ld-scripts/sort.t: New file.
* ld-scripts/sort_b_a-1.d: Likewise.
* ld-scripts/sort_b_a-1.s: Likewise.
* ld-scripts/sort_b_n-1.d: Likewise.
* ld-scripts/sort_b_n-1.s: Likewise.
2006-08-08 15:07:16 +00:00
H.J. Lu
12d814e1a0
ld/
...
2006-08-01 H.J. Lu <hongjiu.lu@intel.com>
* ldlang.c (init_os): Add flags. Replace bfd_make_section with
bfd_make_section_with_flags.
(exp_init_os): Updated.
(lang_add_section): Call init_os with flags.
(map_input_to_output_sections): Likewise.
ld/testsuite/
2006-08-01 H.J. Lu <hongjiu.lu@intel.com>
* ld-elf/noload-1.d: New.
* ld-elf/noload-1.s: Likewise.
* ld-elf/noload-1.t: Likewise.
2006-08-01 17:50:52 +00:00
Alan Modra
66e28d60cb
* ldexp.c (fold_name <LOADADDR>): Use the lma.
...
* ldlang.h (lang_memory_region_type): Delete old_length. Add
last_os.
* ldlang.c (lang_memory_region_lookup): Init new field.
(lang_reset_memory_regions): Reset new field.
(lang_insert_orphan): Don't set load_base.
(lang_leave_overlay): Likewise.
(lang_size_sections_1): Delete unnecessary code setting lma_region
to region. Correct lma region check.
(lang_do_assignments_1): Rename output_section_statement parm
to current_os. Set lma from previous section in region.
2006-07-26 05:05:52 +00:00
Alan Modra
329c1c8685
* ldlang.c: Formatting.
2006-07-26 00:42:33 +00:00
Alan Modra
7544697a28
* ldlang.c (analyze_walk_wild_section_handler): Init handler_data
...
earlier.
2006-07-25 14:45:17 +00:00
Nick Clifton
50c77e5dcb
* ldlang.c (lang_section_bst): New structure for sorting sections by name.
...
(wild_sort_fast): New function: Insert a section into a binary search tree.
(output_section_callback_fast): New function: Store a section in BST.
(output_section_callback_tree_to_list): New function: Convert a BST into a list.
(analyze_walk_wild_section_handler): Initialize handler_data elements.
(wild): If the data is sorted by name use the BST method to sort the names.
2006-07-23 15:32:08 +00:00
Mark Shinwell
5e542ba70e
Fix for segmentation fault.
...
* ldlang.c (lang_insert_orphan): Correctly handle the case where
the section is to end up after the section currently at the end
of the list in output_bfd.
2006-06-21 13:25:54 +00:00
Alan Modra
f5ff60a6db
* emultempl/elf-generic.em (gld${EMULATION_NAME}_map_segments): Limit
...
loop to ten iterations. Throw away any previous linker generated
segment map.
* ldlang.c (lang_phdr_list): Make global.
* ldlang.h (lang_phdr_list): Declare.
* Makefile.am (ELF_GEN_DEPS): Define. Use in emul deps.
* Makefile.in: Regenerate.
2006-06-20 16:37:29 +00:00
Alan Modra
8ded5a0fc3
bfd/
...
* elf-bfd.h: Formatting.
(_bfd_elf_map_sections_to_segments): Declare.
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame_hdr): Don't
clear program_header_size.
* elf.c (get_program_header_size): Move. Don't use or set saved
program_header_size here.
(elf_modify_segment_map): New function. Split out from..
(assign_file_positions_for_load_sections): ..here. Assert
header size is correct. Remove dead code.
(_bfd_elf_map_sections_to_segments): Rename from
map_sections_to_segments. Make global. Use get_program_header_size
when we need estimate of header size. Call elf_modify_segment_map.
Set program_header_size.
(print_segment_map): Delete.
(_bfd_elf_sizeof_headers): If segment_map available, get the
actual size.
* elf32-arm.c (elf32_arm_symbian_modify_segment_map): Make safe
for calling more than once.
* elf32-bfin.c (elf32_bfinfdpic_modify_segment_map): Likewise.
* elf32-frv.c (elf32_frvfdpic_modify_segment_map): Likewise.
* elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Likewise.
* elf32-i370.c (elf_backend_add_symbol_hook): Delete.
(elf_backend_additional_program_headers): Delete.
(elf_backend_modify_segment_map): Delete.
* elf64-hppa.c (elf64_hppa_modify_segment_map): Convert to ISO C.
* elfxx-ia64.c (elfNN_ia64_modify_segment_map): Likewise.
* doc/bfdint.texi: Delete SIZEOF_HEADERS difficulties.
ld/
* Makefile.am (ELF_DEPS): Define. Use in emul file deps. Fix
many ELF emul file deps that incorrectly said they needed elf32.em
instead of generic.em. Add genelf.em as required.
* Makefile.in: Regenerate.
* ldlang.c (lang_process): Call ldemul_finish before
lang_check_section_addresses.
* emulparams/arcelf.sh: Generic elf target needs genelf.
* emulparams/d30v_e.sh: Likewise.
* emulparams/d30v_o.sh: Likewise.
* emulparams/d30velf.sh: Likewise.
* emulparams/elf32_dlx.sh: Likewise.
* emulparams/elf32_i860.sh: Likewise.
* emulparams/elf32fr30.sh: Likewise.
* emulparams/elf32frv.sh: Likewise.
* emulparams/elf32iq10.sh: Likewise.
* emulparams/elf32iq2000.sh: Likewise.
* emulparams/elf32mt.sh: Likewise.
* emulparams/mn10200.sh: Likewise.
* emulparams/or32.sh: Likewise.
* emulparams/or32elf.sh: Likewise.
* emulparams/pjelf.sh: Likewise.
* emulparams/msp430all.sh: Likewise. Extract common entries.
* emulparams/pjlelf.sh: Include pjelf.sh.
* emulparams/elf32frvfd.sh (EXTRA_EM_FILE): Unset.
* emulparams/mn10300.sh (EXTRA_EM_FILE): Unset.
* emultempl/elf-generic.em: New file.
* emultempl/genelf.em: New file.
* emultempl/elf32.em: Include elf-generic.em.
(gld${EMULATION_NAME}_layout_sections_again): Delete.
(gld${EMULATION_NAME}_finish): Call gld${EMULATION_NAME}_map_segments.
* emultempl/hppaelf.em (hppaelf_layout_sections_again): Likewise.
(gld${EMULATION_NAME}_finish): Rename from hppaelf_finish. Call
gld${EMULATION_NAME}_map_segments.
(LDEMUL_FINISH): Update.
* emultempl/mmo.em: Correct comment. Include elf-bfd.h and
source elf-generic.em.
(mmo_finish): Call gld${EMULATION_NAME}_map_segments.
* emultempl/ppc64elf.em (ppc_layout_sections_again): Likewise.
(gld${EMULATION_NAME}_finish): Rename from ppc_finish. Call
gld${EMULATION_NAME}_map_segments.
(LDEMUL_FINISH): Update.
ld/testsuite/
* ld-elf/eh1.d: Update for fewer program headers.
* ld-elf/eh2.d: Likewise.
* ld-elf/eh3.d: Likewise.
2006-06-20 02:22:16 +00:00
Alan Modra
409d7240c7
* ldlang.h (lang_input_statement_type): Use bitfields for booleans.
...
* ldlang.c (struct out_section_hash_entry): Rename from
output_statement_hash_entry. Delete output_section_statement_type
entry. Add statement_union_type entry. Adjust all users.
(output_section_statement_table): Rename from output_statement_table.
Adjust all users.
(output_section_statement_newfunc): Rename from
output_statement_newfunc. Adjust all users.
(output_section_statement_table_init): Rename from
output_statement_table_init. Adjust all users.
(output_section_statement_table_free): Rename from
output_statement_table_free. Adjust all users.
2006-06-09 01:13:39 +00:00
Alan Modra
02a38f9286
* ldlang.h (enum section_type): Delete dsect_section, copy_section,
...
info_section and overlay_section. Add noalloc_section.
* ldlang.c (lang_add_section): Adjust.
* ldgram.y (type): Adjust.
2006-06-07 04:55:11 +00:00
Alan Modra
e0f6802f19
* ldlang.c (init_os): Whitespace.
...
(map_input_to_output_sections): Don't init_os for lang_input_section.
(print_all_symbols): Remove forward declaration. Convert to ISO C.
2006-06-06 02:24:33 +00:00
Alan Modra
87aa7f19be
* ldlang.c (lookup_name): Delete dead code. Remove FIXMEs.
2006-06-05 06:12:40 +00:00
Alan Modra
f0636a4439
* ldlang.c (lang_size_sections_1): Don't check mem regions for
...
os->ignored sections.
2006-05-19 06:09:31 +00:00
Daniel Jacobowitz
f86a87568d
* ldlang.c (lang_size_sections): Call lang_reset_memory_regions
...
before redoing one_lang_size_sections_pass.
2006-05-17 16:46:54 +00:00
Alan Modra
abe6ac950c
* ldlang.c (wild): Tidy default_common_section loop.
...
(print_input_section): Format.
2006-04-19 02:10:43 +00:00
Kaz Kojima
f2e349f91a
* ldlang.c (load_symbols): Set as_needed and add_needed according
...
to the corresponding script's fields while processing it.
2006-04-07 07:03:51 +00:00
H.J. Lu
fbbc375958
bfd/
...
2006-04-06 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relax_section): Skip unneeded passes
with the skip_relax_pass_0 and skip_relax_pass_1 bits in the
section structure.
include/
2006-04-06 H.J. Lu <hongjiu.lu@intel.com>
* bfdlink.h (bfd_link_info): Replace need_relax_finalize with
relax_pass.
ld/
2006-04-06 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/ia64elf.em: Set link_info.relax_pass to 2. Remove
link_info.need_relax_finalize.
* ldlang.c (relax_sections): New.
(lang_process): Use. Call relax_sections link_info.relax_pass
times.
* ldmain.c (main): Set link_info.relax_pass to 1. Remove
link_info.need_relax_finalize.
2006-04-06 18:52:46 +00:00
Eric Botcazou
4d4920ecc5
* ldlang.c (lang_map): Print the list of discarded input sections.
...
(print_input_section): Change parameter and print zero-sized sections.
(print_statement): Adjust call to print_input_section.
2006-04-04 08:52:21 +00:00
Alan Modra
66eb6687c9
PR 2434
...
bfd/
* elflink.c (struct elf_smash_syms_data, elf_smash_syms): Delete.
(elf_link_add_object_symbols): Delete unnecessary locals. Rename
hash_table -> htab. Formatting. Save entire symbol table
before loading as-needed syms, and restore afterwards if lib not
needed. Use bfd_hash_allocate rather than bfd_alloc for sym
name. Free some buffers earlier.
* bfd-in.h (struct bfd_hash_table): Add entsize.
(bfd_hash_table_init, bfd_hash_table_init_n): Adjust prototype.
* elf-bfd.h (_bfd_elf_link_hash_table_init): Likewise
* hash.c (bfd_hash_table_init_n): Add entsize param, save to
hash table.
(bfd_hash_table_init): Add param, adjust calls.
* aoutx.h: Adjust all hash_table_init functions and calls.
* bfd.c: Likewise.
* coff-arm.c: Likewise.
* coff-h8300.c: Likewise.
* coff-ppc.c: Likewise.
* cofflink.c: Likewise.
* ecoff.c: Likewise.
* ecofflink.c: Likewise.
* elf-m10300.c: Likewise.
* elf-strtab.c: Likewise.
* elf.c: Likewise.
* elf32-arm.c: Likewise.
* elf32-bfin.c: Likewise.
* elf32-cris.c: Likewise.
* elf32-frv.c: Likewise.
* elf32-hppa.c: Likewise.
* elf32-i386.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-m68hc1x.c: Likewise.
* elf32-m68k.c: Likewise.
* elf32-ppc.c: Likewise.
* elf32-s390.c: Likewise.
* elf32-sh.c: Likewise.
* elf32-vax.c: Likewise.
* elf64-alpha.c: Likewise.
* elf64-hppa.c: Likewise.
* elf64-ppc.c: Likewise.
* elf64-s390.c: Likewise.
* elf64-sh64.c: Likewise.
* elf64-x86-64.c: Likewise.
* elfxx-ia64.c: Likewise.
* elfxx-mips.c: Likewise.
* elfxx-sparc.c: Likewise.
* i386linux.c: Likewise.
* libaout.h: Likewise.
* libbfd-in.h: Likewise.
* libcoff-in.h: Likewise.
* linker.c: Likewise.
* m68klinux.c: Likewise.
* merge.c: Likewise.
* opncls.c: Likewise.
* pdp11.c: Likewise.
* sparclinux.c: Likewise.
* stabs.c: Likewise.
* sunos.c: Likewise.
* vms.c: Likewise.
* xcofflink.c: Likewise.
* section.c (struct section_hash_entry): Move to..
* libbfd-in.h: ..here.
* Makefile.am: Run "make dep-am"
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
binutils/
* ieee.c (write_ieee_debugging_info): Adjust bfd_hash_table_init calls.
* wrstabs.c (write_stabs_in_sections_debugging_info): Likewise.
ld/
* ldcref.c (add_cref): Adjust bfd_hash_table_init calls.
* ldlang.c (output_statement_table_init, lang_init): Likewise.
* ldmain.c (add_ysym, add_wrap, add_keepsyms_file): Likewise.
(undefined_symbol): Likewise.
2006-03-16 12:20:16 +00:00
Alan Modra
218868ba41
* ldlang.h (lang_output_section_statement_type): Add prev.
...
* ldlang.c (output_statement_newfunc): Set os.prev.
(lang_insert_orphan): Likewise.
(output_prev_sec_find): Use os.prev.
2005-12-24 07:48:30 +00:00
H.J. Lu
15445c8e19
2005-12-19 H.J. Lu <hongjiu.lu@intel.com>
...
PR ld/2065
* ldlang.c (output_statement_newfunc): Revert the change made on
2005-11-16.
(output_prev_sec_find): Likewsise.
* ldlang.h (lang_statement_list_type): Likewsise.
2005-12-19 15:06:40 +00:00
Alan Modra
390fbbf109
bfd/
...
* elf-bfd.h (_bfd_generic_match_sections_by_type): Don't define.
* libbfd-in.h (_bfd_generic_match_sections_by_type): Delete.
* libbfd.c (_bfd_generic_match_sections_by_type): Delete.
* targets.c (bfd_match_sections_by_type): Don't define.
(BFD_JUMP_TABLE_LINK): Remove _bfd_generic_match_sections_by_type.
* coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Likewise.
* coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
ld/
* ldlang.c (lang_output_section_find_by_flags): Add match_type param.
Run two passes, first using match_type, second without.
* ldlang.h (lang_match_sec_type_func): New typedef.
(lang_output_section_find_by_flags): Update prototype.
bfd_match_sections_by_type and lang_output_section_find_by_flags.
* emultempl/pe.em (place_orphan): Likewise.
2005-11-24 06:02:08 +00:00
Alan Modra
be5291325d
* ldlang.c (lang_insert_orphan): Skip first assignment to dot
...
in script when looking for place to insert orphan statements.
2005-11-24 00:58:28 +00:00
Alan Modra
94b50910fb
* ldlang.c (lang_size_sections_1): Revert 2005-11-16 functional
...
changes to section alignment.
* ldmisc.c (vfinfo): Handle %ld and %lu.
2005-11-18 04:12:27 +00:00
Alan Modra
7b986e992e
* ldlang.h (lang_input_section_type): Remove "ifile" field.
...
(lang_insert_orphan, lang_add_section): Update prototypes.
* ldlang.c (lang_insert_orphan): Remove "file" param.
(lang_add_section): Likewise. Update all callers.
(wild_sort): Get an input section's bfd via "section->owner".
(size_input_section): Access just_syms_flag via bfd usrdata.
(lang_place_orphans): Update ldemul_place_orphan call.
* ldemul.h (ldemul_place_orphan): Remove input_statement param.
(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
* ldemul.c (ldemul_place_orphan): Likewise.
* ldwrite.c (build_link_order): Access just_syms_flag via bfd usrdata.
* emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Likewise.
* emultempl/beos.em (sort_by_file_name): Access bfd by section->owner.
(sort_sections): Likewise.
(place_orphan): Remove "file" param. Adjust lang_add_section call.
* emultempl/elf32.em (place_orphan): Remove "file" param. Adjust
lang_add_section and lang_insert_orphan calls.
* emultempl/hppaelf.em (hppaelf_add_stub_section): Adjust
lang_add_section call.
(build_section_lists): Access just_syms_flag via bfd usrdata.
* emultempl/m68hc1xelf.em (m68hc11elf_add_stub_section): Adjust
lang_add_section call.
* emultempl/mmo.em (mmo_place_orphan): Remove "file" param. Adjust
lang_add_section and lang_insert_orphan calls.
* emultempl/pe.em (place_orphan): Likewise. Access bfd via section
owner.
* emultempl/ppc64elf.em (ppc_add_stub_section): Adjust
lang_add_section call.
(build_toc_list): Access just_syms_flag via bfd usrdata.
(build_section_lists): Likewise.
* emultempl/xtensaelf.em (elf_xtensa_place_orphan): Remove "file"
param. Adjust place_orphan call.
(ld_build_required_section_dependence): Access bfd via section owner.
2005-11-17 00:10:05 +00:00
Alan Modra
bd4d42c174
* ldlang.h (lang_output_section_statement_type): Add prev.
...
* ldlang.c (new_afile): Always init header.type.
(output_statement_newfunc): Set os.prev.
(output_prev_sec_find): Use os.prev.
(lang_enter_output_section_statement): Formatting.
(lang_final, lang_add_target, lang_add_fill): Likewise.
(lang_add_data, lang_add_reloc): Likewise.
(lang_add_attribute): Only alloc the header.
2005-11-16 08:32:54 +00:00
Alan Modra
7270c5edcb
* ld.texinfo (Forced Output Alignment): Specify that this is an
...
alignment increase, not an override.
* ldlang.c (init_os): Set output section alignment here..
(lang_add_section): ..rather than here.
(lang_size_sections_1): Consolidate alignment code. Warn if section
alignment affects start address when explicit address given.
2005-11-16 07:17:20 +00:00
Alan Modra
384a9dda99
* ldlang.c (struct output_statement_hash_entry): Don't indirect to os.
...
(output_statement_newfunc): Rewrite.
(lang_output_section_find_1): Merge into..
(lang_output_section_find): ..here.
(lang_output_section_statement_lookup_1): Rewrite to handle
multiple sections with the same name.
(output_statement_table_init): Commonise error message.
(lang_init, open_output): Likewise.
2005-11-04 13:26:53 +00:00
Alan Modra
7fabd0295e
* ldlang.h (lang_output_section_statement_type): Rearrange. Remove
...
memspec. Make "processed" a bitfield.
(lang_data_statement_type, lang_reloc_statement_type): Rename
output_vma to output_offset.
* ldlang.c (lang_output_section_statement_lookup_1): Init
all_input_readonly. Don't init memspec.
(init_os): Remove incorrect comment.
(print_data_statement, print_reloc_statement): Adjust for
lang_data_statement_type and lang_reloc_statement_type change.
(lang_size_sections_1, lang_add_reloc): Likewise.
* ldwrite.c (build_link_order): Likewise.
2005-11-03 02:54:10 +00:00
H.J. Lu
ccd2ec6a87
bfd/
...
2005-10-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/1487
* elf-bfd.h (_bfd_generic_init_private_section_data): New.
(_bfd_elf_init_private_section_data): New.
* elf.c (elf_fake_sections): Don't set SHF_GROUP for
relocatable link.
(bfd_elf_set_group_contents): Don't handle relocatable link
specially.
(assign_section_numbers): If it isn't called by assembler,
use the output section of elf_linked_to_section for
SHF_LINK_ORDER.
(_bfd_elf_init_private_section_data): New.
(_bfd_elf_copy_private_section_data): Call it.
* libbfd-in.h (_bfd_generic_init_private_section_data): New.
* libbfd.c (_bfd_generic_init_private_section_data): New.
* targets.c (BFD_JUMP_TABLE_COPY): Add
_bfd_generic_init_private_section_data.
(bfd_init_private_section_data): Likewise.
* bfd-in2.h: Regenerated.
* libbfd.h: Likewise.
ld/
2005-10-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/1487
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Call
bfd_match_sections_by_type to match section types.
* ldlang.c (init_os): Take the input section. Call
bfd_init_private_section_data if the input section isn't NULL.
(exp_init_os): Pass NULL to init_os.
(map_input_to_output_sections): Likewise.
(lang_add_section): Pass the input section to init_os.
ld/testsuite/
2005-10-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/1487
* ld-ia64/tlspic.rd: Updated.
2005-10-24 01:40:58 +00:00
H.J. Lu
ecca98713a
bfd/
...
2005-10-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/1467
* elf-bfd.h (_bfd_elf_match_sections_by_type): New.
(_bfd_generic_match_sections_by_type): New. Defined.
* elf.c (_bfd_elf_match_sections_by_type): New.
* libbfd-in.h (_bfd_generic_match_sections_by_type): New.
* bfd-in2.h: Regenerated.
* libbfd.h: Likewise.
* libbfd.c (_bfd_generic_match_sections_by_type): New.
* targets.c (BFD_JUMP_TABLE_LINK): Initialize
_bfd_match_sections_by_type with
_bfd_generic_match_sections_by_type.
(bfd_target): Add _bfd_match_sections_by_type.
ld/
2005-10-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/1467
* emultempl/elf32.em: Include "elf-bfd.h".
(gld${EMULATION_NAME}_place_orphan): Check section type and
don't use section name for ELF input sections.
* ld.texinfo: Document orphan section processing.
* ldlang.c (lang_output_section_find_by_flags): Match section
types by calling bfd_match_sections_by_type.
2005-10-15 14:57:55 +00:00
Mark Mitchell
86043bbbd5
* ld.texino: Describe double-quoted string syntax for version
...
nodes.
* ldlang.h (lang_new_vers_pattern): Add literal_p parameter.
* ldgram.y (vers_defns): Allow NAME as well as VERS_IDENTIFIER.
Adjust calls to lang_new_vers_pattern to pass literal_p argument.
* ldlang.c (lang_vers_match): Fix indentation. Do not glob-match
version nodes without a pattern.
(lang_new_vers_pattern): Add literal_p parameter.
(lang_do_version_exports_section): Pass it.
* ld-elfvers/vers.exp: Add vers31.
* ld-elfvers/vers31.c: New file.
* ld-elfvers/vers31.dsym: Likewise.
* ld-elfvers/vers31.map: Likewise.
* ld-elfvers/vers31.ver: Likewise.
2005-10-13 17:29:57 +00:00
Jim Wilson
4520f86864
Fix malformed error message.
...
* ldlang.c (lang_startup): Add missing ": " to einfo call.
2005-09-30 22:10:54 +00:00
H.J. Lu
750877bad8
ld/
...
2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
* ldlang.c (output_statement_hash_entry): New type.
(output_statement_table): New variable for hash table.
(output_statement_newfunc): New function.
(output_statement_table_init): Likewise.
(output_statement_table_free): Likewise.
(lang_init): Call output_statement_table_init.
(lang_finish): Renamed to ...
(lang_end): This.
(lang_process): Updated.
(lang_finish): New function.
(lang_output_section_find_1): Use hash table.
(lang_output_section_statement_lookup_1): Likewise.
* ldlang.h (lang_finish): New.
* ldmain.c (main): Call lang_finish.
ld/testsuite/
2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
* ld-elf/sec64k.exp: Enabled for all ELF targets.
2005-09-30 17:45:54 +00:00
Alan Modra
f68d3f78b1
* ldlang.h (lang_output_section_statement_struct): Change type of
...
"processed" to bfd_boolean.
* ldexp.c (fold_name): Update references to os->processed.
* ldlang.c (lang_output_section_statement_lookup_1): Likewise.
(lang_size_sections_1): Likewise.
(lang_reset_memory_regions): Likewise.
2005-09-20 03:00:53 +00:00
Alan Modra
a5df8c84e0
PR ld/1353
...
* ldlang.c (lang_size_sections_1): Process addr_tree earlier,
so that unused output section statements affect dot.
2005-09-19 23:17:47 +00:00
Alan Modra
046183de0e
bfd/
...
* elf32-ppc.c (struct elf_linker_section): Replace sym_val field
with sym.
(ppc_elf_relocate_section): Adjust for above.
(create_sdata_sym): New function.
(ppc_elf_create_linker_section): Call it.
(ppc_elf_check_relocs): Correct has_sda_refs and non_got_refs.
Create sdata syms for all SDA relocs.
(ppc_elf_adjust_dynamic_symbol): Don't special case _SDA_BASE_
and _SDA2_BASE_.
(ppc_elf_set_sdata_syms): Delete.
* elflink.c (bfd_elf_size_dynamic_sections): Don't create DT_INIT
and DT_FINI tags unless associated section has input.
(bfd_elf_set_symbol, _bfd_elf_provide_symbol): Delete.
(_bfd_elf_provide_section_bound_symbols): Delete.
* bfd-in.h (_bfd_elf_provide_symbol): Delete.
(_bfd_elf_provide_section_bound_symbols): Delete.
* bfd-in2.h: Regenerate.
ld/
* ldemul.c (ldemul_do_assignments, do_assignments_default): Delete.
* ldemul.h (ldemul_do_assignments, do_assignments_default): Delete.
(struct ld_emulation_xfer_struct): Remove do_assignments field.
* ldlang.c (lang_do_assignments): Don't call ldemul_do_assignments.
* emulparams/elf32ppc.sh (SDATA_START_SYMBOLS): New.
(SDATA2_START_SYMBOLS, SBSS_START_SYMBOLS, SBSS_END_SYMBOLS): New.
* emultempl/aix.em (ld_*_emulation): Delete do_assignments init.
* emultempl/armcoff.em: Likewise.
* emultempl/beos.em: Likewise.
* emultempl/generic.em: Likewise.
* emultempl/gld960.em: Likewise.
* emultempl/gld960c.em: Likewise.
* emultempl/linux.em: Likewise.
* emultempl/lnk960.em: Likewise.
* emultempl/m68kcoff.em: Likewise.
* emultempl/pe.em: Likewise.
* emultempl/sunos.em: Likewise.
* emultempl/ticoff.em: Likewise.
* emultempl/vanilla.em: Likewise.
* emultempl/elf32.em: Likewise.
(gld*_provide_bound_symbols): Delete.
(gld*_provide_init_fini_syms): Delete.
(gld*_before_allocation): Don't call ldemul_do_assignments.
* emultempl/ppc32elf.em (ppc_do_assignments): Delete.
(LDEMUL_DO_ASSIGNMENTS): Delete.
* scripttempl/elf.sc: Provide init/fini syms. Add SBSS_START_SYMBOLS,
SBSS_END_SYMBOLS, SDATA2_START_SYMBOLS.
2005-08-04 06:22:14 +00:00
Alan Modra
9f4fb50211
* ldlang.c (exp_init_os): Handle etree_provide.
...
* emulparams/armelf.sh (OTHER_END_SYMBOLS): Rename from..
(OTHER_BSS_END_SYMBOLS): ..this.
* emulparams/armelf_linux.sh: Likewise.
* emulparams/armnto.sh: Likewise.
* emulparams/criself.sh: Likewise.
* emulparams/crislinux.sh: Likewise.
* emulparams/elf32frv.sh: Likewise.
* emulparams/elf32mcore.sh: Likewise.
* emulparams/elf32ppc.sh: Likewise.
* emulparams/elf32ppclinux.sh: Likewise.
* emulparams/hppa64linux.sh: Likewise.
* scripttempl/armbpabi.sc: Substitute $OTHER_END_SYMBOLS, not
$OTHER_BSS_END_SYMBOLS.
* scripttempl/elf32sh-symbian.sc: Likewise.
* scripttempl/elf_chaos.sc: Likewise.
* scripttempl/iq2000.sc: Likewise.
* scripttempl/xstormy16.sc: Likewise.
* scripttempl/elf.sc: Likewise. Delete __bss_start comment.
* scripttempl/elfxtensa.sc: Likewise.
2005-08-03 05:09:49 +00:00
DJ Delorie
8980686623
* ldlang.c (lang_output_section_statement_lookup_1): Don't cast a
...
unary & address operator, as that breaks GCC's strict aliasing
rules.
2005-07-28 20:08:15 +00:00
Alan Modra
5e797c2c67
* ldemul.c (ldemul_do_assignments): New function.
...
(do_assignments_default): New function.
* ldemul.h (ldemul_do_assignments): Declare.
(do_assignments_default): Declare.
(struct ld_emulation_xfer_struct): Add do_assignments.
* ldlang.c (lang_do_assignments) Call ldemul_do_assignments.
* emultempl/aix.em (ld_*_emulation): Init do_assignments field.
* emultempl/armcoff.em: Likewise.
* emultempl/beos.em: Likewise.
* emultempl/generic.em: Likewise.
* emultempl/gld960.em: Likewise.
* emultempl/gld960c.em: Likewise.
* emultempl/linux.em: Likewise.
* emultempl/lnk960.em: Likewise.
* emultempl/m68kcoff.em: Likewise.
* emultempl/pe.em: Likewise.
* emultempl/sunos.em: Likewise.
* emultempl/ticoff.em: Likewise.
* emultempl/vanilla.em: Likewise.
* emultempl/elf32.em: Likewise, to call gld*_provide_init_fini_syms.
(gld*_find_exp_assignment): Adjust bfd_elf_record_link_assignment call.
2005-07-15 12:19:15 +00:00
Alan Modra
a3c2b96af6
bfd/
...
* bfd-in.h (_bfd_elf_fix_excluded_sec_syms): Declare.
(_bfd_elf_provide_section_bound_symbols): Remove param name.
Formatting.
* bfd-in2.h: Regenerate.
* elflink.c (bfd_elf_gc_sections): Don't call generic function.
(_bfd_elf_provide_symbol): Formatting.
(_bfd_elf_provide_section_bound_symbols): Remove all hacks, just
create section relative syms.
(fix_syms, _bfd_elf_fix_excluded_sec_syms): New functions.
* elf32-ppc.c (ppc_elf_set_sdata_syms): Use
_bfd_elf_provide_section_bound_symbols.
* reloc.c (bfd_mark_used_section): Delete.
(bfd_generic_gc_sections): Don't call the above.
ld/
* ldlang.c (strip_excluded_output_sections): Don't call
bfd_gc_sections.
* emultempl/elf32.em (gld*_provide_bound_symbols): Move.
(gld*_provide_init_fini_syms): Move.
(gld*_before_allocation): Call the above from here..
(gld*_finish): ..not here. Call _bfd_elf_fix_excluded_sec_syms.
* emultempl/hppaelf.em (hppaelf_finish): Likewise.
* emultempl/ppc64elf.em (ppc_finish): Likewise.
2005-07-14 13:54:23 +00:00
Alan Modra
32124d5bbf
* ldlang.c (wild_sort): Formatting.
...
(strip_excluded_output_sections): Strip zero size sections here.
* emultempl/elf32.em (gld*_strip_empty_sections): Delete.
(gld*_finish): Don't call the above.
* emultempl/hppaelf.em (hppaelf_finish): Likewise.
* emultempl/ppc64elf.em (ppc_finish): Likewise.
2005-07-08 06:20:16 +00:00
Alan Modra
e9ee469ad1
* ld.h (lang_phase_type): Move to..
...
* ldexp.h: ..here. Add lang_mark_phase_enum.
(node_type): Remove etree_undef and etree_unspec.
(exp_data_seg): Delete.
(struct ldexp_control, expld): New.
(invalid, exp_mark_used_section): Delete.
(exp_fold_tree, exp_get_vma, exp_get_value_int, exp_get_fill,
exp_get_abs_int): Update prototypes.
* ldexp.c (assigning_to_dot): Delete.
(expld): Define.
(make_abs): Operate directly on expld.result. Update all callers.
(new_abs): Likewise. Return void.
(new_rel_from_abs): Rename from new_rel_from_section.
(new_rel, new_rel_from_abs): Operate on expld.result and return void.
Update all callers.
(fold_unary): Operate on expld.result and return void. Remove
"current_section", "allocation_done", "dot", "dotp" and "mark_used"
params. Update all callers.
(fold_binary, fold_trinary, fold_name, exp_fold_tree_1): Likewise.
(fold_unary <ALIGN_K>): Ensure alignment is absolute.
(fold_unary <ABSOLUTE>): Use make_abs.
(fold_unary <DATA_SEGMENT_END>): Evaluate mark_phase as for
allocating_phase.
(fold_binary <DATA_SEGMENT_ALIGN, DATA_SEGMENT_RELRO_END, >): Ditto.
(fold_binary <'%','/'>): Don't error if marking.
(fold_name <SIZEOF_HEADERS>): Don't call bfd_sizeof_headers when
marking.
(fold_name <NAME>): Remove FIXME; -R is handled correctly. Don't
error when marking.
(fold_name <ADDR, LOADADDR, SIZEOF>): Don't set SEC_KEEP.
(exp_fold_tree_1): Don't error when marking.
(exp_fold_tree_1 <etree_rel>): Evaluate in all phases except first.
(exp_fold_tree_1 <etree_assign to dot>): Don't check for NULL
current section, instead check for NULL dotp.
(exp_fold_tree_1 <etree_provide>): Don't evaluate the assignment
source unless the symbol is referenced and undefined.
(exp_fold_tree): Remove "allocation_done" and "dot" params. Save
params to expld.
(exp_fold_tree_no_dot): Remove "current_section", "allocation_done
and "mark_used" params. Save params to expld. Update all callers.
(exp_assop): Do without temp var.
(exp_print_tree <etree_undef>): Delete code.
(exp_get_vma): Remove "allocation_done" param. Correct error return.
(exp_get_fill, exp_get_abs_int): Likewise.
(exp_get_value_int): Remove "allocation_done" param.
(exp_mark_used_section): Delete.
* ldgram.y (fill_exp): Update exp_get_fill call.
(origin_spec, length_spec): Update exp_get_vma call.
* ldlang.c (lang_init): Don't bother clearing lang_statement_iteration.
(lang_mark_used_section_1, lang_mark_used_section): Delete.
(strip_excluded_output_sections): Call one_lang_size_sections_pass in
marking mode. Merge old lang_mark_used_section code. Correct handling
of output sections with excluded input sections and data statements.
Don't drop non-zero sized sections. Don't zap os->bfd_section.
Do set SEC_EXCLUDE when appropriate.
(print_output_section_statement): Update for changed ldexp.c
interface.
(print_assignment, lang_size_sections_1): Likewise.
(lang_do_assignments_1, lang_enter_output_section_statement): Likewise.
(lang_new_phdr, lang_record_phdrs): Likewise.
(lang_size_sections): Likewise.
(insert_pad): Use following statement if it is a pad, rather than
creating a new one.
(lang_size_sections_1 <lang_output_section_statement_enum>): Do
process ignored output section to set vma and lma, but don't
update dot for these sections. Don't error if marking.
(lang_size_sections_1 <lang_assignment_statement_enum>): Don't
update dot for ignored sections.
(lang_size_sections_1 <lang_data_statement_enum>): Don't mark absolute
section with SEC_ALLOC.
(one_lang_size_sections_pass): New function.
(lang_size_sections): Remove first five params. Set expld.phase on
entry and exit. Use one_lang_size_sections_pass.
(lang_do_assignments): Remove all params. Update all callers.
(lang_reset_memory_regions): Clear os->processed for all output
section statements.
* ldlang.h (lang_do_assignments): Update prototype.
(lang_size_sections): Likewise.
(one_lang_size_sections_pass): Declare.
* pe-dll.c (pe_dll_fill_sections, pe_exe_fill_sections): Update
lang_size_sections and lang_do_assignments calls.
* emultempl/elf32.em (layout_sections_again): Likewise.
* emultempl/ppc64elf.em (ppc_before_allocation): Use
one_lang_size_sections_pass.
2005-06-09 02:05:47 +00:00
H.J. Lu
079f985c5a
2005-06-04 H.J. Lu <hongjiu.lu@intel.com>
...
PR 992
* ldexp.c (exp_mark_used_section): Set SEC_KEEP on current
section for etree_assign, etree_provide and etree_provided.
Call fold_binary on etree_binary.
* ldlang.c (lang_mark_used_section_1): Handle load base.
2005-06-04 14:40:21 +00:00
Alan Modra
408082ec18
* ldexp.h (etree_value_type): Use "asection *" in place of
...
"struct lang_output_section_statement_struct *" for "section".
(exp_fold_tree): Likewise.
(exp_mark_used_section): Likewise.
* ldexp.c (new_rel, new_rel_from_section, fold_unary, fold_binary,
fold_trinary, fold_name, exp_fold_tree_1, exp_fold_tree,
exp_mark_used_section): Likewise for "current_section" param.
(make_abs, new_abs, exp_binop, exp_unop, exp_get_vma, exp_get_fill,
exp_get_abs_int): Adjust for above changes.
* ldlang.c (lang_mark_used_section_1, print_assignment,
lang_size_sections_1, lang_do_assignments_1): Likewise.
* ldexp.c (fold_name): Init entire result struct.
2005-06-02 03:08:41 +00:00
Zack Weinberg
a359509ed3
ld:
...
* ldlang.c (entry_symbol_default): New file-scope global.
(lang_finish): Use it, not a hardwired "start".
(lang_default_entry): Set it.
* ldlang.h: Declare lang_default_entry.
* emultempl/beos.em, emultempl/pe.em: Use lang_default_entry,
not lang_add_entry, to override default entry point symbol.
ld/testsuite:
* ld-scripts/align.exp: Mark align1 XFAIL on PECOFF targets.
* ld-scripts/data.exp: Mark data UNSUPPORTED on a.out targets.
* ld-scripts/provide.exp, ld-scripts/size.exp: Mark all tests
UNSUPPORTED on a.out targets. Tidy.
2005-06-01 04:04:19 +00:00
H.J. Lu
75ff45898c
bfd/
...
2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
PR 797
* elf32-i386.c (elf_i386_size_dynamic_sections): Also remove
empty sdynbss section.
* elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Likewise.
ld/
2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
PR 797
* ldexp.c (exp_fold_tree_1): Renamed from exp_fold_tree and
take take a bfd_boolean, mark_used. Ignore assert failure if
mark_used is TRUE.
(exp_fold_tree) Call exp_fold_tree_1 with mark_used == FALSE.
(exp_fold_tree_no_dot): Updated to take a bfd_boolean,
mark_used and pass down.
(fold_unary): Likewise.
(fold_binary): Likewise.
(fold_trinary): Likewise.
(exp_binop): Add FALSE to call to exp_fold_tree_no_dot.
(exp_trinop): Likewise.
(exp_unop): Likewise.
(exp_nameop): Likewise.
(exp_get_vma): Likewise.
(exp_get_fill): Likewise.
(exp_get_abs_int): Likewise.
(fold_name): Likewise. Set SEC_KEEP in output section flags.
(exp_mark_used_section): New.
* ldexp.h (exp_mark_used_section): New.
* ldlang.c (lang_output_section_statement_lookup_1): Set the
ignored field to FALSE.
(lang_mark_used_section_1): New.
(lang_mark_used_section): Call lang_mark_used_section_1.
(strip_excluded_output_sections): Call lang_mark_used_section
and check for unused sections.
(lang_size_sections_1): Skip an output section if it should
be ignored.
(lang_do_assignments_1): Likewise.
(lang_process): Don't call lang_mark_used_section here.
* ldlang.h (lang_output_section_statement_type): Change
all_input_readonly to bitfield. Add ignored.
ld/testsuite/
2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
PR 797
* empty-aligned.d: New file.
* empty-aligned.exp: Likewise.
* empty-aligned.s: Likewise.
* empty-aligned.t: Likewise.
2005-05-17 16:43:02 +00:00
Nick Clifton
10dbd1f36f
ldlang.c (print_assignment): Do not rely upon a valid result having a section
...
associated with it.
elf32-arm.c (elf32_arm_final_link_relocate): Gracefully handle the situation
where a symbols's section is not known but a section relative R_ARM_RELATIVE
reloc has to be generated for the Symbian OS.
2005-05-17 14:39:18 +00:00
Nick Clifton
3b83e13a45
* ldlang.c (Scan_for_self_assignment): Check an assignment tree to
...
see if the same value is being used on the rhs as on the lhs.
(print_assignment): Call scan_for_self_assignment and if it
returns true, do no display the result of the computation but
instead just the final value of the symbol on the lhs.
* ld.texinfo: Document this behaviour and provide an example of
when it will happen.
2005-05-17 14:35:21 +00:00
Nick Clifton
75be928bd2
Update FSF addresses
2005-05-12 07:32:09 +00:00
Alan Modra
0cf7d72c50
* ldgram.y: Add SPECIAL token.
...
(sect_constraint): Handle SPECIAL.
* ldlang.c (lang_output_section_find_1): Don't match SPECIAL.
(map_input_to_output_sections): Likewise.
* ldlex.l (SPECIAL): Define.
* emulparams/elf32ppc.sh (DATA_GOT, SDATA_GOT, SEPARATE_GOTPLT,
GOT, PLT, GOTPLT): Define.
* emultempl/ppc32elf.em (old_plt, old_got): New static vars.
(ppc_after_open): New function.
(PARSE_AND_LIST_PROLOGUE): Define OPTION_OLD_LPT and OPTION_OLD_GOT.
(PARSE_AND_LIST_LONGOPTS): Add "bss-plt" and "sdata-got".
(PARSE_AND_LIST_OPTIONS): Document them.
(PARSE_AND_LIST_ARGS_CASES): Handle them.
(LDEMUL_AFTER_OPEN): Define.
* scripttempl/elf.sc (PLT): Don't override existing define.
(DATA_GOT, SDATA_GOT): Define and use to enable alternate got
placement rather than using NO_SMALL_DATA. Emit GOTPLT for RELRO_NOW.
2005-05-11 14:10:10 +00:00
Alan Modra
8423293d34
bfd/
...
* section.c (struct bfd_section): Replace link_order_head and
link_order_tail with map_head and map_tail union.
(STD_SECTION): Update.
(_bfd_strip_section_from_output): Delete.
* aoutx.h: Update throughout for above changes.
* coff-ppc.c: Likewise.
* cofflink.c: Likewise.
* ecoff.c: Likewise.
* elf-eh-frame.c: Likewise.
* elf-m10300.c: Likewise.
* elf.c: Likewise.
* elf32-arm.c: Likewise.
* elf32-cris.c: Likewise.
* elf32-hppa.c: Likewise.
* elf32-i386.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-m68hc1x.c: Likewise.
* elf32-m68k.c: Likewise.
* elf32-ppc.c: Likewise.
* elf32-s390.c: Likewise.
* elf32-sh.c: Likewise.
* elf32-vax.c: Likewise.
* elf32-xtensa.c: Likewise.
* elf64-alpha.c: Likewise.
* elf64-hppa.c: Likewise.
* elf64-ppc.c: Likewise.
* elf64-s390.c: Likewise.
* elf64-sh64.c: Likewise.
* elf64-x86-64.c: Likewise.
* elflink.c: Likewise.
* elfxx-ia64.c: Likewise.
* elfxx-mips.c: Likewise.
* elfxx-sparc.c: Likewise.
* linker.c: Likewise.
* merge.c: Likewise.
* pdp11.c: Likewise.
* xcofflink.c: Likewise.
* elflink.c (bfd_boolean bfd_elf_size_dynsym_hash_dynstr): Split
out from bfd_elf_size_dynamic_sections.
* bfd-in.h (bfd_boolean bfd_elf_size_dynsym_hash_dynstr): Declare.
* bfd-in2.h: Regenerate.
ld/
* ldemul.c: Include bfdlink.h.
(ldemul_before_allocation): Assume before_allocation is non-zero.
(before_allocation_default): Call strip_excluded_output_sections.
* ldlang.c (stripped_excluded_sections): New variable.
(lang_add_section): Build input section list for each output
section, attached via map_head and map_tail pointers.
(strip_excluded_output_sections): Make global. Traverse the
input section lists to find which output sections can go. Clear
link_order pointers and set stripped_excluded_sections.
(lang_process): Call strip_excluded_output_sections.
* ldlang.h (strip_excluded_output_sections): Declare.
* ldwrite.c: Update throuhout for link_order_head -> map_head change.
* emultempl/aix.em (before_allocation): Call
strip_excluded_output_sections.
* emultempl/armcoff.em (before_allocation): Likewise.
* emultempl/beos.em (before_allocation): Likewise.
* emultempl/linux.em (before_allocation): Likewise.
* emultempl/pe.em (before_allocation): Likewise.
* emultempl/sunos.em (before_allocation): Likewise.
* emultempl/elf32.em (before_allocation): Likewise. Call
bfd_elf_size_dynsym_hash_dynstr too.
* emultempl/lnk960.em (lnk960_before_allocation): Delete.
(ld_lnk960): Use before_allocation_default.
2005-05-04 11:00:28 +00:00
H.J. Lu
5daa8fe797
bfd/
...
2005-05-02 H.J. Lu <hongjiu.lu@intel.com>
* bfd.c (bfd): Remove section_tail and add section_last.
(bfd_preserve): Likewise.
(bfd_preserve_save): Likewise.
(bfd_preserve_restore): Likewise.
* opncls.c (_bfd_new_bfd): Likewise.
* coffcode.h (coff_compute_section_file_positions): Updated.
(coff_compute_section_file_positions): Likewise.
* elf.c (assign_section_numbers): Likewise.
* elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
* elf64-mmix.c (mmix_elf_final_link): Likewise.
* elfxx-ia64.c (elfNN_ia64_object_p): Likewise.
* elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise.
* sunos.c (sunos_add_dynamic_symbols): Likewise.
* xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
* ecoff.c (bfd_debug_section): Initialize prev.
* section.c (bfd_section): Add prev.
(bfd_section_list_remove): Updated.
(bfd_section_list_append): New.
(bfd_section_list_insert_after): New.
(bfd_section_list_insert_before): New.
(bfd_section_list_insert): Removed.
(bfd_section_removed_from_list): Updated.
(STD_SECTION): Initialize prev.
(bfd_section_init): Updated.
(bfd_section_list_clear): Updated.
* bfd-in2.h: Regenerated.
gas/
2005-05-02 H.J. Lu <hongjiu.lu@intel.com>
* write.c (write_object_file): Use bfd_section_double_list_remove
to remove sections.
ld/
2005-05-02 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_strip_empty_section):
Updated for bfd_section_list_remove change.
* ldlang.c (lang_insert_orphan): Likewise.
(strip_excluded_output_sections): Likewise.
(sort_sections_by_lma): New.
(lang_check_section_addresses): Sort the sections before
checking addresses.
2005-05-03 01:05:03 +00:00
Ben Elliston
279e75dcef
* ldgram.y (lang_memory_region_type): Make static.
...
(ldgram_want_filename): Likewise.
* ldemul.c (ld_emulation): Make static.
* ldfile.h (ldfile_find_command_file): Remove extern.
* ldfile.c (ldfile_find_command_file): Make static.
* ldlang.h (unique_section_list): Remove extern declaration.
* ldlang.c (unique_section_list): Make static.
* mri.h (symbol_truncate): Remove extern declaration.
* mri.c (symbol_truncate): Make static.
(order, only_load, address, alias): Likewise.
(alignment, subalignment): Likewise.
2005-04-28 23:54:33 +00:00
Jakub Jelinek
7222318829
2005-04-06 Jakub Jelinek <jakub@redhat.com>
...
* ldlang.c: Formatting.
(walk_wild_consider_section): Remember return value from wildcardp.
(is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
(wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
2005-04-06 Robert O'Callahan <rocallahan@novell.com>
* ld.h (lean_section_userdata_type): Remove.
(fat_section_userdata_type): Remove file field.
(SECTION_USERDATA_SIZE): Remove.
* ldlang.c (init_os): Eliminate initialization of unused
lean_section_userdata_type.
* ldlang.h (callback_t, walk_wild_section_handler_t): New
typedefs.
(struct lang_wild_statement_struct): Add walk_wild_section_handler
and handler_data fields.
* ldlang.c (callback_t): Removed.
(walk_wild_consider_section, walk_wild_section_general,
section_iterator_callback, find_section, is_simple_wild,
match_simple_wild, walk_wild_section_specs1_wild0,
walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
wild_spec_can_overlap, analyze_walk_wild_section_handler): New
functions.
(lang_add_wild): Call analyze_walk_wild_section_handler.
(walk_wild_section): Renamed to walk_wild_section_general and
created a wrapper function.
(section_iterator_callback_data): New typedef.
2005-04-06 15:33:03 +00:00
Alan Modra
41c7ba7cc2
* ldlang.c (lang_insert_orphan): Use old section_tail rather than
...
traversing the bfd section list to find pointer to new section.
2005-03-18 13:56:26 +00:00
Bob Wilson
de7f8cc8e0
ld/ChangeLog:
...
* ldlang.c (IGNORE_SECTION): Remove check for zero size.
(lang_check_section_addresses): Ignore zero size sections here.
ld/testsuite/ChangeLog:
* ld-scripts/empty-orphan.d, ld-scripts/empty-orphan.exp,
ld-scripts/empty-orphan.s, ld-scripts/emtpy-orphan.t: New test.
2005-03-17 16:20:39 +00:00
H.J. Lu
57316bff0a
bfd/
...
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (elf_mark_used_section): New.
(bfd_elf_gc_sections): Call elf_gc_mark_section for
non-relocatable link if we don't do GC.
include/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* bfdlink.h (bfd_link_info): Add gc_sections.
ld/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_finish): Remove
unused empty output sections for non-relocatable link.
* ld.h (args_type): Remove gc_sections.
* ldlang.c (lang_mark_used_section): New.
(lang_gc_sections): Use link_info.gc_sections instead of
command_line.gc_sections.
* ldmain.c (main): Likewise.
* lexsup.c (parse_args): Likewise.
* ldlang.c (lang_process): Call lang_mark_used_section.
* ldmain.c (main): Initialize link_info.gc_sections to FALSE.
ld/testsuite/
2005-03-16 H.J. Lu <hongjiu.lu@intel.com>
* ld-alpha/tlsbin.rd: Updated for empty section removal.
* ld-alpha/tlsbinr.rd: Likewise.
* ld-alpha/tlspic.rd: Likewise.
* ld-arm/mixed-lib.sym: Likewise.
* ld-i386/tlsbin.rd: Likewise.
* ld-i386/tlsnopic.rd: Likewise.
* ld-i386/tlspic.rd: Likewise.
* ld-ia64/tlsbin.rd: Likewise.
* ld-ia64/tlspic.rd: Likewise.
* ld-powerpc/apuinfo.rd: Likewise.
* ld-powerpc/powerpc.exp: Likewise.
* ld-powerpc/tlsexe32.r: Likewise.
* ld-s390/tlsbin.rd: Likewise.
* ld-s390/tlsbin_64.rd: Likewise.
* ld-s390/tlspic.rd: Likewise.
* ld-s390/tlspic_64.rd: Likewise.
* ld-sh/tlsbin-2.d: Likewise.
* ld-sh/tlspic-2.d: Likewise.
* ld-sparc/tlssunbin32.rd: Likewise.
* ld-sparc/tlssunnopic32.rd: Likewise.
* ld-sparc/tlssunpic32.rd: Likewise.
* ld-x86-64/tlsbin.rd: Likewise.
* ld-x86-64/tlspic.rd: Likewise.
2005-03-16 21:52:48 +00:00
Daniel Jacobowitz
ace66bb2fb
* ldlang.c (section_already_linked): Don't call
...
bfd_section_already_linked for dynamic objects.
2005-02-22 18:35:32 +00:00
H.J. Lu
ebe372c1dd
bfd/
...
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* coffcode.h (sec_to_styp_flags): Replaced SEC_CLINK with
SEC_TIC54X_CLINK. Replace SEC_BLOCK with SEC_TIC54X_BLOCK.
Replace SEC_SHARED with SEC_COFF_SHARED.
(styp_to_sec_flags): Likewise.
* elfxx-target.h (TARGET_BIG_SYM): Remove SEC_ARCH_BIT_0.
(TARGET_LITTLE_SYM): Likewise.
* section.c (SEC_ARCH_BIT_0): Removed.
(SEC_LINK_DUPLICATES_SAME_CONTENTS): Defined with
SEC_LINK_DUPLICATES_ONE_ONLY and SEC_LINK_DUPLICATES_SAME_SIZE.
(SEC_SHARED): Renamed to ...
(SEC_COFF_SHARED): This.
(SEC_BLOCK): Renamed to ...
(SEC_TIC54X_BLOCK): This.
(SEC_CLINK): Renamed to ...
(SEC_TIC54X_CLINK): This.
(SEC_XXX): Rearranged. Move SEC_COFF_SHARED_LIBRARY,
SEC_COFF_SHARED, SEC_TIC54X_BLOCK and SEC_TIC54X_CLINK to the
end.
* bfd-in2.h: Regenerated.
binutils/
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* objcopy.c (parse_flags): Replace SEC_SHARED with
SEC_COFF_SHARED.
* objdump.c (dump_section_header): Dump SEC_TIC54X_BLOCK and
SEC_TIC54X_CLINK for TI c54x only. Remove SEC_ARCH_BIT_0. Dump
SEC_COFF_SHARED for COFF only.
gas/
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* config/obj-coff.c (obj_coff_section): Replace SEC_SHARED with
SEC_COFF_SHARED.
* config/tc-tic54x.c (tic54x_bss): Replace SEC_BLOCK with
SEC_TIC54X_BLOCK.
(demand_empty_rest_of_line): Likewise.
(tic54x_sblock): Likewise.
(tic54x_clink): Replace with SEC_CLINK with SEC_TIC54X_CLINK.
ld/
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* ldlang.c (lang_add_section): Check SEC_TIC54X_BLOCK for TI
tic54x input only.
(lang_size_sections_1): Check SEC_COFF_SHARED_LIBRARY for COFF
and ECOFF output only.
2005-02-22 00:50:07 +00:00
Ben Elliston
7a64f7b8d6
* ldlang.c (lang_reasonable_defaults): Remove.
...
(lang_process): Don't call lang_reasonable_defaults.
* ldexp.c (exp_assop): Remove #if 0'd code.
(exp_print_tree): Likewise.
* ldlang.c (lang_memory_region_lookup): Likewise.
(open_output): Likewise.
(lang_do_assignments_1): Likewise.
(lang_place_orphans): Likewise.
(lang_enter_output_section_statement): Likewise.
(lang_reasonable_defaults): Likewise.
* ldlang.h (struct lang_input_statement_struct): Likewise.
* mri.c (mri_draw_tree): Likewise.
(mri_load): Likewise.
* pe-dll.c (generate_reloc): Likewise.
(make_import_fixup_entry): Likewise.
(pe_as16): Likewise.
* emultempl/beos.em (set_pe_subsystem): Likewise.
* emultempl/hppaelf.em (hppaelf_after_parse): Likewise.
* emultempl/pe.em: Likewise.
* emultempl/xtensaelf.em (xtensa_colocate_literals): Likewise.
2005-01-21 04:15:59 +00:00
Alan Modra
1449d79bae
bfd/
...
* bfd.c (bfd_link_just_syms): Add abfd param.
* bfd-in2.h: Regenerate.
ld/
* ldlang.c (section_already_linked): Adjust bfd_link_just_syms call.
(lang_place_orphans): Don't abort on just_syms_flag, instead call
bfd_link_just_syms.
2005-01-18 08:51:54 +00:00
Jakub Jelinek
e3070fef41
* ldexp.h (exp_data_seg): Add min_base and maxpagesize fields.
...
* ldexp.c (fold_binary) <case DATA_SEGMENT_ALIGN>: Initialize them.
* ldlang.c (lang_size_sections): Use them to avoid wasting virtual
address space at DATA_SEGMENT_ALIGN. Fix computation of expected
PT_GNU_RELRO segment end.
2004-12-17 15:50:02 +00:00
Mark Mitchell
ba916c8af2
* Makefile.in (earmsymbian.c): Depend on armbpabi.sc, not elf.sc.
...
* ldexp.h (segment_type): New type.
(segments): New variable.
* ldexp.c (segments): New variable.
(exp_print_token): Handle SEGMENT_START.
(fold_binary): Likewise.
* ldgram.y (SEGMENT_START): Declare it as a token.
(exp): Handle SEGMENT_START.
* ldlang.h (lang_address_statement_type): Add segment field.
(lang_section_start): Change prototype.
* ldlang.c (map_input_to_output_sections): Do not process section
assignments if a corresponding SEGMENT_START has already been
seen.
(lang_section_start): Add segment parameter.
* ldlex.l (SEGMENT_START): Add it.
* lexsup.c (seg_segment_start): New function.
(parse_args): Use it for -Tbss, -Tdata, and -Ttext.
* ld.texinfo (SEGMENT_START): Document it.
* emulparams/armsymbian.sh (EMBEDDED): Set it.
* scripttempl/armbpabi.sc: Use SEGMENT_START to control segment
base addresses. Do not map relocations.
* NEWS: Mention SEGMENT_START.
2004-10-26 18:41:52 +00:00
H.J. Lu
532345f2da
2004-10-19 H.J. Lu <hongjiu.lu@intel.com>
...
PR 459
* ldlang.c (load_symbols): Use the same -Bdynamic/-Bstatic
option on linker script as the one for linker script.
2004-10-19 15:44:58 +00:00
Daniel Jacobowitz
b58f81aef6
bfd/
...
* bfd-in2.h: Regenerate.
* bfd.c (struct bfd): Add no_export.
* elflink.c (elf_link_add_object_symbols): Handle no_export.
ld/
* ldlang.c (struct excluded_lib, excluded_libs, add_excluded_libs)
(check_excluded_libs): New.
(load_symbols): Call check_excluded_libs.
* ldlang.h (add_excluded_libs): New prototype.
* emultempl/elf32.em (OPTION_EXCLUDED_LIBS): Define.
(gld${EMULATION_NAME}_add_options): Add --exclude-libs.
(gld${EMULATION_NAME}_handle_option): Handle --exclude-libs.
* ld.texinfo (Command Line Variables): Document --exclude-libs.
(Options Specific to i386 PE Targets): Remove --exclude-libs.
ld/testsuite/
* ld-elf/exclude1.s, ld-elf/exclude2.s, ld-elf/exclude.exp: New.
2004-10-16 18:13:54 +00:00
Alan Modra
afd7a018c9
ld/
...
PR 63
* ldlang.h (lang_output_section_statement_type): Make "next" a
struct lang_output_section_statement_struct *.
(struct orphan_save): Move from elf32.em. Add "name" and "flags".
(lang_output_section_find_by_flags, lang_insert_orphan): Declare.
* ldlang.c (lang_output_section_find_1): Adjust for changed
output_section_statement "next".
(strip_excluded_output_sections): Likewise.
(lang_record_phdrs): Likewise.
(lang_output_section_find_by_flags): New function.
(output_prev_sec_find): Move from pe.em. Adjust iterator.
(lang_insert_orphan): New function. Tail end of elf32.em's
place_orphan merged with that from pe.em. Allow bfd_section to
be placed first. New heuristic for placing new output section
statement in existing script, and accompanying split of __start
symbol alignment into a separate assignment to dot.
(lang_add_section): Consistently use output->bfd_section rather than
an alias, section->output_section.
(map_input_to_output_sections): Rename overly long arg. Move
initialization of data_statement output section to here..
(lang_check_section_addresses): ..from here.
(print_assignment): Correct printing of etree_assert.
(print_all_symbols): Don't bomb if userdata is NULL.
(IGNORE_SECTION): Rearrange.
* emultempl/elf32.em (output_rel_find): Adjust interator.
(output_prev_sec_find): Delete.
(struct orphan_save): Delete.
(gld${EMULATION_NAME}_place_orphan): Cater for zero bfd_section
flags without creating a duplicate output section statement.
Revise code holding history of various orphan section placements.
Allow orphan sections to place before script specified output
sections. Call lang_output_section_find_by_flags when placement
by name fails. Use lang_insert_orphan.
* emultempl/mmo.em (output_prev_sec_find): Delete.
(struct orphan_save): Delete.
(mmo_place_orphan): Revise code holding history of orphan placement.
Allow orphans to place before existing output sections. Use
lang_insert_orphan.
* emultempl/pe.em (output_prev_sec_find): Delete.
(struct orphan_save): Delete.
(gld_${EMULATION_NAME}_place_orphan): Revise to suit use of
lang_insert_orphan.
ld/testsuite/
* ld-scripts/overlay-size.d: Update for changed orphan section
placement.
* ld-mmix/bpo-18.d: Likewise.
2004-10-14 12:54:47 +00:00
H.J. Lu
bcaa7b3eb9
ld/
...
2004-10-04 H.J. Lu <hongjiu.lu@intel.com>
* NEWS: Mention SORT_BY_NAME, SORT_BY_ALIGNMENT and
--sort-section name|alignment.
* ld.texinfo: Document SORT_BY_NAME, SORT_BY_ALIGNMENT and
--sort-section name|alignment.
* ld.h (sort_type): New enum.
(wildcard_spec): Change the type of `sorted' to sort_type.
* ldgram.y (SORT): Removed.
(SORT_BY_NAME): Added.
(SORT_BY_ALIGNMENT): Added.
(wildcard_spec): Updated `sorted'. Handle SORT_BY_NAME and
SORT_BY_ALIGNMENT.
(input_section_spec_no_keep): Updated `sorted'.
(statement): Replace SORT with SORT_BY_NAME.
* ldlang.c (compare_section): New function to compare 2
sections with different sorting schemes.
(wild_sort): Updated. Use compare_section.
(update_wild_statements): New function.
(lang_process): Call update_wild_statements before
map_input_to_output_sections.
* ldlex.l (SORT_BY_NAME): New.
(SORT_BY_ALIGNMENT): New.
(SORT): Return SORT_BY_NAME.
* ldmain.c (sort_section): New. Defined.
(main): Initialize it to none.
* lexsup.c (option_values): Add OPTION_SORT_SECTION.
(ld_options): Add an entry for OPTION_SORT_SECTION.
(parse_args): Handle OPTION_SORT_SECTION.
* mri.c (mri_draw_tree): Updated `sorted'.
ld/testsuite/
2004-10-04 H.J. Lu <hongjiu.lu@intel.com>
* ld-scripts/sort.exp: New file for section sorting tests.
* ld-scripts/sort_b_a.d: Likewise
* ld-scripts/sort_b_a.s: Likewise
* ld-scripts/sort_b_a.t: Likewise
* ld-scripts/sort_b_a_a-1.d: Likewise
* ld-scripts/sort_b_a_a-2.d: Likewise
* ld-scripts/sort_b_a_a-3.d: Likewise
* ld-scripts/sort_b_a_a.t: Likewise
* ld-scripts/sort_b_a_n-1.d: Likewise
* ld-scripts/sort_b_a_n-2.d: Likewise
* ld-scripts/sort_b_a_n-3.d: Likewise
* ld-scripts/sort_b_a_n.t: Likewise
* ld-scripts/sort_b_n.d: Likewise
* ld-scripts/sort_b_n.s: Likewise
* ld-scripts/sort_b_n.t: Likewise
* ld-scripts/sort_b_n_a-1.d: Likewise
* ld-scripts/sort_b_n_a-2.d: Likewise
* ld-scripts/sort_b_n_a-3.d: Likewise
* ld-scripts/sort_b_n_a.t: Likewise
* ld-scripts/sort_b_n_n-1.d: Likewise
* ld-scripts/sort_b_n_n-2.d: Likewise
* ld-scripts/sort_b_n_n-3.d: Likewise
* ld-scripts/sort_b_n_n.t: Likewise
* ld-scripts/sort_n_a-a.s: Likewise
* ld-scripts/sort_n_a-b.s: Likewise
* ld-scripts/sort_no-1.d: Likewise
* ld-scripts/sort_no-2.d: Likewise
* ld-scripts/sort_no.t: Likewise
2004-10-04 16:45:51 +00:00
Jakub Jelinek
a4f5ad884e
* ldgram.y (DATA_SEGMENT_RELRO_END): Add one argument.
...
* scripttempl/elf.sc (DATA_SEGMENT_RELRO_END): Add 0 as first
argument.
(DATA_SEGMENT_RELRO_GOTPLT_END): Pass $SEPARATE_GOTPLT as first
and . as second argument.
(GOTPLT): Move $DATA_SEGMENT_RELRO_GOTPLT_END before the section.
* ldexp.c (fold_unary): Remove DATA_SEGMENT_RELRO_END handling here.
(fold_binary): Add it here. Insert padding to make relro_end
COMMONPAGESIZE bytes aligned. For DATA_SEGMENT_ALIGN in
exp_dataseg_relro_adjust phase just use previously computed
exp_data_seg.base.
* ldlang.c (lang_size_sections): Set exp_data_seg.base for
relro_adjust here. Call lang_size_sections_1 once more if there
was too big padding at DATA_SEGMENT_RELRO_END.
* ld.texinfo (DATA_SEGMENT_RELRO_END): Add documentation.
2004-10-04 13:41:15 +00:00
Alan Modra
688c58f359
bfd/
...
* elf32-m32r.c (m32r_elf_relocate_section): Don't compare with
TRUE or FALSE.
ld/
* ldlang.c (lang_init): Don't compare with TRUE.
2004-08-25 23:40:56 +00:00
H.J. Lu
61f5d0545d
2004-08-24 H.J. Lu <hongjiu.lu@intel.com>
...
* ldlang.c (wildcardp): Defined as a macro with strpbrk.
2004-08-25 06:11:43 +00:00
Nick Clifton
9f61903d73
(_place_orphan): Use an already existing section name if that section does not
...
have any flags set.
2004-07-23 16:32:53 +00:00
H.J. Lu
082b729701
bfd/
...
2004-07-21 H.J. Lu <hongjiu.lu@intel.com>
* aout-adobe.c (aout_32_section_already_linked): Defined.
* aout-target.h (MY_section_already_linked): Likewise.
* aout-tic30.c (MY_section_already_linked): Likewise.
* binary.c (binary_section_already_linked): Likewise.
* bout.c (b_out_section_already_linked): Likewise.
* coff-alpha.c (_bfd_ecoff_section_already_linked): Likewise.
* coff-mips.c (_bfd_ecoff_section_already_linked): Likewise.
* coffcode.h (coff_section_already_linked): Likewise.
* i386msdos.c (msdos_section_already_linked): Likewise.
* i386os9k.c (os9k_section_already_linked): Likewise.
* ieee.c (ieee_section_already_linked): Likewise.
* ihex.c (ihex_section_already_linked): Likewise.
* mach-o.c (bfd_mach_o_section_already_linked): Likewise.
* mmo.c (mmo_section_already_linked): Likewise.
* nlm-target.h (nlm_section_already_linked): Likewise.
* oasys.c (oasys_section_already_linked): Likewise.
* pef.c (bfd_pef_section_already_linked): Likewise.
* ppcboot.c (ppcboot_section_already_linked): Likewise.
* som.c (som_bfd_discard_group): Likewise.
* srec.c (srec_section_already_linked): Likewise.
* tekhex.c (tekhex_section_already_linked): Likewise.
* versados.c (versados_section_already_linked): Likewise.
* vms.c (vms_section_already_linked): Likewise.
* coff-target.h (_bfd_xcoff_section_already_linked): Likewise.
* xsym.c (bfd_sym_section_already_linked): Likewise.
* bfd-in.h (bfd_section_already_linked_table_init): New.
(bfd_section_already_linked_table_free): Likewise.
* coff-rs6000.c (rs6000coff_vec): Add
_bfd_generic_section_already_linked.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c (rs6000coff64_vec): Likewise.
(aix5coff64_vec): Likewise.
* elf-bfd.h (_bfd_elf_section_already_linked): New prototype.
* elflink.c (_bfd_elf_section_already_linked): New function.
* elfxx-target.h (bfd_elfNN_section_already_linked): Defined.
* libbfd-in.h (_bfd_nolink_section_already_linked): Defined.
(_bfd_generic_section_already_linked): New.
(bfd_section_already_linked_hash_entry): Likewise.
(bfd_section_already_linked): Likewise.
(bfd_section_already_linked_table_lookup): Likewise.
(bfd_section_already_linked_table_insert): Likewise.
* linker.c (bfd_section_already_linked): New.
(_bfd_section_already_linked_table): Likewise.
(bfd_section_already_linked_table_lookup): Likewise.
(bfd_section_already_linked_table_insert): Likewise.
(already_linked_newfunc): Likewise.
(bfd_section_already_linked_table_init): Likewise.
(bfd_section_already_linked_table_free): Likewise.
(_bfd_generic_section_already_linked): Likewise.
* section.c (bfd_section): Remove comdat.
(bfd_comdat_info): Moved to ...
* bfd-in.h (coff_comdat_info): Here.
(bfd_coff_get_comdat_section): New.
* coffgen.c (bfd_coff_get_comdat_section): Likewise.
* libcoff-in.h (coff_section_tdata): Add comdat.
* coffcode.h (handle_COMDAT): Updated.
* cofflink.c (coff_link_add_symbols): Likewise.
* ecoff.c (bfd_debug_section): Likewise.
* targets.c (bfd_target): Add _section_already_linked.
(BFD_JUMP_TABLE_LINK): Updated.
* bfd-in2.h: Regenerated.
* libbfd.h: Likewise.
* libcoff.h: Likewise.
binutils/
2004-07-21 H.J. Lu <hongjiu.lu@intel.com>
* objcopy.c (filter_symbols): Use bfd_coff_get_comdat_section
to access comdat.
* objdump.c (dump_section_header): Likewise.
ld/
2004-07-21 H.J. Lu <hongjiu.lu@intel.com>
* ldlang.c (already_linked_hash_entry): Removed.
(already_linked): Likewise.
(already_linked_table): Likewise.
(section_already_linked): Call bfd_section_already_linked.
(lang_process): Replace already_linked_table_init with
bfd_section_already_linked_table_init and check return. Replace
already_linked_table_free with bfd_section_already_linked_table_free.
2004-07-21 15:42:58 +00:00
Nick Clifton
76d7af2d04
(init_os): Make sure that the newly allocated userdata structure is zeroed out.
2004-07-21 15:05:46 +00:00
H.J. Lu
e56f61be75
bfd/
...
2004-07-19 H.J. Lu <hongjiu.lu@intel.com>
* bfd-in.h (dynamic_lib_link_class): Add DYN_NO_ADD_NEEDED and
DYN_NO_NEEDED.
(bfd_elf_get_dyn_lib_class): New prototype.
* elf.c (bfd_elf_get_dyn_lib_class): New function.
* elflink.c (elf_link_add_object_symbols): Check DYN_AS_NEEDED,
DYN_DT_NEEDED and DYN_NO_NEEDED bits to see if a DT_NEEDED
entry is needed. Issue an error if a DT_NEEDED entry is needed
for a file marked DYN_NO_NEEDED.
(elf_link_check_versioned_symbol): Check the DYN_DT_NEEDED bit
for DT_NEEDED tags.
* bfd-in2.h: Regenerated.
ld/
2004-07-19 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_load_symbols): Also
check the add_needed field.
(dt_needed): New struct.
(gld${EMULATION_NAME}_try_needed): Change the first argument
to a pointer to struct dt_needed. Check the DYN_NO_ADD_NEEDED
bit in the file where the DT_NEEDED entry comes from.
(gld${EMULATION_NAME}_search_needed): Change the second
argument to a pointer to struct dt_needed.
(gld${EMULATION_NAME}_check_ld_so_conf): Updated.
(gld${EMULATION_NAME}_after_open): Likewise.
* ld.texinfo: Add --add-needed document.
* ldlang.c (new_afile): Set p->add_needed.
* ldlang.h (lang_input_statement_type): Add add_needed field.
* ldmain.h (add_needed): Declare.
* ldmain.c (add_needed): New global var.
* lexsup.c (option_values): Add OPTION_ADD_NEEDED and
OPTION_NO_ADD_NEEDED.
(ld_options): Likewise.
(parse_args): Handle them.
2004-07-19 16:40:52 +00:00
Alan Modra
1a23a9e613
bfd/
...
* elf64-mmix.c (mmix_set_relaxable_size): Save original size in
rawsize.
(mmix_elf_perform_relocation): Adjust for above change.
(mmix_elf_relocate_section): Likewise.
(mmix_elf_relax_section): Likewise. Use output_section->rawsize.
(mmix_elf_get_section_contents): Delete.
(bfd_elf64_get_section_contents): Delete.
(mmix_elf_relocate_section): Zero stub area.
* linker.c (default_indirect_link_order): Alloc max of section size
and rawsize.
* simple.c (bfd_simple_get_relocated_section_contents): Likewise.
* section.c (bfd_malloc_and_get_section): Likewise.
(struct bfd_section): Update rawsize comment.
* bfd-in2.h: Regenerate.
ld/
* ldlang.c (lang_reset_memory_regions): Save last relax pass section
size in rawsize.
2004-06-29 14:13:47 +00:00
Alan Modra
eea6121ac0
bfd/
...
* section.c (struct sec): Rename "_cooked_size" to "size".
Rename "_raw_size" to "rawsize".
(STD_SECTION): Adjust comments.
(bfd_set_section_size, bfd_get_section_contents): Use size.
(bfd_malloc_and_get_section): New function.
* bfd-in.h (bfd_section_size, bfd_get_section_size): Use size.
* coff-sh.c (sh_relax_section): Alloc coff_section_data struct early.
Correctly free reloc and contents memory.
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Delete FIXME
and fake CIE now that we can shink section size to zero.
(_bfd_elf_write_section_eh_frame): Likewise..
* elf32-ppc.c (ppc_elf_relax_section): Delay reading section contents.
* elf-m10300.c (mn10300_elf_final_link_relocate): Don't use
_bfd_stab_section_offset. Use _bfd_elf_section_offset.
* stabs.c (_bfd_stab_section_offset_): Remove unused args and
unneeded indirection.
* elf.c (_bfd_elf_section_offset): .. and update call.
* libbfd-in.h (_bfd_stab_section_offset): Update prototype.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
Replace occurrences of "_raw_size" and "_cooked_size" in most places
with "size". Set new "rawsize" for stabs, eh_frame, and SEC_MERGE
sections. Use "rawsize", if non-zero, for bfd_get_section_contents
calls if the section might be a stabs, eh_frame, or SEC_MERGE section.
Similarly use "rawsize", if non-zero, in reloc functions to validate
reloc addresses. Use new bfd_malloc_and_get_section in most places
where bfd_get_section_contents was called. Expand all occurrences of
bfd_section_size and bfd_get_section_size. Rename "raw_size" var in
grok_prstatus and similar functions to "size".
* aix386-core.c (aix386_core_file_p): ..
* aix5ppc-core.c (xcoff64_core_p): ..
* aout-adobe.c (aout_adobe_callback, aout_adobe_write_object_contents,
aout_adobe_set_section_contents): ..
* aout-target.h (callback): ..
* aout-tic30.c (tic30_aout_callback, tic30_aout_final_link_relocate,
MY_bfd_final_link): ..
* aoutf1.h (sunos4_core_file_p): ..
* aoutx.h (some_aout_object_p, adjust_o_magic, adjust_z_magic,
adjust_n_magic, adjust_sizes_and_vmas, translate_from_native_sym_flags,
final_link, aout_link_input_section): ..
* binary.c (binary_object_p, binary_canonicalize_symtab,
binary_set_section_contents): ..
* bout.c (b_out_callback, b_out_write_object_contents,
b_out_set_section_contents, b_out_bfd_relax_section,
b_out_bfd_get_relocated_section_contents): ..
* cisco-core.c (cisco_core_file_validate): ..
* coff-alpha.c (alpha_ecoff_object_p,
alpha_ecoff_get_relocated_section_conten, alpha_relocate_section): ..
* coff-arm.c (coff_arm_relocate_section,
bfd_arm_allocate_interworking_sections): ..
* coff-h8300.c (h8300_reloc16_extra_cases,
h8300_bfd_link_add_symbols): ..
* coff-mips.c (mips_refhi_reloc, mips_gprel_reloc): ..
* coff-ppc.c (coff_ppc_relocate_section, ppc_allocate_toc_section,
ppc_bfd_coff_final_link): ..
* coff-rs6000.c (xcoff_reloc_type_br, xcoff_ppc_relocate_section): ..
* coff-sh.c (sh_relax_section, sh_relax_delete_bytes,
sh_align_loads, sh_coff_get_relocated_section_contents): ..
* coff64-rs6000.c (xcoff64_write_object_contents,
xcoff64_reloc_type_br, xcoff64_ppc_relocate_section): ..
* coffcode.h (coff_compute_section_file_positions,
coff_write_object_contents): ..
* coffgen.c (make_a_section_from_file, coff_write_symbols,
coff_section_symbol, build_debug_section): ..
* cofflink.c (coff_link_add_symbols, _bfd_coff_final_link,
process_embedded_commands, _bfd_coff_link_input_bfd,
_bfd_coff_write_global_sym): ..
* cpu-arm.c (bfd_arm_update_notes, bfd_arm_get_mach_from_notes): ..
* cpu-ns32k.c (do_ns32k_reloc, _bfd_ns32k_final_link_relocate): ..
* dwarf1.c (parse_line_table, _bfd_dwarf1_find_nearest_line): ..
* dwarf2.c (read_indirect_string, read_abbrevs, decode_line_info,
_bfd_dwarf2_find_nearest_line): ..
* ecoff.c (bfd_debug_section, ecoff_set_symbol_info,
ecoff_compute_section_file_positions,
_bfd_ecoff_write_object_contents, ecoff_indirect_link_order): ..
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame,
_bfd_elf_discard_section_eh_frame_hdr,
_bfd_elf_maybe_strip_eh_frame_hdr, _bfd_elf_eh_frame_section_offset,
_bfd_elf_write_section_eh_frame,
_bfd_elf_write_section_eh_frame_hdr): ..
* elf-hppa.h (elf_hppa_sort_unwind): ..
* elf-m10200.c (mn10200_elf_relax_section,
mn10200_elf_relax_delete_bytes,
mn10200_elf_get_relocated_section_contents): ..
* elf-m10300.c (_bfd_mn10300_elf_create_got_section,
mn10300_elf_check_relocs, mn10300_elf_relax_section,
mn10300_elf_relax_delete_bytes,
mn10300_elf_get_relocated_section_contents,
_bfd_mn10300_elf_adjust_dynamic_symbol,
_bfd_mn10300_elf_discard_copies,
_bfd_mn10300_elf_size_dynamic_sections,
_bfd_mn10300_elf_finish_dynamic_sections): ..
* elf.c (_bfd_elf_print_private_bfd_data, bfd_elf_get_bfd_needed_list,
_bfd_elf_make_section_from_phdr, elf_fake_sections,
bfd_elf_set_group_contents, map_sections_to_segments,
elf_sort_sections, assign_file_positions_for_segments,
SECTION_SIZE, copy_private_bfd_data,
_bfd_elf_get_dynamic_reloc_upper_bound,
_bfd_elf_canonicalize_dynamic_reloc, elfcore_maybe_make_sect,
_bfd_elfcore_make_pseudosection, elfcore_grok_prstatus,
elfcore_grok_lwpstatus, elfcore_grok_win32pstatus,
elfcore_grok_note, elfcore_grok_nto_status, elfcore_grok_nto_gregs,
_bfd_elf_rel_local_sym, _bfd_elf_get_synthetic_symtab): ..
* elf32-arm.h (bfd_elf32_arm_allocate_interworking_sect,
bfd_elf32_arm_process_before_allocation,
elf32_arm_adjust_dynamic_symbol, allocate_dynrelocs,
elf32_arm_size_dynamic_sections, elf32_arm_finish_dynamic_sections,
elf32_arm_write_section): ..
* elf32-cris.c (cris_elf_grok_prstatus,
elf_cris_finish_dynamic_sections, cris_elf_gc_sweep_hook,
elf_cris_adjust_gotplt_to_got, elf_cris_adjust_dynamic_symbol,
cris_elf_check_relocs, elf_cris_size_dynamic_sections,
elf_cris_discard_excess_dso_dynamics,
elf_cris_discard_excess_program_dynamics): ..
* elf32-d30v.c (bfd_elf_d30v_reloc, bfd_elf_d30v_reloc_21): ..
* elf32-dlx.c (_bfd_dlx_elf_hi16_reloc): ..
* elf32-frv.c (_frvfdpic_add_dyn_reloc, _frvfdpic_add_rofixup,
_frv_create_got_section, _frvfdpic_assign_plt_entries,
elf32_frvfdpic_size_dynamic_sections,
elf32_frvfdpic_modify_segment_map,
elf32_frvfdpic_finish_dynamic_sections): ..
* elf32-h8300.c (elf32_h8_relax_section, elf32_h8_relax_delete_bytes,
elf32_h8_get_relocated_section_contents): ..
* elf32-hppa.c (hppa_build_one_stub, hppa_size_one_stub,
elf32_hppa_adjust_dynamic_symbol, allocate_plt_static,
allocate_dynrelocs, elf32_hppa_size_dynamic_sections, group_sections,
elf32_hppa_size_stubs, elf32_hppa_set_gp, elf32_hppa_build_stubs,
elf32_hppa_finish_dynamic_sections): ..
* elf32-i370.c (i370_elf_adjust_dynamic_symbol,
i370_elf_size_dynamic_sections, i370_elf_check_relocs,
i370_elf_finish_dynamic_sections): ..
* elf32-i386.c (elf_i386_grok_prstatus, elf_i386_adjust_dynamic_symbol,
allocate_dynrelocs, elf_i386_size_dynamic_sections,
elf_i386_relocate_section, elf_i386_finish_dynamic_sections): ..
* elf32-i860.c (i860_howto_pc26_reloc, i860_howto_pc16_reloc,
i860_howto_highadj_reloc, i860_howto_splitn_reloc): ..
* elf32-ip2k.c (ip2k_is_switch_table_128,
ip2k_relax_switch_table_128, ip2k_is_switch_table_256,
ip2k_relax_switch_table_256, ip2k_elf_relax_section,
adjust_all_relocations, ip2k_elf_relax_delete_bytes): ..
* elf32-m32r.c (m32r_elf_do_10_pcrel_reloc, m32r_elf_hi16_reloc,
m32r_elf_generic_reloc, m32r_elf_adjust_dynamic_symbol,
allocate_dynrelocs, m32r_elf_size_dynamic_sections,
m32r_elf_relocate_section, m32r_elf_finish_dynamic_sections,
m32r_elf_relax_section, m32r_elf_relax_delete_bytes,
m32r_elf_get_relocated_section_contents): ..
* elf32-m68hc11.c (m68hc11_elf_build_one_stub,
m68hc11_elf_size_one_stub, m68hc11_elf_relax_section,
m68hc11_elf_relax_delete_bytes): ..
* elf32-m68hc12.c (m68hc12_elf_build_one_stub,
m68hc12_elf_size_one_stub): ..
* elf32-m68hc1x.c (elf32_m68hc11_size_stubs,
elf32_m68hc11_build_stubs, m68hc11_elf_special_reloc): ..
* elf32-m68k.c (elf_m68k_check_relocs, elf_m68k_gc_sweep_hook,
elf_m68k_adjust_dynamic_symbol, elf_m68k_size_dynamic_sections,
elf_m68k_discard_copies, elf_m68k_finish_dynamic_sections): ..
* elf32-mips.c (gprel32_with_gp, mips16_gprel_reloc,
elf32_mips_grok_prstatus): ..
* elf32-or32.c (or32_elf_consth_reloc): ..
* elf32-ppc.c (ppc_elf_relax_section, ppc_elf_addr16_ha_reloc,
elf_create_pointer_linker_section, ppc_elf_create_linker_section,
ppc_elf_additional_program_headers, ppc_elf_adjust_dynamic_symbol,
allocate_dynrelocs, ppc_elf_size_dynamic_sections,
ppc_elf_finish_dynamic_sections, ppc_elf_grok_prstatus,
ppc_elf_final_write_processing): ..
* elf32-s390.c (s390_elf_ldisp_reloc, elf_s390_adjust_dynamic_symbol,
allocate_dynrelocs, elf_s390_size_dynamic_sections,
elf_s390_finish_dynamic_sections, elf_s390_grok_prstatus): ..
* elf32-sh.c (sh_elf_reloc_loop, sh_elf_relax_section,
sh_elf_relax_delete_bytes, sh_elf_align_loads,
sh_elf_adjust_dynamic_symbol, allocate_dynrelocs,
sh_elf_size_dynamic_sections, sh_elf_get_relocated_section_contents,
sh_elf_finish_dynamic_sections, elf32_shlin_grok_prstatus): ..
* elf32-sh64-com.c (sh64_address_in_cranges,
sh64_get_contents_type): ..
* elf32-sh64.c (sh64_find_section_for_address,
sh64_elf_final_write_processing): ..
* elf32-sparc.c (sparc_elf_wdisp16_reloc, sparc_elf_hix22_reloc,
sparc_elf_lox10_reloc, elf32_sparc_adjust_dynamic_symbol,
allocate_dynrelocs, elf32_sparc_size_dynamic_sections,
elf32_sparc_relocate_section, elf32_sparc_finish_dynamic_sections): ..
* elf32-v850.c (v850_elf_reloc, v850_elf_relax_section): ..
* elf32-vax.c (elf_vax_check_relocs, elf_vax_adjust_dynamic_symbol,
elf_vax_size_dynamic_sections, elf_vax_discard_copies,
elf_vax_instantiate_got_entries, elf_vax_relocate_section,
elf_vax_finish_dynamic_sections): ..
* elf32-xstormy16.c (xstormy16_elf_24_reloc,
xstormy16_elf_check_relocs, xstormy16_relax_plt_check,
xstormy16_elf_relax_section, xstormy16_elf_always_size_sections,
xstormy16_elf_finish_dynamic_sections): ..
* elf32-xtensa.c (xtensa_read_table_entries,
elf_xtensa_allocate_got_size, elf_xtensa_allocate_local_got_size,
elf_xtensa_size_dynamic_sections, elf_xtensa_do_reloc,
bfd_elf_xtensa_reloc, elf_xtensa_relocate_section,
elf_xtensa_combine_prop_entries, elf_xtensa_finish_dynamic_sections,
elf_xtensa_discard_info_for_section, elf_xtensa_grok_prstatus,
get_relocation_opcode, retrieve_contents, find_relaxable_sections,
collect_source_relocs, is_resolvable_asm_expansion, remove_literals,
relax_section, shrink_dynamic_reloc_sections, relax_property_section,
xtensa_callback_required_dependence): ..
* elf64-alpha.c (elf64_alpha_reloc_gpdisp, elf64_alpha_relax_section,
elf64_alpha_check_relocs, elf64_alpha_adjust_dynamic_symbol,
elf64_alpha_calc_got_offsets_for_symbol, elf64_alpha_calc_got_offsets,
elf64_alpha_size_plt_section, elf64_alpha_size_plt_section_1,
elf64_alpha_always_size_sections, elf64_alpha_calc_dynrel_sizes,
elf64_alpha_size_rela_got_section, elf64_alpha_size_rela_got_1,
elf64_alpha_size_dynamic_sections, elf64_alpha_emit_dynrel,
elf64_alpha_finish_dynamic_sections, elf64_alpha_final_link): ..
* elf64-hppa.c (allocate_dynrel_entries,
elf64_hppa_size_dynamic_sections,
elf64_hppa_finish_dynamic_sections): ..
* elf64-mips.c (mips_elf64_gprel32_reloc, mips16_gprel_reloc,
mips_elf64_canonicalize_dynamic_reloc, mips_elf64_slurp_reloc_table,
elf64_mips_grok_prstatus): ..
* elf64-mmix.c (mmix_elf_perform_relocation, mmix_elf_reloc,
mmix_elf_relocate_section, mmix_elf_final_link,
mmix_set_relaxable_size, _bfd_mmix_after_linker_allocation,
mmix_elf_relax_section, mmix_elf_get_section_contents): ..
* elf64-ppc.c (ppc64_elf_object_p, ppc64_elf_grok_prstatus,
ppc64_elf_check_relocs, ppc64_elf_func_desc_adjust,
ppc64_elf_adjust_dynamic_symbol, ppc64_elf_edit_opd,
allocate_dynrelocs, ppc64_elf_size_dynamic_sections,
ppc_build_one_stub, ppc_size_one_stub, ppc64_elf_next_toc_section,
toc_adjusting_stub_needed, group_sections, ppc64_elf_size_stubs,
ppc64_elf_build_stubs, ppc64_elf_relocate_section,
ppc64_elf_finish_dynamic_sections): ..
* elf64-s390.c (s390_elf_ldisp_reloc, elf_s390_adjust_dynamic_symbol,
allocate_dynrelocs, elf_s390_size_dynamic_sections,
elf_s390_finish_dynamic_sections): ..
* elf64-sh64.c (sh_elf64_get_relocated_section_contents,
sh_elf64_check_relocs, sh64_elf64_adjust_dynamic_symbol,
sh64_elf64_discard_copies, sh64_elf64_size_dynamic_sections,
sh64_elf64_finish_dynamic_sections): ..
* elf64-sparc.c (sparc64_elf_slurp_reloc_table, init_insn_reloc,
sparc64_elf_check_relocs, sparc64_elf_adjust_dynamic_symbol,
sparc64_elf_size_dynamic_sections, sparc64_elf_relocate_section,
sparc64_elf_finish_dynamic_symbol,
sparc64_elf_finish_dynamic_sections): ..
* elf64-x86-64.c (elf64_x86_64_grok_prstatus,
elf64_x86_64_adjust_dynamic_symbol, allocate_dynrelocs,
elf64_x86_64_size_dynamic_sections, elf64_x86_64_relocate_section,
elf64_x86_64_finish_dynamic_sections): ..
* elfarm-nabi.c (elf32_arm_nabi_grok_prstatus): ..
* elfcode.h (elf_slurp_reloc_table): ..
* elflink.c (_bfd_elf_create_got_section, elf_add_dt_needed_tag,
elf_finalize_dynstr, elf_link_add_object_symbols,
bfd_elf_size_dynamic_sections, elf_link_sort_relocs,
elf_link_input_bfd, bfd_elf_final_link, bfd_elf_discard_info): ..
* elfn32-mips.c (gprel32_with_gp, mips16_gprel_reloc,
elf32_mips_grok_prstatus): ..
* elfxx-ia64.c (elfNN_ia64_relax_section, allocate_dynrel_entries,
elfNN_ia64_size_dynamic_sections, elfNN_ia64_install_dyn_reloc,
elfNN_ia64_choose_gp, elfNN_ia64_final_link,
elfNN_ia64_finish_dynamic_sections): ..
* elfxx-mips.c (mips_elf_create_procedure_table,
mips_elf_check_mips16_stubs, _bfd_mips_elf_gprel16_with_gp,
_bfd_mips_elf_hi16_reloc, _bfd_mips_elf_generic_reloc,
mips_elf_global_got_index, mips_elf_multi_got,
mips_elf_create_compact_rel_section, mips_elf_calculate_relocation,
mips_elf_allocate_dynamic_relocations,
mips_elf_create_dynamic_relocation, _bfd_mips_elf_fake_sections,
_bfd_mips_relax_section, _bfd_mips_elf_adjust_dynamic_symbol,
_bfd_mips_elf_always_size_sections,
_bfd_mips_elf_size_dynamic_sections,
_bfd_mips_elf_finish_dynamic_symbol,
_bfd_mips_elf_finish_dynamic_sections,
_bfd_mips_elf_modify_segment_map, _bfd_mips_elf_discard_info,
_bfd_mips_elf_write_section, _bfd_mips_elf_set_section_contents,
_bfd_elf_mips_get_relocated_section_contents,
_bfd_mips_elf_final_link, _bfd_mips_elf_merge_private_bfd_data): ..
* hp300hpux.c (callback): ..
* hppabsd-core.c (make_bfd_asection): ..
* hpux-core.c (make_bfd_asection): ..
* i386linux.c (linux_link_create_dynamic_sections,
bfd_i386linux_size_dynamic_sections, linux_finish_dynamic_link): ..
* i386msdos.c (msdos_write_object_contents): ..
* i386os9k.c (os9k_callback, os9k_write_object_contents,
os9k_set_section_contents): ..
* ieee.c (parse_expression, ieee_slurp_external_symbols,
ieee_slurp_sections, ieee_slurp_debug, ieee_slurp_section_data,
ieee_write_section_part, do_with_relocs, do_as_repeat,
do_without_relocs, ieee_write_debug_part, init_for_output,
ieee_set_section_contents): ..
* ihex.c (ihex_scan, ihex_read_section, ihex_get_section_contents): ..
* irix-core.c (do_sections, make_bfd_asection): ..
* libaout.h (aout_section_merge_with_text_p): ..
* libbfd.c (_bfd_generic_get_section_contents,
_bfd_generic_get_section_contents_in_window): ..
* linker.c (default_indirect_link_order): ..
* lynx-core.c (make_bfd_asection): ..
* m68klinux.c (linux_link_create_dynamic_sections,
bfd_m68klinux_size_dynamic_sections, linux_finish_dynamic_link): ..
* mach-o.c (bfd_mach_o_make_bfd_section,
bfd_mach_o_scan_read_dylinker, bfd_mach_o_scan_read_dylib,
bfd_mach_o_scan_read_thread, bfd_mach_o_scan_read_symtab,
bfd_mach_o_scan_read_segment): ..
* merge.c (_bfd_add_merge_section, record_section, merge_strings,
_bfd_merge_sections): ..
* mmo.c (mmo_find_sec_w_addr, mmo_get_spec_section, mmo_get_loc,
mmo_map_set_sizes, mmo_canonicalize_symtab,
mmo_internal_write_section, mmo_write_object_contents): ..
* netbsd-core.c (netbsd_core_file_p): ..
* nlm32-alpha.c (nlm_alpha_read_reloc, nlm_alpha_write_import,
nlm_alpha_set_public_section): ..
* nlm32-ppc.c (nlm_powerpc_read_reloc, nlm_powerpc_write_reloc): ..
* nlm32-sparc.c (nlm_sparc_write_import): ..
* nlmcode.h (add_bfd_section, nlm_swap_auxiliary_headers_in,
nlm_compute_section_file_positions): ..
* oasys.c (oasys_object_p, oasys_slurp_section_data,
oasys_write_sections, oasys_write_data, oasys_set_section_contents): ..
* opncls.c (get_debug_link_info): ..
* osf-core.c (make_bfd_asection): ..
* pdp11.c (some_aout_object_p, adjust_o_magic, adjust_z_magic,
adjust_n_magic, adjust_sizes_and_vmas, squirt_out_relocs,
final_link, aout_link_input_section): ..
* peXXigen.c (_bfd_XXi_swap_sym_in, _bfd_XXi_swap_aouthdr_out,
pe_print_idata, pe_print_edata, pe_print_pdata, pe_print_reloc): ..
* pef.c (bfd_pef_make_bfd_section, bfd_pef_print_loader_section,
bfd_pef_scan_start_address, bfd_pef_parse_symbols): ..
* ppcboot.c (ppcboot_object_p, ppcboot_canonicalize_symtab): ..
* ptrace-core.c (ptrace_unix_core_file_p): ..
* reloc.c (bfd_perform_relocation, bfd_install_relocation,
_bfd_final_link_relocate, bfd_generic_relax_section,
bfd_generic_get_relocated_section_contents): ..
* reloc16.c (bfd_coff_reloc16_relax_section,
bfd_coff_reloc16_get_relocated_section_c): ..
* riscix.c (riscix_some_aout_object_p): ..
* rs6000-core.c (read_hdr, make_bfd_asection): ..
* sco5-core.c (make_bfd_asection): ..
* simple.c (bfd_simple_get_relocated_section_contents): ..
* som.c (som_object_setup, setup_sections, som_prep_headers,
som_write_fixups, som_begin_writing, bfd_section_from_som_symbol,
som_set_reloc_info, som_get_section_contents,
som_bfd_link_split_section): ..
* sparclinux.c (linux_link_create_dynamic_sections,
bfd_sparclinux_size_dynamic_sections, linux_finish_dynamic_link): ..
* srec.c (srec_scan, srec_read_section, srec_get_section_contents): ..
* stabs.c (_bfd_link_section_stabs, _bfd_discard_section_stabs,
_bfd_write_stab_strings, _bfd_stab_section_offset): ..
* sunos.c (sunos_read_dynamic_info, sunos_create_dynamic_sections,
bfd_sunos_size_dynamic_sections, sunos_scan_std_relocs,
sunos_scan_ext_relocs, sunos_scan_dynamic_symbol,
sunos_write_dynamic_symbol, sunos_check_dynamic_reloc,
sunos_finish_dynamic_link): ..
* syms.c (_bfd_stab_section_find_nearest_line): ..
* tekhex.c (first_phase, tekhex_set_section_contents,
tekhex_write_object_contents): ..
* trad-core.c (trad_unix_core_file_p): ..
* versados.c (process_esd, process_otr, process_otr): ..
* vms-gsd.c (_bfd_vms_slurp_gsd, _bfd_vms_write_gsd): ..
* vms-misc.c (add_new_contents): ..
* vms-tir.c (check_section, new_section, _bfd_vms_write_tir): ..
* vms.c (vms_set_section_contents): ..
* xcofflink.c (xcoff_get_section_contents, xcoff_link_add_symbols,
xcoff_sweep, bfd_xcoff_size_dynamic_sections, xcoff_build_ldsyms,
_bfd_xcoff_bfd_final_link, xcoff_link_input_bfd): ..
* xsym.c (bfd_sym_scan): .. See above.
binutils/
* objcopy.c (copy_section): Don't set _cooked_size.
include/
* bfdlink.h (struct bfd_link_order): Update comment.
ld/
* ldlang.c (print_output_section_statement): Don't print size before
relaxation.
(IGNORE_SECTION): Remove bfd arg. Update all callers.
* ldexp.c (fold_name): .. See below.
* ldlang.c (section_already_linked, print_output_section_statement,
print_input_section, insert_pad, size_input_section,
lang_check_section_addresses, lang_size_sections_1,
lang_size_sections, lang_do_assignments_1, lang_set_startof,
lang_one_common, lang_reset_memory_regions, lang_process,
lang_abs_symbol_at_end_of, lang_do_version_exports_section): ..
* ldwrite.c (build_link_order, clone_section, ds, split_sections): ..
* pe-dll.c (process_def_file, generate_reloc): ..
* emultempl/elf32.em (gld${EMULATION_NAME}_find_statement_assignment,
gld${EMULATION_NAME}_before_allocation): ..
* emultempl/mmix-elfnmmo.em (mmix_after_allocation): ..
* emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_before_allocation,
sh64_elf_${EMULATION_NAME}_after_allocation): ..
* emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): ..
* emultempl/xtensaelf.em (ld_assign_relative_paged_dot,
ld_local_file_relocations_fit, ld_xtensa_insert_page_offsets): Use
"size" instead of "_raw_size" and "_cooked_size". Expand
bfd_section_size macro invocations.
2004-06-24 04:46:28 +00:00
Alan Modra
7115639bec
* ldlang.c (lang_finish): Don't free lang_definedness_table.
2004-06-14 12:46:43 +00:00
Alan Modra
9ca57817d3
* ldlang.c (gc_section_callback): Move SEC_EXCLUDE twiddles..
...
(lang_gc_sections): .. to a LANG_FOR_EACH_INPUT_STATEMENT loop here.
2004-05-29 04:30:41 +00:00
Alan Modra
6feb9908bf
* ldlang.c: Formatting. Wrap long lines, expand bfd_get_section_flags
...
throughout file.
* lexsup.c: Formatting. Wrap long lines.
* ldwrite.c: Update copyright date.
2004-05-28 10:34:18 +00:00
Alan Modra
164e712d71
* ldlang.c (lang_add_section): Don't twidlle SEC_EXCLUDE here.
...
(output_section_callback): Nor SEC_KEEP here.
(gc_section_callback): Twiddle SEC_EXCLUDE here.
(lang_gc_wild): Delete. Fold into..
(lang_gc_sections_1): ..here. Only call bfd_gc_sections when garbage
collecting.
(lang_process): Always call lang_gc_sections.
(lang_place_orphans): Handle SEC_EXCLUDE sections.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Remove
SEC_EXCLUDE code.
2004-05-28 05:42:30 +00:00
H.J. Lu
b309625038
bfd/
...
2004-05-26 H.J. Lu <hongjiu.lu@intel.com>
* elf.c (_bfd_elf_make_section_from_shdr): Undo the last
change.
ld/
2004-05-26 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Clear
SEC_EXCLUDE on non-SEC_DEBUGGING sections for relocatable link.
* ldlang.c (lang_add_section): Likewise.
2004-05-27 05:53:36 +00:00
Alan Modra
e49f502242
bfd/
...
* elf.c (_bfd_elf_make_section_from_shdr): Don't set SEC_EXCLUDE
for SHT_GROUP sections.
ld/
* ldlang.c (lang_add_section): Set SEC_EXCLUDE for SEC_GROUP
sections when doing a final link. Clear SEC_EXCLUDE when doing
a relocable link, except for SEC_DEBUGGING sections.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Use the
same condition here to drop SEC_EXCLUDE orphan sections.
2004-05-26 10:23:51 +00:00
Alan Modra
57ceae9483
bfd/
...
* elflink.c (elf_link_add_object_symbols): Don't set up merge
section data here..
* elf.c (_bfd_elf_merge_sections): .. Do it here instead.
* merge.c: Formatting. Remove unnecessary casts. Expand
bfd_get_section_alignment macro.
(struct sec_merge_sec_info): Rename "first" to "first_str". Update
use throughout file.
(_bfd_add_merge_section): Rename from _bfd_merge_section. Update
comment. Abort on dynamic or non-SEC_MERGE input. Don't test
section name to determine sinfo group, instead test output section
and alignment.
(_bfd_merge_sections): Add struct bfd_link_info param. Call
_bfd_strip_section_from_output rather than just twiddling flags.
* libbfd-in.h (_bfd_add_merge_section): Rename, update comment.
(_bfd_merge_sections): Update prototype.
* libbfd.h: Regenerate.
ld/
* ldlang.c (lang_process): Call bfd_merge_sections later, and
only when not a relocatable link.
(print_input_section): Handle SEC_EXCLUDE sections.
(size_input_section): Don't update dot on SEC_EXCLUDE sections.
(lang_do_assignments_1): Likewise.
* ldwrite.c (build_link_order): Ignore SEC_EXCLUDE input sections.
* emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Likewise.
* emultempl/hppaelf.em (build_section_lists): Likewise.
* emultempl/ppc64elf.em (build_toc_list): Likewise.
(build_section_lists): Likewise.
2004-05-25 06:33:51 +00:00
Joern Rennecke
35835446e4
* NEWS: Mention new linker map file generation and the
...
--reduce-memory-overheads option.
* ld.texinfo: Document --reduce-memory-overheads option.
* ld.h (map_symbol_def): New struct.
(struct user_section_struct, section_userdata_type): Rename to:
(struct lean_user_section_struct, lean_section_userdata_type).
(struct fat_user_section_struct, fat_section_userdata_type): New.
(SECTION_USERDATA_SIZE): Define.
(args_type): New member reduce_memory_overheads.
* ldlang.c (map_obstack): New static variable.
(init_map_userdata, print_all_symbols, sort_def_symbol): New functions.
(lang_map): Unless command_line.reduce_memory_overheads is set,
initialize lists of defined symbols for each section.
(print_input_section): Unless command_line.reduce_memory_overheads
is set, use print_all_symbols.
(init_os): Use lean_section_userdata_type / SECTION_USERDATA_SIZE.
* ldmain.c (main): Initialize command_line.reduce_memory_overheads.
* lexsup.c (enum option_values): Add OPTION_REDUCE_MEMORY_OVERHEADS.
(ld_options): Add entry for --reduce-memory-overheads.
(parse_args): Handle OPTION_REDUCE_MEMORY_OVERHEADS.
2004-05-19 14:15:55 +00:00
Jakub Jelinek
0841712ea9
* ldgram.y (sect_constraint): New.
...
(ONLY_IF_RO, ONLY_IF_RW): New tokens.
(section): Add sect_constraint. Pass additional argument
to lang_enter_output_section_statement.
* mri.c (mri_draw_tree): Pass additional argument to
lang_enter_output_section_statement.
* emultempl/pe.em (place_orphan): Likewise.
(output_prev_sec_find): Disregard output section statements with
constraint == -1.
* emultempl/mmo.em (output_prev_sec_find): Likewise.
(mmo_place_orphan): Pass additional argument to
lang_enter_output_section_statement.
* emultempl/elf32.em (output_prev_sec_find): Disregard output section
statements with constraint == -1.
(place_orphan): Pass additional argument to
lang_enter_output_section_statement.
* ldlang.c (lang_enter_overlay_section): Likewise.
(lang_output_section_find_1): New.
(lang_output_section_find): Use it.
(lang_output_section_statement_lookup_1): New.
(lang_output_section_statement_lookup): Use it.
(check_section_callback, check_input_sections): New.
(map_input_to_output_sections): Check if all input sections
are readonly if ONLY_IF_RO or ONLY_IF_RW was seen.
(strip_excluded_output_sections): Disregard output section statements
with constraint == -1.
(lang_record_phdrs): Likewise.
(lang_enter_output_section_statement): Add constraint argument.
Use lang_output_section_statement_lookup_1.
* ldlang.h (lang_output_section_statement_type): Add constraint
and all_input_readonly fields.
(lang_enter_output_section_statement): Adjust prototype.
* ldlex.l (ONLY_IF_RO, ONLY_IF_RW): New tokens.
* scripttempl/elf.sc (.eh_frame, .gcc_except_table): Move into text
segment if all input sections are readonly.
2004-05-19 14:01:14 +00:00
Jakub Jelinek
8c37241be3
bfd/
...
* elflink.c (elf_bfd_final_link): Don't output STT_SECTION symbol
into .dynsym if elf_section_data (sec)->dynindx <= 0.
Adjust counting of last_local.
(_bfd_elf_link_renumber_dynsyms): Don't assign dynindx to sections
other than SHT_PROGBITS/SHT_NOBITS and neither for .got/.got.plt/.plt
created by the linker nor !SHF_ALLOC.
* elf32-i386.c (elf_i386_finish_dynamic_sections): Point
DT_PLTGOT to the start of the .got.plt section instead of the
.got output section. Set sh_entsize for .got section in addition
to .got.plt.
(elf_i386_relocate_section): Don't assume _GLOBAL_OFFSET_TABLE_
is at sgot->output_section->vma.
* elf64-x86-64.c (elf64_x86_64_finish_dynamic_sections): Point
DT_PLTGOT to the start of the .got.plt section instead of the
.got output section.
(elf64_x86_64_relocate_section): Don't assume _GLOBAL_OFFSET_TABLE_
is at sgot->output_section->vma. Set sh_entsize for .got section
in addition to .got.plt.
* elf.c (_bfd_elf_print_private_bfd_data): Handle PT_GNU_RELRO.
(bfd_section_from_phdr): Likewise.
(map_sections_to_segments): Likewise.
(assign_file_positions_for_segments): Likewise.
(get_program_header_size): Likewise.
* elflink.c (bfd_elf_size_dynamic_sections): Set
elf_tdata (output_bfd)->relro from info->relro.
* elf-bfd.h (struct elf_obj_tdata): Add relro field.
include/
* bfdlink.h (struct bfd_link_info): Add relro, relro_start and
relro_end fields.
* elf/common.h (PT_GNU_EH_FRAME, PT_GNU_STACK): Add comments.
(PT_GNU_RELRO): Define.
binutils/
* readelf.c (get_segment_type): Handle PT_GNU_RELRO.
ld/
* genscripts.sh: Generate -z combreloc -z now -z relro scripts
for binaries, -shared and -pie.
* emulparams/elf_i386.sh (SEPARATE_GOTPLT): Set.
* emulparams/elf_x86_64.sh (SEPARATE_GOTPLT): Set.
* emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS): Rename to...
(OTHER_RELRO_SECTIONS): ... this.
* ldlex.l (DATA_SEGMENT_RELRO_END): Add.
* emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Handle
-z relro and -z norelro.
(gld${EMULATION_NAME}_list_options): Add it to usage.
(gld${EMULATION_NAME}_get_script): Return -z combreloc -z now
-z relro scripts when appropriate.
* scripttempl/elf.sc: Unset SEPARATE_GOTPLT if RELRO_NOW is set.
Create separate .got.plt section if SEPARATE_GOTPLT.
Move sections which are only written during relocation handling
to the beginning of RW segment. If NO_SMALL_DATA, move .got
before .data. Add DATA_SEGMENT_RELRO_END directive.
Include OTHER_RELRO_SECTIONS.
* ldgram.y (DATA_SEGMENT_RELRO_END): Add.
* ldexp.c (exp_print_token): Handle DATA_SEGMENT_RELRO_END.
(fold_unary): Likewise.
(fold_binary): Handle -z relro.
* ldexp.h (struct exp_data_seg): Add exp_dataseg_relro_seen and
exp_dataseg_relro_adjust phases. Add relro_end field.
* ldmain.c (main): Initialize link_info.relro to FALSE.
* ldlang.c (lang_size_sections): Handle -z relro.
ld/testsuite/
* ld-i386/tlspic.rd: Adjust for section reordering changes
and removal of unneeded STT_SECTION symbols from .dynsym.
* ld-i386/tlspic.dd: Likewise.
* ld-i386/tlspic.sd: Likewise.
* ld-i386/tlsbin.rd: Likewise.
* ld-i386/tlsbinpic.s: Likewise.
* ld-i386/tlsbin.dd: Likewise.
* ld-i386/tlsbin.sd: Likewise.
* ld-i386/tlsnopic.rd: Likewise.
* ld-i386/tlsnopic1.s: Likewise.
* ld-i386/combreloc.d: Likewise.
* ld-i386/tlsnopic.dd: Likewise.
* ld-i386/tlsnopic.sd: Likewise.
* ld-x86-64/tlspic.rd: Likewise.
* ld-x86-64/tlspic.dd: Likewise.
* ld-x86-64/tlsbin.dd: Likewise.
* ld-x86-64/tlspic.sd: Likewise.
* ld-x86-64/tlsbin.sd: Likewise.
* ld-x86-64/tlspic.td: Likewise.
* ld-x86-64/tlsbin.td: Likewise.
* ld-x86-64/tlsbin.rd: Likewise.
* ld-s390/tlspic1.s: Likewise.
* ld-s390/tlsbinpic.s: Likewise.
* ld-s390/tlspic.rd: Likewise.
* ld-s390/tlsbin.rd: Likewise.
* ld-s390/tlspic.dd: Likewise.
* ld-s390/tlsbin.dd: Likewise.
* ld-s390/tlsbin.sd: Likewise.
* ld-s390/tlsbin.td: Likewise.
* ld-s390/tlspic.sd: Likewise.
* ld-s390/tlspic.td: Likewise.
* ld-s390/tlspic1_64.s: Likewise.
* ld-s390/tlsbinpic_64.s: Likewise.
* ld-s390/tlspic_64.rd: Likewise.
* ld-s390/tlsbin_64.rd: Likewise.
* ld-s390/tlspic_64.dd: Likewise.
* ld-s390/tlsbin_64.dd: Likewise.
* ld-s390/tlspic_64.sd: Likewise.
* ld-s390/tlspic_64.td: Likewise.
* ld-s390/tlsbin_64.td: Likewise.
* ld-s390/tlsbin_64.sd: Likewise.
* ld-powerpc/tlsexe32.r: Likewise.
* ld-powerpc/tlsso32.r: Likewise.
* ld-powerpc/tlsso32.d: Likewise.
* ld-powerpc/tlsso32.g: Likewise.
* ld-powerpc/tlsso32.t: Likewise.
* ld-powerpc/tlsexe.r: Likewise.
* ld-powerpc/tlsso.r: Likewise.
* ld-powerpc/tlsso.g: Likewise.
* ld-powerpc/tlsexetoc.r: Likewise.
* ld-powerpc/tlstocso.r: Likewise.
* ld-powerpc/tlstocso.g: Likewise.
* ld-ia64/tlspic.rd: Likewise.
* ld-ia64/tlspic.dd: Likewise.
* ld-ia64/tlspic.sd: Likewise.
* ld-ia64/tlspic.td: Likewise.
* ld-ia64/tlsbin.rd: Likewise.
* ld-ia64/tlsbin.sd: Likewise.
* ld-ia64/tlsbin.td: Likewise.
* ld-elfvsb/elfvsb.exp: XFAIL non-PIC load offset tests on s390x.
* ld-shared/shared.exp: Likewise.
2004-05-11 17:08:38 +00:00
Joern Rennecke
5f9b892013
* ldlang.c (print_padding_statement): Cast size_t to bfd_vma
...
before printing it with %W.
2004-05-07 15:21:27 +00:00
Alan Modra
d0d6a25bf3
* ldlang.c (unique_section_p): Pass section parm, return true on
...
group sections.
(output_section_callback): Adjust.
* ldlang.h (unique_section_p): Update prototype.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Adjust.
2004-04-30 14:26:09 +00:00
Jakub Jelinek
3737f867ac
* ldlang.c (lang_do_assignments_1): Handle .tbss output section
...
specially.
2004-04-19 07:35:12 +00:00
Alan Modra
4a43e768f1
bfd/
...
* elf-bfd.h (struct elf_obj_tdata): Delete dt_soname field. Add
dyn_lib_class field. Rearrange for better packing.
(elf_dt_soname): Delete.
(elf_dyn_lib_class): Define.
* elf.c (bfd_elf_set_dt_needed_name): Update comment.
(bfd_elf_set_dt_needed_soname): Delete.
(bfd_elf_set_dyn_lib_class): New function.
* elflink.h (add_dt_needed_tag): New function. Split out from..
(elf_link_add_object_symbols): ..here. Rename "name" to "soname".
Use elf_dyn_lib_class to set dt_needed and add_needed. Move fallback
initialization of soname.
(elf_link_check_versioned_symbol): Test elf_dyn_lib_class instead of
elf_dt_soname.
* bfd-in.h (enum dynamic_lib_link_class): New.
(bfd_elf_set_dt_needed_soname): Delete.
(bfd_elf_set_dyn_lib_class): Declare.
* bfd-in2.h: Regenerate.
ld/
* ld.texinfo: Add --as-needed doco.
* ldmain.c (as_needed): New global var.
* ldmain.h (as_needed): Declare.
* lexsup.c (option_values): Add OPTION_AS_NEEDED and
OPTION_NO_AS_NEEDED.
(ld_options): Likewise.
(parse_args): Handle them.
* ldlang.h (lang_input_statement_type): Add as_needed field.
* ldlang.c (new_afile): Set p->as_needed.
* emultempl/elf32.em (gld${EMULATION_NAME}_load_symbols): New function.
(gld${EMULATION_NAME}_try_needed): Use bfd_elf_set_dyn_lib_class.
(ld_${EMULATION_NAME}_emulation): Set LDEMUL_RECOGNIZED_FILE entry.
* ldlang.c (open_input_bfds): Remove useless cast.
(lang_do_assignments_1): Likewise.
(lang_for_each_input_section): Delete.
2004-03-18 12:50:20 +00:00
Nathan Sidwell
e5caec89a0
* elf.c (map_sections_to_segments): Ignore .tbss sections for
...
layout purposes.
* ldlang.c (lang_add_section): Don't force SEC_LOAD on
SEC_THREAD_LOCAL.
(IGNORE_SECTION): Ignore .tbss sections too.
(lang_size_sections_1): .tbss sections do not advance dot.
* ld-scripts/size.exp: New.
* ld-scripts/size-[12].{d,s,t}: New.
2004-03-05 11:26:05 +00:00
Ian Lance Taylor
177b729b44
* ldlang.c (lang_check): Use %P, not %E, in error message.
2004-02-23 19:41:53 +00:00
Nathan Sidwell
1b49374200
* ldlang.h (struct lang_output_section_state): Change processed
...
field's type.
* ldexp.c (check, invalid): Remove.
(fold_name): Move valid_p assignments. Create undefined symbol
when needed. Directly exampine section's processd flag.
* ldlang.c (lang_output_section_statement_lookup): Adjust
processed field init.
(lang_size_sections_1): Allow LOADADDR when determining section's
VMA. Adjust error message. Fold data statement's expr.
(lang_size_sections): Correctly increment lang_statement_iteration.
* ld-scripts/provide.exp: New.
* ld-scripts/provide-{1,2,3}.{s,t,d}.exp: New.
* ldexp.c (fold_tree): Follow indirect symbols.
2004-02-23 10:10:02 +00:00
Nathan Sidwell
384d938fc8
* ldlang.c (map_input_to_output_sections): Initialize sections
...
mentioned in a data statement expression.
(lang_do_assignments_1): Add data statement's expression's
section's vma.
* ld-scripts/data.{s,t,d,exp}: New.
2004-02-19 14:08:31 +00:00
Nathan Sidwell
b6ca8815ef
* ldgram.y (statement_anywhere): Add assert rule.
...
* ldlang.c (exp_init_os): Add assert case.
* testsuite/ld-scripts/assert.{s,t,exp}: New.
2004-02-18 16:37:21 +00:00
Nick Clifton
6bdafbeb57
* ldlang.c (lang_get_regions): Add extra parameter 'have_vma' which if true will
...
prevent the LMA region being used as a replacement for a default VMA region.
(lang_leave_output_section_statement): Pass extra parameter.
(lang_leave_overlay): Likewise.
* ld.texinfo (Output Section LMA): Document that the LMA region can be set to
the VMA region if no VMA has been set.
* ldlang.h (struct lang_output_section_phdr_list): Create a typedef for this
type. Minor formatting fixes.
2004-01-13 11:10:53 +00:00
Nick Clifton
9dfc8ab287
If dot is advanced, then assume that the section should be allocated.
2004-01-13 08:24:20 +00:00
Alan Modra
8325c4dd4e
* ldlang.c (IGNORE_SECTION): Don't ignore SEC_ALLOC && !SEC_LOAD
...
sections. Do ignore SEC_NEVER_LOAD sections.
(lang_size_sections_1): Remove test made redundant with the above.
2004-01-12 13:47:32 +00:00
Alan Modra
e5caa5e0ca
* ldexp.c (align_n): Make static.
...
* ldexp.h (align_n): Delete declaration.
* ldlang.h (lang_enter_output_section_statement): Remove
block_value param.
* ldlang.c (lang_enter_output_section_statement): Likewise.
(TO_ADDR, TO_SIZE): Define.
(opb): New var.
(init_opb): New function.
(print_input_section): Call init_opb and use TO_ADDR.
(print_data_statement, print_reloc_statement): Likewise.
(print_padding_statement): Likewise.
(size_input_section): Use TO_SIZE and TO_ADDR, and global opb.
(lang_check_section_addresses): Likewise.
(lang_size_sections_1): Likewise.
(lang_do_assignments_1): Likewise.
(lang_set_startof): Likewise.
(lang_one_common): Likewise. Combine power_of_two and opb alignment.
(lang_process): Call init_opb.
(lang_abs_symbol_at_end_of): Use TO_ADDR and global opb.
(lang_enter_overlay_section): Adjust
lang_enter_output_section_statement call.
* ldgram.y: Likewise.
* mri.c (mri_draw_tree): Likewise.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Likewise.
* emultempl/mmo.em (mmo_place_orphan): Likewise.
* emultempl/pe.em (gld${EMULATION_NAME}_place_orphan): Likewise.
2004-01-03 12:39:07 +00:00
H.J. Lu
2f97444a4f
2003-12-07 H.J. Lu <hongjiu.lu@intel.com>
...
* ldlang.c (lang_vers_match): Pass "DMGL_PARAMS | DMGL_ANSI" to
cplus_demangle.
2003-12-08 03:43:33 +00:00
H.J. Lu
d9c458fcc1
bfd/
...
2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relax_section): Use the
need_relax_finalize field in link_info instead of
relax_finalizing to check if the relax finalize pass is being
done.
include/
2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
* bfdlink.h (bfd_link_info): Change relax_finalizing to
need_relax_finalize.
ld/
2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/ia64elf.em (gld${EMULATION_NAME}_after_parse): Set
link_info.need_relax_finalize to TRUE.
* ldlang.c (lang_process): Use link_info.need_relax_finalize
instead of link_info.relax_finalizing.
* ldmain.c (main): Likewise.
2003-12-04 22:43:36 +00:00
Alan Modra
f2241121e3
* ldlang.c (lang_do_assignments): Function return is void.
...
* ldlang.h (lang_do_assignments): Ditto.
* emultempl/netbsd.em (gld${EMULATION_NAME}_before_parse): Declare.
* Makefile.am (ens32knbsd.c): Depend on netbsd.em.
* Makefile.in: Regenerate.
2003-12-04 12:09:25 +00:00
Jim Wilson
5a46fe39b3
Fix IA-64 linker failure reported by Andreas Schwab.
...
* ldlang.c (lang_process): Move lang_reset_memory_regions call after
lang_do_assignments call.
2003-11-19 02:40:55 +00:00