[GHC] #13624: loadObj() does not respect alignment
GHC
ghc-devs at haskell.org
Mon May 1 02:46:46 UTC 2017
#13624: loadObj() does not respect alignment
-------------------------------------+-------------------------------------
Reporter: tmcdonell | Owner: (none)
Type: bug | Status: new
Priority: high | Milestone: 8.4.1
Component: Runtime System | Version: 8.0.1
(Linker) |
Resolution: | Keywords: linker
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by angerman):
For what it's worth the macho/aarch64 does this already, and elf/armv7,
elf/aarch64 linker will do it. They essentially requests memory via mmap,
and memcpy the data per section; this makes sections being page aligned,
which I believe satisfies most alignment requirements. An additional check
wouldn't hurt though.
However we can't use segments, as segments can contain multiple sections
that are not bound to the same type. A segment can contain data and text
section; which in turn need to live in different pages for them to be
properly mprotected. This then means we can't mmap segments.
However what we could try to reduce memory footprint is to aggregate text
and data sections across object files. Of course mmap + memcpy is slower
than directly mmapping.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13624#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list