aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/obj-coff.c2
-rw-r--r--gas/config/obj-coff.h4
-rw-r--r--gas/doc/internals.texi7
-rw-r--r--gas/write.c4
5 files changed, 23 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c41533d..c8da338 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -5,6 +5,12 @@
1999-09-11 Donn Terry <donn@interix.com>
+ * write.c (write_relocs): Call SET_SECTION_RELOCS if it is
+ defined.
+ * config/obj-coff.h (SET_SECTION_RELOCS): Define.
+ * doc/internals.texi (Object format backend): Document
+ SET_SECTION_RELOCS.
+
* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
relocations against global symbols if TE_PE.
diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index aa1ff29..3bdc73c 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -1314,6 +1314,8 @@ coff_adjust_section_syms (abfd, sec, x)
&& sec != bss_section)
return;
secsym = section_symbol (sec);
+ /* This is an estimate; we'll plug in the real value using
+ SET_SECTION_RELOCS later */
SA_SET_SCN_NRELOC (secsym, nrelocs);
SA_SET_SCN_NLINNO (secsym, nlnno);
}
diff --git a/gas/config/obj-coff.h b/gas/config/obj-coff.h
index a8799a3..16d7986 100644
--- a/gas/config/obj-coff.h
+++ b/gas/config/obj-coff.h
@@ -841,4 +841,8 @@ extern void obj_coff_pe_handle_link_once ();
extern void obj_coff_init_stab_section PARAMS ((segT));
#define INIT_STAB_SECTION(seg) obj_coff_init_stab_section (seg)
+/* Store the number of relocations in the section aux entry. */
+#define SET_SECTION_RELOCS(sec, relocs, n) \
+ SA_SET_SCN_NRELOC (section_symbol (sec), n)
+
#endif /* OBJ_FORMAT_H */
diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi
index 7f92105..6dc9ac7 100644
--- a/gas/doc/internals.texi
+++ b/gas/doc/internals.texi
@@ -1374,6 +1374,13 @@ completed, but before the relocations have been generated.
@item obj_frob_file_after_relocs
If you define this macro, GAS will call it after the relocs have been
generated.
+
+@item SET_SECTION_RELOCS (@var{sec}, @var{relocs}, @var{n})
+@cindex SET_SECTION_RELOCS
+If you define this, it will be called after the relocations have been set for
+the section @var{sec}. The list of relocations is in @var{relocs}, and the
+number of relocations is in @var{n}. This is only used with
+@code{BFD_ASSEMBLER}.
@end table
@node Emulations
diff --git a/gas/write.c b/gas/write.c
index 20fdde0..e386ece 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1068,6 +1068,10 @@ write_relocs (abfd, sec, xxx)
(bfd_get_section_flags (abfd, sec)
& (flagword) ~SEC_RELOC));
+#ifdef SET_SECTION_RELOCS
+ SET_SECTION_RELOCS (sec, relocs, n);
+#endif
+
#ifdef DEBUG3
{
int i;