-
- /* Regression test: make sure that there's no conflict between
- * the TLS (thread-local storage) slots used via libEGL/bionic
- * and the TLS space allocated by the host toolchain. The array
- * declared here should remain unchanged regardless of GL activity.
- * Since this array is the first __thread storage declared in the main
- * program, glibc will allocate it before any others.
- */
- #define SLOT_FILLER (void *) 0x11122111 /* arbitrary non-zero value */
- #define S SLOT_FILLER
- __thread void *tls_space[64] = {
- S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
- S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
- S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
- S, S, S, S, S, S, S, S, S, S, S, S, S, S, S, S,
- };
- #undef S
-
- #include <stdlib.h>
- #include <EGL/egl.h>
- #include <stdio.h>
-
- int main(int argc, char **argv)
- {
- int i;
- int bad_tls = 0;
-
- EGLDisplay display;
- display = eglGetDisplay(NULL);
- printf("asd\n");
-
- for (i=0; i<64; ++i) {
- if (tls_space[i] != SLOT_FILLER) {
- printf("TLS array slot %d polluted: %p\n", i, tls_space[i]);
- bad_tls++;
- }
- }
- if (bad_tls)
- return 1;
-
- return 0;
- }
-