1362 Commits (main)
 

Author SHA1 Message Date
David Chisnall 78ff24516c Fix invoking missing superclass methods.
The lookup functions for the superclass paths were silently ignoring
missing methods, rather than calling the forwarding hook.

Fixes #153
6 years ago
David Chisnall fa2914b13c Don't fail on ctest writing to stderr
When passing -T to ask CTest to generate XML output, CTest complains
about a missing TCL file.  This causes the build steps to fail.  To
avoid that, make sure the ctest invocation is the last line in the
script so that its error status will be reported.
6 years ago
David Chisnall 2d46c97544 Add a publish results step to Azure pipeline. 6 years ago
David Chisnall 691c1df6ad Bump the Linux CI version to Ubuntu 18.04 6 years ago
David Chisnall bbf748474c Bump CI FreeBSD image version. 6 years ago
Frederik Seiffert 97de29fae2 Match indentation in unwind-arm.h 6 years ago
Frederik Seiffert 849fa9c8eb Match _Unwind_Reason_Code enum between ARM and Itanium. 6 years ago
Frederik Seiffert 186847c8d0 Fix eh_win32_msvc.cc includes 6 years ago
David Chisnall 249acabbf4 Disable a test on Windows.
This is failing (and needs fixing) but it's unhelpful for CI to report
failures on Windows for PRs.
6 years ago
David Chisnall 769ac2f8b7 Fix some bad instructions in the INSTALL file. 6 years ago
Niels Grewe cbfc592713
Merge pull request #148 from gnustep/mmap-anonymous
Use (anonymous) mmap() for allocating block-based IMPs.
6 years ago
Niels Grewe 0e84e318e7
Use (anonymous) mmap() when available.
Should fix #147 (SELinux related segfault)
6 years ago
Dustin L. Howett bfc0b9afe4 Operate on the real weak ref table when erasing an entry
Fixes #144.

(cherry picked from commit 9702494b902eedf9383e9194df372a4482d7a044)
6 years ago
Dustin L. Howett 7ad75c07d6 Revert "Fix test failure."
This reverts commit 336d8a828c.

(cherry picked from commit 194d2ba8db86a03a08ef825501627d7d178e4202)
6 years ago
Niels Grewe 59815ebc10 fix test for class properties 6 years ago
Niels Grewe ecdc4ffbd4 check both for the full and the short name of the C++ ABI library, unset cache if the library is not usable 6 years ago
Niels Grewe 8e749db5ca chore: Add project() statement to prevent noise in CMake logs 6 years ago
Niels Grewe 5578072611
Write a correct .pc file for gnustep-make installs
Fixes #140
6 years ago
David Chisnall 7c79dfc4c5 Add missing files. 6 years ago
David Chisnall aa775cf835 Fix ObjC++ interop bug.
The reworked wrapping of C++ exceptions meant that we were missing a
dereference of the result of __cxa_begin_catch.

Add a test that triggers this issue.  It would have occurred in the
non-ARC version if we actually did anything with the exception, but
compiling it in ARC mode makes the compiler insert retain / autorelease
around the exception object to ensure that it remains live.
6 years ago
David Chisnall 8e59872681 Require C++14 in CMake. 6 years ago
Niels Grewe 8249036318 generate a pkg-config file 6 years ago
David Chisnall 28375c9a27
Merge pull request #132 from triplef/freebsd-test-libcxxrt
Run FreeBSD CI also against libcxxrt master.
6 years ago
Frederik Seiffert ecfce73295 Run FreeBSD CI also against libcxxrt master. 6 years ago
David Chisnall 55819ce107 Move the libstdc++ code path to a separate file.
We need to #include <exception> for this to work, but this brings in the
public definition of `std::type_info` and, unfortunately, that breaks
the private definition that we need in this compilation unit.
6 years ago
David Chisnall 55a4719976 Attempt to fix libsupc++ support.
Recent versions of libstdc++ appear to have lost the clean layering
between libstdc++ and libsupc++, so use the high-level APIs and some
pointer evilness to fudge the low-level ones...
6 years ago
David Chisnall 0ad8cad910 Remove the include of <cxxabi.h>
This removes conflicting definitions on libsupc++ platforms.
6 years ago
David Chisnall 242442b3aa Rework Objective-C++ exceptions.
The new version now does not depend on the layout of the C++ exception
structure and instead finds the two offsets that it cares about.

