summaryrefslogtreecommitdiff
path: root/gnu/llvm/tools
AgeCommit message (Collapse)Author
2019-03-05libLLVM in base will be installed as libLLVM.so.major.minor with noJonathan Gray
symlink for libLLVM-7.so or libLLVM.so. Adjust llvm-config to cope and force llvm-config DyLibExists to true. This is specific to LLVM in base this patch should not be used in ports.
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-02-22Improve the X86FixupGadgets pass:mortimer
- Target all four kinds of return bytes (c2, c3, ca, cb) - Fix up instructions using both ModR/M and SIB bytes - Force alignment before instructions with return bytes in immediates - Force alignment before instructions that have return bytes in their encoding - Add a command line switch to toggle the functionality. ok deraadt@
2019-02-17Skip retguard instructions in prologue detection.mortimer
ok patrick@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2019-02-13Merge LLVM commits r340844, r353818 and r353819 from the 8.0 branchPatrick Wildt
to fix a regression in floating point operations. Bluhm noticed that the bc regression test has been failing after the upgrade to 7.0.1 because setting the floating point control register was in some cases reordered erroneously. Found and tested by bluhm@ ok bluhm@ kettenis@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-02-10On OpenBSD/powerpc (and NetBSD/powerpc) long double == double like onMark Kettenis
FreeBSD/powerpc. From George Koehler. ok millert@, deraadt@, visa@
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2019-01-30implement -msave-args in clang/llvm, like the sun did for gccDavid Gwynne
this is a bit different to gcc as gcc likes to use movs to move stuff on and off the stack, and directly updates the stack pointers with add and sub instructions. llvm prefers to use push and pop instructions, is a lot more careful about keeping track of how much stuff is currently on the stack, and generally pops the frame pointer rather than do maths on it. -msave-args adds a bunch of pushes as the first thing a function prologue does. to keep the stack aligned, if there's an odd number of arguments to the function it pushes the first one again to put the frame back on a 16 byte boundary. to undo the pushes the frame pointer needs to be updated in function epilogues. clang emits a series of pops to fix up the registers on the way out, but popping saved arguments is a waste of time and harmful to actual data in the function. rather than add an offset to the stack pointer, -msave-args emits a leaveq operation to fix up the frame again. leaveq is effectively mov rbp,rsp; pop rbp, and is a single byte, meaning there's less potential for gadgets compared to a direct add to rsp, or an explicit mov rbp,rsp. the only thing missing compared to the gcc implementation is adding the SUN_amd64_parmdump dwarf flag to affected functions. if someone can tell me how to add that from the frame lowering code, let me know. when enabled in kernel builds again, this will provide useful arguments in ddb stack traces again.
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2019-01-28On i386, produce binaries that are compatible with our W^X implementation.Mark Kettenis
Note that this will still produce binaries that have the read-only segment placed before the executable segment. This means that on machines without the NX bit, the read-only segment is now executable. However on machines with an NX bit, the ordering used by lld means the program headers are no longer executable since they are now part of the read-only segment. ok deraadt@, naddy@
2019-01-27Tedu files that got removed in LLVM 7.0.1.Patrick Wildt
2019-01-27Tedu files that got removed in LLVM 7.0.1.Patrick Wildt
2019-01-27Merge LLVM 7.0.1 release.Patrick Wildt
With fixes from mortimer@ (thanks!) Tested by many, especially naddy@ (thanks!)
2019-01-27Import LLVM 7.0.1 release including clang, lld and lldb.Patrick Wildt
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2017-01-24Import LLVM 4.0.0 rc1 including clang and lld to help the currentPatrick Wildt
development effort on OpenBSD/arm64.
2017-01-14Import LLVM 3.9.1 including clang and lld.Patrick Wildt
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2018-12-29The %b printf extension in the kernel is not fixed to a int type. On sparc64Claudio Jeker
there are various %llb formats. Adjust the code to handle the length specifiers and type check like it is used by the regular case. OK guenther@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2018-10-24Generate __data_start symbol that marks the start of .data when __data_startMark Kettenis
is referenced from code being linked. ok deraadt@, naddy@, guenther@
2017-01-14Import LLVM 3.9.1 including clang and lld.Patrick Wildt
2018-10-23Add support for -z initfirst.Mark Kettenis
From upstream r335090. ok guenther@
2018-10-22Accept both `--foo bar` and `--foo=bar` styles options.Christian Weisgerber
GNU linkers by convention supports both `--foo bar` and `--foo=bar` styles for all long options that take arguments. From upstream r326506. ok patrick@ kettenis@
2018-10-21When merging sections into the output, lld tries to adjust the alignment ofMark Kettenis
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. ok guenther@, naddy@
2018-10-21Enable the integrated assembler on mips64.Visa Hankala
Upstream references: https://reviews.llvm.org/D31557 https://reviews.llvm.org/D48515 OK kettenis@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2018-09-29Allow preemption of functions with protected visibility. Disallowing thisMark Kettenis
makes no sense. Yes it breaks function address equality and therefore the expectations of the standard C language. However declaring symbols with protected visibility isn't standard C in the first place. Fixes linking non-PIC/PIE code with lld on amd64. ok millert@
2017-01-14Import LLVM 3.9.1 including clang and lld.Patrick Wildt
2018-09-11Fix --exclude-libs option. Based on code already committed upstream.Mark Kettenis
tested by naddy@
2018-08-12Add retguard for arm64.mortimer
ok deraadt@
2018-06-12Merge '.openbsd.randomdata.*' sections into a single '.openbsd.randomdata'Philip Guenther
section when linking, as we do when using ld from binutils. ok mortimer@ deraadt@
2018-06-07Pass -nopie to the linker when -pg is specified to make theYASUOKA Masahiko
profiler(gprof) work properly. ok mpi
2018-06-06Add RETGUARD to clang for amd64. This security mechanism uses per-functionmortimer
random cookies to protect access to function return instructions, with the effect that the integrity of the return address is protected, and function return instructions are harder to use in ROP gadgets. On function entry the return address is combined with a per-function random cookie and stored in the stack frame. The integrity of this value is verified before function return, and if this check fails, the program aborts. In this way RETGUARD is an improved stack protector, since the cookies are per-function. The verification routine is constructed such that the binary space immediately before each ret instruction is padded with int03 instructions, which makes these return instructions difficult to use in ROP gadgets. In the kernel, this has the effect of removing approximately 50% of total ROP gadgets, and 15% of unique ROP gadgets compared to the 6.3 release kernel. Function epilogues are essentially gadget free, leaving only the polymorphic gadgets that result from jumping into the instruction stream partway through other instructions. Work to remove these gadgets will continue through other mechanisms. Remaining work includes adding this mechanism to assembly routines, which must be done by hand. Many thanks to all those who helped test and provide feedback, especially deaadt, tb, espie and naddy. ok deraadt@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2018-06-03Add ret protctor options as no-ops.mortimer
2018-06-03Work around a bug where discarding the .ARM.exidx section in the armv7 kernelMark Kettenis
linker script makes ld.lld(1) crash. This has been fixed in a different (proper?) way upstream but backporting their fix is a bit too invasive. ok patrick@
2018-05-05Switch armv7 to the "softfp" floating-point ABI. The ABI is identical toMark Kettenis
the "soft" floating-point ABI but this does allow the compiler to generate FPU instructions. ok deraadt@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2018-04-12keep the STT_FILE symbol in the table so that we know what fileRobert Nagy
was used to compile and object ok kettenis@
2018-04-07add back ld.lld 6.0 changesJonathan Gray
2018-04-06Tedu files that got removed in LLVM 6.0.0.Patrick Wildt
2018-04-06Merge LLVM 6.0.0 release.Patrick Wildt
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2017-01-24Import LLVM 4.0.0 rc1 including clang and lld to help the currentPatrick Wildt
development effort on OpenBSD/arm64.
2017-01-14Import LLVM 3.9.1 including clang and lld.Patrick Wildt
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2018-03-02Add a manual page for lld from lld svn rev 326463 with options notJonathan Gray
present in lld 5.0.1 removed (--build-id=fast, -z muldefs, -z retpolineplt). This includes a bunch of mdoc changes suggested by schwarze@ that were recently committed upstream. ok jmc@ schwarze@ kettenis@ deraadt@