#include #include #include #include #define ALIGN16(a) a __attribute__((aligned (16))) void *run_test(void *arg) { ALIGN16(char t[16]); if ((long)&t[0] & 15) { fprintf(stderr, "pthread 16 byte stack variable alignment failed: t %p\n", &t[0]); exit(-1); } return NULL; } int main(int argc, char *argv[]) { ALIGN16(char m[16]); int stat; pthread_t tid; if ((long)&m[0] & 15) { fprintf(stderr, "main thread 16 byte stack variable alignment failed: m %p\n", &m[0]); return -1; } stat = pthread_create(&tid, NULL, &run_test, NULL); if (stat) { fprintf(stderr, "pthread_create failed: %s\n", strerror(stat)); return -1; } stat = pthread_join(tid, NULL); if (stat) { fprintf(stderr, "pthread_join failed: %s\n", strerror(stat)); return -1; } printf("Test passed\n"); return 0; }