1. 27 Mar, 2017 3 commits
    • Moritz Angermann's avatar
      Add ocInit_MachO · 938392c8
      Moritz Angermann authored
      This adds ocInit_MachO function, used to populate the extended
      ObjectCode structure, and the corresponding stgFree.
      
      It also adds defines for iOS, such that MachO.o is also compiled for iOS
      targets.
      
      Depends on D3239
      
      ---
      
      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 <- This <- 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: rwbarton, bgamari, austin, erikd, simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3251
      938392c8
    • Moritz Angermann's avatar
      rts linker: Introduce MachOTypes · 8ed29b50
      Moritz Angermann authored
      This diff introduces MachOTypes, to reduce the need to typing `struct`
      all the time.  It also coaleces the 64 and non 64 structs. It also adds
      additional fiedls to the object code structure for macho, which makes
      working with macho object code much simpler and requires less passing
      around of variabls or address recomputation for the header, symbol
      table, etc...
      
      Furthermore this diff introduces a type for a linked list of stubs.
      
      I had to move the #ifdef from the bottom of the file up, to be able to
      extend the object code structure conditional on the use of the macho file format.
      
      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 <- This
        ^
        '- 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, erikd, simonmar, rwbarton, bgamari
      
      Subscribers: rwbarton, thomie, ryantrinkle
      
      Differential Revision: https://phabricator.haskell.org/D3239
      8ed29b50
    • Moritz Angermann's avatar
      Make mmap r+w only during preload for iOS. · fdbbd63d
      Moritz Angermann authored
      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
  2. 26 Mar, 2017 14 commits
  3. 24 Mar, 2017 11 commits
  4. 22 Mar, 2017 3 commits
  5. 21 Mar, 2017 2 commits
  6. 20 Mar, 2017 5 commits
  7. 19 Mar, 2017 2 commits