Merge in the other bits I had in the last diff I posted.
- Simplify a patch
- Add -z interpose
- 4 patches from patrick's tree for Clang/lld
Index: Makefile
===================================================================
RCS file: /home/cvs/ports/devel/llvm/Makefile,v
retrieving revision 1.206
diff -u -p -u -p -r1.206 Makefile
--- Makefile 28 Jan 2019 06:27:28 -0000 1.206
+++ Makefile 28 Jan 2019 08:01:05 -0000
@@ -20,6 +20,7 @@ PKGSPEC-main = llvm-=${LLVM_V}
PKGNAME-main = llvm-${LLVM_V}
PKGNAME-python = py-llvm-${LLVM_V}
PKGNAME-lldb = lldb-${LLVM_V}
+REVISION-main = 0
CATEGORIES = devel
DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \
cfe-${LLVM_V}.src${EXTRACT_SUFX} \
Index: patches/patch-lib_MC_MCParser_AsmParser_cpp
===================================================================
RCS file:
/home/cvs/ports/devel/llvm/patches/patch-lib_MC_MCParser_AsmParser_cpp,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 patch-lib_MC_MCParser_AsmParser_cpp
--- patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 06:27:28 -0000
1.5
+++ patches/patch-lib_MC_MCParser_AsmParser_cpp 28 Jan 2019 08:08:50 -0000
@@ -11,22 +11,14 @@ a file directive.
Index: lib/MC/MCParser/AsmParser.cpp
--- lib/MC/MCParser/AsmParser.cpp.orig
+++ lib/MC/MCParser/AsmParser.cpp
-@@ -858,6 +858,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No
- AsmCond StartingCondState = TheCondState;
- SmallVector<AsmRewrite, 4> AsmStrRewrites;
-
-+ StringRef Filename = getContext().getMainFileName();
-+
- // If we are generating dwarf for assembly source files save the initial
text
- // section. (Don't use enabledGenDwarfForAssembly() here, as we aren't
- // emitting any actual debug info yet and haven't had a chance to parse any
-@@ -873,6 +875,9 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No
- assert(InsertResult && ".text section should not have debug info yet");
+@@ -874,6 +874,10 @@ bool AsmParser::Run(bool NoInitialTextSection, bool No
(void)InsertResult;
}
-+
+
++ StringRef Filename = getContext().getMainFileName();
+ if (!Filename.empty() && (Filename.compare(StringRef("-")) != 0))
+ Out.EmitFileDirective(Filename);
-
++
// While we have input, parse each statement.
while (Lexer.isNot(AsmToken::Eof)) {
+ ParseStatementInfo Info(&AsmStrRewrites);
Index: patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp
===================================================================
RCS file:
/home/cvs/ports/devel/llvm/patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp
--- patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019
06:27:28 -0000 1.7
+++ patches/patch-tools_clang_lib_Driver_ToolChains_OpenBSD_cpp 28 Jan 2019
08:09:12 -0000
@@ -162,7 +162,7 @@ Index: tools/clang/lib/Driver/ToolChains
+ case ToolChain::CST_Libcxx:
+ CmdArgs.push_back(Profiling ? "-lc++_p" : "-lc++");
+ CmdArgs.push_back(Profiling ? "-lc++abi_p" : "-lc++abi");
-+ CmdArgs.push_back("-lpthread");
++ CmdArgs.push_back(Profiling ? "-lpthread_p" : "-lpthread");
+ break;
+ case ToolChain::CST_Libstdcxx:
+ CmdArgs.push_back("-lestdc++");
Index: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp
===================================================================
RCS file: patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp
diff -N patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp 28 Jan 2019
08:06:37 -0000
@@ -0,0 +1,20 @@
+$OpenBSD$
+
+Index: tools/clang/lib/Frontend/InitHeaderSearch.cpp
+--- tools/clang/lib/Frontend/InitHeaderSearch.cpp.orig
++++ tools/clang/lib/Frontend/InitHeaderSearch.cpp
+@@ -431,14 +431,6 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths
+ case llvm::Triple::DragonFly:
+ AddPath("/usr/include/c++/5.0", CXXSystem, false);
+ break;
+- case llvm::Triple::OpenBSD: {
+- std::string t = triple.getTriple();
+- if (t.substr(0, 6) == "x86_64")
+- t.replace(0, 6, "amd64");
+- AddGnuCPlusPlusIncludePaths("/usr/include/g++",
+- t, "", "", triple);
+- break;
+- }
+ case llvm::Triple::Minix:
+ AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3",
+ "", "", "", triple);
Index: patches/patch-tools_lld_ELF_Config_h
===================================================================
RCS file: patches/patch-tools_lld_ELF_Config_h
diff -N patches/patch-tools_lld_ELF_Config_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tools_lld_ELF_Config_h 28 Jan 2019 08:09:41 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+lld: add -z interpose support
+
+Index: tools/lld/ELF/Config.h
+--- tools/lld/ELF/Config.h.orig
++++ tools/lld/ELF/Config.h
+@@ -182,6 +182,7 @@ struct Configuration {
+ bool ZExecstack;
+ bool ZHazardplt;
+ bool ZInitfirst;
++ bool ZInterpose;
+ bool ZKeepTextSectionPrefix;
+ bool ZNodelete;
+ bool ZNodlopen;
Index: patches/patch-tools_lld_ELF_Driver_cpp
===================================================================
RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_lld_ELF_Driver_cpp,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 patch-tools_lld_ELF_Driver_cpp
--- patches/patch-tools_lld_ELF_Driver_cpp 28 Jan 2019 06:27:28 -0000
1.11
+++ patches/patch-tools_lld_ELF_Driver_cpp 28 Jan 2019 08:10:04 -0000
@@ -1,11 +1,24 @@
$OpenBSD: patch-tools_lld_ELF_Driver_cpp,v 1.11 2019/01/28 06:27:28 jca Exp $
-Enable PIE by default.
+- Enable PIE by default.
+- lld: add -z interpose support
Index: tools/lld/ELF/Driver.cpp
--- tools/lld/ELF/Driver.cpp.orig
+++ tools/lld/ELF/Driver.cpp
-@@ -794,7 +794,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args
+@@ -339,8 +339,9 @@ static bool getZFlag(opt::InputArgList &Args, StringRe
+ static bool isKnown(StringRef S) {
+ return S == "combreloc" || S == "copyreloc" || S == "defs" ||
+ S == "execstack" || S == "hazardplt" || S == "initfirst" ||
+- S == "keep-text-section-prefix" || S == "lazy" || S == "muldefs" ||
+- S == "nocombreloc" || S == "nocopyreloc" || S == "nodelete" ||
++ S == "interpose" || S == "keep-text-section-prefix" ||
++ S == "lazy" || S == "muldefs" || S == "nocombreloc" ||
++ S == "nocopyreloc" || S == "nodelete" ||
+ S == "nodlopen" || S == "noexecstack" ||
+ S == "nokeep-text-section-prefix" || S == "norelro" || S == "notext"
||
+ S == "now" || S == "origin" || S == "relro" || S == "retpolineplt" ||
+@@ -794,7 +795,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args
Config->Optimize = args::getInteger(Args, OPT_O, 1);
Config->OrphanHandling = getOrphanHandling(Args);
Config->OutputFile = Args.getLastArgValue(OPT_o);
@@ -15,3 +28,11 @@ Index: tools/lld/ELF/Driver.cpp
Config->PrintIcfSections =
Args.hasFlag(OPT_print_icf_sections, OPT_no_print_icf_sections, false);
Config->PrintGcSections =
+@@ -844,6 +846,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args
+ Config->ZExecstack = getZFlag(Args, "execstack", "noexecstack", false);
+ Config->ZHazardplt = hasZOption(Args, "hazardplt");
+ Config->ZInitfirst = hasZOption(Args, "initfirst");
++ Config->ZInterpose = hasZOption(Args, "interpose");
+ Config->ZKeepTextSectionPrefix = getZFlag(
+ Args, "keep-text-section-prefix", "nokeep-text-section-prefix", false);
+ Config->ZNodelete = hasZOption(Args, "nodelete");
Index: patches/patch-tools_lld_ELF_LinkerScript_cpp
===================================================================
RCS file: patches/patch-tools_lld_ELF_LinkerScript_cpp
diff -N patches/patch-tools_lld_ELF_LinkerScript_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tools_lld_ELF_LinkerScript_cpp 28 Jan 2019 08:04:59
-0000
@@ -0,0 +1,21 @@
+$OpenBSD$
+
+Index: tools/lld/ELF/LinkerScript.cpp
+--- tools/lld/ELF/LinkerScript.cpp.orig
++++ tools/lld/ELF/LinkerScript.cpp
+@@ -771,13 +771,13 @@ void LinkerScript::assignOffsets(OutputSection *Sec) {
+ if (Ctx->MemRegion)
+ Dot = Ctx->MemRegion->CurPos;
+
+- switchTo(Sec);
+-
+ if (Sec->LMAExpr)
+ Ctx->LMAOffset = Sec->LMAExpr().getValue() - Dot;
+
+ if (MemoryRegion *MR = Sec->LMARegion)
+ Ctx->LMAOffset = MR->CurPos - Dot;
++
++ switchTo(Sec);
+
+ // If neither AT nor AT> is specified for an allocatable section, the linker
+ // will set the LMA such that the difference between VMA and LMA for the
Index: patches/patch-tools_lld_ELF_Options_td
===================================================================
RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_lld_ELF_Options_td,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-tools_lld_ELF_Options_td
--- patches/patch-tools_lld_ELF_Options_td 28 Jan 2019 06:27:28 -0000
1.2
+++ patches/patch-tools_lld_ELF_Options_td 28 Jan 2019 08:10:31 -0000
@@ -5,7 +5,19 @@ $OpenBSD: patch-tools_lld_ELF_Options_td
Index: tools/lld/ELF/Options.td
--- tools/lld/ELF/Options.td.orig
+++ tools/lld/ELF/Options.td
-@@ -386,6 +386,7 @@ def: Separate<["-"], "b">, Alias<format>, HelpText<"Al
+@@ -178,8 +178,9 @@ def icf_safe: F<"icf=safe">, HelpText<"Enable safe ide
+
+ def icf_none: F<"icf=none">, HelpText<"Disable identical code folding
(default)">;
+
+-def ignore_function_address_equality: F<"ignore-function-address-equality">,
+- HelpText<"lld can break the address equality of functions">;
++defm ignore_function_address_equality: B<"ignore-function-address-equality",
++ "lld can break the address equality of functions",
++ "lld cannot break the address equality of functions">;
+
+ def ignore_data_address_equality: F<"ignore-data-address-equality">,
+ HelpText<"lld can break the address equality of data">;
+@@ -386,6 +387,7 @@ def: Separate<["-"], "b">, Alias<format>, HelpText<"Al
def: JoinedOrSeparate<["-"], "l">, Alias<library>, HelpText<"Alias for
--library">;
def: JoinedOrSeparate<["-"], "L">, Alias<library_path>, HelpText<"Alias for
--library-path">;
def: F<"no-pic-executable">, Alias<no_pie>, HelpText<"Alias for --no-pie">;
Index: patches/patch-tools_lld_ELF_Symbols_h
===================================================================
RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_lld_ELF_Symbols_h,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-tools_lld_ELF_Symbols_h
--- patches/patch-tools_lld_ELF_Symbols_h 28 Jan 2019 06:27:28 -0000
1.2
+++ patches/patch-tools_lld_ELF_Symbols_h 28 Jan 2019 08:11:01 -0000
@@ -1,5 +1,8 @@
$OpenBSD: patch-tools_lld_ELF_Symbols_h,v 1.2 2019/01/28 06:27:28 jca Exp $
+Generate __data_start symbol that marks the start of .data when __data_start
+is referenced from code being linked.
+
Index: tools/lld/ELF/Symbols.h
--- tools/lld/ELF/Symbols.h.orig
+++ tools/lld/ELF/Symbols.h
Index: patches/patch-tools_lld_ELF_SyntheticSections_cpp
===================================================================
RCS file:
/home/cvs/ports/devel/llvm/patches/patch-tools_lld_ELF_SyntheticSections_cpp,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 patch-tools_lld_ELF_SyntheticSections_cpp
--- patches/patch-tools_lld_ELF_SyntheticSections_cpp 28 Jan 2019 06:27:28
-0000 1.9
+++ patches/patch-tools_lld_ELF_SyntheticSections_cpp 28 Jan 2019 08:11:43
-0000
@@ -1,16 +1,26 @@
$OpenBSD: patch-tools_lld_ELF_SyntheticSections_cpp,v 1.9 2019/01/28 06:27:28
jca Exp $
-When merging sections into the output, lld tries to adjust the alignment of
-the section to be at least as large as the entry size of the section.
-This causes a later check that validates the alignment to fail if the
-entry size isn't a power of two. This happens when building some of the
-java support code in ports gcc. Fix this by sticking to the original
-alignment if the entry size isn't a power of two.
+- lld: add -z interpose support
+- When merging sections into the output, lld tries to adjust the alignment of
+ the section to be at least as large as the entry size of the section.
+ This causes a later check that validates the alignment to fail if the
+ entry size isn't a power of two. This happens when building some of the
+ java support code in ports gcc. Fix this by sticking to the original
+ alignment if the entry size isn't a power of two.
Index: tools/lld/ELF/SyntheticSections.cpp
--- tools/lld/ELF/SyntheticSections.cpp.orig
+++ tools/lld/ELF/SyntheticSections.cpp
-@@ -2935,7 +2935,9 @@ void elf::mergeSections() {
+@@ -1266,6 +1266,8 @@ template <class ELFT> void DynamicSection<ELFT>::final
+ DtFlags |= DF_SYMBOLIC;
+ if (Config->ZInitfirst)
+ DtFlags1 |= DF_1_INITFIRST;
++ if (Config->ZInterpose)
++ DtFlags1 |= DF_1_INTERPOSE;
+ if (Config->ZNodelete)
+ DtFlags1 |= DF_1_NODELETE;
+ if (Config->ZNodlopen)
+@@ -2935,7 +2937,9 @@ void elf::mergeSections() {
}
StringRef OutsecName = getOutputSectionName(MS);
Index: patches/patch-tools_lld_ELF_Writer_cpp
===================================================================
RCS file: /home/cvs/ports/devel/llvm/patches/patch-tools_lld_ELF_Writer_cpp,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 patch-tools_lld_ELF_Writer_cpp
--- patches/patch-tools_lld_ELF_Writer_cpp 28 Jan 2019 06:27:28 -0000
1.9
+++ patches/patch-tools_lld_ELF_Writer_cpp 28 Jan 2019 08:12:11 -0000
@@ -2,6 +2,8 @@ $OpenBSD: patch-tools_lld_ELF_Writer_cpp
- Merge '.openbsd.randomdata.*' sections into a single '.openbsd.randomdata'
section when linking, as we do when using ld from binutils.
+- Generate __data_start symbol that marks the start of .data when __data_start
+ is referenced from code being linked.
- Put .got.plt in RELRO.
Index: tools/lld/ELF/Writer.cpp