[lld] r190608 - [lld][LayoutPass] Order the atoms that are in the same chain

Rui Ueyama ruiu at google.com
Fri Sep 13 15:47:52 PDT 2013


This patch seems to break IdataPass in COFF writer. The COFF writer creates
atoms for DLL import table in the pass. Because the atoms created in the
pass do not really belong to any input file, the linker uses MutableFile
representing the linking result as a dummy value of the file for the atoms.
It did work until this patch.

The MutableFile did not have input ordinal value, so it now fails with the
assertion at include/lld/Core/File.h:72 checking _ordinal != UINT64_MAX in
the layout pass.

I think there are many ways to fix this. One way would be to create another
dummy input file and use it for the atoms created by the IdataPass. It
should work, but I don't think that's a good way because the dummy file is
really dummy and does not do anything useful. It feels like the restriction
that atoms must have associated input files is too strict.

So I'd want to make _file field optional for the atom. What do you guys
think?


On Thu, Sep 12, 2013 at 8:43 AM, Shankar Easwaran
<shankare at codeaurora.org>wrote:

> Author: shankare
> Date: Thu Sep 12 10:43:09 2013
> New Revision: 190608
>
> URL: http://llvm.org/viewvc/llvm-project?rev=190608&view=rev
> Log:
> [lld][LayoutPass] Order the atoms that are in the same chain
>
> We need to order atoms that exist in the same chain. This is to make sure
> that
> the command line order is preserved when we emit the atoms to the output
> file.
>
> Credits: BigCheese for finding the bug.
>
> Adds a test which otherwise would fail.
>
> Added:
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.c
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.o
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.c
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.o
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.c
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.o
>     lld/trunk/test/elf/X86_64/Inputs/layoutpass/lib2.a
>     lld/trunk/test/elf/X86_64/layoutpass-order.test
> Modified:
>     lld/trunk/lib/Passes/LayoutPass.cpp
>     lld/trunk/test/elf/Hexagon/dynlib-gotoff.test
>     lld/trunk/test/elf/X86_64/dontignorezerosize-sections.test
>     lld/trunk/test/elf/X86_64/multi-weak-syms-order.test
>     lld/trunk/test/elf/X86_64/nmagic.test
>     lld/trunk/test/elf/X86_64/omagic.test
>     lld/trunk/test/elf/X86_64/orderatoms-by-override.test
>     lld/trunk/test/elf/X86_64/undef.test
>     lld/trunk/test/elf/check.test
>     lld/trunk/test/elf/checkrodata.test
>     lld/trunk/test/elf/dynamic.test
>     lld/trunk/test/elf/gotpcrel.test
>     lld/trunk/test/elf/hexagon-quickdata-sort.test
>     lld/trunk/test/elf/hexagon-quickdata-sortcommon.test
>     lld/trunk/test/elf/ifunc.test
>     lld/trunk/test/elf/quickdata.test
>     lld/trunk/test/elf/tls.test
>     lld/trunk/test/elf/x86-64-dynamic.test
>     lld/trunk/test/pecoff/importlib.test
>
> Modified: lld/trunk/lib/Passes/LayoutPass.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Passes/LayoutPass.cpp?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/lib/Passes/LayoutPass.cpp (original)
> +++ lld/trunk/lib/Passes/LayoutPass.cpp Thu Sep 12 10:43:09 2013
> @@ -52,22 +52,15 @@ bool LayoutPass::CompareAtoms::operator(
>    AtomToOrdinalT::const_iterator lPos =
> _layout._ordinalOverrideMap.find(left);
>    AtomToOrdinalT::const_iterator rPos =
> _layout._ordinalOverrideMap.find(right);
>    AtomToOrdinalT::const_iterator end = _layout._ordinalOverrideMap.end();
> -  if (lPos != end) {
> -    if (rPos != end) {
> -      // both left and right are overridden, so compare overridden
> ordinals
> -      if (lPos->second != rPos->second)
> -        return lPos->second < rPos->second;
> -    } else {
> -      // left is overridden and right is not, so left < right
> -      return true;
> -    }
> -  } else {
> -    if (rPos != end) {
> -      // right is overridden and left is not, so right < left
> -      return false;
> -    } else {
> -      // neither are overridden,
> -      // fall into default sorting below
> +
> +  // Sort atoms by their ordinal overrides only if they fall in the same
> +  // chain.
> +  const DefinedAtom *leftAtom = _layout._followOnRoots.find(left)->second;
> +  const DefinedAtom *rightAtom =
> _layout._followOnRoots.find(right)->second;
> +
> +  if (leftAtom == rightAtom) {
> +    if ((lPos != end) && (rPos != end)) {
> +      return lPos->second < rPos->second;
>      }
>    }
>
> @@ -91,8 +84,6 @@ bool LayoutPass::CompareAtoms::operator(
>    if (leftType != rightType)
>      return leftType < rightType;
>
> -  // TO DO: Sort atoms in customs sections together.
> -
>    // Sort by .o order.
>    const File *leftFile = &left->file();
>    const File *rightFile = &right->file();
> @@ -393,8 +384,6 @@ void LayoutPass::buildOrdinalOverrideMap
>            _ordinalOverrideMap[nextAtom] = index++;
>          }
>        }
> -    } else {
> -      _ordinalOverrideMap[atom] = index++;
>      }
>    }
>  }
>
> Modified: lld/trunk/test/elf/Hexagon/dynlib-gotoff.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-gotoff.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/Hexagon/dynlib-gotoff.test (original)
> +++ lld/trunk/test/elf/Hexagon/dynlib-gotoff.test Thu Sep 12 10:43:09 2013
> @@ -3,85 +3,72 @@ RUN: lld -flavor gnu -target hexagon %p/
>  RUN:   -o %t -emit-yaml -shared --noinhibit-exec
>  RUN: FileCheck -check-prefix=CHECKGOTPLT %s < %t
>
> -CHECKGOTPLT:  - ref-name:            {{[0-9A-Z]+}}
> +              - name:            __got0
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00, 00,
> 00, 00, 00,
> +CHECKGOTPLT:                       00, 00, 00, 00 ]
> +CHECKGOTPLT:    alignment:       2^3
> +CHECKGOTPLT:    section-name:    .got.plt
> +CHECKGOTPLT:    permissions:     rw-
> +              - name:            __got_c
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
>  CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .text
> +CHECKGOTPLT:    section-name:    .got
> +CHECKGOTPLT:    permissions:     rw-
>  CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            layout-after
> +CHECKGOTPLT:      - kind:            R_HEX_GLOB_DAT
>  CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          fn2
> -CHECKGOTPLT:  - name:            fn2
> -CHECKGOTPLT:    scope:           global
> -CHECKGOTPLT:    content:         [ 00, C0, 9D, A0, 00, C0, 00, 78, 1E,
> C0, 1E, 96 ]
> +CHECKGOTPLT:        target:          c
> +              - name:            __got_shankar
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
>  CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .text
> -CHECKGOTPLT:  - name:            fn1
> -CHECKGOTPLT:    scope:           global
> -CHECKGOTPLT:    content:         [ 00, C0, 9D, A0, 00, C0, 00, 78, 1E,
> C0, 1E, 96 ]
> +CHECKGOTPLT:    section-name:    .got
> +CHECKGOTPLT:    permissions:     rw-
> +CHECKGOTPLT:    references:
> +CHECKGOTPLT:      - kind:            R_HEX_GLOB_DAT
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          shankar
> +              - name:            __got_fn
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
>  CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .text
> -CHECKGOTPLT:  - name:            fn
> -CHECKGOTPLT:    scope:           global
> -CHECKGOTPLT:    content:         [ 01, C0, 9D, A0, 01, D8, 9D, A1, 00,
> 40, 00, 00,
> -CHECKGOTPLT:                       18, C0, 49, 6A, 00, 40, 00, 00, 00,
> C0, 49, 6A,
> -CHECKGOTPLT:                       0A, C0, 40, 3C, 00, 40, 00, 00, 00,
> C0, 49, 6A,
> -CHECKGOTPLT:                       14, C0, 40, 3C, 00, 40, 00, 00, 00,
> C0, 98, 91,
> -CHECKGOTPLT:                       0A, C0, 40, 3C, 00, 40, 00, 00, 00,
> C0, 98, 91,
> -CHECKGOTPLT:                       14, C0, 40, 3C, 00, C0, 00, 78, 38,
> C0, 9D, 91,
> -CHECKGOTPLT:                       1E, C0, 1E, 96 ]
> +CHECKGOTPLT:    section-name:    .got.plt
> +CHECKGOTPLT:    permissions:     rw-
> +CHECKGOTPLT:    references:
> +CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          fn
> +CHECKGOTPLT:      - kind:            R_HEX_32
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          .PLT0
> +              - name:            __got_fn1
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
>  CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .text
> +CHECKGOTPLT:    section-name:    .got.plt
> +CHECKGOTPLT:    permissions:     rw-
>  CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X
> -CHECKGOTPLT:        offset:          8
> -CHECKGOTPLT:        target:          _GLOBAL_OFFSET_TABLE_
> -CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X
> -CHECKGOTPLT:        offset:          12
> -CHECKGOTPLT:        target:          _GLOBAL_OFFSET_TABLE_
> -CHECKGOTPLT:        addend:          4
> -CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X
> -CHECKGOTPLT:        offset:          16
> -CHECKGOTPLT:        target:          [[SBSS:[-a-zA-Z0-9_]+]]
> -CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X
> -CHECKGOTPLT:        offset:          20
> -CHECKGOTPLT:        target:          [[SBSS]]
> -CHECKGOTPLT:        addend:          4
> -CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X
> -CHECKGOTPLT:        offset:          28
> -CHECKGOTPLT:        target:          [[SBSS]]
> -CHECKGOTPLT:        addend:          4
> -CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X
> -CHECKGOTPLT:        offset:          32
> -CHECKGOTPLT:        target:          [[SBSS]]
> -CHECKGOTPLT:        addend:          8
> -CHECKGOTPLT:      - kind:            R_HEX_GOT_32_6_X
> -CHECKGOTPLT:        offset:          40
> -                    target:          __got_c
> -CHECKGOTPLT:      - kind:            R_HEX_GOT_11_X
> -CHECKGOTPLT:        offset:          44
> -                    target:          __got_c
> -CHECKGOTPLT:      - kind:            R_HEX_GOT_32_6_X
> -CHECKGOTPLT:        offset:          52
> -                    target:          __got_shankar
> -CHECKGOTPLT:      - kind:            R_HEX_GOT_11_X
> -CHECKGOTPLT:        offset:          56
> -                    target:          __got_shankar
> -CHECKGOTPLT:  - name:            fn3
> -CHECKGOTPLT:    scope:           global
> -CHECKGOTPLT:    content:         [ 00, C0, 9D, A0, 00, C0, 00, 5A, 00,
> C0, 00, 5A,
> -CHECKGOTPLT:                       00, C0, 00, 5A, 00, C0, 00, 78, 1E,
> C0, 1E, 96 ]
> +CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          fn1
> +CHECKGOTPLT:      - kind:            R_HEX_32
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          .PLT0
> +              - name:            __got_fn2
> +CHECKGOTPLT:    type:            got
> +CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
>  CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .text
> +CHECKGOTPLT:    section-name:    .got.plt
> +CHECKGOTPLT:    permissions:     rw-
>  CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_B22_PCREL
> -CHECKGOTPLT:        offset:          4
> -                    target:          __plt_fn
> -CHECKGOTPLT:      - kind:            R_HEX_B22_PCREL
> -CHECKGOTPLT:        offset:          8
> -                    target:          __plt_fn1
> -CHECKGOTPLT:      - kind:            R_HEX_B22_PCREL
> -CHECKGOTPLT:        offset:          12
> -                    target:          __plt_fn2
> +CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          fn2
> +CHECKGOTPLT:      - kind:            R_HEX_32
> +CHECKGOTPLT:        offset:          0
> +CHECKGOTPLT:        target:          .PLT0
>                - name:            .PLT0
>  CHECKGOTPLT:    type:            stub
>  CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 1C, C0, 49, 6A, 0E,
> 42, 9C, E2,
> @@ -96,6 +83,7 @@ CHECKGOTPLT:        offset:          0
>  CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X
>  CHECKGOTPLT:        offset:          4
>                      target:          __got0
> +CHECKGOTPLT:        addend:          4
>                - name:            __plt_fn
>  CHECKGOTPLT:    type:            stub
>  CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C,
> C0, 8E, 91,
> @@ -138,68 +126,3 @@ CHECKGOTPLT:      - kind:            R_H
>  CHECKGOTPLT:        offset:          4
>                      target:          __got_fn2
>  CHECKGOTPLT:        addend:          4
> -              - name:            __got0
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00, 00,
> 00, 00, 00,
> -CHECKGOTPLT:                       00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^3
> -CHECKGOTPLT:    section-name:    .got.plt
> -              - name:            __got_c
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .got
> -CHECKGOTPLT:    permissions:     rw-
> -CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_GLOB_DAT
> -CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          c
> -              - name:            __got_shankar
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .got
> -CHECKGOTPLT:    permissions:     rw-
> -CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_GLOB_DAT
> -CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          shankar
> -              - name:            __got_fn
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .got.plt
> -CHECKGOTPLT:    permissions:     rw-
> -CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> -CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          fn
> -CHECKGOTPLT:      - kind:            R_HEX_32
> -CHECKGOTPLT:        offset:          0
> -                    target:          .PLT0
> -              - name:            __got_fn1
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .got.plt
> -CHECKGOTPLT:    permissions:     rw-
> -CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> -CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          fn1
> -CHECKGOTPLT:      - kind:            R_HEX_32
> -CHECKGOTPLT:        offset:          0
> -                    target:          .PLT0
> -              - name:            __got_fn2
> -CHECKGOTPLT:    type:            got
> -CHECKGOTPLT:    content:         [ 00, 00, 00, 00 ]
> -CHECKGOTPLT:    alignment:       2^2
> -CHECKGOTPLT:    section-name:    .got.plt
> -CHECKGOTPLT:    permissions:     rw-
> -CHECKGOTPLT:    references:
> -CHECKGOTPLT:      - kind:            R_HEX_JMP_SLOT
> -CHECKGOTPLT:        offset:          0
> -CHECKGOTPLT:        target:          fn2
> -CHECKGOTPLT:      - kind:            R_HEX_32
> -CHECKGOTPLT:        offset:          0
> -                    target:          .PLT0
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.c
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.c?rev=190608&view=auto
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.c (added)
> +++ lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.c Thu Sep 12 10:43:09
> 2013
> @@ -0,0 +1,8 @@
> +int main() {
> +  a();
> +  return 0;
> +}
> +
> +int b() {
> +  return 0;
> +}
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.o
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.o?rev=190608&view=auto
>
> ==============================================================================
> Binary files lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.o (added) and
> lld/trunk/test/elf/X86_64/Inputs/layoutpass/1.o Thu Sep 12 10:43:09 2013
> differ
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.c
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.c?rev=190608&view=auto
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.c (added)
> +++ lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.c Thu Sep 12 10:43:09
> 2013
> @@ -0,0 +1,7 @@
> +int a() {
> +  return 0;
> +}
> +
> +int c() {
> +  return 0;
> +}
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.o
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.o?rev=190608&view=auto
>
> ==============================================================================
> Binary files lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.o (added) and
> lld/trunk/test/elf/X86_64/Inputs/layoutpass/2.o Thu Sep 12 10:43:09 2013
> differ
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.c
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.c?rev=190608&view=auto
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.c (added)
> +++ lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.c Thu Sep 12 10:43:09
> 2013
> @@ -0,0 +1,3 @@
> +int d() {
> +  return 0;
> +}
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.o
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.o?rev=190608&view=auto
>
> ==============================================================================
> Binary files lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.o (added) and
> lld/trunk/test/elf/X86_64/Inputs/layoutpass/3.o Thu Sep 12 10:43:09 2013
> differ
>
> Added: lld/trunk/test/elf/X86_64/Inputs/layoutpass/lib2.a
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/layoutpass/lib2.a?rev=190608&view=auto
>
> ==============================================================================
> Binary files lld/trunk/test/elf/X86_64/Inputs/layoutpass/lib2.a (added)
> and lld/trunk/test/elf/X86_64/Inputs/layoutpass/lib2.a Thu Sep 12 10:43:09
> 2013 differ
>
> Modified: lld/trunk/test/elf/X86_64/dontignorezerosize-sections.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/dontignorezerosize-sections.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/dontignorezerosize-sections.test (original)
> +++ lld/trunk/test/elf/X86_64/dontignorezerosize-sections.test Thu Sep 12
> 10:43:09 2013
> @@ -3,9 +3,9 @@ RUN: lld -flavor gnu -target x86_64-linu
>  RUN: --noinhibit-exec -emit-yaml -o %t
>  RUN: FileCheck %s < %t
>
> -CHECK:    section-name:    .text
>  CHECK:    section-name:    .data
>  CHECK:    references:
>  CHECK:      - kind:            R_X86_64_16
>  CHECK:        offset:          0
>  CHECK:        target:          L000
> +CHECK:    section-name:    .text
>
> Added: lld/trunk/test/elf/X86_64/layoutpass-order.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/layoutpass-order.test?rev=190608&view=auto
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/layoutpass-order.test (added)
> +++ lld/trunk/test/elf/X86_64/layoutpass-order.test Thu Sep 12 10:43:09
> 2013
> @@ -0,0 +1,14 @@
> +# This test checks that we follow the command line order of layouting
> +# symbols in the output file
> +
> +RUN: lld -flavor gnu -target x86_64 %p/Inputs/layoutpass/1.o \
> +RUN: %p/Inputs/layoutpass/lib2.a %p/Inputs/layoutpass/3.o -o %t \
> +RUN: --noinhibit-exec -static
> +
> +RUN: llvm-nm -n %t | FileCheck -check-prefix=SYMBOLSORDER %s
> +
> +SYMBOLSORDER: 004000b0 T main
> +SYMBOLSORDER: 004000c5 T b
> +SYMBOLSORDER: 004000d0 T a
> +SYMBOLSORDER: 004000db T c
> +SYMBOLSORDER: 004000e8 T d
>
> Modified: lld/trunk/test/elf/X86_64/multi-weak-syms-order.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/multi-weak-syms-order.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/multi-weak-syms-order.test (original)
> +++ lld/trunk/test/elf/X86_64/multi-weak-syms-order.test Thu Sep 12
> 10:43:09 2013
> @@ -10,8 +10,4 @@ WEAKORDER: {{[0-9a-f]+}} T g
>  WEAKORDER: {{[0-9a-f]+}} T main
>
>  WEAKATOMSORDER:  - name:            f
> -WEAKATOMSORDER:  - ref-name:        {{[A-Z0-9]+}}
>  WEAKATOMSORDER:  - name:            g
> -WEAKATOMSORDER:  - ref-name:        {{[A-Z0-9]+}}
> -
> -
>
> Modified: lld/trunk/test/elf/X86_64/nmagic.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/nmagic.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/nmagic.test (original)
> +++ lld/trunk/test/elf/X86_64/nmagic.test Thu Sep 12 10:43:09 2013
> @@ -6,207 +6,71 @@ RUN: --noinhibit-exec -o %t --nmagic -st
>  RUN: llvm-readobj -sections %t | FileCheck -check-prefix=NMAGICSECTIONS %s
>  RUN: llvm-readobj -program-headers %t | FileCheck
> -check-prefix=NMAGICPROGRAMHEADERS %s
>
> -NMAGICSECTIONS: Sections [
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 0
>  NMAGICSECTIONS:     Name:  (0)
>  NMAGICSECTIONS:     Type: SHT_NULL (0x0)
> -NMAGICSECTIONS:     Flags [ (0x0)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x0
> -NMAGICSECTIONS:     Offset: 0x0
> -NMAGICSECTIONS:     Size: 0
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 0
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 1
> -NMAGICSECTIONS:     Name: .text (1)
> +NMAGICSECTIONS:     Name: .note.GNU-stack (1)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x6)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_EXECINSTR (0x4)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x4000B0
> -NMAGICSECTIONS:     Offset: 0xB0
> -NMAGICSECTIONS:     Size: 11
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 4
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 2
> -NMAGICSECTIONS:     Name: .note.GNU-stack (7)
> +NMAGICSECTIONS:     Name: .text (17)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x2)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x4000BB
> -NMAGICSECTIONS:     Offset: 0xBB
> -NMAGICSECTIONS:     Size: 0
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 1
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 3
>  NMAGICSECTIONS:     Name: .comment (23)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x2)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x4000BB
> -NMAGICSECTIONS:     Offset: 0xBB
> -NMAGICSECTIONS:     Size: 43
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 1
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 4
>  NMAGICSECTIONS:     Name: .eh_frame (32)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x2)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x4000E8
> -NMAGICSECTIONS:     Offset: 0xE8
> -NMAGICSECTIONS:     Size: 56
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 8
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 5
>  NMAGICSECTIONS:     Name: .tdata (42)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x403)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_TLS (0x400)
> -NMAGICSECTIONS:       SHF_WRITE (0x1)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x401000
> -NMAGICSECTIONS:     Offset: 0x1000
> -NMAGICSECTIONS:     Size: 4
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 4
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 6
>  NMAGICSECTIONS:     Name: .tbss (49)
>  NMAGICSECTIONS:     Type: SHT_NOBITS (0x8)
> -NMAGICSECTIONS:     Flags [ (0x403)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_TLS (0x400)
> -NMAGICSECTIONS:       SHF_WRITE (0x1)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x401004
> -NMAGICSECTIONS:     Offset: 0x1004
> -NMAGICSECTIONS:     Size: 8
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 4
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 7
>  NMAGICSECTIONS:     Name: .got.plt (55)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x3)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_WRITE (0x1)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x401008
> -NMAGICSECTIONS:     Offset: 0x1008
> -NMAGICSECTIONS:     Size: 0
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 8
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 8
>  NMAGICSECTIONS:     Name: .data (64)
>  NMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -NMAGICSECTIONS:     Flags [ (0x3)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_WRITE (0x1)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x401008
> -NMAGICSECTIONS:     Offset: 0x1008
> -NMAGICSECTIONS:     Size: 4
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 4
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 9
>  NMAGICSECTIONS:     Name: .bss (70)
>  NMAGICSECTIONS:     Type: SHT_NOBITS (0x8)
> -NMAGICSECTIONS:     Flags [ (0x3)
> -NMAGICSECTIONS:       SHF_ALLOC (0x2)
> -NMAGICSECTIONS:       SHF_WRITE (0x1)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x40100C
> -NMAGICSECTIONS:     Offset: 0x100C
> -NMAGICSECTIONS:     Size: 0
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 4
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 10
>  NMAGICSECTIONS:     Name: .shstrtab (75)
>  NMAGICSECTIONS:     Type: SHT_STRTAB (0x3)
> -NMAGICSECTIONS:     Flags [ (0x0)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x0
> -NMAGICSECTIONS:     Offset: 0x100C
> -NMAGICSECTIONS:     Size: 101
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 1
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 11
>  NMAGICSECTIONS:     Name: .symtab (85)
>  NMAGICSECTIONS:     Type: SHT_SYMTAB (0x2)
> -NMAGICSECTIONS:     Flags [ (0x0)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x0
> -NMAGICSECTIONS:     Offset: 0x1078
> -NMAGICSECTIONS:     Size: 528
> -NMAGICSECTIONS:     Link: 12
> -NMAGICSECTIONS:     Info: 2
> -NMAGICSECTIONS:     AddressAlignment: 8
> -NMAGICSECTIONS:     EntrySize: 24
>  NMAGICSECTIONS:   }
>  NMAGICSECTIONS:   Section {
>  NMAGICSECTIONS:     Index: 12
>  NMAGICSECTIONS:     Name: .strtab (93)
>  NMAGICSECTIONS:     Type: SHT_STRTAB (0x3)
> -NMAGICSECTIONS:     Flags [ (0x0)
> -NMAGICSECTIONS:     ]
> -NMAGICSECTIONS:     Address: 0x0
> -NMAGICSECTIONS:     Offset: 0x1288
> -NMAGICSECTIONS:     Size: 246
> -NMAGICSECTIONS:     Link: 0
> -NMAGICSECTIONS:     Info: 0
> -NMAGICSECTIONS:     AddressAlignment: 1
> -NMAGICSECTIONS:     EntrySize: 0
>  NMAGICSECTIONS:   }
> -NMAGICSECTIONS: ]
>
>  NMAGICPROGRAMHEADERS: ProgramHeaders [
>  NMAGICPROGRAMHEADERS:   ProgramHeader {
>
> Modified: lld/trunk/test/elf/X86_64/omagic.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/omagic.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/omagic.test (original)
> +++ lld/trunk/test/elf/X86_64/omagic.test Thu Sep 12 10:43:09 2013
> @@ -6,207 +6,205 @@ RUN: --noinhibit-exec -o %t --omagic -st
>  RUN: llvm-readobj -sections %t | FileCheck -check-prefix=OMAGICSECTIONS %s
>  RUN: llvm-readobj -program-headers %t | FileCheck
> -check-prefix=OMAGICPROGRAMHEADERS %s
>
> -OMAGICSECTIONS: Sections [
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 0
> -OMAGICSECTIONS:     Name:  (0)
> -OMAGICSECTIONS:     Type: SHT_NULL (0x0)
> -OMAGICSECTIONS:     Flags [ (0x0)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x0
> -OMAGICSECTIONS:     Offset: 0x0
> -OMAGICSECTIONS:     Size: 0
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 0
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 1
> -OMAGICSECTIONS:     Name: .text (1)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x6)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_EXECINSTR (0x4)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x4000B0
> -OMAGICSECTIONS:     Offset: 0xB0
> -OMAGICSECTIONS:     Size: 11
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 4
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 2
> -OMAGICSECTIONS:     Name: .note.GNU-stack (7)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x2)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x4000BB
> -OMAGICSECTIONS:     Offset: 0xBB
> -OMAGICSECTIONS:     Size: 0
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 1
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 3
> -OMAGICSECTIONS:     Name: .comment (23)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x2)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x4000BB
> -OMAGICSECTIONS:     Offset: 0xBB
> -OMAGICSECTIONS:     Size: 43
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 1
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 4
> -OMAGICSECTIONS:     Name: .eh_frame (32)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x2)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x4000E8
> -OMAGICSECTIONS:     Offset: 0xE8
> -OMAGICSECTIONS:     Size: 56
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 8
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 5
> -OMAGICSECTIONS:     Name: .tdata (42)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x403)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_TLS (0x400)
> -OMAGICSECTIONS:       SHF_WRITE (0x1)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x400120
> -OMAGICSECTIONS:     Offset: 0x120
> -OMAGICSECTIONS:     Size: 4
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 4
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 6
> -OMAGICSECTIONS:     Name: .tbss (49)
> -OMAGICSECTIONS:     Type: SHT_NOBITS (0x8)
> -OMAGICSECTIONS:     Flags [ (0x403)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_TLS (0x400)
> -OMAGICSECTIONS:       SHF_WRITE (0x1)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x400124
> -OMAGICSECTIONS:     Offset: 0x124
> -OMAGICSECTIONS:     Size: 8
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 4
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 7
> -OMAGICSECTIONS:     Name: .got.plt (55)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x3)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_WRITE (0x1)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x400128
> -OMAGICSECTIONS:     Offset: 0x128
> -OMAGICSECTIONS:     Size: 0
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 8
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 8
> -OMAGICSECTIONS:     Name: .data (64)
> -OMAGICSECTIONS:     Type: SHT_PROGBITS (0x1)
> -OMAGICSECTIONS:     Flags [ (0x3)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_WRITE (0x1)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x400128
> -OMAGICSECTIONS:     Offset: 0x128
> -OMAGICSECTIONS:     Size: 4
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 4
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 9
> -OMAGICSECTIONS:     Name: .bss (70)
> -OMAGICSECTIONS:     Type: SHT_NOBITS (0x8)
> -OMAGICSECTIONS:     Flags [ (0x3)
> -OMAGICSECTIONS:       SHF_ALLOC (0x2)
> -OMAGICSECTIONS:       SHF_WRITE (0x1)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x40012C
> -OMAGICSECTIONS:     Offset: 0x12C
> -OMAGICSECTIONS:     Size: 0
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 4
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 10
> -OMAGICSECTIONS:     Name: .shstrtab (75)
> -OMAGICSECTIONS:     Type: SHT_STRTAB (0x3)
> -OMAGICSECTIONS:     Flags [ (0x0)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x0
> -OMAGICSECTIONS:     Offset: 0x12C
> -OMAGICSECTIONS:     Size: 101
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 1
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 11
> -OMAGICSECTIONS:     Name: .symtab (85)
> -OMAGICSECTIONS:     Type: SHT_SYMTAB (0x2)
> -OMAGICSECTIONS:     Flags [ (0x0)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x0
> -OMAGICSECTIONS:     Offset: 0x198
> -OMAGICSECTIONS:     Size: 528
> -OMAGICSECTIONS:     Link: 12
> -OMAGICSECTIONS:     Info: 2
> -OMAGICSECTIONS:     AddressAlignment: 8
> -OMAGICSECTIONS:     EntrySize: 24
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS:   Section {
> -OMAGICSECTIONS:     Index: 12
> -OMAGICSECTIONS:     Name: .strtab (93)
> -OMAGICSECTIONS:     Type: SHT_STRTAB (0x3)
> -OMAGICSECTIONS:     Flags [ (0x0)
> -OMAGICSECTIONS:     ]
> -OMAGICSECTIONS:     Address: 0x0
> -OMAGICSECTIONS:     Offset: 0x3A8
> -OMAGICSECTIONS:     Size: 246
> -OMAGICSECTIONS:     Link: 0
> -OMAGICSECTIONS:     Info: 0
> -OMAGICSECTIONS:     AddressAlignment: 1
> -OMAGICSECTIONS:     EntrySize: 0
> -OMAGICSECTIONS:   }
> -OMAGICSECTIONS: ]
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 0
> +OMAGICSECTIONS:    Name:  (0)
> +OMAGICSECTIONS:    Type: SHT_NULL (0x0)
> +OMAGICSECTIONS:    Flags [ (0x0)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x0
> +OMAGICSECTIONS:    Offset: 0x0
> +OMAGICSECTIONS:    Size: 0
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 0
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 1
> +OMAGICSECTIONS:    Name: .note.GNU-stack (1)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x2)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x4000B0
> +OMAGICSECTIONS:    Offset: 0xB0
> +OMAGICSECTIONS:    Size: 0
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 1
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 2
> +OMAGICSECTIONS:    Name: .text (17)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x6)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_EXECINSTR (0x4)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x4000B0
> +OMAGICSECTIONS:    Offset: 0xB0
> +OMAGICSECTIONS:    Size: 11
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 4
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 3
> +OMAGICSECTIONS:    Name: .comment (23)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x2)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x4000BB
> +OMAGICSECTIONS:    Offset: 0xBB
> +OMAGICSECTIONS:    Size: 43
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 1
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 4
> +OMAGICSECTIONS:    Name: .eh_frame (32)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x2)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x4000E8
> +OMAGICSECTIONS:    Offset: 0xE8
> +OMAGICSECTIONS:    Size: 56
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 8
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 5
> +OMAGICSECTIONS:    Name: .tdata (42)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x403)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_TLS (0x400)
> +OMAGICSECTIONS:      SHF_WRITE (0x1)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x400120
> +OMAGICSECTIONS:    Offset: 0x120
> +OMAGICSECTIONS:    Size: 4
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 4
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 6
> +OMAGICSECTIONS:    Name: .tbss (49)
> +OMAGICSECTIONS:    Type: SHT_NOBITS (0x8)
> +OMAGICSECTIONS:    Flags [ (0x403)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_TLS (0x400)
> +OMAGICSECTIONS:      SHF_WRITE (0x1)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x400124
> +OMAGICSECTIONS:    Offset: 0x124
> +OMAGICSECTIONS:    Size: 8
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 4
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 7
> +OMAGICSECTIONS:    Name: .got.plt (55)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x3)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_WRITE (0x1)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x400128
> +OMAGICSECTIONS:    Offset: 0x128
> +OMAGICSECTIONS:    Size: 0
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 8
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 8
> +OMAGICSECTIONS:    Name: .data (64)
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x3)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_WRITE (0x1)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x400128
> +OMAGICSECTIONS:    Offset: 0x128
> +OMAGICSECTIONS:    Size: 4
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 4
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 9
> +OMAGICSECTIONS:    Name: .bss (70)
> +OMAGICSECTIONS:    Type: SHT_NOBITS (0x8)
> +OMAGICSECTIONS:    Flags [ (0x3)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:      SHF_WRITE (0x1)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x40012C
> +OMAGICSECTIONS:    Offset: 0x12C
> +OMAGICSECTIONS:    Size: 0
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 4
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 10
> +OMAGICSECTIONS:    Name: .shstrtab (75)
> +OMAGICSECTIONS:    Type: SHT_STRTAB (0x3)
> +OMAGICSECTIONS:    Flags [ (0x0)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x0
> +OMAGICSECTIONS:    Offset: 0x12C
> +OMAGICSECTIONS:    Size: 101
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 1
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 11
> +OMAGICSECTIONS:    Name: .symtab (85)
> +OMAGICSECTIONS:    Type: SHT_SYMTAB (0x2)
> +OMAGICSECTIONS:    Flags [ (0x0)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x0
> +OMAGICSECTIONS:    Offset: 0x198
> +OMAGICSECTIONS:    Size: 528
> +OMAGICSECTIONS:    Link: 12
> +OMAGICSECTIONS:    Info: 2
> +OMAGICSECTIONS:    AddressAlignment: 8
> +OMAGICSECTIONS:    EntrySize: 24
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Index: 12
> +OMAGICSECTIONS:    Name: .strtab (93)
> +OMAGICSECTIONS:    Type: SHT_STRTAB (0x3)
> +OMAGICSECTIONS:    Flags [ (0x0)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x0
> +OMAGICSECTIONS:    Offset: 0x3A8
> +OMAGICSECTIONS:    Size: 246
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 1
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
>
>  OMAGICPROGRAMHEADERS: ProgramHeaders [
>  OMAGICPROGRAMHEADERS:   ProgramHeader {
>
> Modified: lld/trunk/test/elf/X86_64/orderatoms-by-override.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/orderatoms-by-override.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/orderatoms-by-override.test (original)
> +++ lld/trunk/test/elf/X86_64/orderatoms-by-override.test Thu Sep 12
> 10:43:09 2013
> @@ -4,5 +4,5 @@ RUN: lld -flavor gnu -target x86_64 %p/I
>  RUN:     %p/Inputs/constint.o -emit-yaml -o %t --noinhibit-exec
>  RUN: FileCheck %s -check-prefix=CHECKORDER < %t
>
> -CHECKORDER:  - name:            a
>  CHECKORDER:  - name:            b
> +CHECKORDER:  - name:            a
>
> Modified: lld/trunk/test/elf/X86_64/undef.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/undef.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/undef.test (original)
> +++ lld/trunk/test/elf/X86_64/undef.test Thu Sep 12 10:43:09 2013
> @@ -7,13 +7,12 @@ RUN: lld -flavor gnu -target x86_64 %p/I
>  RUN: llvm-readobj -symbols %t | FileCheck %s
>
>  SYMFROMARCHIVE:  Symbol {
> -SYMFROMARCHIVE:    Name: fn (16)
> -SYMFROMARCHIVE:    Value: 0x4001A4
> +SYMFROMARCHIVE:    Name: fn (1)
>  SYMFROMARCHIVE:    Size: 11
>  SYMFROMARCHIVE:    Binding: Global (0x1)
>  SYMFROMARCHIVE:    Type: Function (0x2)
>  SYMFROMARCHIVE:    Other: 0
> -SYMFROMARCHIVE:    Section: .text (0x5)
> +SYMFROMARCHIVE:    Section: .text (0x6)
>  SYMFROMARCHIVE:  }
>
>  CHECK-NOT: Name: fn
>
> Modified: lld/trunk/test/elf/check.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/check.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/check.test (original)
> +++ lld/trunk/test/elf/check.test Thu Sep 12 10:43:09 2013
> @@ -4,110 +4,40 @@ RUN: lld -flavor gnu -target i386 -e glo
>  RUN:    %p/Inputs/object-test.elf-i386  -o %t
>  RUN: FileCheck %s -check-prefix ELF-i386 < %t
>  RUN: lld -flavor gnu -target hexagon -e global_func --noinhibit-exec
> -emit-yaml \
> -RUN:    %p/Inputs/object-test.elf-hexagon | FileCheck %s -check-prefix
> ELF-hexagon
> +RUN:    %p/Inputs/object-test.elf-hexagon -o %t1
> +RUN: FileCheck %s -check-prefix ELF-hexagon < %t1
>
> -ELF-i386:defined-atoms:
> -ELF-i386:    - name:              common_symbol
> -ELF-i386:      scope:             global
> -ELF-i386:      type:              zero-fill
> -ELF-i386:      merge:             as-tentative
> -
> -ELF-i386:    - name:              tentative
> -ELF-i386:      scope:             global
> -ELF-i386:      type:              zero-fill
> -ELF-i386:      merge:             as-tentative
> -
> -ELF-i386:    - name:              global_func
> -ELF-i386:      scope:             global
> -ELF-i386:      content:           [ 55, 89, E5, 83, EC, 18, C7, 04, 24,
> 00, 00, 00,
> -ELF-i386:                           00, E8, FC, FF, FF, FF, C9, C3 ]
> -
> -ELF-i386:    - name:              static_func
> -ELF-i386:      content:           [ 55, 89, E5, 83, EC, 18, C7, 04, 24,
> 07, 00, 00,
> -ELF-i386:                           00, E8, FC, FF, FF, FF, C9, C3 ]
> -
> -ELF-i386:    - name:              weak_func
> -ELF-i386:      scope:             global
> -ELF-i386:      merge:             as-weak
> -ELF-i386:      content:           [ 55, 89, E5, 83, EC, 18, C7, 04, 24,
> 0E, 00, 00,
> -ELF-i386:                           00, E8, FC, FF, FF, FF, C9, C3 ]
> -
> -ELF-i386:    - name:              hidden_func
> -ELF-i386:      scope:             hidden
> -ELF-i386:      content:           [ 55, 89, E5, 83, EC, 18, C7, 04, 24,
> 13, 00, 00,
> -ELF-i386:                           00, E8, FC, FF, FF, FF, C9, C3 ]
> -
> -ELF-i386:    - name:              no_dead_strip
> -ELF-i386:      scope:             global
> -ELF-i386:      content:           [ 55, 89, E5, 5D, C3 ]
> -
> -ELF-i386:    - name:              no_special_section_func
> -ELF-i386:      scope:             global
> -ELF-i386:      content:           [ 55, 89, E5, 5D, C3 ]
> -
> -ELF-i386:    - name:              special_section_func
> -ELF-i386:      scope:             global
> -ELF-i386:      content:           [ 55, 89, E5, 5D, C3 ]
> -ELF-i386:      section-choice:    custom-required
> -ELF-i386:      section-name:      special_section
> -
> -
> -ELF-i386:undefined-atoms:
> -ELF-i386:    - name:              puts
> -
> -ELF-i386:absolute-atoms:
> -ELF-i386:    - name:              sample.c
> -ELF-i386:      value:             0x0
> -
> -ELF-hexagon:defined-atoms:
> -
> -ELF-hexagon:    - name:              common_symbol
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      type:              zero-fill
> -ELF-hexagon:      merge:             as-tentative
> -
> -ELF-hexagon:    - name:              tentative
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      type:              zero-fill
> -ELF-hexagon:      merge:             as-tentative
> -
> -ELF-hexagon:    - name:              global_func
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 00, 40, 00, 00,
> 00, C0, 00, 78,
> -ELF-hexagon:                           00, C0, 00, 5A, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              static_func
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 00, 40, 00, 00,
> 00, C0, 00, 78,
> -ELF-hexagon:                           00, C0, 00, 5A, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              weak_func
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      merge:             as-weak
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 00, 40, 00, 00,
> 00, C0, 00, 78,
> -ELF-hexagon:                           00, C0, 00, 5A, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              hidden_func
> -ELF-hexagon:      scope:             hidden
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 00, 40, 00, 00,
> 00, C0, 00, 78,
> -ELF-hexagon:                           00, C0, 00, 5A, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              no_dead_strip
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              no_special_section_func
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 1E, C0, 1E, 96 ]
> -
> -ELF-hexagon:    - name:              special_section_func
> -ELF-hexagon:      scope:             global
> -ELF-hexagon:      content:           [ 00, C0, 9D, A0, 1E, C0, 1E, 96 ]
> -ELF-hexagon:      section-choice:    custom-required
> -ELF-hexagon:      section-name:      special_section
> -
> -ELF-hexagon: undefined-atoms:
> -ELF-hexagon:    - name:              puts
> -
> -ELF-hexagon: absolute-atoms:
> -ELF-hexagon:    - name:              sample.c
> -ELF-hexagon:      value:             0x0
> +ELF-i386: defined-atoms:
> +ELF-i386:   - name:            global_variable
> +ELF-i386:   - name:            common_symbol
> +ELF-i386:   - name:            tentative
> +ELF-i386:   - name:            uninitialized_static_variable
> +ELF-i386:   - name:            global_func
> +ELF-i386:   - name:            static_func
> +ELF-i386:   - name:            weak_func
> +ELF-i386:   - name:            hidden_func
> +ELF-i386:   - name:            no_dead_strip
> +ELF-i386:   - name:            no_special_section_func
> +ELF-i386:   - name:            special_section_func
> +ELF-i386: undefined-atoms:
> +ELF-i386:   - name:            puts
> +ELF-i386: absolute-atoms:
> +ELF-i386:   - name:            sample.c
> +
> +ELF-hexagon:   - name:            global_variable
> +ELF-hexagon:   - name:            tentative
> +ELF-hexagon:   - name:            common_symbol
> +ELF-hexagon:   - name:            uninitialized_static_variable
> +ELF-hexagon:   - name:            global_func
> +ELF-hexagon:   - name:            static_func
> +ELF-hexagon:   - name:            weak_func
> +ELF-hexagon:   - name:            hidden_func
> +ELF-hexagon:   - name:            no_dead_strip
> +ELF-hexagon:   - name:            no_special_section_func
> +ELF-hexagon:   - name:            special_section_func
> +ELF-hexagon: undefined-atoms:
> +ELF-hexagon:   - name:            puts
> +ELF-hexagon: absolute-atoms:
> +ELF-hexagon:   - name:            sample.c
> +ELF-hexagon:     scope:           static
> +ELF-hexagon:     value:           0x0000000000000000
>
> Modified: lld/trunk/test/elf/checkrodata.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/checkrodata.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/checkrodata.test (original)
> +++ lld/trunk/test/elf/checkrodata.test Thu Sep 12 10:43:09 2013
> @@ -4,6 +4,6 @@ RUN: llvm-objdump -section-headers %t1 |
>  RUN: lld -flavor gnu -target hexagon -o %t2 %p/Inputs/rodata-test.hexagon
> --noinhibit-exec
>  RUN: llvm-objdump -section-headers %t2 |  FileCheck -check-prefix=hexagon
> %s
>
> -i386:  .rodata       00000004 0000000000000114 DATA
> +i386:  .rodata       00000004 0000000000000111 DATA
>
> -hexagon:  .rodata       00000004 0000000000000114 DATA
> +hexagon:  .rodata       00000004 0000000000000111 DATA
>
> Modified: lld/trunk/test/elf/dynamic.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/dynamic.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/dynamic.test (original)
> +++ lld/trunk/test/elf/dynamic.test Thu Sep 12 10:43:09 2013
> @@ -9,6 +9,10 @@ RUN: llvm-objdump -p %t >> %t2
>  RUN: llvm-readobj -s -dyn-symbols -dynamic-table %t >> %t2
>  RUN: FileCheck %s < %t2
>
> +CHECK: type: got
> +CHECK: references:
> +CHECK:   kind: R_X86_64_JUMP_SLOT
> +
>  CHECK: name: main
>  CHECK: kind: R_X86_64_PC32
>  CHECK:  offset: 18
> @@ -17,10 +21,6 @@ CHECK:  target: [[PLTNAME:[-a-zA-Z0-9_]+
>  CHECK: name: [[PLTNAME]]
>  CHECK: type: stub
>
> -CHECK: type: got
> -CHECK: references:
> -CHECK:   kind: R_X86_64_JUMP_SLOT
> -
>  CHECK: shared-library-atoms:
>  CHECK:  name: foo
>  CHECK:  load-name: shared.so-x86-64
>
> Modified: lld/trunk/test/elf/gotpcrel.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/gotpcrel.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/gotpcrel.test (original)
> +++ lld/trunk/test/elf/gotpcrel.test Thu Sep 12 10:43:09 2013
> @@ -3,19 +3,20 @@ RUN: lld -flavor gnu -target x86_64-linu
>  RUN:   --noinhibit-exec %p/Inputs/gotpcrel.x86-64  \
>  RUN:   | FileCheck %s -check-prefix=YAML
>
> +YAML: name: [[NULLGOT:[a-zA-Z0-9_]+]]
> +YAML: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
> +YAML-NOT: references:
> +
> +YAML: name: [[MAINGOT:[a-zA-Z0-9_]+]]
> +YAML: kind: R_X86_64_64
> +YAML: target: main
> +
>  YAML: name: main
>  YAML: references:
>  YAML:   kind:    R_X86_64_PC32
>  YAML:   offset:  3
> -YAML:   target:  [[NULLGOT:[a-zA-Z0-9_]+]]
> +YAML:   target:  [[NULLGOT]]
>  YAML:   kind:    R_X86_64_PC32
>  YAML:   offset:  10
> -YAML:   target:  [[MAINGOT:[a-zA-Z0-9_]+]]
> +YAML:   target:  [[MAINGOT]]
>
> -YAML: name: [[NULLGOT]]
> -YAML: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]
> -YAML-NOT: references:
> -
> -YAML: name: [[MAINGOT]]
> -YAML: kind: R_X86_64_64
> -YAML: target: main
>
> Modified: lld/trunk/test/elf/hexagon-quickdata-sort.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sort.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/hexagon-quickdata-sort.test (original)
> +++ lld/trunk/test/elf/hexagon-quickdata-sort.test Thu Sep 12 10:43:09 2013
> @@ -1,12 +1,12 @@
>  RUN: lld -flavor gnu -target hexagon
> %p/Inputs/quickdata-sort-test.o.elf-hexagon -o %t1 --noinhibit-exec
>  RUN: llvm-nm -n %t1 | FileCheck %s -check-prefix=quickdataSort
>
> -quickdataSort: 00002000 D A1
> -quickdataSort: 00002001 D AA1
> -quickdataSort: 00002002 D B1
> -quickdataSort: 00002004 D BB1
> -quickdataSort: 00002008 D C1
> -quickdataSort: 0000200c D CC1
> -quickdataSort: 00002010 D D1
> -quickdataSort: 00002018 D DD1
> +quickdataSort: 00002000 D AA1
> +quickdataSort: 00002001 D A1
> +quickdataSort: 00002002 D BB1
> +quickdataSort: 00002004 D B1
> +quickdataSort: 00002008 D CC1
> +quickdataSort: 0000200c D C1
> +quickdataSort: 00002010 D DD1
> +quickdataSort: 00002018 D D1
>
>
> Modified: lld/trunk/test/elf/hexagon-quickdata-sortcommon.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sortcommon.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/hexagon-quickdata-sortcommon.test (original)
> +++ lld/trunk/test/elf/hexagon-quickdata-sortcommon.test Thu Sep 12
> 10:43:09 2013
> @@ -2,16 +2,15 @@ RUN: lld -flavor gnu -target hexagon -o
>  RUN:     %p/Inputs/quickdata-sortcommon-test.o.elf-hexagon
>  RUN: llvm-nm -n %t1 | FileCheck %s -check-prefix=quickdataSortCommon
>
> -quickdataSortCommon: 00002000 D A1
> -quickdataSortCommon: 00002001 D AA1
> +quickdataSortCommon: 00002000 D AA1
> +quickdataSortCommon: 00002001 D A1
>  quickdataSortCommon: 00002002 D AAA1
> -quickdataSortCommon: 00002004 D B1
> -quickdataSortCommon: 00002006 D BB1
> +quickdataSortCommon: 00002004 D BB1
> +quickdataSortCommon: 00002006 D B1
>  quickdataSortCommon: 00002008 D BBB1
> -quickdataSortCommon: 0000200c D C1
> -quickdataSortCommon: 00002010 D CC1
> +quickdataSortCommon: 0000200c D CC1
> +quickdataSortCommon: 00002010 D C1
>  quickdataSortCommon: 00002014 D CCC1
> -quickdataSortCommon: 00002018 D D1
> -quickdataSortCommon: 00002020 D DD1
> +quickdataSortCommon: 00002018 D DD1
> +quickdataSortCommon: 00002020 D D1
>  quickdataSortCommon: 00002028 D DDD1
> -
>
> Modified: lld/trunk/test/elf/ifunc.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/ifunc.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/ifunc.test (original)
> +++ lld/trunk/test/elf/ifunc.test Thu Sep 12 10:43:09 2013
> @@ -14,6 +14,12 @@ RUN: llvm-readobj -r %t | FileCheck %s -
>
>  PLT: defined-atoms:
>
> +// Make sure there's a got entry with a IRELATIVE relocation.
> +PLT: type: got
> +PLT: references:
> +PLT:  kind: R_X86_64_IRELATIVE
> +PLT:  target: hey
> +
>  PLT: name:  plt
>  PLT: scope: global
>  PLT: references:
> @@ -36,12 +42,6 @@ PLT: type: stub
>  PLT: references
>  PLT:   kind: R_X86_64_PC32
>
> -// Make sure there's a got entry with a IRELATIVE relocation.
> -PLT: type: got
> -PLT: references:
> -PLT:  kind: R_X86_64_IRELATIVE
> -PLT:  target: hey
> -
>  CHECK: name: hey
>  CHECK: scope: global
>  CHECK: type: resolver
>
> Modified: lld/trunk/test/elf/quickdata.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/quickdata.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/quickdata.test (original)
> +++ lld/trunk/test/elf/quickdata.test Thu Sep 12 10:43:09 2013
> @@ -1,14 +1,14 @@
>  RUN: lld -flavor gnu -target hexagon -emit-yaml
> %p/Inputs/quickdata-test.elf-hexagon \
>  RUN: --noinhibit-exec | FileCheck %s -check-prefix hexagon
>
> +hexagon:  - name:            init
> +hexagon:    scope:           global
> +hexagon:    type:            quick-data
>  hexagon:  - name:            ac1
>  hexagon:    scope:           global
>  hexagon:    type:            zero-fill-quick
>  hexagon:    size:            1
>  hexagon:    merge:           as-tentative
> -hexagon:  - name:            init
> -hexagon:    scope:           global
> -hexagon:    type:            quick-data
>  hexagon:  - name:            bss1
>  hexagon:    scope:           global
>  hexagon:    type:            zero-fill-quick
>
> Modified: lld/trunk/test/elf/tls.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/tls.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/tls.test (original)
> +++ lld/trunk/test/elf/tls.test Thu Sep 12 10:43:09 2013
> @@ -7,6 +7,11 @@ RUN:   --noinhibit-exec -e main -static
>
>  // Verify that the TLS accesses have the correct offsets.
>
> +YAML:  type: got
> +YAML:  references:
> +YAML:   kind: R_X86_64_TPOFF64
> +YAML:   target: tls2
> +
>  YAML:  name: main
>  YAML:  references:
>  YAML:    kind: R_X86_64_TPOFF32
> @@ -23,11 +28,6 @@ YAML:  name: GOTTPOFF
>  YAML:  kind: R_X86_64_PC32
>  YAML:  target: [[GOTNAME:[a-zA-Z0-9_]+]]
>
> -YAML:  type: got
> -YAML:  references:
> -YAML:   kind: R_X86_64_TPOFF64
> -YAML:   target: tls2
> -
>
>  // main
>  CHECK: addl %fs:-4
>
> Modified: lld/trunk/test/elf/x86-64-dynamic.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/x86-64-dynamic.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/elf/x86-64-dynamic.test (original)
> +++ lld/trunk/test/elf/x86-64-dynamic.test Thu Sep 12 10:43:09 2013
> @@ -5,6 +5,15 @@ RUN:   %p/Inputs/shared.so-x86-64 -emit-
>  RUN: FileCheck %s < %t1
>
>  // Don't check the GOT and PLT names as they are only present in assert
> builds.
> +CHECK:    type:            got
> +CHECK:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00 ]
> +CHECK:    section-choice:  custom-required
> +CHECK:    section-name:    .got.dyn
> +CHECK:    permissions:     rw-
> +CHECK:    references:
> +CHECK:      - kind:            R_X86_64_GLOB_DAT
> +CHECK:        offset:          0
> +CHECK:        target:          i
>
>  CHECK:  - name:            main
>  CHECK:    scope:           global
> @@ -53,16 +62,6 @@ CHECK:      - kind:            R_X86_64_
>  CHECK:        offset:          12
>                target:          .PLT0
>  CHECK:        addend:          -4
> -CHECK:    name:            [[GOTNAME]]
> -CHECK:    type:            got
> -CHECK:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00 ]
> -CHECK:    section-choice:  custom-required
> -CHECK:    section-name:    .got.dyn
> -CHECK:    permissions:     rw-
> -CHECK:    references:
> -CHECK:      - kind:            R_X86_64_GLOB_DAT
> -CHECK:        offset:          0
> -CHECK:        target:          i
>
>
>
>
> Modified: lld/trunk/test/pecoff/importlib.test
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/importlib.test?rev=190608&r1=190607&r2=190608&view=diff
>
> ==============================================================================
> --- lld/trunk/test/pecoff/importlib.test (original)
> +++ lld/trunk/test/pecoff/importlib.test Thu Sep 12 10:43:09 2013
> @@ -27,11 +27,11 @@ CHECK-NEXT: .text:
>  CHECK-NEXT:     1000:       55                   pushl   %ebp
>  CHECK-NEXT:     1001:       8b ec                movl    %esp, %ebp
>  CHECK-NEXT:     1003:       56                   pushl   %esi
> -CHECK-NEXT:     1004:       ff 15 78 20 40 00    calll   *4202616
> -CHECK-NEXT:     100a:       8b 0d 7c 20 40 00    movl    4202620, %ecx
> +CHECK-NEXT:     1004:       ff 15 22 20 40 00    calll *4202530
> +CHECK-NEXT:     100a:       8b 0d 26 20 40 00    movl 4202534, %ecx
>  CHECK-NEXT:     1010:       8b 31                movl    (%ecx), %esi
>  CHECK-NEXT:     1012:       03 f0                addl    %eax, %esi
> -CHECK-NEXT:     1014:       ff 15 74 20 40 00    calll   *4202612
> +CHECK-NEXT:     1014:       ff 15 1e 20 40 00    calll *4202526
>  CHECK-NEXT:     101a:       03 c6                addl    %esi, %eax
>  CHECK-NEXT:     101c:       5e                   popl    %esi
>  CHECK-NEXT:     101d:       5d                   popl    %ebp
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130913/b61173a4/attachment.html>


More information about the llvm-commits mailing list