This week's experiment build gdc with tls disabled.

Jacob Carlborg doob at me.com
Thu Dec 19 23:40:28 PST 2013


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


More information about the D.gnu mailing list