summaryrefslogtreecommitdiff
path: root/gold/script.cc
Commit message (Collapse)AuthorAgeFilesLines
* * layout.cc (Layout::attach_allocated_section_to_segment): Don'tIan Lance Taylor2008-08-131-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set tls_segment_ or relro_segment_. (Layout::make_output_segment): Set tls_segment_ and relro_segment_ when appropriate. * output.h (Output_section::clear_is_relro): New function. * output.cc (Output_segment::add_output_section): Handle SHF_TLS sections specially even when output_data_ is empty. (Output_segment::maximum_alignment): When first section is relro, only force alignment for PT_LOAD segments. * script.cc (script_data_segment_align): New function. (script_data_segment_relro_end): New function. * script-c.h (script_data_segment_align): Declare. (script_data_segment_relro_end): Declare. * script-sections.h (class Script_sections): Declare data_segment_align and data_segment_relro_end. Add fields segment_align_index_ and saw_relro_end_. * script-sections.cc (class Sections_element): Add set_is_relro virtual function. Add new bool* parameter to place_orphan_here. Add get_output_section virtual function. (class Output_section_definition): Add set_is_relro. Add new bool* parameter to place_orphan_here. Add get_output_section. Add is_relro_ field. (Output_section_definition::Output_section_definition): Initialize evaluated_address_, evaluated_load_address, evaluated_addralign_, and is_relro_ fields. (Output_section_definition::place_orphan_here): Add is_relro parameter. (Output_section_definition::set_section_addresses): Set relro for output section. (Output_section_definition::alternate_constraint): Likewise. (class Orphan_output_section): Add new bool* parameter to place_orphan_here. Add get_output_section. (Orphan_output_section::place_orphan_here): Add is_relro parameter. (Script_sections::Script_sections): Initialize data_segment_align_index_ and saw_relro_end_. (Script_sections::data_segment_align): New function. (Script_sections::data_segment_relro_end): New function. (Script_sections::place_orphan): Set or clear is_relro. (Script_sections::set_section_addresses): Force alignment of first TLS section. * yyscript.y (exp): Call script_data_segment_align and script_data_segment_relro_end. * testsuite/relro_script_test.t: New file. * testsuite/relro_test.cc (using_script): Declare. (t1, t2): Test using_script. * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test. (relro_script_test_SOURCES): Define. (relro_script_test_DEPENDENCIES): Define. (relro_script_test_LDFLAGS): Define. (relro_script_test_LDADD): Define. (relro_script_test.so): New target. * testsuite/Makefile.in: Rebuild.
* * script.cc (Script_options::finalize_symbols): Finalize SECTIONSIan Lance Taylor2008-07-291-2/+6
| | | | | | | | | | symbols before other symbols. * testsuite/script_test_2.cc (test_addr): Declare. (test_addr_alias): Declare. (main): Check that test_addr and test_addr_alias have the right values. * testsuite/script_test_2.t: Define test_addr_alias and test_addr.
* PR 6647Ian Lance Taylor2008-07-231-8/+19
| | | | | | | | | | | | | | | | | | | | * script.cc (Version_script_info::get_versions): Don't add empty version tag to return value. (Version_script_info::get_symbol_version_helper): Change return type to bool. Add pversion parameter. Change all callers. (script_register_vers_node): Don't require a non-NULL tag. * script.h (class Version_script_info): Update declarations. (Version_script_info::get_symbol_version): Change return type to bool. Add version parameter. Change all callers. * symtab.cc (Sized_symbol::add_from_relobj): Rework version handling. Handle an empty version from a version script. (Symbol_table::define_special_symbol): Likewise. * testsuite/ver_test_10.script: New file. * testsuite/ver_test_10.sh: New file. * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh. (check_DATA): Add ver_test_10.syms. (ver_test_10.syms, ver_test_10.so): New target. * testsuite/Makefile.in: Rebuild.
* 2008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>Craig Silverstein2008-06-301-2/+2
| | | | | | * script.cc (Lex::can_continue_name): Make '?' allowable in version-script names. * testsuite/version_script.map: Change glob pattern to use '?'
* * mapfile.cc: New file.Ian Lance Taylor2008-05-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * mapfile.h: New file. * options.h (class General_options): Add -M/--print-map and -Map. * options.cc (General_options::finalize): Make -M equivalent to -Map -. * main.cc: Include <cstdio> and "mapfile.h". (main): Open mapfile if requested. * gold.cc (class Middle_runner): Add mapfile_ field. Update constructor. Change caller. (queue_initial_tasks): Add mapfile parameter. Change caller. (queue_middle_tasks): Likewise. * gold.h (queue_initial_tasks, queue_middle_tasks): Update declarations. * archive.cc: Include "mapfile.h". (Archive::add_symbols): Add mapfile parameter. Change all callers. Pass mapfile, symbol, and reason to include_member. (Archive::include_all_members): Add mapfile parameter. Change all callers. (Archive::include_member): Add mapfile, sym, and why parameters. Change all callers. Report inclusion to map file. * archive.h: Include "fileread.h". (class Archive): Update declarations. (Archive::file): New const method. (class Add_archive_symbols): Add mapfile_ field. Update constructor. Change all callers. * readsyms.h (class Read_symbols): Likewise. (class Finish_group): Likewise. (class Read_script): Likewise. * common.cc: Include "mapfile.h". (Symbol_table::allocate_commons): Add mapfile parameter. Change all callers. (Symbol_table::do_allocate_commons): Likewise. (Symbol_table::do_allocate_commons_list): Likewise. Report common symbol allocation to mapfile. * common.h (class Allocate_commons_task): Add mapfile_ field. Update constructor. Change all callers. * symtab.h (class Symbol_table): Update declarations. * layout.cc: Include "mapfile.h". (Layout_task_runner::run): Print information to mapfile. (Layout::create_gold_note): Change Output_data_fixed_space to Output_data_zero_fill. (Layout::create_build_id): Likewise. (Layout::print_to_mapfile): New function. * layout.h (class Layout_task_runner): Add mapfile_ field. Update constructor. Change caller. (class Layout): Declare print_to_mapfile. * output.cc (Output_section::Input_section::print_to_mapfile): New function. (Output_section::add_input_section): If producing a map, always add to input_sections_ list. (Output_section::do_print_to_mapfile): New function. (Output_segment::print_sections_to_mapfile): New function. (Output_segment::print_section_list_to_mapfile): New function. * output.h: Include "mapfile.h". (Output_data::print_to_mapfile): New function. (Output_data::do_print_to_mapfile): New virtual function. (Output_segment_headers::do_print_to_mapfile): New function. (Output_file_header::do_print_to_mapfile): New function. (Output_data_const::do_print_to_mapfile): New function. (class Output_data_const_buffer): Add map_name_ field. Update constructor. Change all callers. Add do_print_to_mapfile function. (class Output_data_fixed_space): Likewise. (class Output_data_space): Likewise. (class Output_data_zero_fill): New class. (Output_data_strtab::do_print_to_mapfile): New function. (Output_data_reloc_base::do_print_to_mapfile): New function. (Output_relocatable_relocs::do_print_to_mapfile): New function. (Output_data_group::do_print_to_mapfile): New function. (Output_data_got::do_print_to_mapfile): New function. (Output_data_dynamic::do_print_to_mapfile): New function. (Output_symtab_xindex::do_print_to_mapfile): New function. (class Output_section): Declare do_print_to_mapflie. Declare print_to_mapfile in Input_section. (class Output_segment): Declare new functions. * object.h (Sized_relobj::symbol_count): New function. * script-sections.cc (Output_section_element_dot_assignment::set_section_addresses): Change Output_data_fixed_space to Output_data_zero_fill. (Output_data_expression::do_print_to_mapfile): New function. * script.cc (read_input_script): Add mapfile parameter. Change all callers. * script.h (read_input_script): Update declaration. * ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function. (Eh_frame::do_print_to_mapfile): New function. * merge.h (Output_merge_data::do_print_to_mapfile): New function. (Output_merge_string::do_print_to_mapfile): New function. * i386.cc (Output_data_plt_i386::do_print_to_mapfile): New function. * sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New function. * x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New function. * Makefile.am (CCFILES): Add mapfile.cc. (HFILES): Add mapfile.h. * Makefile.in: Rebuild.
* PR gold/5986Ian Lance Taylor2008-03-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | | Fix problems building gold with gcc 4.3.0. * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define. (gold_error_at_location, gold_warning_at_location): Use it. * configure.ac: Check whether we can compile and use a template function with a printf attribute. * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value when jumping over bytes. * object.cc: Instantiate Object::read_section_data. * debug.h: Include <cstring> * dwarf_reader.cc: Include <algorithm> * main.cc: Include <cstring>. * options.cc: Include <cstring>. * output.cc: Include <cstring>. * script.cc: Include <cstring>. * script.h: Include <string>. * symtab.cc: Include <cstring> and <algorithm>. * target-select.cc: Include <cstring>. * version.cc: Include <string>. * testsuite/testmain.cc: Include <cstdlib>. * configure, config.in: Rebuild.
* From Craig Silverstein: rework option handling to make it easier toIan Lance Taylor2008-03-041-1/+1
| | | | add a new option.
* From Craig Silverstein: rename some option functions in preparationIan Lance Taylor2008-03-041-2/+2
| | | | for reworking option handling.
* Support -d/--define-common.Ian Lance Taylor2008-02-281-0/+9
|
* Read input scripts which look like input objects with properIan Lance Taylor2008-02-281-60/+12
| | | | serialization.
* Don't check assertions until symbols are finalized. Create an outputIan Lance Taylor2008-02-281-4/+14
| | | | | section if the script uses a data statement with no input sections. Don't create a loadable segment for the headers if there is no room.
* From Craig Silverstein: Have Parameters point to General_options.Ian Lance Taylor2008-02-281-5/+5
|
* Fix handling of ENTRY in linker script.Ian Lance Taylor2008-02-271-1/+1
|
* From Craig Silverstein: rework handling of Script_options.Ian Lance Taylor2008-02-261-4/+9
|
* From Craig Silverstein: rename option functions for future optionIan Lance Taylor2008-02-261-4/+4
| | | | handling rewrite.
* Assignments in linker scripts override definitions from object files.Ian Lance Taylor2008-02-131-1/+6
|
* Track sections for expressions.Ian Lance Taylor2008-02-091-22/+22
|
* Don't read linker scripts in binary mode.Ian Lance Taylor2008-02-081-2/+5
|
* Ignore version scripts for relocatable links.Ian Lance Taylor2008-02-071-0/+9
|
* Implement --just-symbols, including -R FILE. Fix symbol values whenIan Lance Taylor2008-02-071-2/+2
| | | | doing a relocatable link.
* Implement PHDRS.Ian Lance Taylor2008-02-041-2/+59
|
* Implement SIZEOF_HEADERS, section constraints, other minor linkerIan Lance Taylor2008-02-041-1/+22
| | | | script items.
* Fully implement the SECTIONS clause.Ian Lance Taylor2008-02-041-14/+126
|
* Don't pass around the target in order to define symbols; get it fromIan Lance Taylor2008-01-261-6/+4
| | | | the parameters instead.
* Parse a SECTIONS clause in a linker script.Ian Lance Taylor2008-01-231-190/+551
|
* From Craig Silverstein: Handle quoted strings differently in versionIan Lance Taylor2008-01-181-13/+36
| | | | scripts, and handle extern "C++" in the middle of a block.
* From Andrew Chatham and Craig Silverstein: Add support for versionIan Lance Taylor2008-01-151-55/+420
| | | | scripts.
* Support assignments and expressions in linker scripts.Ian Lance Taylor2008-01-091-192/+382
|
* Report linker script errors with line numbers. Ignore OUTPUT_FORMATIan Lance Taylor2008-01-071-2/+12
| | | | with three arguments, and ignore OUTPUT_ARCH.
* Add support for -e and for ENTRY in linker scripts.Ian Lance Taylor2008-01-061-3/+29
|
* Rewrite workqueue. This version eliminates the master thread, andIan Lance Taylor2007-12-141-18/+21
| | | | reduces the amount of locking required to find a new thread to run.
* Add threading support.Ian Lance Taylor2007-11-221-0/+4
|
* From Craig Silverstein: Implement OPTION in linker scripts.Ian Lance Taylor2007-10-301-5/+33
|
* From Craig Silverstein: Remove extraneous comment.Ian Lance Taylor2007-10-291-4/+0
|
* From Craig Silverstein and Ian Lance Taylor: Process --script option.Ian Lance Taylor2007-10-271-0/+45
|
* From Craig Silverstein: preliminary support for OPTION in linker script.Ian Lance Taylor2007-10-261-0/+10
|
* Remove extraneous newlines.Ian Lance Taylor2007-10-141-1/+1
|
* Run all error handling through an Errors object. Delete output fileIan Lance Taylor2007-10-141-3/+1
| | | | on error.
* Full support for --sysroot.Ian Lance Taylor2007-10-041-10/+46
|
* From Craig Silverstein: add support for searching for input filesIan Lance Taylor2007-10-021-14/+8
| | | | named in linker scripts.
* Rework File_read interface. Get file size. Use pread whenIan Lance Taylor2007-09-251-6/+10
| | | | available.
* Break out default pbytes argument to read and get_view routines,Ian Lance Taylor2007-09-251-1/+1
| | | | adding new routines.
* From Craig Silverstein: Fix bug when reading large script files.Ian Lance Taylor2007-09-241-0/+1
|
* Add licensing text to every source file.Ian Lance Taylor2007-09-221-0/+20
|
* Make relative references in linker scripts absolute and update achatham2007-08-211-1/+14
| | | | comment about relocate() being called.
* Hash tables, dynamic section, i386 PLT, gold_assert.Ian Lance Taylor2006-11-291-7/+12
|
* More dynamic object support, initial scripting support.Ian Lance Taylor2006-11-141-0/+1188