From: Nick Clifton Date: Thu, 13 Jun 2013 08:53:35 +0000 (+0000) Subject: PR gas/15602 X-Git-Tag: sid-snapshot-20130701~181 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=909c7f9cbf0b6c33f14a68be54723c89cfbadf8c;p=platform%2Fupstream%2Fbinutils.git PR gas/15602 * config/tc-m68k.h (TC_CHECK_ADJUSTED_BROKEN_DOT_WORD): Define. * config/tc-m68k.c (tc_m68k_check_adjusted_broken_word): New function. Generates an error if the adjusted offset is out of a 16-bit range. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 8c5165b..2113356 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2013-06-13 Nick Clifton + + PR gas/15602 + * config/tc-m68k.h (TC_CHECK_ADJUSTED_BROKEN_DOT_WORD): Define. + * config/tc-m68k.c (tc_m68k_check_adjusted_broken_word): New + function. Generates an error if the adjusted offset is out of a + 16-bit range. + 2013-06-12 Sandra Loosemore * config/tc-nios2.c (md_apply_fix): Mask constant diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index ea47ba4..d16b5d9 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -8133,3 +8133,17 @@ tc_m68k_frame_initial_instructions (void) cfi_add_CFA_def_cfa (sp_regno, -DWARF2_CIE_DATA_ALIGNMENT); cfi_add_CFA_offset (DWARF2_DEFAULT_RETURN_COLUMN, DWARF2_CIE_DATA_ALIGNMENT); } + +/* Check and emit error if broken-word handling has failed to fix up a + case-table. This is called from write.c, after doing everything it + knows about how to handle broken words. */ + +void +tc_m68k_check_adjusted_broken_word (offsetT new_offset, struct broken_word *brokwP) +{ + if (new_offset > 32767 || new_offset < -32768) + as_bad_where (brokwP->frag->fr_file, brokwP->frag->fr_line, + _("Adjusted signed .word (%#lx) overflows: `switch'-statement too large."), + (long) new_offset); +} + diff --git a/gas/config/tc-m68k.h b/gas/config/tc-m68k.h index bcf4607..bf938f2 100644 --- a/gas/config/tc-m68k.h +++ b/gas/config/tc-m68k.h @@ -188,3 +188,9 @@ extern void tc_m68k_frame_initial_instructions (void); /* However, follow compiler's guidance when it specifies encoding for LSDA. */ # define CFI_DIFF_LSDA_OK 1 #endif + +struct broken_word; +#define TC_CHECK_ADJUSTED_BROKEN_DOT_WORD(new_offset, brokw) \ + tc_m68k_check_adjusted_broken_word ((offsetT) (new_offset), (brokw)) +extern void tc_m68k_check_adjusted_broken_word (offsetT, + struct broken_word *);