Bug 3547 – for option -od for relative path the path is added twice

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2009-11-24T04:31:00Z
Last change time
2015-06-09T01:21:34Z
Keywords
patch
Assigned to
nobody
Creator
y0uf00bar

Attachments

IDFilenameSummaryContent-TypeSize
525bug3547.patchProposed patchtext/plain784

Comments

Comment #0 by y0uf00bar — 2009-11-24T04:31:14Z
When I specified a -od, <objpath> , a double level of 2 directories was created in my current directory, and the object file place theirin, namely <./objpath/objpath/myobjfile.o, for both linux, dmd, dmd 1.0 and dmd 2.0. An examination of the mars.c source and module.c source for the string "global.params.objdir" shows under these conditions the string passed in the options is concantenated twice. In mars.c line 713 if (global.params.link) {.. if(global.params.objname) { // name as the exe file. if (global.params.objdir) { .. global.params.objname = FileName::combine(global.params.objdir,name) And in module.c line 136 if (global.params.objname) // objdir must be already combined by here! argobj = global.params.objname; .. if (!FileName::absolute(argobj)) { // objdir is combined again, because already in global.params.objname argobj = FileName::combine(global.params.objdir, argobj); } I was testing a little XML configuration build tool, and dmd refused to make just one level of relative directory. The workaround would seem to be to work out the absolute path and pass that to the option.
Comment #1 by dlang-bugzilla — 2009-12-17T12:04:08Z
Some more findings: - this is a regression in DMD 2.014 / 1.030 - the bug only manifests when the -of option is present Attaching a patch which fixes it. The patch changes the module.c code to not prepend global.params.objdir to filename if global.params.objname is set (in which case, the prepending had already been done in mars.c).
Comment #2 by dlang-bugzilla — 2009-12-17T12:04:40Z
Created attachment 525 Proposed patch
Comment #3 by bugzilla — 2010-06-02T10:56:47Z