Ok, using `gcc-nm -C {} | grep VecStorage` I get two hits: SkOpts_hsw.o 00000000 W skvx::Vec<16, float>::VecStorage(float) 00000000 W skvx::Vec<16, float>::VecStorage(float) 00000000 W skvx::Vec<16, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<16, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<16, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<16, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<2, float>::VecStorage(float) 00000000 W skvx::Vec<2, float>::VecStorage(float) 00000000 W skvx::Vec<2, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<2, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<2, int>::VecStorage(int) 00000000 W skvx::Vec<2, int>::VecStorage(int) 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<2, unsigned long>::VecStorage(unsigned long) 00000000 W skvx::Vec<2, unsigned long>::VecStorage(unsigned long) 00000000 W skvx::Vec<2, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<2, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<32, int>::VecStorage(int) 00000000 W skvx::Vec<32, int>::VecStorage(int) 00000000 W skvx::Vec<4, float>::VecStorage(float) 00000000 W skvx::Vec<4, float>::VecStorage(float) 00000000 W skvx::Vec<4, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<4, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<4, int>::VecStorage(int) 00000000 W skvx::Vec<4, int>::VecStorage(int) 00000000 W skvx::Vec<4, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<4, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<4, unsigned long>::VecStorage(unsigned long) 00000000 W skvx::Vec<4, unsigned long>::VecStorage(unsigned long) 00000000 W skvx::Vec<4, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<4, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<8, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<8, unsigned char>::VecStorage(unsigned char) 00000000 W skvx::Vec<8, int>::VecStorage(int) 00000000 W skvx::Vec<8, int>::VecStorage(int) 00000000 W skvx::Vec<8, unsigned short>::VecStorage(unsigned short) 00000000 W skvx::Vec<8, unsigned short>::VecStorage(unsigned short) SkOpts_skx.o 00000000 W skvx::Vec<16, int>::VecStorage(int) 00000000 W skvx::Vec<16, int>::VecStorage(int) 00000000 W skvx::Vec<2, int>::VecStorage(int) 00000000 W skvx::Vec<2, int>::VecStorage(int) 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<2, unsigned int>::VecStorage(unsigned int) 00000000 W skvx::Vec<4, int>::VecStorage(int) 00000000 W skvx::Vec<4, int>::VecStorage(int) 00000000 W skvx::Vec<8, int>::VecStorage(int) 00000000 W skvx::Vec<8, int>::VecStorage(int) But why would upstreams binary work, while ours crashes? Shouldn't that be a general problem, then?