[lld] r339049 - [COFF] Remove a superfluous warning about aligncomm for non-common symbols

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 14 02:00:33 PDT 2018


Merged in r339658.

On Mon, Aug 6, 2018 at 9:49 PM, Martin Storsjo via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: mstorsjo
> Date: Mon Aug  6 12:49:18 2018
> New Revision: 339049
>
> URL: http://llvm.org/viewvc/llvm-project?rev=339049&view=rev
> Log:
> [COFF] Remove a superfluous warning about aligncomm for non-common symbols
>
> It's not an error if a common symbol (uninitialized data, with alignment
> specified via the aligncomm directive) is replaced with a regular
> one with initialized data (with alignment specified via the section
> chunk).
>
> Differential Revision: https://reviews.llvm.org/D50268
>
> Added:
>     lld/trunk/test/COFF/Inputs/common-replacement.s
>     lld/trunk/test/COFF/common-replacement.s
> Modified:
>     lld/trunk/COFF/Driver.cpp
>
> Modified: lld/trunk/COFF/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=339049&r1=339048&r2=339049&view=diff
> ==============================================================================
> --- lld/trunk/COFF/Driver.cpp (original)
> +++ lld/trunk/COFF/Driver.cpp Mon Aug  6 12:49:18 2018
> @@ -1413,11 +1413,11 @@ void LinkerDriver::link(ArrayRef<const c
>        continue;
>      }
>
> +    // If the symbol isn't common, it must have been replaced with a regular
> +    // symbol, which will carry its own alignment.
>      auto *DC = dyn_cast<DefinedCommon>(Sym);
> -    if (!DC) {
> -      warn("/aligncomm symbol " + Name + " of wrong kind");
> +    if (!DC)
>        continue;
> -    }
>
>      CommonChunk *C = DC->getChunk();
>      C->Alignment = std::max(C->Alignment, Alignment);
>
> Added: lld/trunk/test/COFF/Inputs/common-replacement.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/common-replacement.s?rev=339049&view=auto
> ==============================================================================
> --- lld/trunk/test/COFF/Inputs/common-replacement.s (added)
> +++ lld/trunk/test/COFF/Inputs/common-replacement.s Mon Aug  6 12:49:18 2018
> @@ -0,0 +1,5 @@
> +        .globl          foo
> +        .data
> +        .p2align        2, 0
> +foo:
> +        .long           42
>
> Added: lld/trunk/test/COFF/common-replacement.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/common-replacement.s?rev=339049&view=auto
> ==============================================================================
> --- lld/trunk/test/COFF/common-replacement.s (added)
> +++ lld/trunk/test/COFF/common-replacement.s Mon Aug  6 12:49:18 2018
> @@ -0,0 +1,35 @@
> +# REQUIRES: x86
> +
> +# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t1.obj
> +# RUN: llvm-mc -triple=x86_64-windows-gnu %S/Inputs/common-replacement.s -filetype=obj -o %t2.obj
> +
> +# RUN: lld-link -lldmingw -entry:main %t1.obj %t2.obj -out:%t.exe -verbose 2>&1 \
> +# RUN:   | FileCheck -check-prefix VERBOSE %s
> +# RUN: llvm-readobj -s %t.exe | FileCheck -check-prefix SECTIONS %s
> +
> +# VERBOSE: -aligncomm:"foo",2
> +
> +# As long as the .comm symbol is replaced with actual data, RawDataSize
> +# below should be nonzero.
> +
> +# SECTIONS:         Name: .data (2E 64 61 74 61 00 00 00)
> +# SECTIONS-NEXT:    VirtualSize: 0x8
> +# SECTIONS-NEXT:    VirtualAddress: 0x2000
> +# SECTIONS-NEXT:    RawDataSize: 512
> +
> +
> +        .text
> +        .def            main;
> +        .scl            2;
> +        .type           32;
> +        .endef
> +        .globl          main
> +        .p2align        4, 0x90
> +main:
> +        movl            foo(%rip), %eax
> +        retq
> +
> +# This produces an aligncomm directive, but when linking in
> +# Inputs/common-replacement.s, this symbol is replaced by a normal defined
> +# symbol instead.
> +        .comm           foo, 4, 2
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list