Thread overview
[Issue 4833] New: dmd -od doesn't make it to optlink's command line for map files
Sep 06, 2010
Brad Roberts
Feb 14, 2011
Brad Roberts
Apr 03, 2011
Walter Bright
Jun 21, 2011
Andrej Mitrovic
Jun 21, 2011
Andrej Mitrovic
Jun 21, 2011
Andrej Mitrovic
Jun 21, 2011
Brad Roberts
Jun 21, 2011
Andrej Mitrovic
Jun 21, 2011
Brad Roberts
Jun 28, 2011
Brad Roberts
September 06, 2010
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


--- Comment #0 from Brad Roberts <braddr@puremagic.com> 2010-09-06 15:53:28 PDT ---
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: -------
February 14, 2011
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


--- Comment #1 from Brad Roberts <braddr@puremagic.com> 2011-02-13 17:12:41 PST ---
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: -------
April 03, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Walter Bright <bugzilla@digitalmars.com> changed:

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


--- Comment #2 from Walter Bright <bugzilla@digitalmars.com> 2011-04-02 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: -------
June 21, 2011
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                       |


--- Comment #3 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2011-06-21 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: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833



--- Comment #4 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2011-06-21 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: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833



--- Comment #5 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2011-06-21 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: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833



--- Comment #6 from Brad Roberts <braddr@puremagic.com> 2011-06-21 15:12:25 PDT ---
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: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833



--- Comment #7 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2011-06-21 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: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833



--- Comment #8 from Brad Roberts <braddr@puremagic.com> 2011-06-21 15:17:38 PDT ---
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: -------
June 28, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4833


Brad Roberts <braddr@puremagic.com> changed:

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


--- Comment #9 from Brad Roberts <braddr@puremagic.com> 2011-06-28 15:05:48 PDT ---
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: -------