Tools.cpp (194179) | Tools.cpp (195341) |
---|---|
1//===--- Tools.cpp - Tools Implementations ------------------------------*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 484 unchanged lines hidden (view full) --- 493 Args.AddLastArg(CmdArgs, options::OPT_fobjc_nonfragile_abi); 494 Args.AddLastArg(CmdArgs, options::OPT_fobjc_tight_layout); 495 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info); 496 Args.AddLastArg(CmdArgs, options::OPT_ftime_report); 497 Args.AddLastArg(CmdArgs, options::OPT_ftrapv); 498 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_EQ); 499 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings); 500 | 1//===--- Tools.cpp - Tools Implementations ------------------------------*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 484 unchanged lines hidden (view full) --- 493 Args.AddLastArg(CmdArgs, options::OPT_fobjc_nonfragile_abi); 494 Args.AddLastArg(CmdArgs, options::OPT_fobjc_tight_layout); 495 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info); 496 Args.AddLastArg(CmdArgs, options::OPT_ftime_report); 497 Args.AddLastArg(CmdArgs, options::OPT_ftrapv); 498 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_EQ); 499 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings); 500 |
501 // Forward stack protector flags. 502 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector, 503 options::OPT_fstack_protector_all, 504 options::OPT_fstack_protector)) { 505 if (A->getOption().matches(options::OPT_fno_stack_protector)) 506 CmdArgs.push_back("--stack-protector=0"); 507 else if (A->getOption().matches(options::OPT_fstack_protector)) 508 CmdArgs.push_back("--stack-protector=1"); 509 else 510 CmdArgs.push_back("--stack-protector=2"); 511 } 512 |
|
501 // Forward -f options with positive and negative forms; we translate 502 // these by hand. 503 504 // -fbuiltin is default, only pass non-default. 505 if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin)) 506 CmdArgs.push_back("-fbuiltin=0"); 507 508 // -fblocks default varies depending on platform and language; only --- 102 unchanged lines hidden (view full) --- 611 else if (II.isFilename()) 612 CmdArgs.push_back(II.getFilename()); 613 else 614 II.getInputArg().renderAsInput(Args, CmdArgs); 615 } 616 617 const char *Exec = 618 Args.MakeArgString(getToolChain().GetProgramPath(C, "clang-cc").c_str()); | 513 // Forward -f options with positive and negative forms; we translate 514 // these by hand. 515 516 // -fbuiltin is default, only pass non-default. 517 if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin)) 518 CmdArgs.push_back("-fbuiltin=0"); 519 520 // -fblocks default varies depending on platform and language; only --- 102 unchanged lines hidden (view full) --- 623 else if (II.isFilename()) 624 CmdArgs.push_back(II.getFilename()); 625 else 626 II.getInputArg().renderAsInput(Args, CmdArgs); 627 } 628 629 const char *Exec = 630 Args.MakeArgString(getToolChain().GetProgramPath(C, "clang-cc").c_str()); |
619 Dest.addCommand(new Command(Exec, CmdArgs)); | 631 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
620 621 // Explicitly warn that these options are unsupported, even though 622 // we are allowing compilation to continue. 623 // FIXME: Use iterator. 624 for (ArgList::const_iterator 625 it = Args.begin(), ie = Args.end(); it != ie; ++it) { 626 const Arg *A = *it; 627 if (A->getOption().matches(options::OPT_pg)) { --- 114 unchanged lines hidden (view full) --- 742 // Don't render as input, we need gcc to do the translations. 743 II.getInputArg().render(Args, CmdArgs); 744 } 745 746 const char *GCCName = 747 getToolChain().getHost().getDriver().CCCGenericGCCName.c_str(); 748 const char *Exec = 749 Args.MakeArgString(getToolChain().GetProgramPath(C, GCCName).c_str()); | 632 633 // Explicitly warn that these options are unsupported, even though 634 // we are allowing compilation to continue. 635 // FIXME: Use iterator. 636 for (ArgList::const_iterator 637 it = Args.begin(), ie = Args.end(); it != ie; ++it) { 638 const Arg *A = *it; 639 if (A->getOption().matches(options::OPT_pg)) { --- 114 unchanged lines hidden (view full) --- 754 // Don't render as input, we need gcc to do the translations. 755 II.getInputArg().render(Args, CmdArgs); 756 } 757 758 const char *GCCName = 759 getToolChain().getHost().getDriver().CCCGenericGCCName.c_str(); 760 const char *Exec = 761 Args.MakeArgString(getToolChain().GetProgramPath(C, GCCName).c_str()); |
750 Dest.addCommand(new Command(Exec, CmdArgs)); | 762 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
751} 752 753void gcc::Preprocess::RenderExtraToolArgs(ArgStringList &CmdArgs) const { 754 CmdArgs.push_back("-E"); 755} 756 757void gcc::Precompile::RenderExtraToolArgs(ArgStringList &CmdArgs) const { 758 // The type is good enough. --- 359 unchanged lines hidden (view full) --- 1118 CmdArgs.append(OutputArgs.begin(), OutputArgs.end()); 1119 } 1120 1121 Args.AddAllArgs(CmdArgs, options::OPT_d_Group); 1122 1123 const char *CC1Name = getCC1Name(Inputs[0].getType()); 1124 const char *Exec = 1125 Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name).c_str()); | 763} 764 765void gcc::Preprocess::RenderExtraToolArgs(ArgStringList &CmdArgs) const { 766 CmdArgs.push_back("-E"); 767} 768 769void gcc::Precompile::RenderExtraToolArgs(ArgStringList &CmdArgs) const { 770 // The type is good enough. --- 359 unchanged lines hidden (view full) --- 1130 CmdArgs.append(OutputArgs.begin(), OutputArgs.end()); 1131 } 1132 1133 Args.AddAllArgs(CmdArgs, options::OPT_d_Group); 1134 1135 const char *CC1Name = getCC1Name(Inputs[0].getType()); 1136 const char *Exec = 1137 Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name).c_str()); |
1126 Dest.addCommand(new Command(Exec, CmdArgs)); | 1138 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1127} 1128 1129void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA, 1130 Job &Dest, const InputInfo &Output, 1131 const InputInfoList &Inputs, 1132 const ArgList &Args, 1133 const char *LinkingOutput) const { 1134 const Driver &D = getToolChain().getHost().getDriver(); --- 71 unchanged lines hidden (view full) --- 1206 1207 CmdArgs.push_back("--output-pch="); 1208 CmdArgs.push_back(Output.getFilename()); 1209 } 1210 1211 const char *CC1Name = getCC1Name(Inputs[0].getType()); 1212 const char *Exec = 1213 Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name).c_str()); | 1139} 1140 1141void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA, 1142 Job &Dest, const InputInfo &Output, 1143 const InputInfoList &Inputs, 1144 const ArgList &Args, 1145 const char *LinkingOutput) const { 1146 const Driver &D = getToolChain().getHost().getDriver(); --- 71 unchanged lines hidden (view full) --- 1218 1219 CmdArgs.push_back("--output-pch="); 1220 CmdArgs.push_back(Output.getFilename()); 1221 } 1222 1223 const char *CC1Name = getCC1Name(Inputs[0].getType()); 1224 const char *Exec = 1225 Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name).c_str()); |
1214 Dest.addCommand(new Command(Exec, CmdArgs)); | 1226 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1215} 1216 1217void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1218 Job &Dest, const InputInfo &Output, 1219 const InputInfoList &Inputs, 1220 const ArgList &Args, 1221 const char *LinkingOutput) const { 1222 ArgStringList CmdArgs; --- 36 unchanged lines hidden (view full) --- 1259 assert(Input.isFilename() && "Invalid input."); 1260 CmdArgs.push_back(Input.getFilename()); 1261 } 1262 1263 // asm_final spec is empty. 1264 1265 const char *Exec = 1266 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); | 1227} 1228 1229void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1230 Job &Dest, const InputInfo &Output, 1231 const InputInfoList &Inputs, 1232 const ArgList &Args, 1233 const char *LinkingOutput) const { 1234 ArgStringList CmdArgs; --- 36 unchanged lines hidden (view full) --- 1271 assert(Input.isFilename() && "Invalid input."); 1272 CmdArgs.push_back(Input.getFilename()); 1273 } 1274 1275 // asm_final spec is empty. 1276 1277 const char *Exec = 1278 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); |
1267 Dest.addCommand(new Command(Exec, CmdArgs)); | 1279 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1268} 1269 1270/// Helper routine for seeing if we should use dsymutil; this is a 1271/// gcc compatible hack, we should remove it and use the input 1272/// type information. 1273static bool isSourceSuffix(const char *Str) { 1274 // match: 'C', 'CPP', 'c', 'cc', 'cp', 'c++', 'cpp', 'cxx', 'm', 1275 // 'mm'. --- 407 unchanged lines hidden (view full) --- 1683 // endfile_spec is empty. 1684 } 1685 1686 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); 1687 Args.AddAllArgs(CmdArgs, options::OPT_F); 1688 1689 const char *Exec = 1690 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); | 1280} 1281 1282/// Helper routine for seeing if we should use dsymutil; this is a 1283/// gcc compatible hack, we should remove it and use the input 1284/// type information. 1285static bool isSourceSuffix(const char *Str) { 1286 // match: 'C', 'CPP', 'c', 'cc', 'cp', 'c++', 'cpp', 'cxx', 'm', 1287 // 'mm'. --- 407 unchanged lines hidden (view full) --- 1695 // endfile_spec is empty. 1696 } 1697 1698 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); 1699 Args.AddAllArgs(CmdArgs, options::OPT_F); 1700 1701 const char *Exec = 1702 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); |
1691 Dest.addCommand(new Command(Exec, CmdArgs)); | 1703 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1692 1693 // Find the first non-empty base input (we want to ignore linker 1694 // inputs). 1695 const char *BaseInput = ""; 1696 for (unsigned i = 0, e = Inputs.size(); i != e; ++i) { 1697 if (Inputs[i].getBaseInput()[0] != '\0') { 1698 BaseInput = Inputs[i].getBaseInput(); 1699 break; --- 13 unchanged lines hidden (view full) --- 1713 // the suffix (not the -x type), and then only of the first 1714 // source input. Awesome. 1715 const char *Suffix = strrchr(BaseInput, '.'); 1716 if (Suffix && isSourceSuffix(Suffix + 1)) { 1717 const char *Exec = 1718 Args.MakeArgString(getToolChain().GetProgramPath(C, "dsymutil").c_str()); 1719 ArgStringList CmdArgs; 1720 CmdArgs.push_back(Output.getFilename()); | 1704 1705 // Find the first non-empty base input (we want to ignore linker 1706 // inputs). 1707 const char *BaseInput = ""; 1708 for (unsigned i = 0, e = Inputs.size(); i != e; ++i) { 1709 if (Inputs[i].getBaseInput()[0] != '\0') { 1710 BaseInput = Inputs[i].getBaseInput(); 1711 break; --- 13 unchanged lines hidden (view full) --- 1725 // the suffix (not the -x type), and then only of the first 1726 // source input. Awesome. 1727 const char *Suffix = strrchr(BaseInput, '.'); 1728 if (Suffix && isSourceSuffix(Suffix + 1)) { 1729 const char *Exec = 1730 Args.MakeArgString(getToolChain().GetProgramPath(C, "dsymutil").c_str()); 1731 ArgStringList CmdArgs; 1732 CmdArgs.push_back(Output.getFilename()); |
1721 C.getJobs().addCommand(new Command(Exec, CmdArgs)); | 1733 C.getJobs().addCommand(new Command(JA, Exec, CmdArgs)); |
1722 } 1723 } 1724} 1725 1726void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA, 1727 Job &Dest, const InputInfo &Output, 1728 const InputInfoList &Inputs, 1729 const ArgList &Args, --- 9 unchanged lines hidden (view full) --- 1739 for (InputInfoList::const_iterator 1740 it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) { 1741 const InputInfo &II = *it; 1742 assert(II.isFilename() && "Unexpected lipo input."); 1743 CmdArgs.push_back(II.getFilename()); 1744 } 1745 const char *Exec = 1746 Args.MakeArgString(getToolChain().GetProgramPath(C, "lipo").c_str()); | 1734 } 1735 } 1736} 1737 1738void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA, 1739 Job &Dest, const InputInfo &Output, 1740 const InputInfoList &Inputs, 1741 const ArgList &Args, --- 9 unchanged lines hidden (view full) --- 1751 for (InputInfoList::const_iterator 1752 it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) { 1753 const InputInfo &II = *it; 1754 assert(II.isFilename() && "Unexpected lipo input."); 1755 CmdArgs.push_back(II.getFilename()); 1756 } 1757 const char *Exec = 1758 Args.MakeArgString(getToolChain().GetProgramPath(C, "lipo").c_str()); |
1747 Dest.addCommand(new Command(Exec, CmdArgs)); | 1759 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1748} 1749 | 1760} 1761 |
1762void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1763 Job &Dest, const InputInfo &Output, 1764 const InputInfoList &Inputs, 1765 const ArgList &Args, 1766 const char *LinkingOutput) const 1767{ 1768 ArgStringList CmdArgs; |
|
1750 | 1769 |
1770 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, 1771 options::OPT_Xassembler); 1772 1773 CmdArgs.push_back("-o"); 1774 if (Output.isPipe()) 1775 CmdArgs.push_back("-"); 1776 else 1777 CmdArgs.push_back(Output.getFilename()); 1778 1779 for (InputInfoList::const_iterator 1780 it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) { 1781 const InputInfo &II = *it; 1782 if (II.isPipe()) 1783 CmdArgs.push_back("-"); 1784 else 1785 CmdArgs.push_back(II.getFilename()); 1786 } 1787 1788 const char *Exec = 1789 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); 1790 Dest.addCommand(new Command(JA, Exec, CmdArgs)); 1791} 1792 1793void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, 1794 Job &Dest, const InputInfo &Output, 1795 const InputInfoList &Inputs, 1796 const ArgList &Args, 1797 const char *LinkingOutput) const { 1798 const Driver &D = getToolChain().getHost().getDriver(); 1799 ArgStringList CmdArgs; 1800 1801 if (Args.hasArg(options::OPT_static)) { 1802 CmdArgs.push_back("-Bstatic"); 1803 } else { 1804 CmdArgs.push_back("--eh-frame-hdr"); 1805 if (Args.hasArg(options::OPT_shared)) { 1806 CmdArgs.push_back("-Bshareable"); 1807 } else { 1808 CmdArgs.push_back("-dynamic-linker"); 1809 CmdArgs.push_back("/usr/libexec/ld.so"); 1810 } 1811 } 1812 1813 if (Output.isPipe()) { 1814 CmdArgs.push_back("-o"); 1815 CmdArgs.push_back("-"); 1816 } else if (Output.isFilename()) { 1817 CmdArgs.push_back("-o"); 1818 CmdArgs.push_back(Output.getFilename()); 1819 } else { 1820 assert(Output.isNothing() && "Invalid output."); 1821 } 1822 1823 if (!Args.hasArg(options::OPT_nostdlib) && 1824 !Args.hasArg(options::OPT_nostartfiles)) { 1825 if (!Args.hasArg(options::OPT_shared)) { 1826 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt0.o").c_str())); 1827 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o").c_str())); 1828 } else { 1829 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o").c_str())); 1830 } 1831 } 1832 1833 Args.AddAllArgs(CmdArgs, options::OPT_L); 1834 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); 1835 Args.AddAllArgs(CmdArgs, options::OPT_e); 1836 1837 for (InputInfoList::const_iterator 1838 it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) { 1839 const InputInfo &II = *it; 1840 1841 // Don't try to pass LLVM inputs to a generic gcc. 1842 if (II.getType() == types::TY_LLVMBC) 1843 D.Diag(clang::diag::err_drv_no_linker_llvm_support) 1844 << getToolChain().getTripleString().c_str(); 1845 1846 if (II.isPipe()) 1847 CmdArgs.push_back("-"); 1848 else if (II.isFilename()) 1849 CmdArgs.push_back(II.getFilename()); 1850 else 1851 II.getInputArg().renderAsInput(Args, CmdArgs); 1852 } 1853 1854 if (!Args.hasArg(options::OPT_nostdlib) && 1855 !Args.hasArg(options::OPT_nodefaultlibs)) { 1856 1857 if (Args.hasArg(options::OPT_pthread)) 1858 CmdArgs.push_back("-pthread"); 1859 CmdArgs.push_back("-lc"); 1860 } 1861 1862 if (!Args.hasArg(options::OPT_nostdlib) && 1863 !Args.hasArg(options::OPT_nostartfiles)) { 1864 if (!Args.hasArg(options::OPT_shared)) 1865 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o").c_str())); 1866 else 1867 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o").c_str())); 1868 } 1869 1870 const char *Exec = 1871 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); 1872 Dest.addCommand(new Command(JA, Exec, CmdArgs)); 1873} 1874 |
|
1751void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1752 Job &Dest, const InputInfo &Output, 1753 const InputInfoList &Inputs, 1754 const ArgList &Args, 1755 const char *LinkingOutput) const 1756{ 1757 ArgStringList CmdArgs; 1758 --- 17 unchanged lines hidden (view full) --- 1776 if (II.isPipe()) 1777 CmdArgs.push_back("-"); 1778 else 1779 CmdArgs.push_back(II.getFilename()); 1780 } 1781 1782 const char *Exec = 1783 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); | 1875void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1876 Job &Dest, const InputInfo &Output, 1877 const InputInfoList &Inputs, 1878 const ArgList &Args, 1879 const char *LinkingOutput) const 1880{ 1881 ArgStringList CmdArgs; 1882 --- 17 unchanged lines hidden (view full) --- 1900 if (II.isPipe()) 1901 CmdArgs.push_back("-"); 1902 else 1903 CmdArgs.push_back(II.getFilename()); 1904 } 1905 1906 const char *Exec = 1907 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); |
1784 Dest.addCommand(new Command(Exec, CmdArgs)); | 1908 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1785} 1786 1787void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA, 1788 Job &Dest, const InputInfo &Output, 1789 const InputInfoList &Inputs, 1790 const ArgList &Args, 1791 const char *LinkingOutput) const { 1792 const Driver &D = getToolChain().getHost().getDriver(); --- 94 unchanged lines hidden (view full) --- 1887 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o").c_str())); 1888 else 1889 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o").c_str())); 1890 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o").c_str())); 1891 } 1892 1893 const char *Exec = 1894 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); | 1909} 1910 1911void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA, 1912 Job &Dest, const InputInfo &Output, 1913 const InputInfoList &Inputs, 1914 const ArgList &Args, 1915 const char *LinkingOutput) const { 1916 const Driver &D = getToolChain().getHost().getDriver(); --- 94 unchanged lines hidden (view full) --- 2011 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o").c_str())); 2012 else 2013 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o").c_str())); 2014 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o").c_str())); 2015 } 2016 2017 const char *Exec = 2018 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); |
1895 Dest.addCommand(new Command(Exec, CmdArgs)); | 2019 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1896} 1897 1898/// DragonFly Tools 1899 1900// For now, DragonFly Assemble does just about the same as for 1901// FreeBSD, but this may change soon. 1902void dragonfly::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 1903 Job &Dest, const InputInfo &Output, --- 22 unchanged lines hidden (view full) --- 1926 if (II.isPipe()) 1927 CmdArgs.push_back("-"); 1928 else 1929 CmdArgs.push_back(II.getFilename()); 1930 } 1931 1932 const char *Exec = 1933 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); | 2020} 2021 2022/// DragonFly Tools 2023 2024// For now, DragonFly Assemble does just about the same as for 2025// FreeBSD, but this may change soon. 2026void dragonfly::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 2027 Job &Dest, const InputInfo &Output, --- 22 unchanged lines hidden (view full) --- 2050 if (II.isPipe()) 2051 CmdArgs.push_back("-"); 2052 else 2053 CmdArgs.push_back(II.getFilename()); 2054 } 2055 2056 const char *Exec = 2057 Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str()); |
1934 Dest.addCommand(new Command(Exec, CmdArgs)); | 2058 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
1935} 1936 1937void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA, 1938 Job &Dest, const InputInfo &Output, 1939 const InputInfoList &Inputs, 1940 const ArgList &Args, 1941 const char *LinkingOutput) const { 1942 const Driver &D = getToolChain().getHost().getDriver(); --- 107 unchanged lines hidden (view full) --- 2050 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o").c_str())); 2051 else 2052 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o").c_str())); 2053 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o").c_str())); 2054 } 2055 2056 const char *Exec = 2057 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); | 2059} 2060 2061void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA, 2062 Job &Dest, const InputInfo &Output, 2063 const InputInfoList &Inputs, 2064 const ArgList &Args, 2065 const char *LinkingOutput) const { 2066 const Driver &D = getToolChain().getHost().getDriver(); --- 107 unchanged lines hidden (view full) --- 2174 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o").c_str())); 2175 else 2176 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o").c_str())); 2177 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o").c_str())); 2178 } 2179 2180 const char *Exec = 2181 Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str()); |
2058 Dest.addCommand(new Command(Exec, CmdArgs)); | 2182 Dest.addCommand(new Command(JA, Exec, CmdArgs)); |
2059} | 2183} |