diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-03-02 15:32:56 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-03-02 15:32:56 +0000 |
commit | a6d06d7b86f724046b462115556d0df682f9f703 (patch) | |
tree | 640870a7d978c8a224fe317e862b65fddba6f40e /math | |
parent | 07e12bb391ae84eb74817d42feda42cff7f687e5 (diff) | |
download | glibc-a6d06d7b86f724046b462115556d0df682f9f703.tar.gz glibc-a6d06d7b86f724046b462115556d0df682f9f703.tar.xz glibc-a6d06d7b86f724046b462115556d0df682f9f703.zip |
Fix scalbn, scalbln integer overflow.
Diffstat (limited to 'math')
-rw-r--r-- | math/libm-test.inc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc index 5bc0d40872..ef7a253662 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -5790,6 +5790,15 @@ scalbn_test (void) TEST_fi_f (scalbn, 1, 0L, 1); + TEST_fi_f (scalbn, 1, INT_MAX, plus_infty); + TEST_fi_f (scalbn, 1, INT_MIN, plus_zero); + TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty); + TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero); + TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty); + TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero); + TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty); + TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero); + END (scalbn); } @@ -5812,6 +5821,35 @@ scalbln_test (void) TEST_fl_f (scalbln, 1, 0L, 1); + TEST_fi_f (scalbln, 1, INT_MAX, plus_infty); + TEST_fi_f (scalbln, 1, INT_MIN, plus_zero); + TEST_fi_f (scalbln, max_value, INT_MAX, plus_infty); + TEST_fi_f (scalbln, max_value, INT_MIN, plus_zero); + TEST_fi_f (scalbln, min_value, INT_MAX, plus_infty); + TEST_fi_f (scalbln, min_value, INT_MIN, plus_zero); + TEST_fi_f (scalbln, min_value / 4, INT_MAX, plus_infty); + TEST_fi_f (scalbln, min_value / 4, INT_MIN, plus_zero); + + TEST_fi_f (scalbln, 1, LONG_MAX, plus_infty); + TEST_fi_f (scalbln, 1, LONG_MIN, plus_zero); + TEST_fi_f (scalbln, max_value, LONG_MAX, plus_infty); + TEST_fi_f (scalbln, max_value, LONG_MIN, plus_zero); + TEST_fi_f (scalbln, min_value, LONG_MAX, plus_infty); + TEST_fi_f (scalbln, min_value, LONG_MIN, plus_zero); + TEST_fi_f (scalbln, min_value / 4, LONG_MAX, plus_infty); + TEST_fi_f (scalbln, min_value / 4, LONG_MIN, plus_zero); + +#if LONG_MAX >= 0x100000000 + TEST_fi_f (scalbln, 1, 0x88000000L, plus_infty); + TEST_fi_f (scalbln, 1, -0x88000000L, plus_zero); + TEST_fi_f (scalbln, max_value, 0x88000000L, plus_infty); + TEST_fi_f (scalbln, max_value, -0x88000000L, plus_zero); + TEST_fi_f (scalbln, min_value, 0x88000000L, plus_infty); + TEST_fi_f (scalbln, min_value, -0x88000000L, plus_zero); + TEST_fi_f (scalbln, min_value / 4, 0x88000000L, plus_infty); + TEST_fi_f (scalbln, min_value / 4, -0x88000000L, plus_zero); +#endif + END (scalbn); } |