Alrighty, I added shader logging and got this output:
Vertex: Vertex shader was successfully compiled to run on hardware. Fragment: Fragment shader failed to compile with the following errors: ERROR: 0:1: error(#132) Syntax error: '<' parse error ERROR: error(#273) 1 compilation errors. No code generated Fragment shader(s) were not successfully compiled before glLinkProgram() was called. Link failed.
So for whatever reason, my file reading code is adding random crap to the end of the files which is causing it to fail.
std::ifstream file; std::stringstream buffer; // First load the vertex shader file.open(filename.c_str()); // Read into buffer buffer << file.rdbuf(); file.close(); return buffer.str();