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.
This commit is contained in:
Mike Frysinger
2021-05-29 16:07:43 -04:00
parent dd8e16ea7b
commit ad9cc20970
12 changed files with 157 additions and 19 deletions

View File

@@ -1,3 +1,9 @@
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 ...

View File

@@ -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-%)

View File

@@ -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

67
sim/common/portability.c Normal file
View File

@@ -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

47
sim/common/portability.h Normal file
View File

@@ -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