summaryrefslogtreecommitdiff
path: root/gnu/llvm
AgeCommit message (Collapse)Author
2020-06-04Set max atomic size for PowerPC.gkoehler
32-bit PowerPC doesn't have instructions for lock-free atomic ops on 8-byte values, and needs libcalls like __atomic_fetch_add_8(). In code like "_Atomic long long a; a++;", clang doesn't emit a libcall. This was causing linker errors on symbols like __sync_fetch_and_add_8. Now that LLVM knows the max atomic size, its AtomicExpandPass changes these 8-byte ops into libcalls. ok mortimer@
2020-05-30Switch Powerpc64 Big Endian to ELFv2 on OpenBSD, as least for now.Dale Rahn
This should simplify bringup and make it easier to support Big Endian and Little Endian with the same code. May be reconsidered if it causes too many problems with Ports. ok kettenis@
2020-05-30Powerpc64 should use same _mcount profiling as powerpc 32bit.Dale Rahn
ok kettenis@
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2020-05-25PowerPC: optimize away the frame pointer.gkoehler
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@
2020-05-23Use a distinct trap code with retguard on mips64.Visa Hankala
This lets the kernel detect retguard traps and send SIGABRT instead of SIGEMT. SIGEMT does not indicate correctly the nature of the error (stack overflow, violation of control flow). It can confuse the user to restart the program without further investigation. Prompted by and OK deraadt@ OK mortimer@
2020-05-20Make sure that we add our OpenBSD specific defines on PowerPC64 targets.Patrick Wildt
Prompted and tested by drahn@ ok deraadt@ drahn@ kettenis@ visa@
2020-05-02Don't make an illegal adde. Avoids fatal error on PowerPC.gkoehler
When the DAG truncates an ISD::ADDE node, DAGCombiner may optimize it by making an adde with smaller operands. PowerPC has i1 registers, and may truncate an i32 adde to i1, but an i1 adde is not legal for PowerPC, and the legalize-ops phase can't fix it. This was causing "fatal error: error in backend: Cannot select..." cwen@ reported the error ok mortimer@ kettenis@ deraadt@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2020-04-09Make sure that we really don't emut quad-precision unless theMark Kettenis
"hard-quad-float" feature is available. Add missing replacement instruction patterns that are needed to emit alternative code for conditional moves of quad-precision floats. ok mortimer@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2020-04-05Define the appropriate __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* symbols like allMark Kettenis
other clang platforms do. ok jca@
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2020-04-04Fix "small pic" secure plt support.Mark Kettenis
ok mortimer@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2020-03-04Switch powerpc clang to -msvr4-struct-return, like gcc.gkoehler
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@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-12-21Add arm64 support for lldb.mortimer
"Go for it" kettenis@
2019-11-29Sort relative relocations (and relocations against the same symbol) by offsetPhilip Guenther
to optimize the cache and UVM faulting behavior ok kettenis@
2019-11-27In lldb, use a OpenBSD signal map instead of leveraging the FreeBSD one.mortimer
ok kettenis@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2019-11-26Add bits to allow lldb to find lldb-server.mortimer
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@
2019-11-26Do not process 0 size DT_PLTRELSZ sections.mortimer
Fixes an assert when running lldb with DEBUG. ok patrick@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2019-11-10Cope with missing PT_* operations on some architecturesTheo de Raadt
with mortimer
2019-11-09Move the hashed __retguard_* symbols into individual sections and markPhilip Guenther
them as COMDATs so that the linker can individually discard them, instead of just ignoring duplicate symbols but keep the (duplicate) space. On amd64, this reduces the size of the kernel OPENBSD_RANDOM segment by 82% and the libc OPENBSD_RANDOM segment by 15%. A port that tb@ is working on experienced a 97.3% reduction...which let it actually run. ok mortimer@ deraadt@
2019-11-09Add lldb support for debugging running binaries on amd64.mortimer
Follows a similar model as NetBSD. Much help from patrick, kettenis and guenther. lldb and lldb-server remain not installed by default. ok patrick@
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2017-10-04Import LLVM 5.0.0 release including clang, lld and lldb.Patrick Wildt
2019-10-25Add retguard for octeon/mips64.mortimer
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@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-09-28Make clang emit the proper path to our libcompiler_rt.a when asked to.Patrick Wildt
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@
2019-09-01Merge LLVM 8.0.1 release.Patrick Wildt
Tested in snaps and package builds Tested on amd64 by naddy@ Tested on arm64 by patrick@ Tested on octeon by visa@
2019-09-01Import LLVM 8.0.1 release including clang, lld and lldb.Patrick Wildt
2019-08-12Ensure stack protector slot access is resolved by PEI.mortimer
On arm64, arm, and ppc it is possible that a large stack frame will cause the stack protector slot to be reallocated at the wrong end of the frame. Noticed by tj@. ok patrick@.
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-08-01The GlobalISel IRTranslator pass assumes that it is safe to use themortimer
LOAD_STACK_GUARD pseudo without consulting the value of useLoadStackGuardNode(), and then tries to add the return from getSDagStackGuard() as a parameter without consulting the return from getIRStackGuard() to see if it should do that. This means that the GlobalISel IRTranslator's implementation for Intrinsic::stackprotector is broken for platforms that implement getIRStackGuard() like we do, and this causes a segfault later when the incomplete LOAD_STACK_GUARD pseudo is lowered in the back end. Since GlobalISel is disabled on aarch64 most of the time anyway, add a bit that disables it for OpenBSD/aarch64 all the time. Fixes a crash when building on aarch64 without retguard, with a stack protector and without optimizations, which manifests when building cross-tools. ok patrick@ deraadt@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-07-28Address a few issues in the expansion of li.d and li.s:Visa Hankala
- In the N64 mode, properly load the whole immediate value in the destination register even if the lower 32 bits are zero. - Ensure correct alignment of memory operands. - Fix the endianess of memory operands.
2019-07-08Fix instruction guard. This prevents the compiler from usingVisa Hankala
the MIPS64 mul instruction on pre-MIPS64 subtargets.
2019-07-01Implement the 'h' register constraint on mips64. This lets clang buildVisa Hankala
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.
2018-04-06Import LLVM 6.0.1 release including clang, lld and lldb.Patrick Wildt
"where is the kaboom?" deraadt@
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@
2019-06-26In LLVM 8 somebody had the glorious idea to enable the integrated assemblerClaudio Jeker
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@
2019-06-24Implement .cplocal directive. Needed when building libcrypto.Visa Hankala
2019-06-24Implement SGE pseudo-instructions. Needed when building libcrypto.Visa Hankala
2019-06-24Fix a bug in memory operand handling. If a load or store uses a symbolVisa Hankala
as a memory operand, the assembler generates incorrect relocations in PIC mode. As a simple fix, expand the instruction into an address load sequence, which works, that is followed by the actual memory instruction. Note that the generated sequence is not always optimal. If the symbol has a small offset, the offset could be fused with the memory instruction. The fix does not achieve that, however. A symbol offset adds an extra instruction.
2019-06-24The -nopie flag has already been pushed a few lines before,Patrick Wildt
we don't need to do that again here. From Brad
2016-09-03Use the space freed up by sparc and zaurus to import LLVM.Pascal Stumpf
ok hackroom@