[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Libunwind-devel] [PATCH 03/35] Workaround non-power-of-two i386 sizeof(
From: |
Tommi Rantala |
Subject: |
[Libunwind-devel] [PATCH 03/35] Workaround non-power-of-two i386 sizeof(long double) in src/mi/mempool.c |
Date: |
Tue, 18 Sep 2012 16:31:12 +0300 |
To ensure that we return properly aligned pointers from sos_alloc(),
MAX_ALIGN must be a power-of-two. On i386 the power-of-two assumption
fails as sizeof(long double) = 12. Fix this by rounding up to 16.
---
src/mi/mempool.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/mi/mempool.c b/src/mi/mempool.c
index a18bb21..3355265 100644
--- a/src/mi/mempool.c
+++ b/src/mi/mempool.c
@@ -31,7 +31,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. */
#ifdef __BIGGEST_ALIGNMENT__
#define MAX_ALIGN __BIGGEST_ALIGNMENT__
#else
-#define MAX_ALIGN (sizeof (long double))
+/* Crude hack to check that MAX_ALIGN is power-of-two.
+ * sizeof(long double) = 12 on i386. */
+#define MAX_ALIGN_(n) (n < 8 ? 8 : \
+ n < 16 ? 16 : n)
+#define MAX_ALIGN MAX_ALIGN_(sizeof (long double))
#endif
static char sos_memory[SOS_MEMORY_SIZE];
--
1.7.9.5
- [Libunwind-devel] [PATCH 00/35] patchset, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 06/35] Remove unneeded `cmpxchg_ptr()' from include/libunwind_i.h, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 04/35] Align `sos_memory' to MAX_ALIGN, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 01/35] Remove unneeded `atomic_ops.h' inclusion in `dwarf.h', Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 02/35] Use GCC __BIGGEST_ALIGNMENT__ for sos-pool MAX_ALIGN, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 03/35] Workaround non-power-of-two i386 sizeof(long double) in src/mi/mempool.c,
Tommi Rantala <=
- [Libunwind-devel] [PATCH 11/35] PPC: remove unused `PAGE_START' macro from Ginit.c, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 05/35] Simplify `sos_alloc()' implementation, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 09/35] IA64: avoid -Wunused-but-set-variable in src/ia64/init.h, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 10/35] Remove unused src/x86_64/Lis_signal_frame.c, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 15/35] Clear out `ip' to avoid -Wuninitialized warning in tests/test-coredump-unwind.c, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 07/35] Use __sync builtin atomics on all architectures if available, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 13/35] HPPA: kludge out unused variable in unw_get_save_loc() stub, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 08/35] Apply UNW_ALIGN more in src/mi/mempool.c, Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 12/35] HPPA: properly check dwarf_get() return value in unw_step(), Tommi Rantala, 2012/09/18
- [Libunwind-devel] [PATCH 17/35] Workaround volatileness warning in tests/ia64-test-setjmp.c, Tommi Rantala, 2012/09/18