aboutsummaryrefslogtreecommitdiff
path: root/gnulib/import/getprogname.c
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.ibm.com>2021-01-22 13:55:45 -0600
committerSimon Marchi <simon.marchi@polymtl.ca>2021-02-05 13:35:20 -0500
commit9c9d63b15ad548f65f8bfd41cb7a4ef9af5ccb28 (patch)
treed232965a0537906ce89ec096cd97ac943991a6b7 /gnulib/import/getprogname.c
parent0110ec824ef40f3f08b8670bdfa2160d157e2000 (diff)
downloadbinutils-9c9d63b15ad548f65f8bfd41cb7a4ef9af5ccb28.zip
binutils-9c9d63b15ad548f65f8bfd41cb7a4ef9af5ccb28.tar.gz
binutils-9c9d63b15ad548f65f8bfd41cb7a4ef9af5ccb28.tar.bz2
gnulib: update to 776af40e0
This fixes PR27184, a failure to compile gdb due to cdefs.h being out of sync with glibc on ppc64le targets which are compiled with -mabi=ieeelongdouble and glibc 2.32. Likewise, update usage of _GL_ATTRIBUTE_FORMAT_PRINTF to _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD. Likewise, disable newly added rpl_free gnulib api in gdbserver support libraries. Likewise, undefine read/write macros before redefining them on mingw targets. Likewise, wrap C++ usage of free with GNULIB_NAMESPACE namespace as needed. Change-Id: I86517613c0d8ac8f5ea45bbc4ebe2b54a3aef29f
Diffstat (limited to 'gnulib/import/getprogname.c')
-rw-r--r--gnulib/import/getprogname.c42
1 files changed, 40 insertions, 2 deletions
diff --git a/gnulib/import/getprogname.c b/gnulib/import/getprogname.c
index b9667ff..500619d 100644
--- a/gnulib/import/getprogname.c
+++ b/gnulib/import/getprogname.c
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+ Copyright (C) 2016-2021 Free Software Foundation, Inc.
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
@@ -51,7 +51,13 @@
# include <sys/procfs.h>
#endif
-#include "dirname.h"
+#if defined __SCO_VERSION__ || defined __sysv5__
+# include <fcntl.h>
+# include <stdlib.h>
+# include <string.h>
+#endif
+
+#include "basename-lgpl.h"
#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */
char const *
@@ -245,6 +251,38 @@ getprogname (void)
}
}
return NULL;
+# elif defined __SCO_VERSION__ || defined __sysv5__ /* SCO OpenServer6/UnixWare */
+ char buf[80];
+ int fd;
+ sprintf (buf, "/proc/%d/cmdline", getpid());
+ fd = open (buf, O_RDONLY);
+ if (0 <= fd)
+ {
+ size_t n = read (fd, buf, 79);
+ if (n > 0)
+ {
+ buf[n] = '\0'; /* Guarantee null-termination */
+ char *progname;
+ progname = strrchr (buf, '/');
+ if (progname)
+ {
+ progname = progname + 1; /* Skip the '/' */
+ }
+ else
+ {
+ progname = buf;
+ }
+ char *ret;
+ ret = malloc (strlen (progname) + 1);
+ if (ret)
+ {
+ strcpy (ret, progname);
+ return ret;
+ }
+ }
+ close (fd);
+ }
+ return "?";
# else
# error "getprogname module not ported to this OS"
# endif