www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4833] New: dmd -od doesn't make it to optlink's command line for map files

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833

           Summary: dmd -od doesn't make it to optlink's command line for
                    map files
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: braddr puremagic.com



---
Despite specifying a directory for output, the map file is generated in the
current directory.

example, test.d:
void main() {}

$ mkdir output
$ dmd -odoutput -ofoutput\\test.exe test.d
  >> from -v: link.exe "output\test","output\test.exe",,user32+kernel32/noi;
$ ls -lR
.:
total 5
drwxr-xr-x+ 1 braddr None    0 2010-09-06 15:49 output
-rw-r--r--  1 braddr None   15 2010-09-06 15:48 test.d
-rwxr-xr-x  1 braddr None 2573 2010-09-06 15:49 test.map

./output:
total 101
-rwxr-xr-x 1 braddr None 101404 2010-09-06 15:49 test.exe
-rwxr-xr-x 1 braddr None    338 2010-09-06 15:49 test.obj

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 06 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Brad Roberts <braddr puremagic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
           Platform|Other                       |All
         AssignedTo|nobody puremagic.com        |bugzilla digitalmars.com
         OS/Version|Windows                     |All



---
https://github.com/D-Programming-Language/dmd/pull/6

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



20:17:31 PDT ---
https://github.com/D-Programming-Language/dmd/commit/cf728775f044bcc040177debc2349c424a7cb033

https://github.com/D-Programming-Language/dmd/commit/d1cbde0dbddace3d91d72abf88e2b35c5ac2c86d

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 02 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
                 CC|                            |andrej.mitrovich gmail.com
         Resolution|FIXED                       |



14:47:56 PDT ---
This isn't fixed in 2.053, tested on XP32:

dir structure:
\buildme\foo\bar.d

current dir:
\buildme\

commands:
$ dmd -offoo\bar.exe -od\foo\ foo\bar.d

$ dir
21/06/2011  23:43    <DIR>          .
21/06/2011  23:43    <DIR>          ..
21/06/2011  23:43             2,573 bar.map
21/06/2011  23:43    <DIR>          foo

Also tried with:
$ dmd -of%cd%\foo\bar.exe -od%cd%\foo\ foo\bar.d

That should expand it to an absolute path, but it still genereates a map file
in the current directory where DMD was invoked.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833




14:53:20 PDT ---
-v output:

binary    D:\DMD\dmd2\windows\bin\dmd.exe
version   v2.053
config    D:\DMD\dmd2\windows\bin\sc.ini
parse     bar
importall bar
import    object   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\object.di)
import    std.stdio    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdio.d)
import    core.stdc.stdio   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\stdio.di)
import    core.stdc.config   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\config.di)
import    core.stdc.stddef   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\stddef.di)
import    core.stdc.stdarg   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\stdarg.di)
import    std.stdiobase   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdiobase.d)
import    core.memory   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\memory.di)
import    core.stdc.errno   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\errno.di)
import    core.stdc.stdlib   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\stdlib.di)
import    core.stdc.string   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\string.di)
import    core.stdc.wchar_   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\wchar_.di)
import    core.stdc.time   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\time.di)
import    core.stdc.stdint   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\stdint.di)
import    core.stdc.signal   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\signal.di)
import    std.algorithm   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\algorithm.d)
import    std.c.string   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\string.d)
import    std.array    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\array.d)
import    core.bitop   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\bitop.di)
import    std.conv    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\conv.d)
import    core.stdc.math   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\stdc\math.di)
import    std.ctype    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\ctype.d)
import    std.exception   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\exception.d)
import    std.range    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\range.d)
import    std.functional   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\functional.d)
import    std.metastrings   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\metastrings.d)
import    std.traits    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\traits.d)
import    std.typetuple   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\typetuple.d)
import    std.typecons   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\typecons.d)
import    std.format    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d)
import    core.vararg   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\vararg.di)
import    std.bitmanip   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\bitmanip.d)
import    std.math    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\math.d)
import    std.string    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\string.d)
import    core.exception   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\exception.di)
import    std.encoding   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\encoding.d)
import    std.regex    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\regex.d)
import    std.outbuffer   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\outbuffer.d)
import    std.c.stdio   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\stdio.d)
import    std.c.stdlib   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\stdlib.d)
import    std.c.stdarg   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\stdarg.d)
import    std.utf    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\utf.d)
import    std.uni    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\uni.d)
import    std.system    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\system.d)
import    std.random    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\random.d)
import    std.c.time    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\time.d)
import    std.datetime   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\datetime.d)
import    core.time   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\time.di)
import    core.sys.windows.windows   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\sys\windows\windows.di)
import    std.file    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\file.d)
import    std.path    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\path.d)
import    std.process   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\process.d)
import    std.c.process   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\process.d)
import    std.c.stddef   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\stddef.d)
import    std.windows.syserror   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\windows\syserror.d)
import    std.windows.charset   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\windows\charset.d)
import    std.c.windows.windows   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\windows\windows.d)
import    std.regexp    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\regexp.d)
import    std.__fileinit   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\__fileinit.d)
import    std.c.windows.winsock   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\c\windows\winsock.d)
import    std.stdint    (D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\stdint.d)
import    std.numeric   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\numeric.d)
import    std.complex   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\complex.d)
import    core.thread   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\thread.di)
import    core.sync.mutex   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\sync\mutex.di)
import    core.sync.exception   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\sync\exception.di)
import    core.sys.windows.threadaux   
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\core\sys\windows\threadaux.di)
import    std.container   
(D:\DMD\dmd2\windows\bin\..\..\src\phobos\std\container.d)
semantic  bar
library   advapi32.lib
semantic2 bar
semantic3 bar
code      bar
function  main
D:\DMD\dmd2\windows\bin\link.exe "\foo\bar","foo\bar.exe",,user32+kernel32/noi;

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833




14:54:36 PDT ---
I'm completely sorry for that big mess of verbosity, I've accidentally import
std.stdio :)

Here's a shorter one:

binary    D:\DMD\dmd2\windows\bin\dmd.exe
version   v2.053
config    D:\DMD\dmd2\windows\bin\sc.ini
parse     bar
importall bar
import    object       
(D:\DMD\dmd2\windows\bin\..\..\src\druntime\import\object.di)
semantic  bar
semantic2 bar
semantic3 bar
code      bar
function  main
D:\DMD\dmd2\windows\bin\link.exe "\foo\bar","foo\bar.exe",,user32+kernel32/noi;

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833




---
The problem lied in one tiny crack.. win32 without specifying -map.  This pull
request changes win32 to match all the posix platforms, no map file unless you
ask for it with -map.

https://github.com/D-Programming-Language/dmd/pull/158

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833




15:14:14 PDT ---
Nice work.

This page will need to be updated about the -map flag as well:
http://www.digitalmars.com/d/2.0/dmd-windows.html#switches

If you don't have the time I can do it.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833




---
Let's make sure Walter pulls this change first.  I can imagine him insisting
that map files always be generated, in which case a different change will be
required.  Probably this one + a change to force global.params.map to be true
all the time on win32 somewhere near the argument parsing code.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 21 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Brad Roberts <braddr puremagic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED



---
Re-closing since Walter pulled the fix.  I'll leave it to you, but please do
fix up the docs.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 28 2011