[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Libunwind-devel] [PATCH 02/35] Use GCC __BIGGEST_ALIGNMENT__ for sos-po
From: |
Tommi Rantala |
Subject: |
[Libunwind-devel] [PATCH 02/35] Use GCC __BIGGEST_ALIGNMENT__ for sos-pool MAX_ALIGN |
Date: |
Tue, 18 Sep 2012 16:31:11 +0300 |
Use the __BIGGEST_ALIGNMENT__ macro provided by GCC for sos_alloc()
allocation alignment. The macro gives ``the largest alignment ever used
for any data type on the target machine you are compiling for.''
__BIGGEST_ALIGNMENT__ also has some other nice properties, e.g. it is
power-of-two on all architectures (note that on i386, sizeof(long
double) = 12), and on some architectures (e.g. SuperH) the alignment
requirement can be lower than sizeof(long double).
---
src/mi/mempool.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/mi/mempool.c b/src/mi/mempool.c
index 6fb5afe..a18bb21 100644
--- a/src/mi/mempool.c
+++ b/src/mi/mempool.c
@@ -25,7 +25,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. */
#include "libunwind_i.h"
+/* From GCC docs: ``Gcc also provides a target specific macro
+ * __BIGGEST_ALIGNMENT__, which is the largest alignment ever used for any data
+ * type on the target machine you are compiling for.'' */
+#ifdef __BIGGEST_ALIGNMENT__
+#define MAX_ALIGN __BIGGEST_ALIGNMENT__
+#else
#define MAX_ALIGN (sizeof (long double))
+#endif
static char sos_memory[SOS_MEMORY_SIZE];
static char *sos_memp;
--
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 <=
- [Libunwind-devel] [PATCH 03/35] Workaround non-power-of-two i386 sizeof(long double) in src/mi/mempool.c, Tommi Rantala, 2012/09/18
- [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