about summary refs log tree commit diff
path: root/sysdeps/ieee754/flt-32/e_exp2f.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/flt-32/e_exp2f.c')
-rw-r--r--sysdeps/ieee754/flt-32/e_exp2f.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
index 752272db46..ea55304d9a 100644
--- a/sysdeps/ieee754/flt-32/e_exp2f.c
+++ b/sysdeps/ieee754/flt-32/e_exp2f.c
@@ -1,5 +1,5 @@
 /* Single-precision floating point 2^x.
-   Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2000, 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
 
@@ -38,8 +38,15 @@
 
 #include "t_exp2f.h"
 
-static const volatile float TWOM100 = 7.88860905e-31;
-static const volatile float TWO127 = 1.7014118346e+38;
+/* XXX I know the assembler generates a warning about incorrect section
+   attributes. But without the attribute here the compiler places the
+   constants in the .data section.  Ideally the constant is placed in
+   .rodata.cst4 so that it can be merged, but gcc sucks, it ICEs when
+   we try to force this section on it.  --drepper  */
+static const volatile float TWOM100 __attribute__ ((section (".rodata")))
+  = 7.88860905e-31;
+static const volatile float TWO127 __attribute__ ((section (".rodata")))
+  = 1.7014118346e+38;
 
 float
 __ieee754_exp2f (float x)