Allow iOS to load archives through the linker
authorMoritz Angermann <moritz.angermann@gmail.com>
Fri, 3 Mar 2017 20:50:01 +0000 (15:50 -0500)
committerBen Gamari <ben@smart-cactus.org>
Fri, 3 Mar 2017 20:50:02 +0000 (15:50 -0500)
commitd5e0b4bd4a8623169e59a6de6d4d9f84ea94aa22
treebb321b2b5af70559ffb182a8c1a4fcd661bcdb67
parent5ed56fc8163690c209f594dbfe9dd49b7053739b
Allow iOS to load archives through the linker

This basically just adds ios where darwin already was, and is just one
of the pieces for the rts linker support for ios (aarch64-macho)

---

The following diagram and legend tries to explain the dependencies a
bit:
```
  .- This
  v
D3255 <- D3252 <- D3251 <- D3239
  ^
  '- D3238
```

- In D3238 we started allowing preloading object code with mmap
  in iOS, where we can't have r+w+x.
- In D3239 we introduced a richer extension of the object code
  data type to make working with mach-o files easier.
- In D3240 we set the stage to allow loading archives (.a) on iOS
- In D3251 we added init and deinit functions to populate and
  depopulate the enriched object code data structure for mach-o
  files.
- In D3252 we refactored most of the MachO.c file to use the
  new types and data structure.
- in D3255 we finally introduce the aarch64-mach-o linker.

Reviewers: bgamari, austin, erikd, simonmar

Reviewed By: bgamari

Subscribers: thomie, ryantrinkle

Differential Revision: https://phabricator.haskell.org/D3240
rts/linker/LoadArchive.c