union etree_union *addr_tree;
lang_statement_list_type children;
const char *memspec;
- union lang_statement_union *next;
+ struct lang_output_section_statement_struct *next;
const char *name;
int processed;
int subsection_alignment; /* Alignment of components. */
int section_alignment; /* Alignment of start of section. */
+ int constraint;
+ bfd_boolean all_input_readonly;
union etree_union *load_base;
/* Whether to search for this entry as a dynamic archive. */
bfd_boolean dynamic;
+ /* Whether DT_NEEDED tags should be added for dynamic libraries in
+ DT_NEEDED tags from this entry. */
+ bfd_boolean add_needed;
+
+ /* Whether this entry should cause a DT_NEEDED tag only when
+ satisfying references from regular files, or always. */
+ bfd_boolean as_needed;
+
/* Whether to include the entire contents of an archive. */
bfd_boolean whole_archive;
lang_statement_header_type header;
const char *section_name;
union etree_union *address;
+ const segment_type *segment;
} lang_address_statement_type;
typedef struct
int iteration;
};
+/* Used by place_orphan to keep track of orphan sections and statements. */
+
+struct orphan_save {
+ const char *name;
+ flagword flags;
+ lang_output_section_statement_type *os;
+ asection **section;
+ lang_statement_union_type **stmt;
+ lang_output_section_statement_type **os_tail;
+};
+
extern struct unique_sections *unique_section_list;
extern lang_output_section_statement_type *abs_output_section;
enum section_type sectype,
etree_type *align,
etree_type *subalign,
- etree_type *);
+ etree_type *, int);
extern void lang_final
(void);
extern void lang_process
(void);
extern void lang_section_start
- (const char *, union etree_union *);
+ (const char *, union etree_union *, const segment_type *);
extern void lang_add_entry
(const char *, bfd_boolean);
extern void lang_add_target
(lang_input_statement_type *);
extern lang_output_section_statement_type *lang_output_section_find
(const char * const);
+extern lang_output_section_statement_type *lang_output_section_find_by_flags
+ (const asection *, lang_output_section_statement_type **exact);
+extern lang_output_section_statement_type *lang_insert_orphan
+ (lang_input_statement_type *, asection *, const char *,
+ lang_output_section_statement_type *, struct orphan_save *,
+ etree_type *, lang_statement_list_type *);
extern lang_input_statement_type *lang_add_input_file
(const char *, lang_input_file_enum_type, const char *);
extern void lang_add_keepsyms_file
extern void lang_register_vers_node
(const char *, struct bfd_elf_version_tree *, struct bfd_elf_version_deps *);
bfd_boolean unique_section_p
- (const char *);
+ (const asection *);
extern void lang_add_unique
(const char *);
extern const char *lang_get_output_target
extern void lang_update_definedness
(const char *, struct bfd_link_hash_entry *);
+extern void add_excluded_libs (const char *);
+
#endif