diff --git a/src/OpenGL/compiler/debug.cpp b/src/OpenGL/compiler/debug.cpp
index e507ff6..b30632d 100644
--- a/src/OpenGL/compiler/debug.cpp
+++ b/src/OpenGL/compiler/debug.cpp
@@ -1,8 +1,16 @@
+// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
 //
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
 //
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
 
 // debug.cpp: Debugging utilities.
 
@@ -19,18 +27,18 @@
 #ifdef TRACE_ENABLED
 extern "C" {
 void Trace(const char *format, ...) {
-    if (!format) return;
+	if (!format) return;
 
-    TParseContext* parseContext = GetGlobalParseContext();
-    if (parseContext) {
-        char buf[kTraceBufferLen];
-        va_list args;
-        va_start(args, format);
-        vsnprintf(buf, kTraceBufferLen, format, args);
-        va_end(args);
+	TParseContext* parseContext = GetGlobalParseContext();
+	if (parseContext) {
+		char buf[kTraceBufferLen];
+		va_list args;
+		va_start(args, format);
+		vsnprintf(buf, kTraceBufferLen, format, args);
+		va_end(args);
 
-        parseContext->trace(buf);
-    }
+		parseContext->trace(buf);
+	}
 }
 }  // extern "C"
 #endif  // TRACE_ENABLED
