1328 Commits (d0d28b8f9df02db471e6a39b5b78358ab07ad753)
 

Author SHA1 Message Date
Li Keqing e9e8bd3997 __CYGWIN32__ to _CYGWIN 7 years ago
Li Keqing a48030b12e Fix some link-stage errors when compiling with Cygwin 7 years ago
David Chisnall 2e6528e82b Fix accidentally inverted preprocessor directive. 7 years ago
David Chisnall f05f3f73b3 Revert C++ exception structure changes.
The C++ runtime library passes pointers to the middle of the structure,
so we need to ignore the fields that were previously missing.
7 years ago
David Chisnall acf44d64cb Fix invalid preprocessor directives. 7 years ago
David Chisnall 6cb6d15dfe Fix unwind info in objc_msgSend.arm.S
We were failing to properly indicate the locations of the spilled
floating-point (vector) registers.
7 years ago
David Chisnall 088977679e DWARF EH cleanups.
Update the C++ ABI for the C++11 ABI and fix the missing ARM-specific
bits.  Work around a bug in ARM.
7 years ago
David Chisnall 959a0f1998 Make alignTest pass on ARM.
This test assumed that a vector of 4 ints needed 16-byte alignment, but
this is target specific.  Now check that the runtime provides at least
as strong alignment as the compiler expects.
7 years ago
David Chisnall fe5ad93523 Don't require text relocations on AArc32.
This has been tested with a few hacks on FreeBSD, where everything
except for throwing exceptions in +initialize appears to work (most
likely an unrelated issue, though it's possible that there are problems
with the unwind tables in objc_msgSend.)

Fixes #92
7 years ago
David Chisnall bd5637af6d Fix memory leak in @synchronized.
This was actually a memory leak in the hidden class implementation, but
it was mostly visible in the @synchronized implementation.  Every hidden
class registered a custom .cxx_destruct method, to handle cleanup of all
of the hidden class structures.  Unfortunately, this destructor failed
to delete the reflection metadata structures associated with the class,
specifically the objc_method_list containing the objc_method pointing to
the destructor itself.

Fixes #98
7 years ago
David Chisnall c5fbeb7287 Revert "Provide compat classes only in compat builds."
This reverts commit 1970ba6d7b.

Some code paths are not resilient against these classes not existing.
7 years ago
David Chisnall 1970ba6d7b Provide compat classes only in compat builds.
Don't provide the two legacy protocol classes if we're building without
legacy compatibility.
7 years ago
David Chisnall 49bf9378fb Force linking the protocol classes.
We use the existence of the `Protocol` class in a set of loaded objects
to determine whether we are mixing ABIs in a safe way (i.e. only mixing
a new ABI runtime with old ABI everything else).  Unfortunately, in
static linking, the Protocol class was not being linked because it is
never directly referenced, which made this check fail.

Fixes #85
7 years ago
David Chisnall afee197c67 Rework some of the ivar offset calculations.
We now correctly handle ivars that overlap with the end of what the
compiler thinks is the start of the superclass and bitfields at the
start of a class.
7 years ago
David Chisnall 8dd9c9a0ae Fix an issue with incorrect offsets for the first ivar.
Clang rounds up the size of a class to the size of a word.  If the first
instance variable in a subclass has a field that has smaller alignment
requirements than a word, it is generated with a negative offset,
indicating that it belongs in the space allocated for the parent.

This did not work at all with the code we have for recomputing instance
variable layouts, which uses only the size and the alignment.

Fixes #96
7 years ago
Jordan Schidlowsky f5f452bcb9 cmake fails when project is used in other cmake projects. CMAKE_CURRENT_LIST_DIR should be a more portable path 7 years ago
David Chisnall dde74a8219 Call the batch file, don't run it.
Hopefully this prevents the CI step from exiting when the batch file
exits.
7 years ago
David Chisnall 571e45a814 Another try at making the Windows build work... 7 years ago
David Chisnall fe637ace1b Again, with extra quoting... 7 years ago
David Chisnall da955b6ed4 Attempt to fix the Windows build.
It appears that there's a link.exe from GNU coreutils on the path before
the one from Visual Studio.
7 years ago
David Chisnall d92618169d Try skipping the environment setup step 7 years ago
David Chisnall 4e99187dc6 Even more logging. 7 years ago
David Chisnall 0a9a306884 Add some logging to the CI build on Windows.
Something is still not working, hopefully this will let me figure out
what...
7 years ago
David Chisnall a2914ede8b Fix copying objc.dll into the tests directory. 7 years ago
David Chisnall 7ac971d3ad Actually build the tests on Windows. 7 years ago
David Chisnall 27a7abd0ad Make more Windows build steps explicit. 7 years ago
David Chisnall 542fd814bf More tweaks to Windows CMake. 7 years ago
David Chisnall cdb673b9c1 Try to manually run cmake on Windows. 7 years ago
David Chisnall 2521ebabd5 Fix typo in cmake command. 7 years ago
David Chisnall 61c7414fed Undo incorrect change. 7 years ago
David Chisnall 0db1f383b9 More pipelines stuff. 7 years ago
David Chisnall da4c4e414c Remove explicit triggers from azure-pipelines.yml
These are better configured in the web interface.
7 years ago
David Chisnall a9c8eb0629 Remove accidental copy-and-paste. 7 years ago
David Chisnall a0a8482357 Attempt to add Windows to CI. 7 years ago
David Chisnall 14de55e419 Update CI badge. 7 years ago
David Chisnall eab35fce37 Work around clang 8 bug in test. 7 years ago
David Chisnall 3dfc5f2fb0 Add proper quoting for CI config. 7 years ago
David Chisnall d8844095f9 Set up CI with Azure Pipelines
Update Azure pipelines to new syntax.
7 years ago
David Chisnall 351b0cac0a Set up CI with Azure Pipelines
Fix indentation in CI config.
7 years ago
David Chisnall 2398372459 Initial attempt at Azure Pipelines build. 7 years ago
Frederik Seiffert f4b381febb Replace valloc() with posix_memalign().
valloc() no longer exists in some toolchains like Android arm64.
7 years ago
Dustin Howett f392ff1870 Fix dtable rebase and add a test for a missing case
The dtable rebasing rework in b81df02b broke the inheritance of
superclass methods from a superclass that had already been initialized.
7 years ago
Dustin Howett 33cdcd709d Actually emit storage for the objc_weak_load hook 7 years ago
David Chisnall 6c6c3e13aa Fix Windows build. 7 years ago
David Chisnall 52ca9b207b Make it easier to override the assembler on Windows.
This is necessary for building with Visual Studio (msbuild)
7 years ago
David Chisnall d2255cb8d4 Add Windows build instructions. 7 years ago
David Chisnall fa35aaf5ee [windows] Handle changes to clang's EH mangling
For compatibility with a Facebook internal project, clang now mangles
Objective-C types and C structures in the same way.  This is a terrible
idea, but it apparently doesn't break anything.
7 years ago
David Chisnall e4f4cf095f Remove unused header include. 7 years ago
David Chisnall 2edfe64739 Fix incorrect strcmp usage. 7 years ago
David Chisnall d015f0160c Rename PUBLIC to OBJC_PUBLIC to avoid some namespace pollution. 7 years ago