From owner-pc532%daver@mips.com Sun Mar 25 02:50:00 1990 Reply-To: pc532@daver.bungi.com To: ian%sibyl.eleceng.ua.oz@augean.ua.oz.au Cc: pc532@daver.bungi.com Subject: Re: gcc 1.37.1 and the ns32k (update) Date: Sun, 25 Mar 90 02:14:14 EST From: David Taylor I think I may have forgotten to post these small changes from Jay Fenlason (the current maintainer of GAS). The changes are fairly small. The line numbers are *before* applying Ian's changes. The changes are fairly minor -- one was to as.c the other to ns32k.c. The intent of changes is to prevent infinite loops printing "Interrupted by signal 10" (as.c) and to avoid generating the bus error in the first place (ns32k.c). [The message was being generated on a sun4 -- sun4's have some strict alignment requirements.] The as.c change is: RCS file: RCS/as.c,v retrieving revision 1.1 diff -c -r1.1 as.c *** /tmp/,RCSt1006128 Sun Mar 25 01:59:22 1990 --- as.c Tue Mar 20 22:05:02 1990 *************** *** 283,289 **** --- 283,293 ---- got_sig(sig) int sig; { + static here_before = 0; + as_bad("Interrupted by signal %d",sig); + if(here_before++) + exit(1); } /* end: as.c */ and the ns32k.c change is: RCS file: RCS/ns32k.c,v retrieving revision 1.2 diff -c -r1.2 ns32k.c *** /tmp/,RCSt1006152 Sun Mar 25 02:01:02 1990 --- ns32k.c Tue Mar 20 22:04:57 1990 *************** *** 1062,1073 **** md_number_to_chars(memP+l,generic_bignum[l>>1],sizeof(LITTLENUM_TYPE)); } } else { /* flonum */ switch(size) { case 4: ! gen_to_words(memP,2,8); break; case 8: ! gen_to_words(memP,4,11); break; } } --- 1062,1081 ---- md_number_to_chars(memP+l,generic_bignum[l>>1],sizeof(LITTLENUM_TYPE)); } } else { /* flonum */ + LITTLENUM_TYPE words[4]; + switch(size) { case 4: ! gen_to_words(words,2,8); ! md_number_to_chars(memP ,(long)words[0],sizeof(LITTLENUM_TYPE)); ! md_number_to_chars(memP+sizeof(LITTLENUM_TYPE),(long)words[1],sizeof(LITTLENUM_TYPE)); break; case 8: ! gen_to_words(words,4,11); ! md_number_to_chars(memP ,(long)words[0],sizeof(LITTLENUM_TYPE)); ! md_number_to_chars(memP+sizeof(LITTLENUM_TYPE) ,(long)words[1],sizeof(LITTLENUM_TYPE)); ! md_number_to_chars(memP+2*sizeof(LITTLENUM_TYPE),(long)words[2],sizeof(LITTLENUM_TYPE)); ! md_number_to_chars(memP+3*sizeof(LITTLENUM_TYPE),(long)words[3],sizeof(LITTLENUM_TYPE)); break; } }