summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-05-17 03:58:45 +0000
committerAlan Modra <amodra@gmail.com>2001-05-17 03:58:45 +0000
commitd1778b88f8d8444f15ecf2dbbbf680c5659efb53 (patch)
treed0c2d446eb4084bf8e218f551028a2e03d985b17 /bfd
parentaaa4f6d96fb87589796623dfc045d7a8b68c7228 (diff)
downloadbinutils-gdb-d1778b88f8d8444f15ecf2dbbbf680c5659efb53.tar.gz
Add a flag to asection, linker_has_input, and use it to reliably
determine whether an input section is the first one assigned to an output section.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/bfd-in2.h4
-rw-r--r--bfd/ecoff.c14
-rw-r--r--bfd/section.c15
4 files changed, 30 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b180d2e6778..85a6b1380dd 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2001-05-16 Alan Modra <amodra@one.net.au>
+
+ * section.c (asection): Add linker_has_input field.
+ (STD_SECTION): Adjust initialization to suit.
+ * ecoff.c (bfd_debug_section): Likewise.
+ * bfd-in2.h: Regenerate.
+
2001-05-15 Alexandre Oliva <aoliva@redhat.com>
* elf-m10300.c (mn10300_elf_relax_section): Don't relax
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index bce9c0e9d1b..c94b097812e 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1127,6 +1127,10 @@ typedef struct sec
/* A mark flag used by some of the linker backends. */
unsigned int linker_mark : 1;
+ /* Another mark flag used by some of the linker backends. Set for
+ output sections that have a input section. */
+ unsigned int linker_has_input : 1;
+
/* A mark flag used by some linker backends for garbage collection. */
unsigned int gc_mark : 1;
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 2237441e610..d05c15f2859 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -74,12 +74,14 @@ static unsigned int ecoff_armap_hash PARAMS ((CONST char *s,
static asection bfd_debug_section =
{
- /* name, id, index, next, flags, user_set_vma, reloc_done, */
- "*DEBUG*", 0, 0, NULL, 0, 0, 0,
- /* linker_mark, gc_mark, segment_mark, vma, lma, _cooked_size, */
- 0, 0, 0, 0, 0, 0,
- /* _raw_size, output_offset, output_section, alignment_power, */
- 0, 0, NULL, 0,
+ /* name, id, index, next, flags, user_set_vma, reloc_done, */
+ "*DEBUG*", 0, 0, NULL, 0, 0, 0,
+ /* linker_mark, linker_has_input, gc_mark, segment_mark, */
+ 0, 0, 0, 0,
+ /* vma, lma, _cooked_size, _raw_size, */
+ 0, 0, 0, 0,
+ /* output_offset, output_section, alignment_power, */
+ 0, NULL, 0,
/* relocation, orelocation, reloc_count, filepos, rel_filepos, */
NULL, NULL, 0, 0, 0,
/* line_filepos, userdata, contents, lineno, lineno_count, */
diff --git a/bfd/section.c b/bfd/section.c
index 623e8b697a0..ad9046285e6 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -372,6 +372,10 @@ CODE_FRAGMENT
. {* A mark flag used by some of the linker backends. *}
. unsigned int linker_mark : 1;
.
+. {* Another mark flag used by some of the linker backends. Set for
+. output sections that have a input section. *}
+. unsigned int linker_has_input : 1;
+.
. {* A mark flag used by some linker backends for garbage collection. *}
. unsigned int gc_mark : 1;
.
@@ -578,11 +582,14 @@ static const asymbol global_syms[] =
/* name, id, index, next, flags, user_set_vma, reloc_done, */ \
{ NAME, IDX, 0, NULL, FLAGS, 0, 0, \
\
- /* linker_mark, gc_mark, segment_mark, vma, lma, _cooked_size, */ \
- 0, 1, 0, 0, 0, 0, \
+ /* linker_mark, linker_has_input, gc_mark, segment_mark, */ \
+ 0, 0, 1, 0, \
+ \
+ /* vma, lma, _cooked_size, _raw_size, */ \
+ 0, 0, 0, 0, \
\
- /* _raw_size, output_offset, output_section, alignment_power, */ \
- 0, 0, (struct sec *) &SEC, 0, \
+ /* output_offset, output_section, alignment_power, */ \
+ 0, (struct sec *) &SEC, 0, \
\
/* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
NULL, NULL, 0, 0, 0, \