// layout.h -- lay out output file sections for gold -*- C++ -*-
-// Copyright (C) 2006-2015 Free Software Foundation, Inc.
+// Copyright (C) 2006-2017 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
// and ALIGN are the extra flags and alignment of the segment.
struct Unique_segment_info
{
- // Identifier for the segment. ELF segments dont have names. This
+ // Identifier for the segment. ELF segments don't have names. This
// is used as the name of the output section mapped to the segment.
const char* name;
// Additional segment flags.
|| strncmp(name, ".gnu.linkonce.wi.",
sizeof(".gnu.linkonce.wi.") - 1) == 0
|| strncmp(name, ".line", sizeof(".line") - 1) == 0
- || strncmp(name, ".stab", sizeof(".stab") - 1) == 0);
+ || strncmp(name, ".stab", sizeof(".stab") - 1) == 0
+ || strncmp(name, ".pdr", sizeof(".pdr") - 1) == 0);
}
// Return true if RELOBJ is an input file whose base name matches
const Output_data_reloc_generic* dyn_rel,
bool add_debug, bool dynrel_includes_plt);
+ // Add a target-specific dynamic tag with constant value.
+ void
+ add_target_specific_dynamic_tag(elfcpp::DT tag, unsigned int val);
+
// Compute and write out the build ID if needed.
void
write_build_id(Output_file*, unsigned char*, size_t) const;
void
create_gold_note();
- // Record whether the stack must be executable.
+ // Record whether the stack must be executable, and a user-supplied size.
void
- create_executable_stack_info();
+ create_stack_segment();
// Create a build ID note if needed.
void
// Create the output sections for the symbol table.
void
create_symtab_sections(const Input_objects*, Symbol_table*,
- unsigned int, off_t*);
+ unsigned int, off_t*, unsigned int);
// Create the .shstrtab section.
Output_section*
create_dynamic_symtab(const Input_objects*, Symbol_table*,
Output_section** pdynstr,
unsigned int* plocal_dynamic_count,
+ unsigned int* pforced_local_dynamic_count,
std::vector<Symbol*>* pdynamic_symbols,
Versions* versions);
choose_output_section(const Relobj* relobj, const char* name,
elfcpp::Elf_Word type, elfcpp::Elf_Xword flags,
bool is_input_section, Output_section_order order,
- bool is_relro);
+ bool is_relro, bool is_reloc, bool match_input_spec);
// Create a new Output_section.
Output_section*