diff options
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 9 | ||||
-rw-r--r-- | binutils/debug.c | 10 | ||||
-rw-r--r-- | binutils/debug.h | 2 | ||||
-rw-r--r-- | binutils/dlltool.c | 230 | ||||
-rw-r--r-- | binutils/dllwrap.c | 322 | ||||
-rw-r--r-- | binutils/emul_aix.c | 8 | ||||
-rw-r--r-- | binutils/emul_vanilla.c | 2 |
7 files changed, 296 insertions, 287 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index eb92fd7..a4b8bfb 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2002-05-20 Kazu Hirata <kazu@cs.umass.edu> + + * debug.c: Fix formatting. + * debug.h: Likewise. + * dlltool.c: Likewise. + * dllwrap.c: Likewise. + * emul_aix.c: Likewise. + * emul_vanilla.c: Likewise. + 2002-05-19 Kazu Hirata <kazu@cs.umass.edu> * addr2line.c: Fix formatting. diff --git a/binutils/debug.c b/binutils/debug.c index ffdc766..0788188 100644 --- a/binutils/debug.c +++ b/binutils/debug.c @@ -1211,7 +1211,7 @@ debug_record_variable (handle, name, type, kind, val) n->u.variable = v; - return true; + return true; } /* Make a type with a given kind and size. */ @@ -1786,7 +1786,7 @@ debug_make_baseclass (handle, type, bitpos, virtual, visibility) bfd_vma bitpos; boolean virtual; enum debug_visibility visibility; -{ +{ struct debug_baseclass *b; b = (struct debug_baseclass *) xmalloc (sizeof *b); @@ -2123,7 +2123,7 @@ debug_find_named_type (handle, name) } } - return DEBUG_TYPE_NULL; + return DEBUG_TYPE_NULL; } /* Find a tagged type. */ @@ -2304,7 +2304,7 @@ debug_get_return_type (handle, type) case DEBUG_KIND_METHOD: return type->u.kmethod->return_type; } - /*NOTREACHED*/ + /*NOTREACHED*/ } /* Get the parameter types of a function or method type (except that @@ -3314,7 +3314,7 @@ debug_type_samep (info, t1, t2) case DEBUG_KIND_POINTER: ret = debug_type_samep (info, t1->u.kpointer, t2->u.kpointer); break; - + case DEBUG_KIND_FUNCTION: if (t1->u.kfunction->varargs != t2->u.kfunction->varargs || ! debug_type_samep (info, t1->u.kfunction->return_type, diff --git a/binutils/debug.h b/binutils/debug.h index d60285d..c439be3 100644 --- a/binutils/debug.h +++ b/binutils/debug.h @@ -310,7 +310,7 @@ struct debug_write_fns visibility. The type must be popped off the type stack. */ boolean (*class_static_member) PARAMS ((PTR, const char *, const char *, enum debug_visibility)); - + /* Add a baseclass to the class currently being built. The type of the baseclass must be popped off the type stack. The arguments are the bit position, whether the class is virtual, and the diff --git a/binutils/dlltool.c b/binutils/dlltool.c index 6864d22..9a1afbc 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -115,7 +115,7 @@ asm (".section .drectve"); asm (".ascii \"-export:cdef\""); asm (".ascii \"-export:ddef\""); - + void cdef (char * s) { printf ("hello from the dll %s\n", s); @@ -162,15 +162,15 @@ # Run this tool over the DLL's .def file and generate an exports # file (thedll.o) and an imports file (thedll.a). # (You may have to use -S to tell dlltool where to find the assembler). - + dlltool --def thedll.def --output-exp thedll.o --output-lib thedll.a # Build the dll with the library and the export table - + ld -o thedll.dll thedll.o thedll.in # Link the executable with the import library - + gcc -o themain.exe themain.o thedll.a This example can be extended if relocations are needed in the DLL: @@ -180,21 +180,21 @@ gcc -c file1.c file2.c themain.c # Run this tool over the DLL's .def file and generate an imports file. - + dlltool --def thedll.def --output-lib thedll.lib # Link the executable with the import library and generate a base file # at the same time - + gcc -o themain.exe themain.o thedll.lib -Wl,--base-file -Wl,themain.base # Run this tool over the DLL's .def file and generate an exports file # which includes the relocations from the base file. - + dlltool --def thedll.def --base-file themain.base --output-exp thedll.exp # Build the dll with file1.o, file2.o and the export table - + ld -o thedll.dll thedll.exp file1.o file2.o */ @@ -277,7 +277,7 @@ static char *deduce_name PARAMS ((const char *)); static void mcore_elf_cache_filename (char *); static void mcore_elf_gen_out_file (void); #endif - + #ifdef HAVE_SYS_WAIT_H #include <sys/wait.h> #else /* ! HAVE_SYS_WAIT_H */ @@ -372,7 +372,7 @@ static boolean do_default_excludes=true; /* Default symbols to exclude when exporting all the symbols. */ static const char *default_excludes = "DllMain@12,DllEntryPoint@0,impure_ptr"; -/* True if we should add __imp_<SYMBOL> to import libraries for backward +/* True if we should add __imp_<SYMBOL> to import libraries for backward compatibility to old Cygwin releases. */ static boolean create_compat_implib; @@ -437,7 +437,7 @@ static char * mcore_elf_linker_flags = NULL; #define TMP_TAIL_O "dt.o" #define TMP_STUB "ds" -/* This bit of assemly does jmp * .... */ +/* This bit of assemly does jmp * .... */ static const unsigned char i386_jtab[] = { 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90 @@ -472,26 +472,26 @@ static const unsigned char thumb_jtab[] = static const unsigned char mcore_be_jtab[] = { 0x71, 0x02, /* lrw r1,2 */ - 0x81, 0x01, /* ld.w r1,(r1,0) */ + 0x81, 0x01, /* ld.w r1,(r1,0) */ 0x00, 0xC1, /* jmp r1 */ 0x12, 0x00, /* nop */ - 0x00, 0x00, 0x00, 0x00 /* <address> */ + 0x00, 0x00, 0x00, 0x00 /* <address> */ }; static const unsigned char mcore_le_jtab[] = { 0x02, 0x71, /* lrw r1,2 */ - 0x01, 0x81, /* ld.w r1,(r1,0) */ + 0x01, 0x81, /* ld.w r1,(r1,0) */ 0xC1, 0x00, /* jmp r1 */ 0x00, 0x12, /* nop */ - 0x00, 0x00, 0x00, 0x00 /* <address> */ + 0x00, 0x00, 0x00, 0x00 /* <address> */ }; /* This is the glue sequence for PowerPC PE. There is a */ -/* tocrel16-tocdefn reloc against the first instruction. */ +/* tocrel16-tocdefn reloc against the first instruction. */ /* We also need a IMGLUE reloc against the glue function */ /* to restore the toc saved by the third instruction in */ -/* the glue. */ +/* the glue. */ static const unsigned char ppc_jtab[] = { 0x00, 0x00, 0x62, 0x81, /* lwz r11,0(r2) */ @@ -646,7 +646,7 @@ typedef struct export export_type; /* A list of symbols which we should not export. */ - + struct string_list { struct string_list *next; @@ -817,7 +817,7 @@ process_def_file (name) const char *name; { FILE *f = fopen (name, FOPEN_RT); - + if (!f) /* xgettext:c-format */ fatal (_("Can't open def file: %s"), name); @@ -826,7 +826,7 @@ process_def_file (name) /* xgettext:c-format */ inform (_("Processing def file: %s"), name); - + yyparse (); inform (_("Processed def file")); @@ -856,7 +856,7 @@ yyerror (err) { /* xgettext:c-format */ non_fatal (_("Syntax error in def file %s:%d"), def_file, linenumber); - + return 0; } @@ -880,8 +880,8 @@ def_exports (name, internal_name, ordinal, noname, constant, data) p->next = d_exports; d_exports = p; d_nfuncs++; - - if ((internal_name != NULL) + + if ((internal_name != NULL) && (strchr (internal_name, '.') != NULL)) p->forward = ++d_nforwards; else @@ -895,10 +895,10 @@ def_name (name, base) { /* xgettext:c-format */ inform (_("NAME: %s base: %x"), name, base); - + if (d_is_dll) non_fatal (_("Can't have LIBRARY and NAME")); - + d_name = name; /* if --dllname not provided, use the one in the DEF file. FIXME: Is this appropriate for executables? */ @@ -914,12 +914,12 @@ def_library (name, base) { /* xgettext:c-format */ inform (_("LIBRARY: %s base: %x"), name, base); - + if (d_is_exe) non_fatal (_("Can't have LIBRARY and NAME")); - + d_name = name; - /* if --dllname not provided, use the one in the DEF file. */ + /* if --dllname not provided, use the one in the DEF file. */ if (! dll_name) dll_name = xstrdup (name); d_is_dll = 1; @@ -1061,7 +1061,7 @@ def_import (app_name, module, dllext, entry, ord_val) else application_name = ""; } - + if (dllext != NULL) { buf = (char *) alloca (strlen (module) + strlen (dllext) + 2); @@ -1162,12 +1162,12 @@ run (what, args) if (pid == -1) { inform (strerror (errno)); - + fatal (errmsg_fmt, errmsg_arg); } pid = pwait (pid, & wait_status, 0); - + if (pid == -1) { /* xgettext:c-format */ @@ -1204,15 +1204,15 @@ scan_drectve_symbols (abfd) /* Look for .drectve's */ s = bfd_get_section_by_name (abfd, DRECTVE_SECTION_NAME); - + if (s == NULL) return; - + size = bfd_get_section_size_before_reloc (s); buf = xmalloc (size); bfd_get_section_contents (abfd, s, buf, 0, size); - + /* xgettext:c-format */ inform (_("Sucking in info from %s section in %s"), DRECTVE_SECTION_NAME, bfd_get_filename (abfd)); @@ -1230,7 +1230,7 @@ scan_drectve_symbols (abfd) char * name; char * c; flagword flags = BSF_FUNCTION; - + p += 8; name = p; while (p < e && *p != ',' && *p != ' ' && *p != '-') @@ -1238,7 +1238,7 @@ scan_drectve_symbols (abfd) c = xmalloc (p - name + 1); memcpy (c, name, p - name); c[p - name] = 0; - if (p < e && *p == ',') /* found type tag. */ + if (p < e && *p == ',') /* found type tag. */ { char *tag_start = ++p; while (p < e && *p != ' ' && *p != '-') @@ -1307,7 +1307,7 @@ scan_filtered_symbols (abfd, minisyms, symcount, size) char *exported_name = xstrdup (symbol_name); char *atsym = strchr (exported_name, '@'); *atsym = '\0'; - /* Note: stdcall alias symbols can never be data. */ + /* Note: stdcall alias symbols can never be data. */ def_exports (exported_name, xstrdup (symbol_name), -1, 0, 0, 0); } } @@ -1328,7 +1328,7 @@ add_excludes (new_excludes) for (; exclude_string; exclude_string = strtok (NULL, ",:")) { struct string_list *new_exclude; - + new_exclude = ((struct string_list *) xmalloc (sizeof (struct string_list))); new_exclude->string = (char *) xmalloc (strlen (exclude_string) + 2); @@ -1400,7 +1400,7 @@ filter_symbols (abfd, minisyms, symcount, size) || (sym->flags & BSF_WEAK) != 0 || bfd_is_com_section (sym->section)) && ! bfd_is_und_section (sym->section)); - + keep = keep && ! match_exclude (sym->name); if (keep) @@ -1467,7 +1467,7 @@ scan_open_obj_file (abfd) scan_all_symbols (abfd); else scan_drectve_symbols (abfd); - + /* FIXME: we ought to read in and block out the base relocations */ /* xgettext:c-format */ @@ -1486,7 +1486,7 @@ scan_obj_file (filename) /* xgettext:c-format */ inform (_("Scanning object file %s"), filename); - + if (bfd_check_format (f, bfd_archive)) { bfd *arfile = bfd_openr_next_archived_file (f, 0); @@ -1497,7 +1497,7 @@ scan_obj_file (filename) bfd_close (arfile); arfile = bfd_openr_next_archived_file (f, arfile); } - + #ifdef DLLTOOL_MCORE_ELF if (mcore_elf_out_file) inform (_("Cannot produce mcore-elf dll from archive file: %s"), filename); @@ -1570,17 +1570,17 @@ flush_page (f, need, page_addr, on_page) ASM_LONG, (on_page * 2) + (on_page & 1) * 2 + 8, ASM_C); - + for (i = 0; i < on_page; i++) { long needed = need[i]; - + if (needed) needed = ((needed - page_addr) | 0x3000) & 0xffff; - + fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, needed); } - + /* And padding */ if (on_page & 1) fprintf (f, "\t%s\t0x%x\n", ASM_SHORT, 0 | 0x0000); @@ -1593,7 +1593,7 @@ gen_def_file () export_type *exp; inform (_("Adding exports to output file")); - + fprintf (output_def, ";"); for (i = 0; oav[i]; i++) fprintf (output_def, " %s", oav[i]); @@ -1606,7 +1606,7 @@ gen_def_file () char *res = cplus_demangle (exp->internal_name, DMGL_ANSI | DMGL_PARAMS); if (strcmp (exp->name, exp->internal_name) == 0) - { + { fprintf (output_def, "\t%s%s%s @ %d%s%s ; %s\n", quote, @@ -1617,9 +1617,9 @@ gen_def_file () exp->data ? " DATA" : "", res ? res : ""); } - else - { - char *quote1 = strchr (exp->internal_name, '.') ? "\"" : ""; + else + { + char *quote1 = strchr (exp->internal_name, '.') ? "\"" : ""; /* char *alias = */ fprintf (output_def, "\t%s%s%s = %s%s%s @ %d%s%s ; %s\n", quote, @@ -1634,9 +1634,9 @@ gen_def_file () res ? res : ""); } if (res) - free (res); + free (res); } - + inform (_("Added exports to output file")); } @@ -1736,14 +1736,14 @@ generate_idata_ofile (filvar) } } -/* Assemble the specified file. */ +/* Assemble the specified file. */ static void assemble_file (source, dest) const char * source; const char * dest; { char * cmd; - + cmd = (char *) alloca (strlen (ASM_SWITCHES) + strlen (as_flags) + strlen (source) + strlen (dest) + 50); @@ -1762,17 +1762,17 @@ gen_exp_file () /* xgettext:c-format */ inform (_("Generating export file: %s"), exp_name); - + f = fopen (TMP_ASM, FOPEN_WT); if (!f) /* xgettext:c-format */ fatal (_("Unable to open temporary assembler file: %s"), TMP_ASM); - + /* xgettext:c-format */ inform (_("Opened temporary file: %s"), TMP_ASM); dump_def_info (f); - + if (d_exports) { fprintf (f, "\t.section .edata\n\n"); @@ -1871,7 +1871,7 @@ gen_exp_file () fprintf (f, "\t%s\t\"%s\"\n", ASM_TEXT, dl->text); } } - + if (d_list) { fprintf (f, "\t.section .rdata\n"); @@ -1879,7 +1879,7 @@ gen_exp_file () { char *p; int l; - + /* We don't output as ascii because there can be quote characters in the string. */ l = 0; @@ -1992,7 +1992,7 @@ gen_exp_file () if (dontdeltemps == 0) unlink (TMP_ASM); - + inform (_("Generated exports file")); } @@ -2089,7 +2089,7 @@ static sinfo secdata[NSECS] = #else /* Sections numbered to make the order the same as other PowerPC NT */ -/* compilers. This also keeps funny alignment thingies from happening. */ +/* compilers. This also keeps funny alignment thingies from happening. */ #define TEXT 0 #define PDATA 1 #define RDATA 2 @@ -2248,18 +2248,18 @@ make_one_lib_file (exp, i) char * outname = xmalloc (10); int oidx = 0; - + sprintf (outname, "%s%05d.o", TMP_STUB, i); - + abfd = bfd_openw (outname, HOW_BFD_WRITE_TARGET); - + if (!abfd) /* xgettext:c-format */ fatal (_("bfd_open failed open stub file: %s"), outname); /* xgettext:c-format */ inform (_("Creating stub file: %s"), outname); - + bfd_set_format (abfd, bfd_object); bfd_set_arch_mach (abfd, HOW_BFD_ARCH, 0); @@ -2267,9 +2267,9 @@ make_one_lib_file (exp, i) if (machine == MARM_INTERWORK || machine == MTHUMB) bfd_set_private_flags (abfd, F_INTERWORK); #endif - + applicable = bfd_applicable_section_flags (abfd); - + /* First make symbols for the sections */ for (i = 0; i < NSECS; i++) { @@ -2385,7 +2385,7 @@ make_one_lib_file (exp, i) ptrs[oidx++] = toc_symbol; } #endif - + ptrs[oidx] = 0; for (i = 0; i < NSECS; i++) @@ -2406,11 +2406,11 @@ make_one_lib_file (exp, i) /* add the reloc into idata$5 */ rel = xmalloc (sizeof (arelent)); - + rpp = xmalloc (sizeof (arelent *) * 2); rpp[0] = rel; rpp[1] = 0; - + rel->address = HOW_JTAB_ROFF; rel->addend = 0; @@ -2493,7 +2493,7 @@ make_one_lib_file (exp, i) #ifdef DLLTOOL_PPC case PDATA: { - /* The .pdata section is 5 words long. */ + /* The .pdata section is 5 words long. */ /* Think of it as: */ /* struct */ /* { */ @@ -2650,7 +2650,7 @@ make_head () fatal (_("failed to open temporary head file: %s"), TMP_HEAD_S); return NULL; } - + fprintf (f, "%s IMAGE_IMPORT_DESCRIPTOR\n", ASM_C); fprintf (f, "\t.section .idata$2\n"); @@ -2682,7 +2682,7 @@ make_head () fprintf (f, "\t%s\t0\n", ASM_LONG); fprintf (f, "fthunk:\n"); } - + if (!no_idata4) { fprintf (f, "\t.section\t.idata$4\n"); @@ -2691,7 +2691,7 @@ make_head () fprintf (f, "\t.section .idata$4\n"); fprintf (f, "hname:\n"); } - + fclose (f); assemble_file (TMP_HEAD_S, TMP_HEAD_O); @@ -2709,13 +2709,13 @@ make_tail () fatal (_("failed to open temporary tail file: %s"), TMP_TAIL_S); return NULL; } - + if (!no_idata4) { fprintf (f, "\t.section .idata$4\n"); fprintf (f, "\t%s\t0\n", ASM_LONG); } - + if (!no_idata5) { fprintf (f, "\t.section .idata$5\n"); @@ -2754,7 +2754,7 @@ make_tail () fclose (f); assemble_file (TMP_TAIL_S, TMP_TAIL_O); - + return bfd_openr (TMP_TAIL_O, HOW_BFD_READ_TARGET); } @@ -2778,18 +2778,18 @@ gen_lib_file () /* xgettext:c-format */ inform (_("Creating library file: %s"), imp_name); - + bfd_set_format (outarch, bfd_archive); outarch->has_armap = 1; - /* Work out a reasonable size of things to put onto one line. */ + /* Work out a reasonable size of things to put onto one line. */ ar_head = make_head (); ar_tail = make_tail(); if (ar_head == NULL || ar_tail == NULL) return; - + for (i = 0; (exp = d_exports_lexically[i]); i++) { bfd *n = make_one_lib_file (exp, i); @@ -2805,7 +2805,7 @@ gen_lib_file () if (! bfd_set_archive_head (outarch, head)) bfd_fatal ("bfd_set_archive_head"); - + if (! bfd_close (outarch)) bfd_fatal (imp_name); @@ -2839,7 +2839,7 @@ gen_lib_file () non_fatal (_("cannot delete %s: %s"), name, strerror (errno)); } } - + inform (_("Created lib file")); } @@ -2943,11 +2943,11 @@ process_duplicates (d_export_vec) export_type *b = d_export_vec[i + 1]; more = 1; - + /* xgettext:c-format */ inform (_("Warning, ignoring duplicate EXPORT %s %d,%d"), a->name, a->ordinal, b->ordinal); - + if (a->ordinal != -1 && b->ordinal != -1) /* xgettext:c-format */ @@ -3011,14 +3011,14 @@ fill_ordinals (d_export_vec) if (lowest == -1) lowest = 1; - /* Now fill in ordinals where the user wants us to choose. */ + /* Now fill in ordinals where the user wants us to choose. */ for (i = 0; i < d_nfuncs; i++) { if (d_export_vec[i]->ordinal == -1) { register int j; - /* First try within or after any user supplied range. */ + /* First try within or after any user supplied range. */ for (j = lowest; j < size; j++) if (ptr[j] == 0) { @@ -3027,7 +3027,7 @@ fill_ordinals (d_export_vec) goto done; } - /* Then try before the range. */ + /* Then try before the range. */ for (j = lowest; j >0; j--) if (ptr[j] == 0) { @@ -3079,7 +3079,7 @@ mangle_defs () = (export_type **) xmalloc (sizeof (export_type *) * d_nfuncs); inform (_("Processing definitions")); - + for (i = 0, exp = d_exports; exp; i++, exp = exp->next) { d_export_vec[i] = exp; @@ -3115,7 +3115,7 @@ mangle_defs () if (!d_exports_lexically[i]->noname || show_allnames) d_exports_lexically[i]->hint = hint++; } - + inform (_("Processed definitions")); } @@ -3221,7 +3221,7 @@ main (ac, av) textdomain (PACKAGE); while ((c = getopt_long (ac, av, -#ifdef DLLTOOL_MCORE_ELF +#ifdef DLLTOOL_MCORE_ELF "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHhM:L:F:", #else "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHh", @@ -3304,7 +3304,7 @@ main (ac, av) break; case 'b': base_file = fopen (optarg, FOPEN_RB); - + if (!base_file) /* xgettext:c-format */ fatal (_("Unable to open base-file: %s"), optarg); @@ -3350,13 +3350,13 @@ main (ac, av) if (as_name == NULL) as_name = deduce_name ("as"); - + /* Don't use the default exclude list if we're reading only the symbols in the .drectve section. The default excludes are meant to avoid exporting DLL entry point and Cygwin32 impure_ptr. */ if (! export_all_symbols) do_default_excludes = false; - + if (do_default_excludes) set_default_excludes (); @@ -3375,10 +3375,10 @@ main (ac, av) if (exp_name) gen_exp_file (); - + if (imp_name) { - /* Make imp_name safe for use as a label. */ + /* Make imp_name safe for use as a label. */ char *p; imp_name_lab = xstrdup (imp_name); @@ -3390,15 +3390,15 @@ main (ac, av) head_label = make_label("_head_", imp_name_lab); gen_lib_file (); } - + if (output_def) gen_def_file (); - + #ifdef DLLTOOL_MCORE_ELF if (mcore_elf_out_file) mcore_elf_gen_out_file (); #endif - + return 0; } @@ -3416,10 +3416,10 @@ look_for_prog (prog_name, prefix, end_prefix) struct stat s; char *cmd; - cmd = xmalloc (strlen (prefix) - + strlen (prog_name) + cmd = xmalloc (strlen (prefix) + + strlen (prog_name) #ifdef HAVE_EXECUTABLE_SUFFIX - + strlen (EXECUTABLE_SUFFIX) + + strlen (EXECUTABLE_SUFFIX) #endif + 10); strcpy (cmd, prefix); @@ -3432,12 +3432,12 @@ look_for_prog (prog_name, prefix, end_prefix) found = (stat (cmd, &s) == 0 #ifdef HAVE_EXECUTABLE_SUFFIX - || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 + || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 #endif ); if (! found) - { + { /* xgettext:c-format */ inform (_("Tried file: %s"), cmd); free (cmd); @@ -3454,24 +3454,24 @@ look_for_prog (prog_name, prefix, end_prefix) /* Deduce the name of the program we are want to invoke. PROG_NAME is the basic name of the program we want to run, eg "as" or "ld". The catch is that we might want actually - run "i386-pe-as" or "ppc-pe-ld". + run "i386-pe-as" or "ppc-pe-ld". If argv[0] contains the full path, then try to find the program in the same place, with and then without a target-like prefix. Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool, - deduce_name("as") uses the following search order: + deduce_name("as") uses the following search order: /usr/local/bin/i586-cygwin32-as /usr/local/bin/as as - + If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each name, it'll try without and then with EXECUTABLE_SUFFIX. Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as" as the fallback, but rather return i586-cygwin32-as. - + Oh, and given, argv[0] = dlltool, it'll return "as". Returns a dynamically allocated string. */ @@ -3570,7 +3570,7 @@ mcore_elf_gen_out_file (void) if (mcore_elf_linker_flags != NULL) dyn_string_append (ds, mcore_elf_linker_flags); - + while (ptr->next != NULL) { dyn_string_append (ds, ptr->filename); @@ -3584,18 +3584,18 @@ mcore_elf_gen_out_file (void) if (mcore_elf_linker == NULL) mcore_elf_linker = deduce_name ("ld"); - + run (mcore_elf_linker, ds->s); dyn_string_delete (ds); - /* Step two. Create a .exp file and a .lib file from the temporary file. + /* Step two. Create a .exp file and a .lib file from the temporary file. Do this by recursively invoking dlltool....*/ ds = dyn_string_new (100); dyn_string_append (ds, "-S "); dyn_string_append (ds, as_name); - + dyn_string_append (ds, " -e "); dyn_string_append (ds, MCORE_ELF_TMP_EXP); dyn_string_append (ds, " -l "); @@ -3605,17 +3605,17 @@ mcore_elf_gen_out_file (void) if (verbose) dyn_string_append (ds, " -v"); - + if (dontdeltemps) { dyn_string_append (ds, " -n"); - + if (dontdeltemps > 1) dyn_string_append (ds, " -n"); } /* XXX - FIME: ought to check/copy other command line options as well. */ - + run (program_name, ds->s); dyn_string_delete (ds); diff --git a/binutils/dllwrap.c b/binutils/dllwrap.c index 7c9496c..4ca5936 100644 --- a/binutils/dllwrap.c +++ b/binutils/dllwrap.c @@ -78,7 +78,7 @@ #endif /* ! HAVE_SYS_WAIT_H */ static char *driver_name = NULL; -static char *cygwin_driver_flags = +static char *cygwin_driver_flags = "-Wl,--dll -nostartfiles"; static char *mingw32_driver_flags = "-mdll"; static char *generic_driver_flags = "-Wl,--dll"; @@ -90,10 +90,10 @@ static char *dlltool_name = NULL; static char *target = TARGET; typedef enum { - UNKNOWN_TARGET, - CYGWIN_TARGET, + UNKNOWN_TARGET, + CYGWIN_TARGET, MINGW_TARGET -} +} target_type; static target_type which_target = UNKNOWN_TARGET; @@ -188,10 +188,10 @@ look_for_prog (prog_name, prefix, end_prefix) struct stat s; char *cmd; - cmd = xmalloc (strlen (prefix) - + strlen (prog_name) + cmd = xmalloc (strlen (prefix) + + strlen (prog_name) #ifdef HAVE_EXECUTABLE_SUFFIX - + strlen (EXECUTABLE_SUFFIX) + + strlen (EXECUTABLE_SUFFIX) #endif + 10); strcpy (cmd, prefix); @@ -204,12 +204,12 @@ look_for_prog (prog_name, prefix, end_prefix) found = (stat (cmd, &s) == 0 #ifdef HAVE_EXECUTABLE_SUFFIX - || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 + || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0 #endif ); if (! found) - { + { /* xgettext:c-format */ inform (_("Tried file: %s"), cmd); free (cmd); @@ -226,24 +226,24 @@ look_for_prog (prog_name, prefix, end_prefix) /* Deduce the name of the program we are want to invoke. PROG_NAME is the basic name of the program we want to run, eg "as" or "ld". The catch is that we might want actually - run "i386-pe-as" or "ppc-pe-ld". + run "i386-pe-as" or "ppc-pe-ld". If argv[0] contains the full path, then try to find the program in the same place, with and then without a target-like prefix. Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool, - deduce_name("as") uses the following search order: + deduce_name("as") uses the following search order: /usr/local/bin/i586-cygwin32-as /usr/local/bin/as as - + If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each name, it'll try without and then with EXECUTABLE_SUFFIX. Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as" as the fallback, but rather return i586-cygwin32-as. - + Oh, and given, argv[0] = dlltool, it'll return "as". Returns a dynamically allocated string. */ @@ -310,12 +310,12 @@ delete_temp_files () warn (_("Deleting temporary base file %s"), base_file_name); } if (! dontdeltemps) - { - unlink (base_file_name); + { + unlink (base_file_name); free (base_file_name); } } - + if (delete_exp_file && exp_file_name) { if (verbose) @@ -326,9 +326,9 @@ delete_temp_files () warn (_("Deleting temporary exp file %s"), exp_file_name); } if (! dontdeltemps) - { - unlink (exp_file_name); - free (exp_file_name); + { + unlink (exp_file_name); + free (exp_file_name); } } if (delete_def_file && def_file_name) @@ -341,21 +341,21 @@ delete_temp_files () warn (_("Deleting temporary def file %s"), def_file_name); } if (! dontdeltemps) - { - unlink (def_file_name); - free (def_file_name); + { + unlink (def_file_name); + free (def_file_name); } } } -static void +static void cleanup_and_exit (status) int status; { delete_temp_files (); exit (status); } - + static int run (what, args) const char *what; @@ -398,7 +398,7 @@ run (what, args) break; *s++ = 0; if (in_quote) - s++; + s++; } argv[i++] = NULL; @@ -440,7 +440,7 @@ run (what, args) } else retcode = 1; - + return retcode; } @@ -461,7 +461,7 @@ mybasename (name) return (char *) base; } -static int +static int strhash (str) const char *str; { @@ -534,12 +534,12 @@ usage (file, status) #define OPTION_START 149 -/* GENERIC options. */ +/* GENERIC options. */ #define OPTION_QUIET (OPTION_START + 1) #define OPTION_VERBOSE (OPTION_QUIET + 1) #define OPTION_VERSION (OPTION_VERBOSE + 1) -/* DLLWRAP options. */ +/* DLLWRAP options. */ #define OPTION_DRY_RUN (OPTION_VERSION + 1) #define OPTION_DRIVER_NAME (OPTION_DRY_RUN + 1) #define OPTION_DRIVER_FLAGS (OPTION_DRIVER_NAME + 1) @@ -549,7 +549,7 @@ usage (file, status) #define OPTION_TARGET (OPTION_IMAGE_BASE + 1) #define OPTION_MNO_CYGWIN (OPTION_TARGET + 1) -/* DLLTOOL options. */ +/* DLLTOOL options. */ #define OPTION_NODELETE (OPTION_MNO_CYGWIN + 1) #define OPTION_DLLNAME (OPTION_NODELETE + 1) #define OPTION_NO_IDATA4 (OPTION_DLLNAME + 1) @@ -572,13 +572,13 @@ usage (file, status) static const struct option long_options[] = { - /* generic options. */ + /* generic options. */ {"quiet", no_argument, NULL, 'q'}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, NULL, OPTION_VERSION}, {"implib", required_argument, NULL, OPTION_OUTPUT_LIB}, - /* dllwrap options. */ + /* dllwrap options. */ {"dry-run", no_argument, NULL, OPTION_DRY_RUN}, {"driver-name", required_argument, NULL, OPTION_DRIVER_NAME}, {"driver-flags", required_argument, NULL, OPTION_DRIVER_FLAGS}, @@ -587,7 +587,7 @@ static const struct option long_options[] = {"image-base", required_argument, NULL, OPTION_IMAGE_BASE}, {"target", required_argument, NULL, OPTION_TARGET}, - /* dlltool options. */ + /* dlltool options. */ {"no-delete", no_argument, NULL, 'n'}, {"dllname", required_argument, NULL, OPTION_DLLNAME}, {"no-idata4", no_argument, NULL, OPTION_NO_IDATA4}, @@ -653,7 +653,7 @@ main (argc, argv) saved_argv = (char **) xmalloc (argc * sizeof (char*)); dlltool_arg_indices = (int *) xmalloc (argc * sizeof (int)); driver_arg_indices = (int *) xmalloc (argc * sizeof (int)); - for (i = 0; i < argc; ++i) + for (i = 0; i < argc; ++i) { size_t len = strlen (argv[i]); char *arg = (char *) xmalloc (len + 1); @@ -667,11 +667,11 @@ main (argc, argv) /* We recognize dllwrap and dlltool options, and everything else is passed onto the language driver (eg., to GCC). We collect options - to dlltool and driver in dlltool_args and driver_args. */ - + to dlltool and driver in dlltool_args and driver_args. */ + opterr = 0; - while ((c = getopt_long_only (argc, argv, "nkAqve:Uho:l:L:I:", - long_options, (int *) 0)) != EOF) + while ((c = getopt_long_only (argc, argv, "nkAqve:Uho:l:L:I:", + long_options, (int *) 0)) != EOF) { int dlltool_arg; int driver_arg; @@ -682,15 +682,15 @@ main (argc, argv) single_word_option_value_pair = 0; if (c != '?') - { + { /* We recognize this option, so it has to be either dllwrap or dlltool option. Do not pass to driver unless it's one of the generic options that are passed to all the tools (such as -v) - which are dealt with later. */ + which are dealt with later. */ driver_arg = 0; } - /* deal with generic and dllwrap options first. */ + /* deal with generic and dllwrap options first. */ switch (c) { case 'h': @@ -769,34 +769,34 @@ main (argc, argv) dlltool_arg = 1; break; } - - /* Handle passing through --option=value case. */ - if (optarg - && saved_argv[optind-1][0] == '-' - && saved_argv[optind-1][1] == '-' + + /* Handle passing through --option=value case. */ + if (optarg + && saved_argv[optind-1][0] == '-' + && saved_argv[optind-1][1] == '-' && strchr (saved_argv[optind-1], '=')) single_word_option_value_pair = 1; if (dlltool_arg) - { + { dlltool_arg_indices[optind-1] = 1; if (optarg && ! single_word_option_value_pair) { dlltool_arg_indices[optind-2] = 1; - } + } } if (! driver_arg) - { + { driver_arg_indices[optind-1] = 0; if (optarg && ! single_word_option_value_pair) { driver_arg_indices[optind-2] = 0; - } + } } } - /* sanity checks. */ + /* sanity checks. */ if (! dll_name && ! dll_file_name) { warn (_("Must provide at least one of -o or --dllname options")); @@ -811,7 +811,7 @@ main (argc, argv) dll_file_name = xstrdup (dll_name); } - /* Deduce driver-name and dlltool-name from our own. */ + /* Deduce driver-name and dlltool-name from our own. */ if (driver_name == NULL) driver_name = deduce_name ("gcc"); @@ -822,24 +822,24 @@ main (argc, argv) { char *fileprefix = choose_temp_base (); def_file_name = (char *) xmalloc (strlen (fileprefix) + 5); - sprintf (def_file_name, "%s.def", - (dontdeltemps) ? mybasename (fileprefix) : fileprefix); + sprintf (def_file_name, "%s.def", + (dontdeltemps) ? mybasename (fileprefix) : fileprefix); delete_def_file = 1; free (fileprefix); delete_def_file = 1; warn (_("no export definition file provided.\n\ 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")) which_target = MINGW_TARGET; - else + 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) { @@ -851,13 +851,13 @@ Creating one, but that may not be what you want")); for (i = 1; i < argc; ++i) { if (dlltool_arg_indices[i]) - { + { char *arg = saved_argv[i]; - int quote = (strchr (arg, ' ') || strchr (arg, '\t')); - dyn_string_append_cstr (dlltool_cmdline, + int quote = (strchr (arg, ' ') || strchr (arg, '\t')); + dyn_string_append_cstr (dlltool_cmdline, (quote) ? " \"" : " "); dyn_string_append_cstr (dlltool_cmdline, arg); - dyn_string_append_cstr (dlltool_cmdline, + dyn_string_append_cstr (dlltool_cmdline, (quote) ? "\"" : ""); } } @@ -866,17 +866,17 @@ Creating one, but that may not be what you want")); if (! driver_flags || strlen (driver_flags) == 0) { switch (which_target) - { + { case CYGWIN_TARGET: - driver_flags = cygwin_driver_flags; + driver_flags = cygwin_driver_flags; break; - + case MINGW_TARGET: - driver_flags = mingw32_driver_flags; + driver_flags = mingw32_driver_flags; break; - + default: - driver_flags = generic_driver_flags; + driver_flags = generic_driver_flags; break; } } @@ -887,25 +887,25 @@ Creating one, but that may not be what you want")); if (! entry_point || strlen (entry_point) == 0) { switch (which_target) - { + { case CYGWIN_TARGET: entry_point = "__cygwin_dll_entry@12"; break; - + case MINGW_TARGET: entry_point = "_DllMainCRTStartup@12"; break; - + default: - entry_point = "_DllMain@12"; + entry_point = "_DllMain@12"; break; } } dyn_string_append_cstr (driver_cmdline, " -Wl,-e,"); dyn_string_append_cstr (driver_cmdline, entry_point); dyn_string_append_cstr (dlltool_cmdline, " --exclude-symbol="); - dyn_string_append_cstr (dlltool_cmdline, - (entry_point[0] == '_') ? entry_point+1 : entry_point); + dyn_string_append_cstr (dlltool_cmdline, + (entry_point[0] == '_') ? entry_point+1 : entry_point); if (! image_base_str || strlen (image_base_str) == 0) { @@ -926,23 +926,23 @@ Creating one, but that may not be what you want")); for (i = 1; i < argc; ++i) { if (driver_arg_indices[i]) - { + { char *arg = saved_argv[i]; - int quote = (strchr (arg, ' ') || strchr (arg, '\t')); - dyn_string_append_cstr (driver_cmdline, + int quote = (strchr (arg, ' ') || strchr (arg, '\t')); + dyn_string_append_cstr (driver_cmdline, (quote) ? " \"" : " "); dyn_string_append_cstr (driver_cmdline, arg); - dyn_string_append_cstr (driver_cmdline, + dyn_string_append_cstr (driver_cmdline, (quote) ? "\"" : ""); } } - + /* * Step pre-1. If no --def <EXPORT_DEF> is specified, then create it * and then pass it on. */ - - if (! def_file_seen) + + if (! def_file_seen) { int i; dyn_string_t step_pre1; @@ -952,8 +952,8 @@ Creating one, but that may not be what you want")); dyn_string_append_cstr (step_pre1, dlltool_cmdline->s); if (export_all) { - dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol="); - dyn_string_append_cstr (step_pre1, + dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol="); + dyn_string_append_cstr (step_pre1, "_cygwin_dll_entry@12,DllMainCRTStartup@12,DllMain@12,DllEntryPoint@12"); } dyn_string_append_cstr (step_pre1, " --output-def "); @@ -965,7 +965,7 @@ Creating one, but that may not be what you want")); { char *arg = saved_argv[i]; size_t len = strlen (arg); - if (len >= 2 && arg[len-2] == '.' + if (len >= 2 && arg[len-2] == '.' && (arg[len-1] == 'o' || arg[len-1] == 'a')) { int quote = (strchr (arg, ' ') || strchr (arg, '\t')); @@ -980,7 +980,7 @@ Creating one, but that may not be what you want")); if (run (dlltool_name, step_pre1->s)) cleanup_and_exit (1); - + dyn_string_delete (step_pre1); } @@ -994,67 +994,67 @@ Creating one, but that may not be what you want")); fprintf (stderr, _("DRIVER name : %s\n"), driver_name); 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. * */ - + if (! base_file_name) { char *fileprefix = choose_temp_base (); base_file_name = (char *) xmalloc (strlen (fileprefix) + 6); - sprintf (base_file_name, "%s.base", - (dontdeltemps) ? mybasename (fileprefix) : fileprefix); + sprintf (base_file_name, "%s.base", + (dontdeltemps) ? mybasename (fileprefix) : fileprefix); delete_base_file = 1; free (fileprefix); } - + { int quote; - dyn_string_t step1 = dyn_string_new (driver_cmdline->length - + strlen (base_file_name) - + 20); + dyn_string_t step1 = dyn_string_new (driver_cmdline->length + + strlen (base_file_name) + + 20); dyn_string_append_cstr (step1, "-Wl,--base-file,"); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step1, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step1, (quote) ? "\"" : ""); dyn_string_append_cstr (step1, base_file_name); - dyn_string_append_cstr (step1, + dyn_string_append_cstr (step1, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step1, " "); - dyn_string_append_cstr (step1, driver_cmdline->s); + dyn_string_append_cstr (step1, " "); + dyn_string_append_cstr (step1, driver_cmdline->s); } if (run (driver_name, step1->s)) cleanup_and_exit (1); - + dyn_string_delete (step1); } /* - * Step 2. generate the exp file by running dlltool. + * 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, '.'); @@ -1065,84 +1065,84 @@ Creating one, but that may not be what you want")); strcat (exp_file_name, ".exp"); delete_exp_file = 1; } - + { int quote; - dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length - + strlen (base_file_name) - + strlen (exp_file_name) + dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length + + strlen (base_file_name) + + strlen (exp_file_name) + 20); dyn_string_append_cstr (step2, "--base-file "); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step2, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); dyn_string_append_cstr (step2, base_file_name); - dyn_string_append_cstr (step2, + dyn_string_append_cstr (step2, (quote) ? "\" " : " "); dyn_string_append_cstr (step2, "--output-exp "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step2, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); dyn_string_append_cstr (step2, exp_file_name); - dyn_string_append_cstr (step2, + dyn_string_append_cstr (step2, (quote) ? "\"" : ""); if (dlltool_cmdline->length) { - dyn_string_append_cstr (step2, " "); - dyn_string_append_cstr (step2, dlltool_cmdline->s); + dyn_string_append_cstr (step2, " "); + dyn_string_append_cstr (step2, dlltool_cmdline->s); } if (run (dlltool_name, step2->s)) cleanup_and_exit (1); - + dyn_string_delete (step2); } /* * Step 3. Call GCC/LD to again, adding the exp file this time. * driver command line will look like the following: - * + * * % gcc -Wl,--dll --Wl,--base-file,foo.base foo.exp [rest ...] */ { int quote; - dyn_string_t step3 = dyn_string_new (driver_cmdline->length - + strlen (exp_file_name) - + strlen (base_file_name) + dyn_string_t step3 = dyn_string_new (driver_cmdline->length + + strlen (exp_file_name) + + strlen (base_file_name) + 20); dyn_string_append_cstr (step3, "-Wl,--base-file,"); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step3, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); dyn_string_append_cstr (step3, base_file_name); - dyn_string_append_cstr (step3, + dyn_string_append_cstr (step3, (quote) ? "\" " : " "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step3, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); dyn_string_append_cstr (step3, exp_file_name); - dyn_string_append_cstr (step3, + dyn_string_append_cstr (step3, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step3, " "); - dyn_string_append_cstr (step3, driver_cmdline->s); + dyn_string_append_cstr (step3, " "); + dyn_string_append_cstr (step3, driver_cmdline->s); } if (run (driver_name, step3->s)) cleanup_and_exit (1); - + dyn_string_delete (step3); } @@ -1153,52 +1153,52 @@ Creating one, but that may not be what you want")); { int quote; - dyn_string_t step4 = dyn_string_new (dlltool_cmdline->length - + strlen (base_file_name) - + strlen (exp_file_name) + dyn_string_t step4 = dyn_string_new (dlltool_cmdline->length + + strlen (base_file_name) + + strlen (exp_file_name) + 20); dyn_string_append_cstr (step4, "--base-file "); - quote = (strchr (base_file_name, ' ') - || strchr (base_file_name, '\t')); - dyn_string_append_cstr (step4, + quote = (strchr (base_file_name, ' ') + || strchr (base_file_name, '\t')); + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); dyn_string_append_cstr (step4, base_file_name); - dyn_string_append_cstr (step4, + dyn_string_append_cstr (step4, (quote) ? "\" " : " "); dyn_string_append_cstr (step4, "--output-exp "); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step4, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); dyn_string_append_cstr (step4, exp_file_name); - dyn_string_append_cstr (step4, + dyn_string_append_cstr (step4, (quote) ? "\"" : ""); if (dlltool_cmdline->length) { - dyn_string_append_cstr (step4, " "); - dyn_string_append_cstr (step4, dlltool_cmdline->s); + dyn_string_append_cstr (step4, " "); + dyn_string_append_cstr (step4, dlltool_cmdline->s); } if (output_lib_file_name) { - dyn_string_append_cstr (step4, " --output-lib "); - dyn_string_append_cstr (step4, output_lib_file_name); + dyn_string_append_cstr (step4, " --output-lib "); + dyn_string_append_cstr (step4, output_lib_file_name); } if (run (dlltool_name, step4->s)) cleanup_and_exit (1); - + dyn_string_delete (step4); } - + /* * Step 5. Link it all together and be done with it. * driver command line will look like the following: - * + * * % gcc -Wl,--dll foo.exp [rest ...] * */ @@ -1206,26 +1206,26 @@ Creating one, but that may not be what you want")); { int quote; - dyn_string_t step5 = dyn_string_new (driver_cmdline->length - + strlen (exp_file_name) + dyn_string_t step5 = dyn_string_new (driver_cmdline->length + + strlen (exp_file_name) + 20); - quote = (strchr (exp_file_name, ' ') - || strchr (exp_file_name, '\t')); - dyn_string_append_cstr (step5, + quote = (strchr (exp_file_name, ' ') + || strchr (exp_file_name, '\t')); + dyn_string_append_cstr (step5, (quote) ? "\"" : ""); dyn_string_append_cstr (step5, exp_file_name); - dyn_string_append_cstr (step5, + dyn_string_append_cstr (step5, (quote) ? "\"" : ""); if (driver_cmdline->length) { - dyn_string_append_cstr (step5, " "); - dyn_string_append_cstr (step5, driver_cmdline->s); + dyn_string_append_cstr (step5, " "); + dyn_string_append_cstr (step5, driver_cmdline->s); } if (run (driver_name, step5->s)) cleanup_and_exit (1); - + dyn_string_delete (step5); } diff --git a/binutils/emul_aix.c b/binutils/emul_aix.c index fe3551e..4caf652 100644 --- a/binutils/emul_aix.c +++ b/binutils/emul_aix.c @@ -80,7 +80,7 @@ ar_emul_aix_internal (after_bfd, file_name, verbose, target_name, is_append) if (bfd_xcoff_is_xcoff64 (try_bfd) && (! X64)) return false; - if (bfd_xcoff_is_xcoff32 (try_bfd) + if (bfd_xcoff_is_xcoff32 (try_bfd) && bfd_check_format (try_bfd, bfd_object) && (! X32)) return false; @@ -140,7 +140,7 @@ ar_emul_aix5_replace (after_bfd, file_name, verbose) "aix5coff64-rs6000", false); } -boolean +boolean ar_emul_aix_create (abfd_out, archive_file_name, file_name) bfd **abfd_out; char *archive_file_name; @@ -193,7 +193,7 @@ ar_emul_aix_parse_arg (arg) return true; } -struct bin_emulation_xfer_struct bin_aix_emulation = +struct bin_emulation_xfer_struct bin_aix_emulation = { ar_emul_aix_usage, ar_emul_aix_append, @@ -202,7 +202,7 @@ struct bin_emulation_xfer_struct bin_aix_emulation = ar_emul_aix_parse_arg, }; -struct bin_emulation_xfer_struct bin_aix5_emulation = +struct bin_emulation_xfer_struct bin_aix5_emulation = { ar_emul_aix_usage, ar_emul_aix5_append, diff --git a/binutils/emul_vanilla.c b/binutils/emul_vanilla.c index 170db5b..d6cfebd 100644 --- a/binutils/emul_vanilla.c +++ b/binutils/emul_vanilla.c @@ -20,7 +20,7 @@ #include "binemul.h" -struct bin_emulation_xfer_struct bin_vanilla_emulation = +struct bin_emulation_xfer_struct bin_vanilla_emulation = { ar_emul_default_usage, ar_emul_default_append, |