summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Remove LLVM 8.0.1 files.patrick2020-08-0310023-2942531/+0
|
* int64_t and intmax_t are always (signed) long long on OpenBSD.kettenis2020-07-181-0/+2
| | | | ok deraadt@
* Set the default ABI for OpenBSD to ELFv2 in the clang frontend as well.kettenis2020-07-111-0/+4
| | | | | | | This makes sure the compiler defines the _CALL_ELF pre-processor symbol correctly. ok mortimer@
* Make long double the same as double for now on powerpc64 like we do onkettenis2020-06-281-0/+1
| | | | | | powerpc. This matched what FreeBSD does. ok patrick@
* Powerpc64 should use same _mcount profiling as powerpc 32bit.drahn2020-05-301-0/+1
| | | | ok kettenis@
* PowerPC: optimize away the frame pointer.gkoehler2020-05-251-3/+4
| | | | | | | | clang defaulted to -fomit-frame-pointer when optimizing PowerPC code for Linux and NetBSD. Now do it for all systems, including OpenBSD. This affects both 32-bit and powerpc64 code. ok kettenis@
* Make sure that we add our OpenBSD specific defines on PowerPC64 targets.patrick2020-05-201-0/+4
| | | | | Prompted and tested by drahn@ ok deraadt@ drahn@ kettenis@ visa@
* Define the appropriate __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* symbols like allkettenis2020-04-051-0/+5
| | | | | | other clang platforms do. ok jca@
* Switch powerpc clang to -msvr4-struct-return, like gcc.gkoehler2020-03-044-9/+103
| | | | | | | | Add these options from gcc to clang: -maix-struct-return # return all structs in memory -msvr4-struct-return # return small structs in r3/r4 ok mortimer@ jca@ deraadt@
* Add arm64 support for lldb.mortimer2019-12-213-0/+650
| | | | "Go for it" kettenis@
* Sort relative relocations (and relocations against the same symbol) by offsetguenther2019-11-291-1/+8
| | | | | | to optimize the cache and UVM faulting behavior ok kettenis@
* In lldb, use a OpenBSD signal map instead of leveraging the FreeBSD one.mortimer2019-11-274-1/+54
| | | | ok kettenis@
* Add bits to allow lldb to find lldb-server.mortimer2019-11-264-0/+28
| | | | | | | | lldb likes to look at argv[0] to figure out where it might find lldb-server, but when we invoke lldb via $PATH this doesn't work, so fill in some helpers to tell it where to look. ok millert@
* Do not process 0 size DT_PLTRELSZ sections.mortimer2019-11-261-1/+3
| | | | | | Fixes an assert when running lldb with DEBUG. ok patrick@
* Cope with missing PT_* operations on some architecturesderaadt2019-11-102-0/+20
| | | | with mortimer
* Add lldb support for debugging running binaries on amd64.mortimer2019-11-0929-66/+2342
| | | | | | | Follows a similar model as NetBSD. Much help from patrick, kettenis and guenther. lldb and lldb-server remain not installed by default. ok patrick@
* Add retguard for octeon/mips64.mortimer2019-10-251-0/+2
| | | | | | | | | | For this architecture we use separate retguard prologue and epilogue code for static or PIC code. In the PIC case we use some additional code before the retguard epilogue to recover the function start address and the GOT pointer in order to get the per-function random cookie. Much thanks to visa@ for suggestions and advice making it all work. ok deraadt@ visa@
* Make clang emit the proper path to our libcompiler_rt.a when asked to.patrick2019-09-282-0/+12
| | | | | | | | Change of behaviour in latest clang upgrade noticed by jsing@ during the Go port update, where --print-libgcc-file-name is being used which prints the compiler-rt path. ok kettenis@
* Merge LLVM 8.0.1 release.patrick2019-09-015-16/+21
| | | | | | | Tested in snaps and package builds Tested on amd64 by naddy@ Tested on arm64 by patrick@ Tested on octeon by visa@
* Import LLVM 8.0.1 release including clang, lld and lldb.patrick2019-09-0121-133/+232
|
* Implement the 'h' register constraint on mips64. This lets clang buildvisa2019-07-011-0/+1
| | | | | | | | | | | pieces of software that use the constraint if the compiler claims to be compatible with GCC 4.2.1. Note that the constraint was removed in GCC 4.4. The reason was that 'h' could generate code whose result is unpredictable. The underlying reason is that the HI and LO registers are special, and the optimizer has to be careful when choosing the order of HI/LO accesses. It looks that LLVM has the needed logic.
* In LLVM 8 somebody had the glorious idea to enable the integrated assemblerclaudio2019-06-261-1/+1
| | | | | | | | for OpenBSD sparc64. The problem is that the integrated assembler is not even able to compile the .S files in lib/csu or lib/libc so revert this and use gas again. Fixes build issues with clang on sparc64. Issue identified by jca@ OK deraadt@, patrick@, jca@
* The -nopie flag has already been pushed a few lines before,patrick2019-06-241-3/+2
| | | | | | we don't need to do that again here. From Brad
* Merge LLVM 8.0.0 release.patrick2019-06-23272-57411/+6482
| | | | | | | | | Prepared with help from jsg@ and mortimer@ Tested on amd64 by bcallah@, krw@, naddy@ Tested on arm64 by patrick@ Tested on macppc by kettenis@ Tested on octeon by visa@ Tested on sparc64 by claudio@
* Import LLVM 8.0.0 release including clang, lld and lldb.patrick2019-06-233419-65043/+183925
|
* Back out frame pointer elimination optimization.mortimer2019-06-011-11/+0
|
* Do not eliminate frame pointers on i386. The entire i386 ecosystem assumesmortimer2019-06-011-1/+0
| | | | | it will be there. problem found by naddy@, "heck yeah" kettenis@
* Re-enable frame pointer elimination for x86 and mips64 if optimizations aremortimer2019-05-311-0/+12
| | | | | | enabled. ok visa@
* Stop using the moribund MLINKS bsd.man.mk feature for clang(1).schwarze2019-05-161-2/+2
| | | | | Patch clang.rst such that "gmake -f Makefile.sphinx man" keeps working. Using input from jsg@; OK patrick@; "no worries" deraadt@
* Add support for -znoretpolineplt and make -zretpolineplt the default.guenther2019-05-131-2/+7
| | | | | | Affects i386 and amd64 only. ok deraadt@ kettenis@
* add "elf64_sparc" emulation name so ELF SPARCV9 format can be explicitlynaddy2019-04-261-0/+1
| | | | specified; suggested by and ok kettenis@
* Also touch --param ssp-buffer-size when using retguard in lieu of themortimer2019-04-251-1/+2
| | | | | | | stack protector. Fixes 'unused arguments' warning when this argument is given. Noticed by robert@, ok robert@
* frame-pointer elimination has encountered some resistance in ports but wederaadt2019-04-041-12/+0
| | | | | | are close to release, so punt the change till after-release easier for everyoned and especially naddy ok tedu
* Enable frame pointer elimination on i386, amd64 and mips64 when givenmortimer2019-04-021-0/+12
| | | | | | optimization flags. ok kettenis@ visa@
* Consume SSP options when using retguard to prevent warnings.mortimer2019-04-011-0/+4
| | | | ok millert@
* If using retguard, we do not also need the stack protector.mortimer2019-03-311-3/+4
| | | | ok deraadt@
* libLLVM in base will be installed as libLLVM.so.major.minor with nojsg2019-03-051-2/+13
| | | | | | | 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.
* Improve the X86FixupGadgets pass:mortimer2019-02-222-0/+14
| | | | | | | | | | - 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@
* Skip retguard instructions in prologue detection.mortimer2019-02-172-0/+14
| | | | ok patrick@
* Merge LLVM commits r340844, r353818 and r353819 from the 8.0 branchpatrick2019-02-131-1/+1
| | | | | | | | | | 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@
* On OpenBSD/powerpc (and NetBSD/powerpc) long double == double like onkettenis2019-02-101-1/+7
| | | | | | FreeBSD/powerpc. From George Koehler. ok millert@, deraadt@, visa@
* implement -msave-args in clang/llvm, like the sun did for gccdlg2019-01-303-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* On i386, produce binaries that are compatible with our W^X implementation.kettenis2019-01-281-0/+17
| | | | | | | | | | 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@
* Tedu files that got removed in LLVM 7.0.1.patrick2019-01-2741-1045/+0
|
* Tedu files that got removed in LLVM 7.0.1.patrick2019-01-27126-18488/+0
|
* Merge LLVM 7.0.1 release.patrick2019-01-2739-7478/+11706
| | | | | With fixes from mortimer@ (thanks!) Tested by many, especially naddy@ (thanks!)
* Import LLVM 7.0.1 release including clang, lld and lldb.patrick2019-01-273823-120886/+231803
|
* The %b printf extension in the kernel is not fixed to a int type. On sparc64claudio2018-12-293-13/+38
| | | | | | 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@
* Generate __data_start symbol that marks the start of .data when __data_startkettenis2018-10-243-0/+8
| | | | | | is referenced from code being linked. ok deraadt@, naddy@, guenther@
* Add support for -z initfirst.kettenis2018-10-233-0/+4
| | | | From upstream r335090. ok guenther@