Add support for non-contiguous memory regions
[deliverable/binutils-gdb.git] / bfd / section.c
index 470792de144e8c47b025d7f995462b335fbbe166..eef118f3c3fd0e9e81e547d242c50b76f4428b05 100644 (file)
@@ -1,5 +1,5 @@
 /* Object file "section" support for the BFD library.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -154,6 +154,10 @@ CODE_FRAGMENT
 .  {* A unique sequence number.  *}
 .  unsigned int id;
 .
+.  {* A unique section number which can be used by assembler to
+.     distinguish different sections with the same section name.  *}
+.  unsigned int section_id;
+.
 .  {* Which section in the bfd; 0..n-1 as sections are created in a bfd.  *}
 .  unsigned int index;
 .
@@ -287,6 +291,10 @@ CODE_FRAGMENT
 .     else up the line will take care of it later.  *}
 .#define SEC_LINKER_CREATED           0x100000
 .
+.  {* This section contains a section ID to distinguish different
+.     sections with the same section name.  *}
+.#define SEC_ASSEMBLER_SECTION_ID     0x100000
+.
 .  {* This section should not be subject to garbage collection.
 .     Also set to inform the linker that this section should not be
 .     listed in the link map as discarded.  *}
@@ -536,11 +544,17 @@ CODE_FRAGMENT
 .  {* Early in the link process, map_head and map_tail are used to build
 .     a list of input sections attached to an output section.  Later,
 .     output sections use these fields for a list of bfd_link_order
-.     structs.  *}
+.     structs.  The linked_to_symbol_name field is for ELF assembler
+.     internal use.  *}
 .  union {
 .    struct bfd_link_order *link_order;
 .    struct bfd_section *s;
+.    const char *linked_to_symbol_name;
 .  } map_head, map_tail;
+. {* Points to the output section this section is already assigned to, if any.
+.    This is used when support for non-contiguous memory regions is enabled.  *}
+. struct bfd_section *already_assigned;
+.
 .} asection;
 .
 .{* Relax table contains information about instructions which can
@@ -688,8 +702,8 @@ CODE_FRAGMENT
 .}
 .
 .#define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                  \
-.  {* name, id,  index, next, prev, flags, user_set_vma,            *} \
-.  {  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,                          \
+.  {* name, id,  section_id, index, next, prev, flags, user_set_vma, *}        \
+.  {  NAME, IDX, 0,          0,     NULL, NULL, FLAGS, 0,              \
 .                                                                      \
 .  {* linker_mark, linker_has_input, gc_mark, decompress_status,    *} \
 .     0,           0,                1,       0,                       \
@@ -722,7 +736,10 @@ CODE_FRAGMENT
 .     (struct bfd_symbol *) SYM, &SEC.symbol,                          \
 .                                                                      \
 .  {* map_head, map_tail                                            *} \
-.     { NULL }, { NULL }                                               \
+.     { NULL }, { NULL },                                              \
+.                                                                      \
+.  {* already_assigned                                             *}  \
+.     NULL                                                             \
 .    }
 .
 .{* We use a macro to initialize the static asymbol structures because
This page took 0.025598 seconds and 4 git commands to generate.