Commit Graph

1388 Commits

Author SHA1 Message Date
Kuba Mracek
ea54773994 [llvm] Get rid of "%T" expansions
The %T lit expansion expands to a common directory shared between all the tests in the same directory, which is unexpected and unintuitive, and more importantly, it's been a source of subtle race conditions and flaky tests. In https://reviews.llvm.org/D35396, it was agreed that it would be best to simply ban %T and only keep %t, which is unique to each test. When a test needs a temporary directory, it can just create one using mkdir %t.

This patch removes %T in llvm.

Differential Revision: https://reviews.llvm.org/D36495



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310953 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-15 20:29:24 +00:00
Sean Eveson
8574d59a97 [llvm-cov] Add an option which maps the location of source directories on another machine to your local copies
Summary:
This patch adds the -path-equivalence option (example: llvm-cov show -path-equivalence=/origin/path,/local/path) which maps the source code path from one machine to another when using `llvm-cov show`. This is similar to the -filename-equivalence option, but doesn't require you to specify all the source files on the command line.

This allows you to generate the coverage data on one machine (e.g. in a CI system), and then use llvm-cov on another machine where you have the same code base on a different path.

Reviewers: vsk

Reviewed By: vsk

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D36391

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310827 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-14 10:20:12 +00:00
Marek Sokolowski
6c9cbed3f7 Add .rc scripts tokenizer.
This extends the shell of llvm-rc tool with the ability of tokenization
of the input files. Currently, ASCII and ASCII-compatible UTF-8 files
are supported.

Thanks to Nico Weber (thakis) for his original work in this area.

Differential Revision: https://reviews.llvm.org/D35957

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310621 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-10 16:21:44 +00:00
Eli Friedman
9bcc2d450f [llvm-cov] Rearrange entries in report index.
Files which don't contain any functions are likely useless; don't
include them in the main table. Put the links at the bottom of the
page, in case someone wants to figure out coverage for code inside
a macro.

Not sure if this is the best solution, but it seems like an
improvement.

Differential Revision: https://reviews.llvm.org/D36298



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310518 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-09 20:43:31 +00:00
Adrian Prantl
f3855901e0 dsymutil: support dwarf version mismatches between object and clang module
This adds a missing call to maybeUpdateMaxDwarfVersion when visitng a
clang module. Failing to do so will cause a failure when emitting
DWARF 4 forms into a CU that AsmPrinter believes to be DWARF 2.

rdar://problem/33666528

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310392 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-08 18:26:12 +00:00
Reid Kleckner
ed5628c9fc [Object] Initialize LoadConfig member to null
Executables may not contain a load config, and clients should be able to
test for nullability. Previously we'd return uninitialized memory. Now
getLoadConfig32/64 return valid pointers or null.

Fixes PR34108

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310308 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-07 21:23:38 +00:00
Petr Hosek
fdd2cc8254 [llvm][llvm-objcopy] When outputting to binary don't output segments that cover no sections
Sometimes LLD will produce a PT_LOAD segment that only covers the
headers (and covers no sections). GNU objcopy does not output the
segment contents for these sections. In particular this is an issue in
building magenta because the final link step for the kernel would
produce just such a PT_LOAD segment. This change is to support this case
and to match what GNU objcopy does in this case.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D36196

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310149 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 23:18:18 +00:00
Petr Hosek
125fb1e9a9 Reland "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy"
This change adds the "-O binary" flag which directs llvm-objcopy to
output the object file to the same format as GNU objcopy does when given
the flag "-O binary". This was done by splitting the Object class into
two subclasses ObjectELF and ObjectBianry which each output a different
format but relay on the same code to read in the Object in Object.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D34480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310127 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 21:09:26 +00:00
Petr Hosek
e307afaedb Revert "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy"
This breaks the build on clang-s390x-linux.

This reverts commit r310018.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310026 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 05:33:44 +00:00
Petr Hosek
cff44d51e8 Reland "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy"
This change adds the "-O binary" flag which directs llvm-objcopy to
output the object file to the same format as GNU objcopy does when given
the flag "-O binary". This was done by splitting the Object class into
two subclasses ObjectELF and ObjectBianry which each output a different
format but relay on the same code to read in the Object in Object.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D34480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310018 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 03:17:37 +00:00
Vedant Kumar
c7e789c843 [llvm-cov] Ignore unclosed line segments when setting line counts
This patch makes a slight change to the way llvm-cov determines line
execution counts. If there are multiple line segments on a line, the
line count is the max count among the regions which start *and* end on
the line. This avoids an issue posed by deferred regions which start on
the same line as a terminated region, e.g:

  if (false)
    return; //< The line count should be 0, even though a new region
            //< starts at the semi-colon.
  foo();

Another change is that counts from line segments which don't correspond
to region entries are considered. This enables the first change, and
corrects an outstanding issue (see the showLineExecutionCounts.cpp test
change).

