]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StdLib/LibC/Main/assert.c
StdLib/LibC: avoid LTO code for compiler intrinsics
[mirror_edk2.git] / StdLib / LibC / Main / assert.c
index a20a656ef0a2889661f7e1476bfe696b0a4f512d..a6b96d81d71e776e5bd61b01a6f2b5cd4b779131 100644 (file)
@@ -1,31 +1,57 @@
-/**\r
-  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+/** @file\r
+  The implementation of the __assert function used internally by the assert macro\r
+  to insert diagnostic messages into code.\r
+\r
+  Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials are licensed and made available under\r
   the terms and conditions of the BSD License that accompanies this distribution.\r
   The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
+  http://opensource.org/licenses/bsd-license.\r
 \r
   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 **/\r
-//#include  <Uefi.h>\r
-//#include  <Library/UefiLib.h>\r
-\r
 #include  <LibConfig.h>\r
 #include  <sys/EfiCdefs.h>\r
 \r
 #include  <stdio.h>\r
 #include  <stdlib.h>\r
 \r
+/** Internal helper function for the assert macro.\r
+    The __assert function prints a diagnostic message then exits the\r
+    currently running application.\r
+\r
+    This function should NEVER be called directly.\r
+\r
+    Some pre-processors do not provide the __func__ identifier.  When that is\r
+    the case, __func__ will be NULL.  This function accounts for this and\r
+    will modify the diagnostic message appropriately.\r
+\r
+\r
+    @param[in]    file          The name of the file containing the assert.\r
+    @param[in]    func          The name of the function containing the assert\r
+                                or NULL.\r
+    @param[in]    line          The line number the assert is located on.\r
+    @param[in]    failedexpr    A literal representation of the assert's expression.\r
+\r
+    @return       The __assert function will never return.  It terminates execution\r
+                  of the current application and returns to the environment that\r
+                  the application was launched from.\r
+**/\r
 void\r
-__assert(const char *func, const char *file, int line, const char *failedexpr)\r
+__assert(\r
+  IN  const char *file,\r
+  IN  const char *func,\r
+  IN  int         line,\r
+  IN  const char *failedexpr\r
+  )\r
 {\r
   if (func == NULL)\r
     printf("Assertion failed: (%s), file %s, line %d.\n",\r
                 failedexpr, file, line);\r
   else\r
-    printf("Assertion failed: (%s), function %s, file %s, line %d.\n",\r
-                failedexpr, func, file, line);\r
+    printf("Assertion failed: (%s), file %s, function %s, line %d.\n",\r
+                failedexpr, file, func, line);\r
   abort();\r
   /* NOTREACHED */\r
 }\r