This patch adds a new pseudo-op - .seh_code - to structured exception handling

suite of ops.  It changes the current section back to the code section of the
current function.  This is helpful because the code section may not be .text.

	* config/obj-coff-seh.c (obj_coff_seh_code): New function -
	switches the current segment back to the code segment recorded
	when seh_proc was last invoked.
	* config/obj-coff-seh.h (SEH_CMDS): Add seh_code.
This commit is contained in:
Nick Clifton
2014-03-25 16:50:10 +00:00
parent bc9a55253e
commit 3c6256d29e
3 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2014-03-25 Nick Clifton <nickc@redhat.com>
* config/obj-coff-seh.c (obj_coff_seh_code): New function -
switches the current segment back to the code segment recorded
when seh_proc was last invoked.
* config/obj-coff-seh.h (SEH_CMDS): Add seh_code.
2014-03-25 Alan Modra <amodra@gmail.com>
* config/tc-ppc.c (ppc_is_toc_sym): Revert 2014-03-05.

View File

@ -169,6 +169,13 @@ seh_validate_seg (const char *directive)
return 0;
}
/* Switch back to the code section, whatever that may be. */
static void
obj_coff_seh_code (int ignored ATTRIBUTE_UNUSED)
{
subseg_set (seh_ctx_cur->code_seg, 0);
}
static void
switch_xdata (int subseg, segT code_seg)
{

View File

@ -56,6 +56,7 @@
.seh_savereg
.seh_savexmm
.seh_pushframe
.seh_code
*/
/* architecture specific pdata/xdata handling. */
@ -73,6 +74,7 @@
{"seh_32", obj_coff_seh_32, 1}, \
{"seh_no32", obj_coff_seh_32, 0}, \
{"seh_handler", obj_coff_seh_handler, 0}, \
{"seh_code", obj_coff_seh_code, 0}, \
{"seh_handlerdata", obj_coff_seh_handlerdata, 0},
/* Type definitions. */
@ -148,6 +150,7 @@ static void obj_coff_seh_32 (int);
static void obj_coff_seh_proc (int);
static void obj_coff_seh_handler (int);
static void obj_coff_seh_handlerdata (int);
static void obj_coff_seh_code (int);
#define UNDSEC bfd_und_section_ptr
@ -201,4 +204,3 @@ static void obj_coff_seh_handlerdata (int);
PEX64_SCOPE_ENTRY_SIZE * (IDX))
#endif