This is related to D35925.

Testing: check-profile, llvm-cov lit tests

Differential Revision: https://reviews.llvm.org/D36014

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310012 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 00:36:24 +00:00
Dehao Chen
ca9f2fdb19 Fix the bug when SampleProfileWriter writes out number of callsites.
Summary: As we support multiple callsites for the same location, we need to traverse all locations to get the number of callsites.

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: sanjoy, llvm-commits

Differential Revision: https://reviews.llvm.org/D36246

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309907 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-03 00:09:18 +00:00
Vedant Kumar
f6b53455df [llvm-cov] Respect the value of the -show-instantiations option
Make `-show-instantiations=false` actually skip displaying instantiation
sub-views, instead of simply ignoring the option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309903 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-02 23:35:24 +00:00
Dehao Chen
b929c3e6e4 Fix the bug that parseAAPipeline is not invoked in runNewPMPasses in release compiler.
Summary: The logic is guarded by "assert".

Reviewers: davidxl, davide, chandlerc

Reviewed By: davide, chandlerc

Subscribers: sanjoy, llvm-commits, mehdi_amini

Differential Revision: https://reviews.llvm.org/D36195

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309787 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-02 03:03:19 +00:00
Petr Hosek
5f53af3617 Revert "Reland "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy""
This is failing to compile on 32-bit ARM bots.

This reverts commit r309768.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309771 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-02 00:03:33 +00:00
Petr Hosek
d6fd4b09af Reland "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy"
This change adds the "-O binary" flag which directs llvm-objcopy to
output the object file to the same format as GNU objcopy does when given
the flag "-O binary". This was done by splitting the Object class into
two subclasses ObjectELF and ObjectBianry which each output a different
format but relay on the same code to read in the Object in Object.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D34480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309768 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 23:46:33 +00:00
Vedant Kumar
e72b881e28 [llvm-cov] Allow specifying distinct architectures for each loaded binary
The coverage tool needs to know which slice to look at when it's handed
a universal binary. Some projects need to look at aggregate coverage
reports for a variety of slices in different binaries: this patch adds
support for these kinds of projects to llvm-cov.

rdar://problem/33579007

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309747 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 21:23:26 +00:00
Petr Hosek
b475994795 Revert "[llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy"
The change seems to be failing on bots which are using gcc and bfd.ld
as a host compiler and linker.

This reverts commit r309658.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309660 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 05:31:50 +00:00
Petr Hosek
f06a792cb8 [llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopy
This change adds the "-O binary" flag which directs llvm-objcopy to
output the object file to the same format as GNU objcopy does when given
the flag "-O binary". This was done by splitting the Object class into
two subclasses ObjectELF and ObjectBianry which each output a different
format but relay on the same code to read in the Object in Object.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D34480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309658 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 05:18:30 +00:00
Petr Hosek
e5551a7a5e Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).

This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D33964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309643 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-01 00:33:58 +00:00
Spyridoula Gravani
d40539f8e3 [DWARF] Added verification check for tags in accelerator tables. This patch verifies that the atom tag is actually the same with the tag of the DIE that we retrieve from the table.
Differential Revision: https://reviews.llvm.org/D35963

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309596 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-31 18:01:16 +00:00
David Blaikie
db7d4cacfe llvm-symbolizer/print_context.c test: Make debug info path independent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309518 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-30 17:26:34 +00:00
David Blaikie
91f2df2a33 llvm-symbolizer: Make test portable using an explicit object file rather than the host compiler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309517 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-30 17:16:32 +00:00
David Blaikie
429be9362d Make test robust to changes in prefix/avoid hardcoded line numbers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309516 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-30 16:05:26 +00:00
Dylan McKay
711b144ed5 Revert "[AVR] Mark a failing symbolizer test as XFAIL"
This reverts commit 83a0e876349adb646ba858eb177b22b0b4bfc59a.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309515 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-30 15:38:07 +00:00
Dylan McKay
588c5e4b6f [AVR] Mark a failing symbolizer test as XFAIL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309512 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-30 14:55:11 +00:00
Eric Beckmann
b8776242df Add test to reject merging of empty manifest.
Reviewers: ruiu, rnk

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D35954

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309317 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 19:58:12 +00:00
Petr Hosek
5cc3e5ec53 Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started""
This change is failing tests on Windows bots due to permissions.

This reverts commit r309249.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309251 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 06:02:05 +00:00
Petr Hosek
c8a6123d8b Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).

This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D33964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309249 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-27 04:35:30 +00:00
Davide Italiano
d2a8c64fd6 [gold] Relax this tests a little more.
Thanks to Peter for the report!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309176 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 21:01:57 +00:00
Davide Italiano
b6863e2373 [gold] Relax tests to account for difference in layout across versions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309174 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 20:40:33 +00:00
Eric Beckmann
36406cba21 Diffing against a file that is itself used in the test seems to be a bad
idea, because it might get locked down and rendered unopenable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309142 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 17:47:44 +00:00
Reid Kleckner
d9e8f94862 Quote '?' in llvm-rc test
Summary:
Bash interperets the '?' character as matching an arbitrary character.
On systems that have a file or directory with exactly one character in
their root directory, '/?' gets reinterpreted into that pathname, which
fails to match the expected Help text for llvm-rc.
This patch quotes the '/?' to avoid that edge case.

