Ticket #350: output_extension.diff

File output_extension.diff, 2.0 KB (added by KO Myung-Hun, 8 years ago)

Generate binaries like OMF linkers do

  • src/emx/src/emxbind/emxbind.c

    diff --git a/src/emx/src/emxbind/emxbind.c b/src/emx/src/emxbind/emxbind.c
    index f37c434e..fdf53054 100755
    a b static void get_args (void)  
    476476          _defext (def_fname, "def");
    477477          read_def_file ();
    478478        }
    479       file_name (out_fname, (dll_flag ? "dll" : "exe"),
     479      file_name (out_fname, (opt_o != NULL && _getext(opt_o)) ? NULL :
     480                            (dll_flag ? "dll" : "exe"),
    480481                 (opt_o != NULL ? opt_o : inp_fname));
    481482      if (stricmp (inp_fname, out_fname) == 0)
    482483        error ("The input and output files have the same name");
  • src/emx/src/ld/ld.c

    diff --git a/src/emx/src/ld/ld.c b/src/emx/src/ld/ld.c
    index c6fe287c..93663ed3 100755
    a b static struct option longopts[] =  
    10781078  {"Zwin32", 0, 0, 140},        /* Create GUI, CUI Win32 */
    10791079  {"Zrsx32", 0, 0, 141},        /* Create Win32/DOS win32 base */
    10801080  {"Zemx32", 0, 0, 142},        /* Create Win32/DOS emx base */
     1081  {"Zdll", 0, 0, 143},          /* Create .dll file */
    10811082  {"S", 0, 0, 'S'},
    10821083  {"T", 1, 0, 'T'},
    10831084  {"Ttext", 1, 0, 'T'},
    decode_command (argc, argv)  
    12781279          rsxnt_linked = RSXNT_EMX;
    12791280          break;
    12801281
     1282        case 143:               /* -Zdll */
     1283          dll_flag = 1;
     1284          break;
     1285
    12811286        case 'R':
    12821287          reloc_flag = 1;
    12831288          break;
    void check_exe (void)  
    38473852  else
    38483853    {
    38493854      ext = _getext2 (output_filename);
    3850       if (stricmp (ext, ".dll") == 0)
     3855      if (dll_flag || stricmp (ext, ".dll") == 0)
    38513856        {
     3857          if (!*ext)
     3858            output_filename = concat (output_filename, ".dll", NULL);
     3859
    38523860          reloc_flag = 1; dll_flag = 1;
    38533861        }
    3854       else if (stricmp (ext, ".exe") != 0)
    3855         {
    3856           exe_filename = NULL;
    3857           return;
    3858         }
     3862      else if (!*ext)
     3863          output_filename = concat (output_filename, ".exe", NULL);
    38593864      exe_filename = output_filename;
    38603865    }
    38613866