Index: bfd/doc/section.texi |
diff --git a/bfd/doc/section.texi b/bfd/doc/section.texi |
index 501370101a9fee74033b5f7e3e6bae162c02da04..cc6ee94ffaa163b92a3714a6b4ea6dc980dc5f6b 100644 |
--- a/bfd/doc/section.texi |
+++ b/bfd/doc/section.texi |
@@ -339,11 +339,11 @@ typedef struct bfd_section |
/* Type of sec_info information. */ |
unsigned int sec_info_type:3; |
-#define ELF_INFO_TYPE_NONE 0 |
-#define ELF_INFO_TYPE_STABS 1 |
-#define ELF_INFO_TYPE_MERGE 2 |
-#define ELF_INFO_TYPE_EH_FRAME 3 |
-#define ELF_INFO_TYPE_JUST_SYMS 4 |
+#define SEC_INFO_TYPE_NONE 0 |
+#define SEC_INFO_TYPE_STABS 1 |
+#define SEC_INFO_TYPE_MERGE 2 |
+#define SEC_INFO_TYPE_EH_FRAME 3 |
+#define SEC_INFO_TYPE_JUST_SYMS 4 |
/* Nonzero if this section uses RELA relocations, rather than REL. */ |
unsigned int use_rela_p:1; |
@@ -473,9 +473,6 @@ typedef struct bfd_section |
/* The BFD which owns the section. */ |
bfd *owner; |
- /* INPUT_SECTION_FLAGS if specified in the linker script. */ |
- struct flag_info *section_flag_info; |
- |
/* A symbol which points at this section only. */ |
struct bfd_symbol *symbol; |
struct bfd_symbol **symbol_ptr_ptr; |
@@ -503,28 +500,25 @@ struct relax_table @{ |
/* These sections are global, and are managed by BFD. The application |
and target back end are not permitted to change the values in |
- these sections. New code should use the section_ptr macros rather |
- than referring directly to the const sections. The const sections |
- may eventually vanish. */ |
+ these sections. */ |
+extern asection std_section[4]; |
+ |
#define BFD_ABS_SECTION_NAME "*ABS*" |
#define BFD_UND_SECTION_NAME "*UND*" |
#define BFD_COM_SECTION_NAME "*COM*" |
#define BFD_IND_SECTION_NAME "*IND*" |
-/* The absolute section. */ |
-extern asection bfd_abs_section; |
-#define bfd_abs_section_ptr ((asection *) &bfd_abs_section) |
-#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) |
-/* Pointer to the undefined section. */ |
-extern asection bfd_und_section; |
-#define bfd_und_section_ptr ((asection *) &bfd_und_section) |
-#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) |
/* Pointer to the common section. */ |
-extern asection bfd_com_section; |
-#define bfd_com_section_ptr ((asection *) &bfd_com_section) |
+#define bfd_com_section_ptr (&std_section[0]) |
+/* Pointer to the undefined section. */ |
+#define bfd_und_section_ptr (&std_section[1]) |
+/* Pointer to the absolute section. */ |
+#define bfd_abs_section_ptr (&std_section[2]) |
/* Pointer to the indirect section. */ |
-extern asection bfd_ind_section; |
-#define bfd_ind_section_ptr ((asection *) &bfd_ind_section) |
+#define bfd_ind_section_ptr (&std_section[3]) |
+ |
+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) |
+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) |
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) |
#define bfd_is_const_section(SEC) \ |
@@ -639,8 +633,8 @@ extern asection bfd_ind_section; |
/* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ |
0, 0, 0, 0, 0, 0, 0, \ |
\ |
- /* output_offset, output_section, alignment_power, */ \ |
- 0, (struct bfd_section *) &SEC, 0, \ |
+ /* output_offset, output_section, alignment_power, */ \ |
+ 0, &SEC, 0, \ |
\ |
/* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ |
NULL, NULL, 0, 0, 0, \ |
@@ -654,9 +648,6 @@ extern asection bfd_ind_section; |
/* target_index, used_by_bfd, constructor_chain, owner, */ \ |
0, NULL, NULL, NULL, \ |
\ |
- /* flag_info, */ \ |
- NULL, \ |
- \ |
/* symbol, symbol_ptr_ptr, */ \ |
(struct bfd_symbol *) SYM, &SEC.symbol, \ |
\ |
@@ -687,14 +678,29 @@ hash table entries. |
asection *bfd_get_section_by_name (bfd *abfd, const char *name); |
@end example |
@strong{Description}@* |
-Run through @var{abfd} and return the one of the |
-@code{asection}s whose name matches @var{name}, otherwise @code{NULL}. |
-@xref{Sections}, for more information. |
- |
-This should only be used in special cases; the normal way to process |
-all sections of a given name is to use @code{bfd_map_over_sections} and |
-@code{strcmp} on the name (or better yet, base it on the section flags |
-or something else) for each section. |
+Return the most recently created section attached to @var{abfd} |
+named @var{name}. Return NULL if no such section exists. |
+ |
+@findex bfd_get_next_section_by_name |
+@subsubsection @code{bfd_get_next_section_by_name} |
+@strong{Synopsis} |
+@example |
+asection *bfd_get_next_section_by_name (asection *sec); |
+@end example |
+@strong{Description}@* |
+Given @var{sec} is a section returned by @code{bfd_get_section_by_name}, |
+return the next most recently created section attached to the same |
+BFD with the same name. Return NULL if no such section exists. |
+ |
+@findex bfd_get_linker_section |
+@subsubsection @code{bfd_get_linker_section} |
+@strong{Synopsis} |
+@example |
+asection *bfd_get_linker_section (bfd *abfd, const char *name); |
+@end example |
+@strong{Description}@* |
+Return the linker created section attached to @var{abfd} |
+named @var{name}. Return NULL if no such section exists. |
@findex bfd_get_section_by_name_if |
@subsubsection @code{bfd_get_section_by_name_if} |