diff --git a/gas/ChangeLog b/gas/ChangeLog index d8d89f056a6..24a3c1510fc 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. diff --git a/gas/config/obj-coff-seh.c b/gas/config/obj-coff-seh.c index 88c4a87dc38..ad3fc8757a8 100644 --- a/gas/config/obj-coff-seh.c +++ b/gas/config/obj-coff-seh.c @@ -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) { diff --git a/gas/config/obj-coff-seh.h b/gas/config/obj-coff-seh.h index cf4d216e675..cf494851635 100644 --- a/gas/config/obj-coff-seh.h +++ b/gas/config/obj-coff-seh.h @@ -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 -