summaryrefslogtreecommitdiff
path: root/binutils/dllwrap.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2004-07-13 16:46:51 +0000
committerNick Clifton <nickc@redhat.com>2004-07-13 16:46:51 +0000
commit4b194301e16466b7fbddc1c9997c529f95e5b970 (patch)
tree5bb00a6ab038b98410199e0425651660d66d3fba /binutils/dllwrap.c
parent64ee22d4299a76da8827449b407dbe947067c43c (diff)
downloadbinutils-redhat-4b194301e16466b7fbddc1c9997c529f95e5b970.tar.gz
* dllwrap.c: Replace 'program_name' with 'prog_name' to avoid conflicts with
exported global defined in bucomm.h. (deduce_name): Rename parameter 'program_name' to 'name' to avoid shadowing the global defined in bucomm.h.
Diffstat (limited to 'binutils/dllwrap.c')
-rw-r--r--binutils/dllwrap.c109
1 files changed, 49 insertions, 60 deletions
diff --git a/binutils/dllwrap.c b/binutils/dllwrap.c
index e4db7bae53..4b53511e66 100644
--- a/binutils/dllwrap.c
+++ b/binutils/dllwrap.c
@@ -1,5 +1,5 @@
/* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Mumit Khan (khan@xraylith.wisc.edu).
This file is part of GNU Binutils.
@@ -101,7 +101,7 @@ static target_type which_target = UNKNOWN_TARGET;
static int dontdeltemps = 0;
static int dry_run = 0;
-static char *program_name;
+static char *prog_name;
static int verbose = 0;
@@ -139,8 +139,8 @@ static void cleanup_and_exit (int);
static void
display (const char * message, va_list args)
{
- if (program_name != NULL)
- fprintf (stderr, "%s: ", program_name);
+ if (prog_name != NULL)
+ fprintf (stderr, "%s: ", prog_name);
vfprintf (stderr, message, args);
fputc ('\n', stderr);
@@ -244,17 +244,20 @@ look_for_prog (const char *prog_name, const char *prefix, int end_prefix)
Returns a dynamically allocated string. */
static char *
-deduce_name (const char *prog_name)
+deduce_name (const char * name)
{
char *cmd;
- char *dash, *slash, *cp;
+ const char *dash;
+ const char *slash;
+ const char *cp;
dash = NULL;
slash = NULL;
- for (cp = program_name; *cp != '\0'; ++cp)
+ for (cp = name; *cp != '\0'; ++cp)
{
if (*cp == '-')
dash = cp;
+
if (
#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
*cp == ':' || *cp == '\\' ||
@@ -269,24 +272,18 @@ deduce_name (const char *prog_name)
cmd = NULL;
if (dash != NULL)
- {
- /* First, try looking for a prefixed PROG_NAME in the
- PROGRAM_NAME directory, with the same prefix as PROGRAM_NAME. */
- cmd = look_for_prog (prog_name, program_name, dash - program_name + 1);
- }
+ /* First, try looking for a prefixed PROG_NAME in the
+ PROGRAM_NAME directory, with the same prefix as PROGRAM_NAME. */
+ cmd = look_for_prog (name, name, dash - name + 1);
if (slash != NULL && cmd == NULL)
- {
- /* Next, try looking for a PROG_NAME in the same directory as
- that of this program. */
- cmd = look_for_prog (prog_name, program_name, slash - program_name + 1);
- }
+ /* Next, try looking for a PROG_NAME in the same directory as
+ that of this program. */
+ cmd = look_for_prog (name, name, slash - name + 1);
if (cmd == NULL)
- {
- /* Just return PROG_NAME as is. */
- cmd = xstrdup (prog_name);
- }
+ /* Just return PROG_NAME as is. */
+ cmd = xstrdup (name);
return cmd;
}
@@ -396,14 +393,14 @@ run (const char *what, char *args)
if (dry_run)
return 0;
- pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base,
+ pid = pexecute (argv[0], (char * const *) argv, prog_name, temp_base,
&errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH);
if (pid == -1)
{
int errno_val = errno;
- fprintf (stderr, "%s: ", program_name);
+ fprintf (stderr, "%s: ", prog_name);
fprintf (stderr, errmsg_fmt, errmsg_arg);
fprintf (stderr, ": %s\n", strerror (errno_val));
return 1;
@@ -479,13 +476,13 @@ strhash (const char *str)
static void
usage (FILE *file, int status)
{
- fprintf (file, _("Usage %s <option(s)> <object-file(s)>\n"), program_name);
+ fprintf (file, _("Usage %s <option(s)> <object-file(s)>\n"), prog_name);
fprintf (file, _(" Generic options:\n"));
fprintf (file, _(" --quiet, -q Work quietly\n"));
fprintf (file, _(" --verbose, -v Verbose\n"));
fprintf (file, _(" --version Print dllwrap version\n"));
fprintf (file, _(" --implib <outname> Synonym for --output-lib\n"));
- fprintf (file, _(" Options for %s:\n"), program_name);
+ fprintf (file, _(" Options for %s:\n"), prog_name);
fprintf (file, _(" --driver-name <driver> Defaults to \"gcc\"\n"));
fprintf (file, _(" --driver-flags <flags> Override default ld flags\n"));
fprintf (file, _(" --dlltool-name <dlltool> Defaults to \"dlltool\"\n"));
@@ -624,7 +621,7 @@ main (int argc, char **argv)
char *image_base_str = 0;
- program_name = argv[0];
+ prog_name = argv[0];
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
@@ -688,7 +685,7 @@ main (int argc, char **argv)
verbose = 1;
break;
case OPTION_VERSION:
- print_version (program_name);
+ print_version (prog_name);
break;
case 'e':
entry_point = optarg;
@@ -781,7 +778,7 @@ main (int argc, char **argv)
}
}
- /* sanity checks. */
+ /* Sanity checks. */
if (! dll_name && ! dll_file_name)
{
warn (_("Must provide at least one of -o or --dllname options"));
@@ -806,6 +803,7 @@ main (int argc, char **argv)
if (! def_file_seen)
{
char *fileprefix = choose_temp_base ();
+
def_file_name = (char *) xmalloc (strlen (fileprefix) + 5);
sprintf (def_file_name, "%s.def",
(dontdeltemps) ? mybasename (fileprefix) : fileprefix);
@@ -816,7 +814,7 @@ main (int argc, char **argv)
Creating one, but that may not be what you want"));
}
- /* set the target platform. */
+ /* Set the target platform. */
if (strstr (target, "cygwin"))
which_target = CYGWIN_TARGET;
else if (strstr (target, "mingw"))
@@ -824,12 +822,11 @@ Creating one, but that may not be what you want"));
else
which_target = UNKNOWN_TARGET;
- /* re-create the command lines as a string, taking care to quote stuff. */
+ /* Re-create the command lines as a string, taking care to quote stuff. */
dlltool_cmdline = dyn_string_new (cmdline_len);
if (verbose)
- {
- dyn_string_append_cstr (dlltool_cmdline, " -v");
- }
+ dyn_string_append_cstr (dlltool_cmdline, " -v");
+
dyn_string_append_cstr (dlltool_cmdline, " --dllname ");
dyn_string_append_cstr (dlltool_cmdline, dll_name);
@@ -922,10 +919,8 @@ Creating one, but that may not be what you want"));
}
}
- /*
- * Step pre-1. If no --def <EXPORT_DEF> is specified, then create it
- * and then pass it on.
- */
+ /* Step pre-1. If no --def <EXPORT_DEF> is specified,
+ then create it and then pass it on. */
if (! def_file_seen)
{
@@ -980,16 +975,13 @@ Creating one, but that may not be what you want"));
fprintf (stderr, _("DRIVER options : %s\n"), driver_cmdline->s);
}
- /*
- * Step 1. Call GCC/LD to create base relocation file. If using GCC, the
- * driver command line will look like the following:
- *
- * % gcc -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
- *
- * If the user does not specify a base name, create temporary one that
- * is deleted at exit.
- *
- */
+ /* Step 1. Call GCC/LD to create base relocation file. If using GCC, the
+ driver command line will look like the following:
+
+ % gcc -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
+
+ If the user does not specify a base name, create temporary one that
+ is deleted at exit. */
if (! base_file_name)
{
@@ -1027,23 +1019,19 @@ Creating one, but that may not be what you want"));
dyn_string_delete (step1);
}
-
-
- /*
- * Step 2. generate the exp file by running dlltool.
- * dlltool command line will look like the following:
- *
- * % dlltool -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
- *
- * If the user does not specify a base name, create temporary one that
- * is deleted at exit.
- *
- */
+ /* Step 2. generate the exp file by running dlltool.
+ dlltool command line will look like the following:
+
+ % dlltool -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
+
+ If the user does not specify a base name, create temporary one that
+ is deleted at exit. */
if (! exp_file_name)
{
char *p = strrchr (dll_name, '.');
- size_t prefix_len = (p) ? p - dll_name : strlen (dll_name);
+ size_t prefix_len = (p) ? (size_t) (p - dll_name) : strlen (dll_name);
+
exp_file_name = (char *) xmalloc (prefix_len + 4 + 1);
strncpy (exp_file_name, dll_name, prefix_len);
exp_file_name[prefix_len] = '\0';
@@ -1053,6 +1041,7 @@ Creating one, but that may not be what you want"));
{
int quote;
+
dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length
+ strlen (base_file_name)
+ strlen (exp_file_name)