* config/tc-sh.c (md_apply_fix): Do not allow the generic code in

fixup_segment() to repeat a range check on a value that have already
  been checked here.
* gas/sh/basic.exp: Run "too_large" dump test.
* gas/sh/too_large.s: New test file.  Check that .byte directives do not
  generate a bogus overflow message.
* gas/sh/too_large.s: New test control file.
This commit is contained in:
Nick Clifton 2006-07-12 09:02:00 +00:00
parent 743a4945a6
commit 01eaea5ad2
6 changed files with 68 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2006-07-12 Nick Clifton <nickc@redhat.com>
* config/tc-sh.c (md_apply_fix): Do not allow the generic code in
fixup_segment() to repeat a range check on a value that have
already been checked here.
2006-07-07 James E Wilson <wilson@specifix.com>
* config/tc-mips.c (mips_cpu_info_table): Add sb1a.

View File

@ -4080,6 +4080,11 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
}
if (max != 0 && (val < min || val > max))
as_bad_where (fixP->fx_file, fixP->fx_line, _("offset out of range"));
else if (max != 0)
/* Stop the generic code from trying to overlow check the value as well.
It may not have the correct value anyway, as we do not store val back
into *valP. */
fixP->fx_no_overflow = 1;
if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
fixP->fx_done = 1;

View File

@ -1,3 +1,10 @@
2006-07-12 Nick Clifton <nickc@redhat.com>
* gas/sh/basic.exp: Run "too_large" dump test.
* gas/sh/too_large.s: New test file. Check that .byte directives
do not generate a bogus overflow message.
* gas/sh/too_large.s: New test control file.
2006-07-05 Julian Brown <julian@codesourcery.com>
* gas/arm/vfp-neon-syntax.d: Tweak expected fmsrr syntax.

View File

@ -167,6 +167,8 @@ if [istarget sh*-*-*] then {
# Test --allow-reg-prefix.
run_dump_test "reg-prefix"
run_dump_test "too_large"
}
}

View File

@ -0,0 +1,9 @@
#name: Check for bogus overflow errors in .byte directives
#as: -big -relax -isa=sh4a
#nm: -n
[ ]*U \.L318
[ ]*U \.L319
[ ]*U \.L320
[ ]*U \.L321
0+00100 t \.L307

View File

@ -0,0 +1,39 @@
.file "too_large.c"
.text
nop
.align 8
.L307:
.byte .L302-.L307
.byte .L303-.L307
.byte .L304-.L307
.byte .L305-.L307
.L304:
mov.l .L318,r1
jsr @r1
mov r8,r4
lds r0,fpul
fsts fpul,fr1
flds fr1,fpul
sts fpul,r0
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
mov.l @r15+,r8
rts
nop
.L305:
mov.l .L319,r7
jsr @r7
mov r8,r4
lds r0,fpul
bra .L307
fsts fpul,fr1
.L303:
mov.l .L320,r6
jsr @r6
mov r8,r4
lds r0,fpul
bra .L307
fsts fpul,fr1
.L302:
mov.l .L321,r5