On 2013-12-19 20:51, Johannes Pfau wrote:

Sounds like that could work. But as the module section is a custom
section anyway we wouldn't have to replace/modify the default linker
script - we can pass a custom script to ld which just handles the
".minfo" section. That should be just as portable as relying on the
"don't reorder sections" behavior: Works everywhere where GNU Binutils
LD/GOLD are used. (Emitting 3 sections is a clever trick, but it feels
like a hack imho. I'm also not sure if we can control the order in
which sections are emitted in GCC)

The trick with brackting sections doesn't work on Mac OS X. DMD had some problems with that. It basically broke on every new major release of Mac OS X, the linker changed all the time. If I recall correctly it either removed the empty sections or reordered the sections.

It seems like getting the TLS section is the more interesting part. We
can't emit sections around the TLS section so IIRC the current dmd
implementation therefore relies on the runtime linker and libc specific
interfaces?

Yes, using dl_iterate_phdr: http://linux.die.net/man/3/dl_iterate_phdr.

I think asking the binutils maintainers to add __tdata_begin,
__tdata_end, __tbss_begin and __tbss_end markers to the tdata and tbss
sections would be a nice long-term solution, or is there some issue
with that?

How does that work? Do people need to update their linkers for that to work?

--
/Jacob Carlborg

Reply via email to