aboutsummaryrefslogtreecommitdiff
path: root/sim/common
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2021-05-29 16:07:43 -0400
committerMike Frysinger <vapier@gentoo.org>2021-06-12 23:51:35 -0400
commitad9cc2097049a04dc6fa0a593a59f4a3b4807c6f (patch)
treeee8209786ce5600003dcd3646231d32a5fe4251e /sim/common
parentdd8e16ea7b2b929480a3cfac894af78aecc7608e (diff)
downloadgdb-ad9cc2097049a04dc6fa0a593a59f4a3b4807c6f.zip
gdb-ad9cc2097049a04dc6fa0a593a59f4a3b4807c6f.tar.gz
gdb-ad9cc2097049a04dc6fa0a593a59f4a3b4807c6f.tar.bz2
sim: start unifying portability shims
There are some functions that gnulib does not yet provide fallbacks for, so start a common file of our own for holding existing stubs.
Diffstat (limited to 'sim/common')
-rw-r--r--sim/common/ChangeLog6
-rw-r--r--sim/common/Make-common.in1
-rw-r--r--sim/common/local.mk1
-rw-r--r--sim/common/portability.c67
-rw-r--r--sim/common/portability.h47
5 files changed, 122 insertions, 0 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 5d713c6..8f44658 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,11 @@
2021-06-12 Mike Frysinger <vapier@gentoo.org>
+ * Make-common.in (COMMON_OBJS_NAMES): Add portability.o.
+ * local.mk (%C%_libcommon_a_SOURCES): Add %D%/portability.c.
+ * portability.c, portability.h: New files.
+
+2021-06-12 Mike Frysinger <vapier@gentoo.org>
+
* Make-common.in (SIM_NEW_COMMON_OBJS): Move sim-load.o to ...
(COMMON_OBJS_NAMES): ... here. Rename var from COMMON_OBJS.
(COMMON_OBJS): Redefine.
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 8454d16..7a5bbc1 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -254,6 +254,7 @@ EXTRA_LIBS = $(BFD_LIB) $(OPCODES_LIB) $(LIBINTL) $(LIBIBERTY_LIB) \
$(CONFIG_LIBS) $(SIM_EXTRA_LIBS) $(LIBDL) $(LIBGNU) $(LIBGNU_EXTRA_LIBS)
COMMON_OBJS_NAMES = \
+ portability.o \
sim-load.o \
version.o
COMMON_OBJS = $(COMMON_OBJS_NAMES:%=../common/common_libcommon_a-%)
diff --git a/sim/common/local.mk b/sim/common/local.mk
index a340feb..076335d 100644
--- a/sim/common/local.mk
+++ b/sim/common/local.mk
@@ -34,6 +34,7 @@ noinst_LIBRARIES += %D%/libcommon.a
-I../bfd \
-I..
%C%_libcommon_a_SOURCES = \
+ %D%/portability.c \
%D%/sim-load.c \
%D%/version.c
diff --git a/sim/common/portability.c b/sim/common/portability.c
new file mode 100644
index 0000000..f0ccc46
--- /dev/null
+++ b/sim/common/portability.c
@@ -0,0 +1,67 @@
+/* Portability shims for missing OS support.
+ Copyright (C) 2021 Free Software Foundation, Inc.
+ Contributed by Mike Frysinger.
+
+This file is part of the GNU Simulators.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This must come before any other includes. */
+#include "defs.h"
+
+#include <unistd.h>
+
+#include "portability.h"
+
+#ifndef HAVE_GETEGID
+int getegid(void)
+{
+ return 0;
+}
+#endif
+
+#ifndef HAVE_GETEUID
+int geteuid(void)
+{
+ return 0;
+}
+#endif
+
+#ifndef HAVE_GETGID
+int getgid(void)
+{
+ return 0;
+}
+#endif
+
+#ifndef HAVE_GETUID
+int getuid(void)
+{
+ return 0;
+}
+#endif
+
+#ifndef HAVE_SETGID
+int setgid(int gid)
+{
+ return -1;
+}
+#endif
+
+#ifndef HAVE_SETUID
+int setuid(int uid)
+{
+ return -1;
+}
+#endif
diff --git a/sim/common/portability.h b/sim/common/portability.h
new file mode 100644
index 0000000..12971f6
--- /dev/null
+++ b/sim/common/portability.h
@@ -0,0 +1,47 @@
+/* Portability shims for missing OS support.
+ Copyright (C) 2021 Free Software Foundation, Inc.
+ Contributed by Mike Frysinger.
+
+This file is part of the GNU Simulators.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef PORTABILITY_H
+#define PORTABILITY_H
+
+#ifndef HAVE_GETEGID
+int getegid(void);
+#endif
+
+#ifndef HAVE_GETEUID
+int geteuid(void);
+#endif
+
+#ifndef HAVE_GETGID
+int getgid(void);
+#endif
+
+#ifndef HAVE_GETUID
+int getuid(void);
+#endif
+
+#ifndef HAVE_SETGID
+int setgid(int gid);
+#endif
+
+#ifndef HAVE_SETUID
+int setuid(int uid);
+#endif
+
+#endif