aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2016-01-30 06:17:43 +0800
committerchriseth <c@ethdev.com>2016-01-30 06:17:43 +0800
commit02161b29b804e5678fc00590a19ba790918b0c14 (patch)
treea71e3ba6c64706bcf5b4c5dd9dedf1cf7cde4f62
parent0c5d892dbac95ae2418fcfc29ddfd23e4effa5ff (diff)
downloaddexon-solidity-02161b29b804e5678fc00590a19ba790918b0c14.tar.gz
dexon-solidity-02161b29b804e5678fc00590a19ba790918b0c14.tar.zst
dexon-solidity-02161b29b804e5678fc00590a19ba790918b0c14.zip
documentation
-rw-r--r--docs/layout-of-source-files.rst9
-rw-r--r--docs/miscellaneous.rst7
2 files changed, 14 insertions, 2 deletions
diff --git a/docs/layout-of-source-files.rst b/docs/layout-of-source-files.rst
index 1128685d..b795d154 100644
--- a/docs/layout-of-source-files.rst
+++ b/docs/layout-of-source-files.rst
@@ -71,6 +71,15 @@ and then run the compiler as
`solc github.com/ethereum/dapp-bin/=/usr/local/dapp-bin/ source.sol`
+Note that solc only allows you to include files from certain directories:
+They have to be in the directory (or subdirectory) of one of the explicitly
+specified source files or in the directory (or subdirectory) of a remapping
+target. If you want to allow direct absolute includes, just add the
+remapping `=/`.
+
+If there are multiple remappings that lead to a valid file, the remapping
+with the longest common prefix is chosen.
+
**browser-solidity**:
The `browser-based compiler <https://chriseth.github.io/browser-solidity>`_
diff --git a/docs/miscellaneous.rst b/docs/miscellaneous.rst
index 3d95ef57..f2ad0f88 100644
--- a/docs/miscellaneous.rst
+++ b/docs/miscellaneous.rst
@@ -111,8 +111,11 @@ it is also possible to provide path redirects using `prefix=path` in the followi
This essentially instructs the compiler to search for anything starting with
`github.com/ethereum/dapp-bin/` under `/usr/local/lib/dapp-bin` and if it does not
find the file there, it will look at `/usr/local/lib/fallback` (the empty prefix
-always matches) and if also that fails, it will make a full path lookup
-on the filesystem.
+always matches). `solc` will not read files from the filesystem that lie outside of
+the remapping targets and outside of the directories where explicitly specified source
+files reside, so things like `import "/etc/passwd";` only work if you add `=/` as a remapping.
+
+If there are multiple matches due to remappings, the one with the longest common prefix is selected.
If your contracts use [libraries](#libraries), you will notice that the bytecode contains substrings of the form `__LibraryName______`. You can use `solc` as a linker meaning that it will insert the library addresses for you at those points: