aboutsummaryrefslogtreecommitdiff
path: root/src/include/postgres.h
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1999-06-10 22:59:22 +0000
committerBruce Momjian <bruce@momjian.us>1999-06-10 22:59:22 +0000
commitd852d31ea3926fbfe2705a1789d1f4ef4946c7b4 (patch)
tree23b0c259126a82e3bfadb2b112fee6c14f4be60a /src/include/postgres.h
parent70dfc8c11e16fb3c23f73395220dc21c34dcca80 (diff)
downloadpostgresql-d852d31ea3926fbfe2705a1789d1f4ef4946c7b4.tar.gz
postgresql-d852d31ea3926fbfe2705a1789d1f4ef4946c7b4.zip
This patch should enable 6.5 to build on Motorola 68000 architecture.
It comes from Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>.
Diffstat (limited to 'src/include/postgres.h')
-rw-r--r--src/include/postgres.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/include/postgres.h b/src/include/postgres.h
index 1edaf853988..051d65cec01 100644
--- a/src/include/postgres.h
+++ b/src/include/postgres.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1995, Regents of the University of California
*
- * $Id: postgres.h,v 1.22 1999/05/03 19:10:14 momjian Exp $
+ * $Id: postgres.h,v 1.23 1999/06/10 22:59:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -63,7 +63,21 @@ typedef Oid regproc;
typedef Oid RegProcedure;
/* ptr to func returning (char *) */
+#if defined(__mc68000__) && defined(__ELF__)
+/* The m68k SVR4 ABI defines that pointers are returned in %a0 instead of
+ * %d0. So if a function pointer is declared to return a pointer, the
+ * compiler may look only into %a0, but if the called function was declared
+ * to return return an integer type, it puts its value only into %d0. So the
+ * caller doesn't pink up the correct return value. The solution is to
+ * declare the function pointer to return int, so the compiler picks up the
+ * return value from %d0. (Functions returning pointers put their value
+ * *additionally* into %d0 for compability.) The price is that there are
+ * some warnings about int->pointer conversions...
+ */
+typedef int32 ((*func_ptr) ());
+#else
typedef char *((*func_ptr) ());
+#endif
#define RegProcedureIsValid(p) OidIsValid(p)