Skip to content
  • Moritz Angermann's avatar
    Make mmap r+w only during preload for iOS. · fdbbd63d
    Moritz Angermann authored and Ben Gamari's avatar Ben Gamari committed
    While we do not yet enable mmap for ios builds.  If we later do, we must
    not try to mmap r+w+x, on iOS as that clearly fails.
    
    This diff also adds a check for the successful mmaping.
    
    I don't think we can blanket change this to r+w for every case, unless
    we are absolutely sure that we are going to remap this and set +x where
    needed.
    
    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 <- D3252 <- D3251 <- D3239
      ^
      '- This
    ```
    
    - 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: ezyang, austin, erikd, simonmar, bgamari, rwbarton
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, ryantrinkle, thomie
    
    Differential Revision: https://phabricator.haskell.org/D3238
    fdbbd63d