Blame src/libmpg123/abi_align.h
|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
abi_align: An attempt to avoid breakage because of mixing
|
|
Packit |
c32a2d |
compilers with different alignment.
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
copyright 1995-2015 by the mpg123 project
|
|
Packit |
c32a2d |
free software under the terms of the LGPL 2.1
|
|
Packit |
c32a2d |
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
There used to be code that checks alignment, but it did not really
|
|
Packit |
c32a2d |
work anyway. The only straw we have is putting that alignment
|
|
Packit |
c32a2d |
attribute to API functions.
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#ifndef MPG123_H_ABI_ALIGN
|
|
Packit |
c32a2d |
#define MPG123_H_ABI_ALIGN
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#include "config.h"
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
/* ABI conformance for other compilers.
|
|
Packit |
c32a2d |
mpg123 needs 16byte-aligned (or more) stack for SSE and friends.
|
|
Packit |
c32a2d |
gcc provides that, but others don't necessarily. */
|
|
Packit |
c32a2d |
#ifdef ABI_ALIGN_FUN
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#ifndef attribute_align_arg
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#if defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__>1)
|
|
Packit |
c32a2d |
# define attribute_align_arg __attribute__((force_align_arg_pointer))
|
|
Packit |
c32a2d |
/* The gcc that can align the stack does not need the check... nor does it work with gcc 4.3+, anyway. */
|
|
Packit |
c32a2d |
#else
|
|
Packit |
c32a2d |
# define attribute_align_arg
|
|
Packit |
c32a2d |
#endif
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#endif /* attribute_align_arg */
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#else /* ABI_ALIGN_FUN */
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#define attribute_align_arg
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#endif /* ABI_ALIGN_FUN */
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#endif /* MPG123_H_ABI_ALIGN */
|