mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-17 04:43:17 +08:00
gas: Add md_generic_table_relax_frag
Add md_generic_table_relax_frag for TC_GENERIC_RELAX_TABLE targets so that a backend can extend relax_frag beyond TC_GENERIC_RELAX_TABLE. * write.c (md_generic_table_relax_frag): New. Defined to relax_frag if not defined. (relax_segment): Call md_generic_table_relax_frag instead of relax_frag.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2019-12-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* write.c (md_generic_table_relax_frag): New. Defined to
|
||||||
|
relax_frag if not defined.
|
||||||
|
(relax_segment): Call md_generic_table_relax_frag instead of
|
||||||
|
relax_frag.
|
||||||
|
|
||||||
2019-12-12 Alan Modra <amodra@gmail.com>
|
2019-12-12 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* config/tc-aarch64.c (get_aarch64_insn): Avoid signed overflow.
|
* config/tc-aarch64.c (get_aarch64_insn): Avoid signed overflow.
|
||||||
|
@ -1210,6 +1210,11 @@ If you do not define @code{md_relax_frag}, you may define
|
|||||||
machine independent code knows how to use such a table to relax PC relative
|
machine independent code knows how to use such a table to relax PC relative
|
||||||
references. See @file{tc-m68k.c} for an example. @xref{Relaxation}.
|
references. See @file{tc-m68k.c} for an example. @xref{Relaxation}.
|
||||||
|
|
||||||
|
@item md_generic_table_relax_frag
|
||||||
|
@cindex md_generic_table_relax_frag
|
||||||
|
If defined, it is a C statement that is invoked, instead of
|
||||||
|
the default implementation, to scan @code{TC_GENERIC_RELAX_TABLE}.
|
||||||
|
|
||||||
@item md_prepare_relax_scan
|
@item md_prepare_relax_scan
|
||||||
@cindex md_prepare_relax_scan
|
@cindex md_prepare_relax_scan
|
||||||
If defined, it is a C statement that is invoked prior to scanning
|
If defined, it is a C statement that is invoked prior to scanning
|
||||||
|
@ -2481,6 +2481,10 @@ write_object_file (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TC_GENERIC_RELAX_TABLE
|
#ifdef TC_GENERIC_RELAX_TABLE
|
||||||
|
#ifndef md_generic_table_relax_frag
|
||||||
|
#define md_generic_table_relax_frag relax_frag
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Relax a fragment by scanning TC_GENERIC_RELAX_TABLE. */
|
/* Relax a fragment by scanning TC_GENERIC_RELAX_TABLE. */
|
||||||
|
|
||||||
long
|
long
|
||||||
@ -3031,7 +3035,8 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass)
|
|||||||
#ifdef TC_GENERIC_RELAX_TABLE
|
#ifdef TC_GENERIC_RELAX_TABLE
|
||||||
/* The default way to relax a frag is to look through
|
/* The default way to relax a frag is to look through
|
||||||
TC_GENERIC_RELAX_TABLE. */
|
TC_GENERIC_RELAX_TABLE. */
|
||||||
growth = relax_frag (segment, fragP, stretch);
|
growth = md_generic_table_relax_frag (segment, fragP,
|
||||||
|
stretch);
|
||||||
#endif /* TC_GENERIC_RELAX_TABLE */
|
#endif /* TC_GENERIC_RELAX_TABLE */
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user