Reviewers: mnbvmar, ecbeckmann, rnk

Reviewed By: rnk

Subscribers: dyung, ruiu, llvm-commits

Differential Revision: https://reviews.llvm.org/D35852

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309133 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 16:25:48 +00:00
Davide Italiano
f34b3b16e3 [gold] Enable data-sections by default for the gold-plugin.
Follow up to r309056.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309075 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 01:47:17 +00:00
Spyridoula Gravani
c88d81fa3e [DWARF] Generalized verification of .apple_names accelerator table to be applicable to any acceleration table. Added verification for .apple_types, .apple_namespaces and .apple_objc sections.
Differential Revision: https://reviews.llvm.org/D35853

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309068 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 00:52:31 +00:00
Eric Beckmann
ec76cbbaaa Reapply "llvm-mt: implement simple merging of manifests, not factoring namespaces.
This time with correct #if.

This reverts commit 9cf4eca0e0383040c1ff1416815c7f649650c2a0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309064 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-26 00:25:12 +00:00
Davide Italiano
67d8465a23 [gold] Enable function-sections by default.
This is needed, among others, to respect --section-ordering-file
with LTO. I'll follow up with a similar change for data sections.

I hope every version of gold available on the bots has support for
--section-ordering file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309056 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 23:32:50 +00:00
Eric Beckmann
0c862f5c0f Revert "llvm-mt: implement simple merging of manifests, not factoring namespaces."
This reverts commit 813308e240792ca70ed2f998f21df24a5061ada0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309050 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 23:06:46 +00:00
Eric Beckmann
b0707e1a0d llvm-mt: implement simple merging of manifests, not factoring namespaces.
Summary:
Does a simple merge, where mergeable elements are combined, all others
are appended.  Does not apply trickly namespace rules.

Subscribers: llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D35753

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309047 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 22:50:25 +00:00
Petr Hosek
6d5fc4344c Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started""
This reverts commit 960873b10d.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309037 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 21:55:00 +00:00
Petr Hosek
960873b10d Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).

This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D33964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309032 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 21:16:33 +00:00
Teresa Johnson
a63ab3c9ea [LTO] Prevent dead stripping and internalization of symbols with sections
Summary:
ELF linkers generate __start_<secname> and __stop_<secname> symbols
when there is a value in a section <secname> where the name is a valid
C identifier.  If dead stripping determines that the values declared
in section <secname> are dead, and we then internalize (and delete)
such a symbol, programs that reference the corresponding start and end
section symbols will get undefined reference linking errors.

To fix this, add the section name to the IRSymtab entry when a symbol is
defined in a specific section. Then use this in the gold-plugin to mark
the symbol as external and visible from outside the summary when the
section name is a valid C identifier.

Reviewers: pcc

Subscribers: mehdi_amini, inglorion, eraman, llvm-commits

Differential Revision: https://reviews.llvm.org/D35639

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309009 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 19:42:32 +00:00
Spyridoula Gravani
8e0c70de6e [DWARF] Modified test for die ranges verification so that it doesn't fail on windows hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308943 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 01:58:27 +00:00
Marek Sokolowski
c6f54fec9f Add an empty shell of llvm-rc.
This starts the development on one of MS Visual Studio binutils,
Resource Converter. The tool compiles resource scripts (.rc)
into binary resource files (.res).

The current implementation does nothing but parse the command
line arguments. It is going to be extended in the future.

Differential Revision: https://reviews.llvm.org/D35810

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308940 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-25 00:25:18 +00:00
Spyridoula Gravani
ef55e4c1a3 [DWARF] Added verification check for die ranges. If highPC is an address, then it should be greater than lowPC for each range.
Differential Revision: https://reviews.llvm.org/D35733

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308928 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-24 21:04:11 +00:00
Petr Hosek
b627b5cf77 Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started""
This reverts commit 2b52298eb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308822 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-22 02:43:50 +00:00
Petr Hosek
2b52298eb2 Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).

This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D33964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308821 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-22 02:33:45 +00:00
David Blaikie
5fa7d4aad2 Commit missing/empty test file from r308789
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308814 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-22 00:24:20 +00:00
Petr Hosek
aed2034ae4 Revert "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
This reverts commit 2f423248e1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308806 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-21 23:39:39 +00:00
Petr Hosek
2f423248e1 Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).

This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.

Patch by Jake Ehrlich

Differential Revision: https://reviews.llvm.org/D33964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308803 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-21 23:27:40 +00:00