Refactor MachO.c
authorMoritz Angermann <moritz.angermann@gmail.com>
Tue, 21 Mar 2017 15:01:40 +0000 (11:01 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 27 Mar 2017 01:37:22 +0000 (21:37 -0400)
commitf1ce27669a43710a3dfcafd61d34601f395231bc
tree8bf1478811df3f094291837af9d9cc7d30f3d2e9
parent938392c8515ccbe894714f43852fe604a21ce30b
Refactor MachO.c

- Rename existing structs with typedefs from MachOTypes.
- Update the following functions to make use of the
  extended ObjectCode structure:
  - ocAllocateSymbolExtras_MachO
  - resolveImports
  - ocGetNames_MachO
  - ocResolve_MachO
  - ocRunInit_MachO
- repalce int with size_t for fread
- Add aarch64 to the 64bit magic header check.

Depends on D3239, D3251

This 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:
```
  .- D3240
  v
D3255 <- This <- 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: austin, rwbarton, erikd, simonmar, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D3252
rts/linker/MachO.c