[fpc-pascal] fpc in symlinked directory

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Mar 26 18:39:32 CET 2014


On 26/03/14 17:23, Michael Van Canneyt wrote:
> At the very least I think that we should be consistent and use the same
> filenames in link script and debug info ?

How directories are stored in the debug info is generally defined by the 
debug info format itself. E.g. the DWARF standard explicitly mentions 
that search directories for source files can be either relative or 
absolute to the current working directory (there's even an attribute to 
specify a default CWD, so that the files can be easily found on the 
compilation system itself even when the program is started from another 
location). Specifying the directories in a relative way means that you 
can easily copy over a debug binary and all related source code from one 
system to another (or move things around) without breaking anything. For 
that reason, we explicitly add relative directory names to the DWARF 
debug info rather than absolute ones.

For linking, we use absolute paths in link.res to ensure that the 
parameters given by the programmer to the compiler (such as -Fl and -XR) 
are taken into account when linking, and that the linker doesn't 
accidentally link in some other library with the same name that it found 
in its default search path.

I don't see what the advantage of being "consistent" between the 
generation of debug info and linker scripts would be. Making the paths 
in the debug info absolute would make things less flexible without 
increasing usability (I've never seen bug reports about problems with 
the wrong source files being found). Making the paths in the linker 
script relative would add a lot of complexity (the compiler first 
searches for the library files on the files system, and then it would 
have to make the paths relative to the CWD for no gain) and special 
cases (when linking on a remote system, the compiler has no clue about 
what the relative position of e.g. /usr/lib will be compared to the CWD, 
so then you would still have to use absolute paths).


Jonas



More information about the fpc-pascal mailing list