OSDN Git Service

2008-08-20 Jose Ruiz <ruiz@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2008 16:12:17 +0000 (16:12 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2008 16:12:17 +0000 (16:12 +0000)
* errno.c (__get_errno, __set_errno for MaRTE): Transform then into
weak symbols so we use the version provided by MaRTE when available.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139332 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/errno.c

index 1f3497d..811cbdb 100644 (file)
 
 #ifdef MaRTE
 
-/* Function that returns a pointer to the per-task errno variable */
-extern int *pthread_errno (void);
+/* MaRTE OS provides its own implementation of errno related functionality. We
+   want to ensure the use of the MaRTE version for tasking programs (the MaRTE
+   library will not be linked if no tasking constructs are used), so we use the
+   weak symbols mechanism to use the MaRTE version whenever is available. */
 
-int
-__get_errno (void)
-{
-  return *pthread_errno ();
-}
-
-/* Function __set_errno is already defined in package MaRTE.POSIX_Pthread */
+#pragma weak __get_errno
+#pragma weak __set_errno
 
-#else
+#endif
 
 #include <errno.h>
 int
@@ -68,5 +65,3 @@ __set_errno(int err)
 {
   errno = err;
 }
-
-#endif