// layout.h -- lay out output file sections for gold -*- C++ -*-
-// Copyright (C) 2006-2018 Free Software Foundation, Inc.
+// Copyright (C) 2006-2020 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
set_unique_segment_for_sections_specified()
{ this->unique_segment_for_sections_specified_ = true; }
+ bool
+ is_lto_slim_object () const
+ { return this->lto_slim_object_; }
+
+ void
+ set_lto_slim_object ()
+ { this->lto_slim_object_ = true; }
+
// For incremental updates, allocate a block of memory from the
// free list. Find a block starting at or after MINOFF.
off_t
size_t cie_length, const unsigned char* fde_data,
size_t fde_length);
- // Remove .eh_frame information for a PLT. FDEs using the CIE must
- // be removed in reverse order to the order they were added.
+ // Remove all post-map .eh_frame information for a PLT.
void
remove_eh_frame_for_plt(Output_data* plt, const unsigned char* cie_data,
- size_t cie_length, const unsigned char* fde_data,
- size_t fde_length);
+ size_t cie_length);
// Scan a .debug_info or .debug_types section, and add summary
// information to the .gdb_index section.
const unsigned char* pr_data,
const Object* object);
+ // Merge per-object properties with program properties.
+ void
+ merge_gnu_properties(const Object* object);
+
+ // Add a target-specific property for the output .note.gnu.property section.
+ void
+ add_gnu_property(unsigned int note_type,
+ unsigned int pr_type,
+ size_t pr_datasz,
+ const unsigned char* pr_data);
+
// Add an Output_section_data to the layout. This is used for
// special sections like the GOT section. ORDER is where the
// section should wind up in the output segment. IS_RELRO is true
std::vector<Section_info> section_infos_;
};
- // Program properties from .note.gnu.properties sections.
+ // Program properties from .note.gnu.property sections.
struct Gnu_property
{
size_t pr_datasz;
Incremental_inputs* incremental_inputs_;
// Whether we record output section data created in script
bool record_output_section_data_from_script_;
+ // Set if this is a slim LTO object not loaded with a compiler plugin
+ bool lto_slim_object_;
// List of output data that needs to be removed at relaxation clean up.
Output_section_data_list script_output_section_data_list_;
// Structure to save segment states before entering the relaxation loop.