1*d7ec48d7SNico Weber // Test for ignorelist functionality of initialization-order checker. 2*d7ec48d7SNico Weber 3*d7ec48d7SNico Weber // RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-ignorelist-extra.cpp\ 4*d7ec48d7SNico Weber // RUN: %p/Helpers/initialization-ignorelist-extra2.cpp \ 5*d7ec48d7SNico Weber // RUN: -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t 6*d7ec48d7SNico Weber // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1 7*d7ec48d7SNico Weber // RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-ignorelist-extra.cpp\ 8*d7ec48d7SNico Weber // RUN: %p/Helpers/initialization-ignorelist-extra2.cpp \ 9*d7ec48d7SNico Weber // RUN: -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t 10*d7ec48d7SNico Weber // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1 11*d7ec48d7SNico Weber // RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-ignorelist-extra.cpp\ 12*d7ec48d7SNico Weber // RUN: %p/Helpers/initialization-ignorelist-extra2.cpp \ 13*d7ec48d7SNico Weber // RUN: -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t 14*d7ec48d7SNico Weber // RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1 15*d7ec48d7SNico Weber 16*d7ec48d7SNico Weber // Function is defined in another TU. 17*d7ec48d7SNico Weber int readBadGlobal(); 18*d7ec48d7SNico Weber int x = readBadGlobal(); // init-order bug. 19*d7ec48d7SNico Weber 20*d7ec48d7SNico Weber // Function is defined in another TU. 21*d7ec48d7SNico Weber int accessBadObject(); 22*d7ec48d7SNico Weber int y = accessBadObject(); // init-order bug. 23*d7ec48d7SNico Weber 24*d7ec48d7SNico Weber int readBadSrcGlobal(); 25*d7ec48d7SNico Weber int z = readBadSrcGlobal(); // init-order bug. 26*d7ec48d7SNico Weber main(int argc,char ** argv)27*d7ec48d7SNico Weberint main(int argc, char **argv) { 28*d7ec48d7SNico Weber return argc + x + y + z - 1; 29*d7ec48d7SNico Weber } 30