/* bfdlink.h -- header file for BFD link routines
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2019 Free Software Foundation, Inc.
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
/* Type of this entry. */
ENUM_BITFIELD (bfd_link_hash_type) type : 8;
- /* Symbol is referenced in a normal object file, as distict from a LTO
- IR object file. */
- unsigned int non_ir_ref : 1;
+ /* Symbol is referenced in a normal regular object file,
+ as distinct from a LTO IR object file. */
+ unsigned int non_ir_ref_regular : 1;
+
+ /* Symbol is referenced in a normal dynamic object file,
+ as distinct from a LTO IR object file. */
+ unsigned int non_ir_ref_dynamic : 1;
/* Symbol is a built-in define. These will be overridden by PROVIDE
in a linker script. */
/* Symbol defined in a linker script. */
unsigned int ldscript_def : 1;
+ /* Symbol will be converted from absolute to section-relative. Set for
+ symbols defined by a script from "dot" (also SEGMENT_START or ORIGIN)
+ outside of an output section statement. */
+ unsigned int rel_from_abs : 1;
+
/* A union of information depending upon the type. */
union
{
struct bfd_link_hash_entry *next;
/* BFD symbol was found in. */
bfd *abfd;
- /* For __start_<name> and __stop_<name> symbols, the first
- input section matching the name. */
- asection *section;
} undef;
/* bfd_link_hash_defined, bfd_link_hash_defweak. */
struct
/* TRUE if all data symbols should be dynamic. */
unsigned int dynamic_data: 1;
+ /* TRUE if section groups should be resolved. */
+ unsigned int resolve_section_groups: 1;
+
/* Which symbols to strip. */
ENUM_BITFIELD (bfd_link_strip) strip : 2;
/* TRUE if PT_GNU_RELRO segment should be created. */
unsigned int relro: 1;
+ /* TRUE if separate code segment should be created. */
+ unsigned int separate_code: 1;
+
/* Nonzero if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
should be created. 1 for DWARF2 tables, 2 for compact tables. */
unsigned int eh_frame_hdr_type: 2;
/* TRUE if ok to have multiple definition. */
unsigned int allow_multiple_definition: 1;
+ /* TRUE if ok to have prohibit multiple definition of absolute symbols. */
+ unsigned int prohibit_multiple_definition_absolute: 1;
+
/* TRUE if ok to have version with no definition. */
unsigned int allow_undefined_version: 1;
/* TRUE if the linker script contained an explicit PHDRS command. */
unsigned int user_phdrs: 1;
+ /* TRUE if program headers ought to be loaded. */
+ unsigned int load_phdrs: 1;
+
/* TRUE if we should check relocations after all input files have
been opened. */
unsigned int check_relocs_after_open_input: 1;
- /* TRUE if BND prefix in PLT entries is always generated. */
- unsigned int bndplt: 1;
-
/* TRUE if generation of .interp/PT_INTERP should be suppressed. */
unsigned int nointerp: 1;
- /* TRUE if we shouldn't check relocation overflow. */
- unsigned int no_reloc_overflow_check: 1;
-
- /* TRUE if generate a 1-byte NOP as suffix for x86 call instruction. */
- unsigned int call_nop_as_suffix : 1;
+ /* TRUE if common symbols should be treated as undefined. */
+ unsigned int inhibit_common_definition : 1;
- /* The 1-byte NOP for x86 call instruction. */
- char call_nop_byte;
+ /* TRUE if "-Map map" is passed to linker. */
+ unsigned int has_map_file : 1;
/* Char that may appear as the first char of a symbol, but should be
skipped (like symbol_leading_char) when looking up symbols in
backend to decide. */
int extern_protected_data;
- /* > 0 to treat undefined weak symbol in the executable as dynamic,
- requiring dynamic relocation. */
+ /* 1 to make undefined weak symbols dynamic when building a dynamic
+ object. 0 to resolve undefined weak symbols to zero. -1 to let
+ the backend decide. */
int dynamic_undefined_weak;
/* Non-zero if auto-import thunks for DATA items in pei386 DLLs