const char *output_filename = "a.out";
/* Name this program was invoked by. */
-char *program_name;
+const char *program_name;
/* The prefix for system library directories. */
const char *ld_sysroot;
fflush (file);
}
+static void
+set_program_name (const char *argv0)
+{
+ program_name = argv0;
+
+#if defined (__linux__) && _POSIX_VERSION >= 200112L
+ char name[PATH_MAX];
+ ssize_t len = readlink ("/proc/self/exe", name, ARRAY_SIZE (name));
+ if (len > 0 && (size_t)len < ARRAY_SIZE (name))
+ program_name = xmemdup (name, len, len + 1);
+#endif
+}
+
int
main (int argc, char **argv)
{
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
- program_name = argv[0];
+ set_program_name (argv[0]);
xmalloc_set_program_name (program_name);
/* Check the LD_STATS environment variable before parsing the command line
#ifndef LDMAIN_H
#define LDMAIN_H
-extern char *program_name;
+extern const char *program_name;
extern const char *ld_sysroot;
extern char *ld_canon_sysroot;
extern int ld_canon_sysroot_len;