Fixes #108
6 years ago
David Chisnall 8e26f54e3e
Merge pull request #119 from gnustep/arc-cxx
Rework ARC code as C++.

Fixes #107
6 years ago
David Chisnall 75ad9243a1 Prevent libc++ from using exceptions. 6 years ago
David Chisnall 457361354c Merge remote-tracking branch 'origin/master' into arc-cxx 6 years ago
Rupert Daniel 108d4e19c0 Updated BlockImpTest asserts. Fixes #126
assert now directly compares block self with expected class, avoiding
objc_msgSend.
6 years ago
Rupert Daniel 710b2368cc Fixed crash when using self in imp_implementationWithBlock on armv7a 6 years ago
Frederik Seiffert 7166a41999 Fixed usage of properties linked list. 6 years ago
David Chisnall b1964451e1 Fix the AArch64 small object class lookup.
This was generating a relocation that didn't do the right thing and
didn't raise linker errors.  Now it is using GOT-relative addressing.

In combination with the last two commits, this now makes all of the
objc_msgSend tests pass on AArch64.

Fixes #105
6 years ago
David Chisnall c1a3d8f470 Fix stack resetting for objc_msgSend on ARM.
If we called into C to find the IMP (e.g. for forwarding), we were then
reloading all of the arguments but failing to adjust the stack pointer
by the correct amount, leaving it around 192 bytes offset from its
correct location.  This, unsurprisingly, led to crashing and other
exciting behaviour.
6 years ago
David Chisnall 60a657fbc6 Fix CFA calculation in AArch64 objc_msgSend.
Prior to this, throwing an exception from a +initialize method would
leave the stack pointer 16 bytes offset from its correct location.
6 years ago
David Chisnall 469d616a77 [NFC] Fix comment. 6 years ago
David Chisnall 4482919e09 Fix an issue with `WeakRef`s being over-released
As an optimisation, on load of a weak reference we check if the object
has already been deallocated and, if so, decrement the weak reference
count and zero the pointer to the weak reference structure so that the
next check is faster and doesn't need to hold locks for as long.

Unfortunately, the prior implementation of this instead decremented the
weak reference count and then only zeroed the pointer if the reference
count reached zero.  This meant that loading the same __weak pointer
twice after the pointed-to object had been deallocated would decrement
the reference count twice.
6 years ago
David Chisnall 2fb1194cec Add test case for weak ref issue.
This test now fails deterministically, which should make fixing it
easier.
6 years ago
David Chisnall b7021f7488 Merge remote-tracking branch 'origin/master' into arc-cxx 7 years ago
David Chisnall 8809f0122e Fix memory corruption with weak references.
When removing a WeakRef from the map, we use its obj field to find the
key, but the obj field has already been zeroed by this point and so we
end up leaving dangling pointers in the map.
7 years ago
David Chisnall 336d8a828c Fix test failure.
This bug is also present in the original version:

When removing a WeakRef from the map, we use its obj field to find the
key, but the obj field has already been zeroed by this point and so we
end up leaving dangling pointers in the map.
7 years ago
David Chisnall 066a4e65a9 Another go at fixing Cirrus... 7 years ago
David Chisnall af55c29007 Fix the build on Windows. 7 years ago
David Chisnall a04d0e8547 Attempt to make submodules work with cirrus. 7 years ago
David Chisnall 824135cc54 Tell Azure CI to get submodules. 7 years ago
David Chisnall de9f74015f Fix warning. 7 years ago
David Chisnall 3f38f691af Rework ARC code as C++.
Move the weak references hash table to use a well-tested third-party
implementation instead of the hand-rolled version.
7 years ago
David Chisnall e1c10af124
Merge pull request #113 from triplef/fix-android-cxx-runtime-check
Pass on Android toolchain flags for CXX runtime check.
7 years ago