llvm backend: Put string constants in .rodata.str.* sections (#13265)
ClosedPublic

Authored by rwbarton on Mar 5 2017, 1:44 PM.

Details

Summary

The .cstring.* sections don't get merged by the linker (bfd or gold).
That's bad, and especially bad in Trac #13265 where it caused the number of
sections to exceed what is apparently an internal limit in ld.bfd.

Test Plan

I can only test this on Linux, and I am guessing at what
the correct behavior is on Mac OS and Windows (and AIX I suppose).
Testers on other platforms would be much appreciated, though I
understand that the LLVM backend is broken on Mac OS currently for
other reasons (Trac #13378).

Diff Detail

Repository
rGHC Glasgow Haskell Compiler
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
rwbarton created this revision.Mar 5 2017, 1:44 PM
bgamari accepted this revision.Mar 6 2017, 12:18 PM

Awesome.

This revision is now accepted and ready to land.Mar 6 2017, 12:18 PM
This revision was automatically updated to reflect the committed changes.