diff --git a/src/mapleall/maple_driver/defs/default/O0_options_ld.def b/src/mapleall/maple_driver/defs/default/O0_options_ld.def deleted file mode 100644 index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000 --- a/src/mapleall/maple_driver/defs/default/O0_options_ld.def +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/mapleall/maple_driver/defs/default/aarch64_linux_gnu_ld.def b/src/mapleall/maple_driver/defs/default/aarch64_linux_gnu_ld.def new file mode 100644 index 0000000000000000000000000000000000000000..87c49428697e4d1bff8deefed652a0f69c1c1ad5 --- /dev/null +++ b/src/mapleall/maple_driver/defs/default/aarch64_linux_gnu_ld.def @@ -0,0 +1,21 @@ +{"--sysroot", "/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc", true}, +{"-Bstatic", "", false}, +{"-EL", "", false}, +{"-maarch64linux", "", false}, +{"/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc/usr/lib/crt1.o", "", true}, +{"/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc/usr/lib/crti.o", "", true}, +{"/tools/gcc-linaro-7.5.0/lib/gcc/aarch64-linux-gnu/7.5.0/crtbeginT.o", "", true}, +{"-L", "/tools/gcc-linaro-7.5.0/lib/gcc/aarch64-linux-gnu/7.5.0", true}, +{"-L", "/tools/gcc-linaro-7.5.0/lib/gcc/aarch64-linux-gnu", true}, +{"-L", "/tools/gcc-linaro-7.5.0/lib/gcc", true}, +{"-L", "/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/lib64", true}, +{"-L", "/tools/gcc-linaro-7.5.0/lib", true}, +{"-L", "/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc/lib", true}, +{"-L", "/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc/usr/lib", true}, +{"--start-group", "", false}, +{"-lgcc", "", false}, +{"-lgcc_eh", "", false}, +{"-lc", "", false}, +{"--end-group", "", false}, +{"/tools/gcc-linaro-7.5.0/lib/gcc/aarch64-linux-gnu/7.5.0/crtend.o", "", true}, +{"/tools/gcc-linaro-7.5.0/aarch64-linux-gnu/libc/usr/lib/crtn.o", "", true}, \ No newline at end of file diff --git a/src/mapleall/maple_driver/defs/default_options.def b/src/mapleall/maple_driver/defs/default_options.def index b923ab1fe2f12b0f8378087a96a4c854fd187fcd..5a73cd8f9af6fce196396d6e9006fe6fcca714bf 100644 --- a/src/mapleall/maple_driver/defs/default_options.def +++ b/src/mapleall/maple_driver/defs/default_options.def @@ -122,7 +122,7 @@ static MplOption kAsDefaultOptions[] = { }; // O0 ld options static MplOption kLdDefaultOptions[] = { -#include "default/O0_options_ld.def" +#include "default/aarch64_linux_gnu_ld.def" }; } // namespace maple #endif // MAPLE_DRIVER_INCLUDE_DEFAULT_OPTIONS_H diff --git a/src/mapleall/maple_driver/src/ld_compiler.cpp b/src/mapleall/maple_driver/src/ld_compiler.cpp index 2b54bf739f4b1c35c8ff8c8584fe6bfccf5fb78d..f0e0407b4ad666e3f7b38cea46b35252e32b7583 100644 --- a/src/mapleall/maple_driver/src/ld_compiler.cpp +++ b/src/mapleall/maple_driver/src/ld_compiler.cpp @@ -27,7 +27,7 @@ std::string LdCompiler::GetBinPath(const MplOptions&) const { // TODO: Required to use ld instead of gcc; ld will be implemented later const std::string &LdCompiler::GetBinName() const { - return kBinNameGcc; + return kBinNameLd; } /* the tool name must be the same as exeName field in Descriptor structure */ @@ -44,10 +44,18 @@ DefaultOption LdCompiler::GetDefaultOptions(const MplOptions &options, const Act } for (uint32_t i = 0; i < defaultOptions.length; ++i) { - defaultOptions.mplOptions[i].SetValue( - FileUtils::AppendMapleRootIfNeeded(defaultOptions.mplOptions[i].GetNeedRootPath(), - defaultOptions.mplOptions[i].GetValue(), - options.GetExeFolder())); + if (defaultOptions.mplOptions[i].GetNeedRootPath()) { + if (defaultOptions.mplOptions[i].GetValue().empty()) { + defaultOptions.mplOptions[i].SetKey(FileUtils::SafeGetenv(kMapleRoot) + + defaultOptions.mplOptions[i].GetKey()); + } + else { + defaultOptions.mplOptions[i].SetValue( + FileUtils::AppendMapleRootIfNeeded(defaultOptions.mplOptions[i].GetNeedRootPath(), + defaultOptions.mplOptions[i].GetValue(), + options.GetExeFolder())); + } + } } return defaultOptions; }