/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
constchar* strings3[] = { # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # undef DEF
};
staticint ret = 1;
int print_status() {
fprintf(stderr, "%s\n", ret ? "FAIL" : "PASS"); return ret;
}
/* On ARM, this creates a .tbss section before .init_array, which * elfhack could then pick instead of .init_array. * Also, when .tbss is big enough, elfhack may wrongfully consider * following sections as part of the PT_TLS segment. * Finally, gold makes TLS segments end on an aligned virtual address, * even when the underlying section ends before that, and elfhack
* sanity checks may yield an error. */
__thread int foo;
__thread longlongint bar[512];
/* We need a .bss that can hold at least 2 pointers. The static in
* end_test() plus this variable should do. */
size_t dummy;
void end_test() { static size_t count = 0; /* Only exit when both constructors have been called */ if (++count == 2) {
ret = 0; // Avoid the dummy variable being stripped out at link time because // it's unused.
dummy = 1;
}
}
void test() { int i = 0, j = 0, k = 0; # define DEF_(a, i, w) \ if (a[i++] != str_##w) return; # define DEF(w) DEF_(strings, i, w) # include "test.c" # include "test.c" # include "test.c" # undef DEF # define DEF(w) DEF_(strings2, j, w) # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # undef DEF # define DEF(w) DEF_(strings3, k, w) # include "test.c" # include "test.c" # include "test.c" # include "test.c" # include "test.c" # undef DEF if (i != sizeof(strings) / sizeof(strings[0]) &&
j != sizeof(strings2) / sizeof(strings2[0]) &&
k != sizeof(strings3) / sizeof(strings3[0]))
fprintf(stderr, "WARNING: Test doesn't cover the whole array\n");
end_test();
}
# pragma GCC visibility pop #endif
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-05)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.