summaryrefslogtreecommitdiff
path: root/ld/ldexp.h
Commit message (Collapse)AuthorAgeFilesLines
* PR ld/14962Alan Modra2012-12-171-0/+5
| | | | | | | | | * ldexp.h (struct ldexp_control): Add "assign_name". * ldexp.c (fold_name <NAME>): Compare and clear assign_name on match. (exp_fold_tree_1): Remove existing code testing for self assignment. Instead set and test expld.assign_name. * ldlang.c (scan_for_self_assignment): Delete. (print_assignment): Instead set and test expld.assign_name.
* bfd/Maciej W. Rozycki2012-08-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elflink.c (bfd_elf_record_link_assignment): Remove --defsym symbols special case. ld/ * ldexp.h (etree_union): Add defsym member to the assign member structure. (exp_assign): Add hidden argument to prototype. * ldexp.c (exp_fold_tree_1): Use the defsym member to handle --defsym symbols. (exp_assop): Add defsym argument, initialize the defsym member of the assign structure. (exp_assign): Handle hidden symbols. (exp_defsym): Update to use the defsym argument to exp_assop. (exp_provide): Update to handle the defsym argument to exp_assop. * ldlex.l (HIDDEN): New token. * ldgram.y (HIDDEN): Likewise. (assignment, section): Update calls to exp_assign. * ldctor.c (ldctor_build_sets): Likewise. * mri.c (mri_format): Likewise. * ldlang.c (lang_insert_orphan, lang_leave_overlay): Likewise. (open_input_bfds): Remove --defsym symbols special case. * emultempl/beos.em (gld_${EMULATION_NAME}_set_symbols): Update call to exp_assign. * 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. * ld.texinfo (Assigning Values to Symbols): Add HIDDEN. (HIDDEN): New subsection.
* PR ld/13683Nick Clifton2012-02-221-1/+9
| | | | | | | | | | | | | | | | | | | | | | | * ldlang.c (lang_process): Rerun lang_do_assignments before starting garbage collection. * ldexp.c (fold_name): Generate a reloc for defined symbols found without an associated output section during the mark phase. (exp_fold_tree_1): Continue processing an expression, even if we are unable to fold it, if we are in the first two evaluation phases. * ldexp.h (enum lang_phase_type): Add descriptions of the phases. * ld-gc/pr13683.c: New test source file. * ld-gc/pr13683.d: New test control and output file. * ld-gc/gc.exp: Run the pr13683 test. * ld-cris/tls-gc-68: Update expected symbol table dump. * ld-cris/tls-gc-69: Likewise. * ld-cris/tls-gc-70: Likewise. * ld-cris/tls-gc-71: Likewise. * ld-cris/tls-gc-75: Likewise. * ld-cris/tls-gc-76.d: Likewise. * ld-cris/tls-gc-79.d: Likewise.
* PR ld/13343Alan Modra2012-02-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ld.h (parsing_defsym): Delete. * ldexp.c (exp_intop, exp_bigintop, exp_relop): Set type.filename. (fold_binary, fold_name, exp_fold_tree_1, exp_get_vma, exp_get_fill, exp_get_abs_int): Add tree arg for %S in error messages. Don't fudge lineno. (exp_binop, exp_unop, exp_nameop, exp_assop, exp_assert): Copy type.filename from sub-tree. (exp_trinop): Likewise, and use "cond" rather than "lhs". * ldexp.h (node_type): Add filename field to struct. * ldfile.c (ldfile_input_filename): Delete. Remove all refs. * ldfile.h (ldfile_input_filename): Delete. * ldgram.y (phdr_type, phdr_qualifiers, yyerror): Add NULL arg for %S in error messages. * ldemul.c (syslib_default, hll_default): Likewise. * ldlang.c (lang_memory_region_lookup, lang_memory_region_alias, lang_get_regions, lang_new_phdr): Likewise. (lang_size_sections_1): Pass addr_tree for %S. * ldlex.h (lex_redirect): Update prototype. (ldlex_filename): Declare. * ldlex.l (<EOF>): Don't set ldfile_input_filename. (lex_redirect): Add fake_filename and count params. Push fake_filename to file_name_stack and init lineno from count. (ldlex_filename): New function. (lex_warn_invalid): Use above. * ldmain.c (main): Update lex_redirect call. * ldmisc.c (vfinfo <%S>): Take file name and line number from etree_type arg, or use current if arg is NULL. * lexsup.c (parsing_defsym): Delete. (parse_args <OPTION_DEFSYM>): Update lex_redirect call.
* PR ld/12726Alan Modra2011-05-031-0/+1
| | | | | | | | | | | * ldexp.h (lang_phase_type): Add lang_assigning_phase_enum. * ldexp.c (exp_fold_tree_1): Correct assign to dot comment. Don't assign to dot when lang_assigning_phase_enum. * ldlang.h (lang_do_assignments): Update prototype. * ldlang.c (lang_do_assignments): Add phase parameter. Update all callers. * pe-dll.c (pe_dll_fill_sections, pe_exe_fill_sections): Update lang_do_assignments calls.
* PR ld/12356Alan Modra2011-01-131-2/+0
| | | | | | | | | | | | | | | | | | | * ld.texinfo (Miscellaneous Commands): Describe LD_FEATURE. (Expression Section): Update. * ld.h (ld_config_type): Add sane_expr. * ldgram.y (ifile_p1): Add LD_FEATURE. * ldlex.l (LD_FEATYRE): New. * ldemul.c (after_parse_default): Delete code handling ld_compatibility. * ldexp.h (struct ldexp_control): Delete uses_defined. * ldexp.c: Remove all uses of uses_defined. (fold_name): Test config.sane_expr rather than ld_compatibility. (exp_fold_tree_1): Likewise. Adjust handling of assignments during first phase. * ldlang.h (ld_compatibility): Delete. (lang_ld_feature): Declare. * ldlang.c (ld_compatibility): Delete. (open_input_bfds): Only handle assignments for --defsym. (lang_ld_feature): New function.
* PR ld/12356Alan Modra2011-01-131-3/+5
| | | | | | | | | | | | * ldexp.h (exp_assop): Delete. (exp_assign, exp_defsym): Declare. * ldexp.c (exp_assop): Make static, handle all assignment variations. (exp_assign, exp_defsym): New functions. (exp_provide): Use exp_assop. * ldgram.y (defsym_expr): Use exp_defsym. * ldctor.c, * ldgram.y, * ldlang.c, * mri.c, * emultempl/beos.em, * emultempl/pe.em, * emultempl/pep.em, * emultempl/spuelf.em, * emultempl/xtensaelf.em: Update exp_assop -> exp_assign.
* PR ld/12380Alan Modra2011-01-121-2/+7
| | | | | | | | | | | | | | * ldexp.h (enum phase_enum): Comment. Add exp_dataseg_done. * ldexp.c (fold_unary <DATA_SEGMENT_END>): Rearrange code. Test for exp_dataseg_done rather than expld.phase == lang_final_phase_enum to detect when we've finished sizing sections. (fold_binary <DATA_SEGMENT_ALIGN>): Likewise. (fold_binary <DATA_SEGMENT_RELRO_END>): Likewise. Also test that we are not inside an output section statement. * ldlang.c (lang_size_sections): Set exp_dataseg_done on exit if not exp_dataseg_relro_adjust or exp_dataseg_adjust. Don't set lang_final_phase_enum here. (lang_process): Set lang_final_phase_enum here.
* * ld.texinfo (Expression Section): Describe treatment of numbersAlan Modra2010-12-201-0/+1
| | | | | | | | | | | | | | | | | | and absolute symbols. * ldemul.c (after_open_default): Look up __ld_compatibility. * ldexp.c (fold_name): Convert absolute symbols to numbers when inside output section definitions, or when __ld_compatibility >= 221. (exp_fold_tree_1): Convert numbers to absolute when not in output section definition and __ld_compatibility < 221. Don't always convert values outside an output section definition to absolute. * ldexp.h (uses_defined): Comment. * ldlang.c (ld_compatibility): New variable. * ldlang.h (ld_compatibility): Declare. * emultempl/aix.em, * emultempl/armcoff.em, * emultempl/beos.em, * emultempl/elf32.em, * emultempl/genelf.em, * emultempl/lnk960.em, * emultempl/m68kcoff.em, * emultempl/mmo.em, * emultempl/pe.em, * emultempl/pep.em, * emultempl/sunos.em, * emultempl/z80.em: Call after_open_default from after_open function.
* PR ld/12001Alan Modra2010-12-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | Revert 2010-11-03 Nick Clifton * ldlang.c (ldlang_def_chain_list): Delete. (insert_defined, ldlang_add_def, lang_place_defineds): Delete. (lang_process): Don't call lang_place_defineds. (lang_add_assignment): Don't do anything special for --defsym. * ldexp.h (struct ldexp_control): Add uses_defined. (exp_fold_tree_no_dot): Declare. * ldexp.c (exp_fold_tree): Clear uses_defined. (exp_fold_tree_no_dot): Likewise. Make global. (fold_name <DEFINED>): Set uses_defined. (exp_fold_tree_1 <etree_assign>): Define symbol during first phase even when the value being assigned isn't valid. * ldlang.c (open_input_bfds): Process assignment statements. (lang_process): Bump lang_statement_iteration. (scan_for_self_assignment): Formatting. (print_assignment): Style. testsuite/ * ld-scripts/default-script2.d: Revert 2010-11-03 change.
* * po/bfd.pot: Updated by the Translation project.Nick Clifton2009-09-111-25/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* bfd/H.J. Lu2007-09-181-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Update sources to GPLv3Nick Clifton2007-07-061-9/+9
|
* ld/H.J. Lu2007-04-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-04-02 H.J. Lu <hongjiu.lu@intel.com> PR ld/4090 * ldexp.h (node_type): Add lineno. * ldexp.c: Include "ldlex.h". (exp_intop): Set the lineno field from lineno. (exp_bigintop): Likewise. (exp_relop): Likewise. (exp_nameop): Likewise. (exp_binop): Set the lineno field from lineno of lhs. (exp_trinop): Likewise. (exp_unop): Set the lineno field from lineno of child. (exp_assop): Set the lineno field from lineno of src. (exp_provide): Likewise. (exp_assert): Set the lineno field from lineno of exp. (exp_get_abs_int): Set lineno from lineno of nonconstant expression when report problem. ld/testsuite/ 2007-04-02 H.J. Lu <hongjiu.lu@intel.com> PR ld/4090 * ld-elf/expr1.d: New file. * ld-elf/expr1.s: Likewise. * ld-elf/expr1.t: Likewise.
* bfd/H.J. Lu2005-08-051-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | 2005-08-05 H.J. Lu <hongjiu.lu@intel.com> * bfd.c (bfd_hide_symbol): New. * bfd-in2.h: Regenerated. ld/ 2005-08-05 H.J. Lu <hongjiu.lu@intel.com> * ld.texinfo: Document PROVIDE_HIDDEN. * ldexp.c (exp_fold_tree_1): Hide a provided symbol if asked. (exp_provide): Add and set hidden. * ldexp.h (etree_type): Add hidden to assign. * ldgram.y (PROVIDE_HIDDEN): New. * ldlex.l (PROVIDE_HIDDEN): Likewise. * scripttempl/elf.sc: Use PROVIDE_HIDDEN on array bound symbols.
* * ld.h (lang_phase_type): Move to..Alan Modra2005-06-091-23/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* * ldexp.h (etree_value_type): Use "asection *" in place ofAlan Modra2005-06-021-5/+4
| | | | | | | | | | | | | | "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.
* bfd/H.J. Lu2005-05-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Update FSF addressesNick Clifton2005-05-121-2/+2
|
* * ldexp.h (exp_data_seg): Add min_base and maxpagesize fields.Jakub Jelinek2004-12-171-1/+1
| | | | | | | * 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.
* * Makefile.in (earmsymbian.c): Depend on armbpabi.sc, not elf.sc.Mark Mitchell2004-10-261-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | * 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.
* bfd/Jakub Jelinek2004-05-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* * ldexp.c (align_n): Make static.Alan Modra2004-01-031-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* Convert to C90Alan Modra2003-06-281-20/+20
|
* s/boolean/bfd_boolean/ s/true/TRUE/ s/false/FALSE/. SimplifyAlan Modra2002-11-301-35/+52
| | | | comparisons of bfd_boolean vars with TRUE/FALSE. Formatting.
* * emulparams/elf32_dlx.sh (TARGET_PAGE_SIZE): Set to 1.Alan Modra2002-08-131-0/+1
| | | | | | | | | | | | (MAXPAGESIZE): Set to 1. * ld.h (ALIGN_N): Delete. * ldexp.h (align_n): Declare. * ldexp.c (align_n): New function. (fold_binary): Use align_n instead of ALIGN_N. (exp_fold_tree): Likewise. * ldlang.c (lang_size_sections_1): Likewise. (lang_one_common): Likewise.
* Support arbitrary length fill patterns.Alan Modra2002-02-151-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ldexp.h (etree_value_type): Add "str" field. (union etree_union): Add "str" to "value" struct. (exp_bigintop): Declare. (exp_get_fill): Declare. * ldexp.c: Include "safe-ctype.h". (exp_intop): Set value.str to NULL. (exp_bigintop): New function. (new_rel): Pass in "str", and set new.str from it. (new_rel_from_section): Set new.str to NULL. (fold_name): Adjust calls to new_rel. (exp_fold_tree): Likewise. (exp_get_fill): New function. * ldgram.y (struct big_int bigint, fill_type *fill): New. (INT): Returns a "bigint". Adjust all code handling INTs. (fill_opt): Returns a "fill". (fill_exp): Split out of fill_opt, use for FILL. * ldlang.h (struct _fill_type): New. (fill_type): Move typedef to ldexp.h. (lang_output_section_statement_type): "fill" is now a pointer. (lang_fill_statement_type): Likewise. (lang_padding_statement_type): Likewise. (lang_add_fill): Now takes a "fill_type *" param. (lang_leave_output_section_statement): Likewise. (lang_do_assignments): Likewise. (lang_size_sections): Likewise. (lang_leave_overlay_section): Likewise. (lang_leave_overlay): Likewise. * ldlang.c: Include ldgram.h after ldexp.h. (lang_output_section_statement_lookup): Adjust for fill_type change. (print_fill_statement): Likewise. (print_padding_statement): Likewise. (insert_pad): Now takes a "fill_type *" arg. (size_input_section): Likewise. (lang_size_sections_1): Likewise. (lang_size_sections): Likewise. (lang_do_assignments): Likewise. (lang_add_fill): Likewise. (lang_leave_output_section_statement): Likewise. (lang_leave_overlay_section): Likewise. (lang_leave_overlay): Likewise. Adjust all callers of the above function. * ldlex.l: Include ldgram.h after ldexp.h. Allow hex numbers starting with "0X" as well as "0x". Return bigint.str for hex numbers starting with "0x" or "0X", zero bigint.str otherwise. Always use base 16 for numbers starting with "$". * ldmain.c: Include ldgram.h after ldexp.h. * ldwrite.c (build_link_order): Use bfd_data_link_order in place of bfd_fill_link_order. * pe-dll.c: Adjust lang_do_assignments calls. * emultempl/elf32.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/beos.em: Include ldgram.h after ldexp.h, adjust lang_add_assignment call. * emultempl/pe.em: Likewise.
* * ldlex.l (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END): New tokens.Jakub Jelinek2002-02-121-0/+10
| | | | | | | | | | | | | | | | | | | | | | | * ldgram.y (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END): New tokens. (exp): Add DATA_SEGMENT_ALIGN (exp, exp) and DATA_SEGMENT_END (exp). * ldexp.c (exp_data_seg): New variable. (exp_print_token): Handle DATA_SEGMENT_ALIGN and DATA_SEGMENT_END. (fold_binary): Handle DATA_SEGMENT_ALIGN. (exp_fold_tree): Handle DATA_SEGMENT_END. Pass allocation_done when recursing instead of hardcoding lang_allocating_phase_enum. * ldexp.h (exp_data_seg): New. * ldlang.c (lang_size_sections_1): Renamed from lang_size_sections. (lang_size_sections): New. * ld.texinfo (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END): Document. * scripttempl/elf.sc: Use DATA_SEGMENT_ALIGN and DATA_SEGMENT_END if COMMONPAGESIZE is defined. * emulparams/elf_i386.sh (COMMONPAGESIZE): Set to 4K. * emulparams/elf32_sparc.sh (COMMONPAGESIZE): Set to 8K. * emulparams/elf64_sparc.sh (COMMONPAGESIZE): Set to 8K. * emulparams/elf64alpha.sh (COMMONPAGESIZE): Set to 8K. * emulparams/elf64_ia64.sh (COMMONPAGESIZE): Set to 16K for shared libraries only.
* Fixtypos in ChangeLogs, fix copyright dates in filesNick Clifton2001-03-131-1/+1
|
* 2001-02-13 H.J. Lu <hjl@gnu.org>H.J. Lu2001-02-131-0/+1
| | | | | | | | | | * ldexp.h (node_type): Add etree_provided. * ldexp.c (exp_fold_tree): Handle etree_provided. Set the node type to etree_provided if defined by PROVIDE. Allow updating for etree_provided. (exp_print_tree): Handle etree_provided. * mpw-elfmips.c (gldelf32ebmip_find_exp_assignment): Handle etree_provided.
* 2000-10-09 Kazu Hirata <kazu@hxi.com>Kazu Hirata2000-10-091-10/+7
| | | | | | | | | | | | | | | * ldcref.c: Fix formatting. * ldctor.h: Likewise. * ldemul.c: Likewise. * ldemul.h: Likewise. * ldexp.c: Likewise. * ldexp.h: Likewise. * ldfile.c: Likewise. * ldfile.h: Likewise. * ld.h: Likewise. * ldlang.c: Likewise. * ldlang.h: Likewise. * ldmain.c: Likewise.
* 2000-09-29 Kazu Hirata <kazu@hxi.com>Kazu Hirata2000-09-291-9/+5
| | | | | | | | | | | | | * deffile.h: Fix formatting. * ld.h: Likewise. * ldctor.h: Likewise. * ldemul.h: Likewise. * ldexp.h: Likewise. * ldfile.h: Likewise. * ldlang.h: Likewise. * lexsup.c: Likewise. * mri.c: Likewise. * pe-dll.c: Likewise.
* Initial revisionRichard Henderson1999-05-031-0/+116