1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-21 23:27:39 +01:00

Use GCC __BIGGEST_ALIGNMENT__ for sos-pool MAX_ALIGN

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).
This commit is contained in:
Tommi Rantala 2012-09-12 14:13:13 +03:00
parent 0aa60f4f15
commit e6edad069c

View file

@ -25,7 +25,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "libunwind_i.h"
#define MAX_ALIGN (sizeof (long double))
/* 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;