Reject shaders using attribute aliasing.

The current code rejects any shaders that use more than the caps
allow, but a bug would crash us before the check. We don't support
aliasing in shaders that use a lot of uniforms because this
causes problems with the D3D back-end, currently. This changes the
crash in the dEQP aliasing tests to a link error.

See dEQP-GLES2.functional.attribute_location.bind_aliasing.*

BUG=angleproject:901

Change-Id: I6906d3345abe9f89cfa0aa6cec4be26b5b2851d0
Reviewed-on: https://chromium-review.googlesource.com/266928
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
diff --git a/src/libANGLE/Program.h b/src/libANGLE/Program.h
index 0afa572..aa40d93 100644
--- a/src/libANGLE/Program.h
+++ b/src/libANGLE/Program.h
@@ -224,7 +224,10 @@
     void unlink(bool destroy = false);
     void resetUniformBlockBindings();
 
-    bool linkAttributes(InfoLog &infoLog, const AttributeBindings &attributeBindings, const Shader *vertexShader);
+    bool linkAttributes(const Data &data,
+                        InfoLog &infoLog,
+                        const AttributeBindings &attributeBindings,
+                        const Shader *vertexShader);
     bool linkUniformBlocks(InfoLog &infoLog, const Shader &vertexShader, const Shader &fragmentShader, const Caps &caps);
     bool areMatchingInterfaceBlocks(gl::InfoLog &infoLog, const sh::InterfaceBlock &vertexInterfaceBlock,
                                     const sh::InterfaceBlock &fragmentInterfaceBlock);