* [9fans] arm compiler bug @ 2013-01-02 9:05 cinap_lenrek 2013-01-02 9:26 ` Richard Miller ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: cinap_lenrek @ 2013-01-02 9:05 UTC (permalink / raw) To: 9fans 0 < -0x80000000 == 1 with 5c. the problem is caused by this: if(a == ACMP && f1->op == OCONST && p->from.offset < 0) { p->as = ACMN; p->from.offset = -p->from.offset; } because 0x80000000 == -0x80000000 adding the following check to that if expression fixes it: && p->from.offset != -p->from.offset silly python code. -- cinap ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 9:05 [9fans] arm compiler bug cinap_lenrek @ 2013-01-02 9:26 ` Richard Miller 2013-01-02 15:07 ` erik quanstrom 2013-01-02 18:32 ` Matthew Veety 2 siblings, 0 replies; 9+ messages in thread From: Richard Miller @ 2013-01-02 9:26 UTC (permalink / raw) To: 9fans Good catch. 2's complement integers are generally useful but it's easy to forget that they don't quite obey normal algebraic rules. The assumption that (a < 0) => (-a > 0) is the cause of many easily-missed bugs. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 9:05 [9fans] arm compiler bug cinap_lenrek 2013-01-02 9:26 ` Richard Miller @ 2013-01-02 15:07 ` erik quanstrom 2013-01-02 15:53 ` Charles Forsyth 2013-01-02 18:32 ` Matthew Veety 2 siblings, 1 reply; 9+ messages in thread From: erik quanstrom @ 2013-01-02 15:07 UTC (permalink / raw) To: cinap_lenrek, 9fans On Wed Jan 2 04:07:28 EST 2013, cinap_lenrek@gmx.de wrote: > 0 < -0x80000000 == 1 with 5c. i get the same results for all compilers: 0 < -0x80000000......yes 1 == -0x80000000......no 0 < -0x80000000 == 1......yes for [568]c. the last one is correct since the order of operations are (0 < -0x80000000) == 1 which is clearly true. - erik #include <u.h> #include <libc.h> void yesno(char *s, int bool) { print("%s...", s); if(bool) print("yes\n"); else print("no\n"); } void main(void) { yesno("0 < -0x80000000...", 0 < -0x80000000); yesno("1 == -0x80000000...", 1 == -0x80000000); yesno("0 < -0x80000000 == 1...", 0 < -0x80000000 == 1); exits(""); } ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 15:07 ` erik quanstrom @ 2013-01-02 15:53 ` Charles Forsyth 2013-01-02 15:55 ` Charles Forsyth 0 siblings, 1 reply; 9+ messages in thread From: Charles Forsyth @ 2013-01-02 15:53 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs those are being done at compile time. On 2 January 2013 15:07, erik quanstrom <quanstro@quanstro.net> wrote: > i get the same results for all compilers: ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 15:53 ` Charles Forsyth @ 2013-01-02 15:55 ` Charles Forsyth 0 siblings, 0 replies; 9+ messages in thread From: Charles Forsyth @ 2013-01-02 15:55 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs and 0x80000000 is thereby unsigned int, which changes the nature of the comparison. On 2 January 2013 15:53, Charles Forsyth <charles.forsyth@gmail.com> wrote: > those are being done at compile time. > > On 2 January 2013 15:07, erik quanstrom <quanstro@quanstro.net> wrote: >> i get the same results for all compilers: ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 9:05 [9fans] arm compiler bug cinap_lenrek 2013-01-02 9:26 ` Richard Miller 2013-01-02 15:07 ` erik quanstrom @ 2013-01-02 18:32 ` Matthew Veety 2013-01-02 18:34 ` erik quanstrom 2013-01-02 20:11 ` cinap_lenrek 2 siblings, 2 replies; 9+ messages in thread From: Matthew Veety @ 2013-01-02 18:32 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs Is this related to the bug I found in python on arm? On Jan 2, 2013, at 4:05, cinap_lenrek@gmx.de wrote: > 0 < -0x80000000 == 1 with 5c. > > the problem is caused by this: > > if(a == ACMP && f1->op == OCONST && p->from.offset < 0) { > p->as = ACMN; > p->from.offset = -p->from.offset; > } > > because 0x80000000 == -0x80000000 > > adding the following check to that if expression fixes it: > > && p->from.offset != -p->from.offset > > silly python code. > > -- > cinap > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 18:32 ` Matthew Veety @ 2013-01-02 18:34 ` erik quanstrom 2013-01-02 20:16 ` cinap_lenrek 2013-01-02 20:11 ` cinap_lenrek 1 sibling, 1 reply; 9+ messages in thread From: erik quanstrom @ 2013-01-02 18:34 UTC (permalink / raw) To: 9fans On Wed Jan 2 13:32:30 EST 2013, mveety@gmail.com wrote: > Is this related to the bug I found in python on arm? > it would be much more helpful if "the bug" and "python code" were replaced with specific references. - erik ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 18:34 ` erik quanstrom @ 2013-01-02 20:16 ` cinap_lenrek 0 siblings, 0 replies; 9+ messages in thread From: cinap_lenrek @ 2013-01-02 20:16 UTC (permalink / raw) To: 9fans the offending line that triggered it is in Python/getargs.c in the convertsimple() function (the ival < INT_MIN comparsion): case 'i': {/* signed int */ int *p = va_arg(*p_va, int *); long ival; if (float_argument_error(arg)) return converterr("integer<i>", arg, msgbuf, bufsize); ival = PyInt_AsLong(arg); if (ival == -1 && PyErr_Occurred()) return converterr("integer<i>", arg, msgbuf, bufsize); else if (ival > INT_MAX) { PyErr_SetString(PyExc_OverflowError, "signed integer is greater than maximum"); return converterr("integer<i>", arg, msgbuf, bufsize); } else if (ival < INT_MIN) { PyErr_SetString(PyExc_OverflowError, "signed integer is less than minimum"); return converterr("integer<i>", arg, msgbuf, bufsize); } else *p = ival; break; } aijus 5e userspace arm emulator was a great help for reproducing this as i dint have a raspi. -- cinap ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [9fans] arm compiler bug 2013-01-02 18:32 ` Matthew Veety 2013-01-02 18:34 ` erik quanstrom @ 2013-01-02 20:11 ` cinap_lenrek 1 sibling, 0 replies; 9+ messages in thread From: cinap_lenrek @ 2013-01-02 20:11 UTC (permalink / raw) To: 9fans yes. -- cinap ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-01-02 20:16 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-01-02 9:05 [9fans] arm compiler bug cinap_lenrek 2013-01-02 9:26 ` Richard Miller 2013-01-02 15:07 ` erik quanstrom 2013-01-02 15:53 ` Charles Forsyth 2013-01-02 15:55 ` Charles Forsyth 2013-01-02 18:32 ` Matthew Veety 2013-01-02 18:34 ` erik quanstrom 2013-01-02 20:16 ` cinap_lenrek 2013-01-02 20:11 ` cinap_lenrek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).