[lld] r368078 - [WebAssembly] Fix null pointer in createInitTLSFunction

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 7 01:51:04 PDT 2019


Merged to release_90 in r368137.

On Tue, Aug 6, 2019 at 10:08 PM Guanzhong Chen via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: quantum
> Date: Tue Aug  6 13:09:04 2019
> New Revision: 368078
>
> URL: http://llvm.org/viewvc/llvm-project?rev=368078&view=rev
> Log:
> [WebAssembly] Fix null pointer in createInitTLSFunction
>
> Summary:
> `createSyntheticSymbols`, which creates `WasmSym::InitTLS`, is only called
> when `!config->relocatable`, but this condition is not checked when calling
> `createInitTLSFunction`.
>
> This diff checks `!config->relocatable` before calling `createInitTLSFunction`.
>
> Fixes https://github.com/emscripten-core/emscripten/issues/9155.
>
> Reviewers: tlively, aheejin, kripken, sbc100
>
> Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits
>
> Tags: #llvm
>
> Differential Revision: https://reviews.llvm.org/D65785
>
> Modified:
>     lld/trunk/test/wasm/relocatable.ll
>     lld/trunk/wasm/Writer.cpp
>
> Modified: lld/trunk/test/wasm/relocatable.ll
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/relocatable.ll?rev=368078&r1=368077&r2=368078&view=diff
> ==============================================================================
> --- lld/trunk/test/wasm/relocatable.ll (original)
> +++ lld/trunk/test/wasm/relocatable.ll Tue Aug  6 13:09:04 2019
> @@ -1,7 +1,12 @@
>  ; RUN: llc -filetype=obj %p/Inputs/hello.ll -o %t.hello.o
>  ; RUN: llc -filetype=obj %s -o %t.o
>  ; RUN: wasm-ld -r -o %t.wasm %t.hello.o %t.o
> -; RUN: obj2yaml %t.wasm | FileCheck %s
> +; RUN: obj2yaml %t.wasm | FileCheck %s --check-prefixes CHECK,NORMAL
> +
> +; RUN: llc -filetype=obj %p/Inputs/hello.ll -o %t.hello.bm.o -mattr=+bulk-memory
> +; RUN: llc -filetype=obj %s -o %t.bm.o -mattr=+bulk-memory
> +; RUN: wasm-ld -r -o %t.mt.wasm %t.hello.bm.o %t.bm.o --shared-memory --max-memory=131072
> +; RUN: obj2yaml %t.mt.wasm | FileCheck %s --check-prefixes CHECK,SHARED
>
>  target triple = "wasm32-unknown-unknown"
>
> @@ -70,13 +75,18 @@ entry:
>  ; CHECK-NEXT:           Maximum:         0x00000004
>  ; CHECK-NEXT:   - Type:            MEMORY
>  ; CHECK-NEXT:     Memories:
> -; CHECK-NEXT:       - Initial:         0x00000001
> +; NORMAL-NEXT:      - Initial:         0x00000001
> +; SHARED-NEXT:      - Flags:           [ HAS_MAX, IS_SHARED ]
> +; SHARED-NEXT:        Initial:         0x00000001
> +; SHARED-NEXT:        Maximum:         0x00000002
>  ; CHECK-NEXT:   - Type:            ELEM
>  ; CHECK-NEXT:     Segments:
>  ; CHECK-NEXT:       - Offset:
>  ; CHECK-NEXT:           Opcode:          I32_CONST
>  ; CHECK-NEXT:           Value:           1
>  ; CHECK-NEXT:         Functions:       [ 4, 1, 2 ]
> +; SHARED-NEXT:  - Type:            DATACOUNT
> +; SHARED-NEXT:    Count:           6
>  ; CHECK-NEXT:   - Type:            CODE
>  ; CHECK-NEXT:     Relocations:
>  ; CHECK-NEXT:       - Type:            R_WASM_MEMORY_ADDR_SLEB
> @@ -104,176 +114,176 @@ entry:
>  ; CHECK-NEXT:       - Index:         5
>  ; CHECK-NEXT:         Locals:
>  ; CHECK-NEXT:         Body:          419C808080000B
> -; CHECK-NEXT:   - Type:            DATA
> -; CHECK-NEXT:     Relocations:
> -; CHECK-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32
> -; CHECK-NEXT:         Index:           3
> -; CHECK-NEXT:         Offset:          0x00000012
> -; CHECK-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32
> -; CHECK-NEXT:         Index:           4
> -; CHECK-NEXT:         Offset:          0x0000001B
> -; CHECK-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32
> -; CHECK-NEXT:         Index:           5
> -; CHECK-NEXT:         Offset:          0x00000024
> -; CHECK-NEXT:       - Type:            R_WASM_MEMORY_ADDR_I32
> -; CHECK-NEXT:         Index:           12
> -; CHECK-NEXT:         Offset:          0x0000002D
> -; CHECK-NEXT:     Segments:
> -; CHECK-NEXT:       - SectionOffset:   6
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           0
> -; CHECK-NEXT:         Content:         68656C6C6F0A00
> -; CHECK-NEXT:       - SectionOffset:   18
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           8
> -; CHECK-NEXT:         Content:         '01000000'
> -; CHECK-NEXT:       - SectionOffset:   27
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           12
> -; CHECK-NEXT:         Content:         '02000000'
> -; CHECK-NEXT:       - SectionOffset:   36
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           16
> -; CHECK-NEXT:         Content:         '03000000'
> -; CHECK-NEXT:       - SectionOffset:   45
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           24
> -; CHECK-NEXT:         Content:         '00000000'
> -; CHECK-NEXT:       - SectionOffset:   54
> -; CHECK-NEXT:         InitFlags:       0
> -; CHECK-NEXT:         Offset:
> -; CHECK-NEXT:           Opcode:          I32_CONST
> -; CHECK-NEXT:           Value:           28
> -; CHECK-NEXT:         Content:         '616263'
> -; CHECK-NEXT:   - Type:            CUSTOM
> -; CHECK-NEXT:     Name:            linking
> -; CHECK-NEXT:     Version:         2
> -; CHECK-NEXT:     SymbolTable:
> -; CHECK-NEXT:       - Index:           0
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            hello
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Function:        3
> -; CHECK-NEXT:       - Index:           1
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            hello_str
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:         Segment:         0
> -; CHECK-NEXT:         Size:            7
> -; CHECK-NEXT:       - Index:           2
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            puts
> -; CHECK-NEXT:         Flags:           [ UNDEFINED ]
> -; CHECK-NEXT:         Function:        0
> -; CHECK-NEXT:       - Index:           3
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            my_func
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Function:        4
> -; CHECK-NEXT:       - Index:           4
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            foo_import
> -; CHECK-NEXT:         Flags:           [ UNDEFINED ]
> -; CHECK-NEXT:         Function:        1
> -; CHECK-NEXT:       - Index:           5
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            bar_import
> -; CHECK-NEXT:         Flags:           [ BINDING_WEAK, UNDEFINED ]
> -; CHECK-NEXT:         Function:        2
> -; CHECK-NEXT:       - Index:           6
> -; CHECK-NEXT:         Kind:            FUNCTION
> -; CHECK-NEXT:         Name:            func_comdat
> -; CHECK-NEXT:         Flags:           [ BINDING_WEAK ]
> -; CHECK-NEXT:         Function:        5
> -; CHECK-NEXT:       - Index:           7
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            data_comdat
> -; CHECK-NEXT:         Flags:           [ BINDING_WEAK ]
> -; CHECK-NEXT:         Segment:         5
> -; CHECK-NEXT:         Size:            3
> -; CHECK-NEXT:       - Index:           8
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            func_addr1
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Segment:         1
> -; CHECK-NEXT:         Size:            4
> -; CHECK-NEXT:       - Index:           9
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            func_addr2
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Segment:         2
> -; CHECK-NEXT:         Size:            4
> -; CHECK-NEXT:       - Index:           10
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            func_addr3
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Segment:         3
> -; CHECK-NEXT:         Size:            4
> -; CHECK-NEXT:       - Index:           11
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            data_addr1
> -; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
> -; CHECK-NEXT:         Segment:         4
> -; CHECK-NEXT:         Size:            4
> -; CHECK-NEXT:       - Index:           12
> -; CHECK-NEXT:         Kind:            DATA
> -; CHECK-NEXT:         Name:            data_import
> -; CHECK-NEXT:         Flags:           [ UNDEFINED ]
> -; CHECK-NEXT:     SegmentInfo:
> -; CHECK-NEXT:       - Index:           0
> -; CHECK-NEXT:         Name:            .rodata.hello_str
> -; CHECK-NEXT:         Alignment:       0
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:       - Index:           1
> -; CHECK-NEXT:         Name:            .data.func_addr1
> -; CHECK-NEXT:         Alignment:       2
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:       - Index:           2
> -; CHECK-NEXT:         Name:            .data.func_addr2
> -; CHECK-NEXT:         Alignment:       2
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:       - Index:           3
> -; CHECK-NEXT:         Name:            .data.func_addr3
> -; CHECK-NEXT:         Alignment:       2
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:       - Index:           4
> -; CHECK-NEXT:         Name:            .data.data_addr1
> -; CHECK-NEXT:         Alignment:       3
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:       - Index:           5
> -; CHECK-NEXT:         Name:            .rodata.data_comdat
> -; CHECK-NEXT:         Alignment:       0
> -; CHECK-NEXT:         Flags:           [  ]
> -; CHECK-NEXT:     Comdats:
> -; CHECK-NEXT:       - Name:            func_comdat
> -; CHECK-NEXT:         Entries:
> -; CHECK-NEXT:           - Kind:            FUNCTION
> -; CHECK-NEXT:             Index:           5
> -; CHECK-NEXT:           - Kind:            DATA
> -; CHECK-NEXT:             Index:           5
> -; CHECK-NEXT:   - Type:            CUSTOM
> -; CHECK-NEXT:     Name:            name
> -; CHECK-NEXT:     FunctionNames:
> -; CHECK-NEXT:       - Index:           0
> -; CHECK-NEXT:         Name:            puts
> -; CHECK-NEXT:       - Index:           1
> -; CHECK-NEXT:         Name:            foo_import
> -; CHECK-NEXT:       - Index:           2
> -; CHECK-NEXT:         Name:            bar_import
> -; CHECK-NEXT:       - Index:           3
> -; CHECK-NEXT:         Name:            hello
> -; CHECK-NEXT:       - Index:           4
> -; CHECK-NEXT:         Name:            my_func
> -; CHECK-NEXT:       - Index:           5
> -; CHECK-NEXT:         Name:            func_comdat
> -; CHECK-NEXT: ...
> +; NORMAL-NEXT:  - Type:            DATA
> +; NORMAL-NEXT:    Relocations:
> +; NORMAL-NEXT:      - Type:            R_WASM_TABLE_INDEX_I32
> +; NORMAL-NEXT:        Index:           3
> +; NORMAL-NEXT:        Offset:          0x00000012
> +; NORMAL-NEXT:      - Type:            R_WASM_TABLE_INDEX_I32
> +; NORMAL-NEXT:        Index:           4
> +; NORMAL-NEXT:        Offset:          0x0000001B
> +; NORMAL-NEXT:      - Type:            R_WASM_TABLE_INDEX_I32
> +; NORMAL-NEXT:        Index:           5
> +; NORMAL-NEXT:        Offset:          0x00000024
> +; NORMAL-NEXT:      - Type:            R_WASM_MEMORY_ADDR_I32
> +; NORMAL-NEXT:        Index:           12
> +; NORMAL-NEXT:        Offset:          0x0000002D
> +; NORMAL-NEXT:    Segments:
> +; NORMAL-NEXT:      - SectionOffset:   6
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           0
> +; NORMAL-NEXT:        Content:         68656C6C6F0A00
> +; NORMAL-NEXT:      - SectionOffset:   18
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           8
> +; NORMAL-NEXT:        Content:         '01000000'
> +; NORMAL-NEXT:      - SectionOffset:   27
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           12
> +; NORMAL-NEXT:        Content:         '02000000'
> +; NORMAL-NEXT:      - SectionOffset:   36
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           16
> +; NORMAL-NEXT:        Content:         '03000000'
> +; NORMAL-NEXT:      - SectionOffset:   45
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           24
> +; NORMAL-NEXT:        Content:         '00000000'
> +; NORMAL-NEXT:      - SectionOffset:   54
> +; NORMAL-NEXT:        InitFlags:       0
> +; NORMAL-NEXT:        Offset:
> +; NORMAL-NEXT:          Opcode:          I32_CONST
> +; NORMAL-NEXT:          Value:           28
> +; NORMAL-NEXT:        Content:         '616263'
> +; NORMAL-NEXT:  - Type:            CUSTOM
> +; NORMAL-NEXT:    Name:            linking
> +; NORMAL-NEXT:    Version:         2
> +; NORMAL-NEXT:    SymbolTable:
> +; NORMAL-NEXT:      - Index:           0
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            hello
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Function:        3
> +; NORMAL-NEXT:      - Index:           1
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            hello_str
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:        Segment:         0
> +; NORMAL-NEXT:        Size:            7
> +; NORMAL-NEXT:      - Index:           2
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            puts
> +; NORMAL-NEXT:        Flags:           [ UNDEFINED ]
> +; NORMAL-NEXT:        Function:        0
> +; NORMAL-NEXT:      - Index:           3
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            my_func
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Function:        4
> +; NORMAL-NEXT:      - Index:           4
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            foo_import
> +; NORMAL-NEXT:        Flags:           [ UNDEFINED ]
> +; NORMAL-NEXT:        Function:        1
> +; NORMAL-NEXT:      - Index:           5
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            bar_import
> +; NORMAL-NEXT:        Flags:           [ BINDING_WEAK, UNDEFINED ]
> +; NORMAL-NEXT:        Function:        2
> +; NORMAL-NEXT:      - Index:           6
> +; NORMAL-NEXT:        Kind:            FUNCTION
> +; NORMAL-NEXT:        Name:            func_comdat
> +; NORMAL-NEXT:        Flags:           [ BINDING_WEAK ]
> +; NORMAL-NEXT:        Function:        5
> +; NORMAL-NEXT:      - Index:           7
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            data_comdat
> +; NORMAL-NEXT:        Flags:           [ BINDING_WEAK ]
> +; NORMAL-NEXT:        Segment:         5
> +; NORMAL-NEXT:        Size:            3
> +; NORMAL-NEXT:      - Index:           8
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            func_addr1
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Segment:         1
> +; NORMAL-NEXT:        Size:            4
> +; NORMAL-NEXT:      - Index:           9
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            func_addr2
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Segment:         2
> +; NORMAL-NEXT:        Size:            4
> +; NORMAL-NEXT:      - Index:           10
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            func_addr3
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Segment:         3
> +; NORMAL-NEXT:        Size:            4
> +; NORMAL-NEXT:      - Index:           11
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            data_addr1
> +; NORMAL-NEXT:        Flags:           [ VISIBILITY_HIDDEN ]
> +; NORMAL-NEXT:        Segment:         4
> +; NORMAL-NEXT:        Size:            4
> +; NORMAL-NEXT:      - Index:           12
> +; NORMAL-NEXT:        Kind:            DATA
> +; NORMAL-NEXT:        Name:            data_import
> +; NORMAL-NEXT:        Flags:           [ UNDEFINED ]
> +; NORMAL-NEXT:    SegmentInfo:
> +; NORMAL-NEXT:      - Index:           0
> +; NORMAL-NEXT:        Name:            .rodata.hello_str
> +; NORMAL-NEXT:        Alignment:       0
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:      - Index:           1
> +; NORMAL-NEXT:        Name:            .data.func_addr1
> +; NORMAL-NEXT:        Alignment:       2
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:      - Index:           2
> +; NORMAL-NEXT:        Name:            .data.func_addr2
> +; NORMAL-NEXT:        Alignment:       2
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:      - Index:           3
> +; NORMAL-NEXT:        Name:            .data.func_addr3
> +; NORMAL-NEXT:        Alignment:       2
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:      - Index:           4
> +; NORMAL-NEXT:        Name:            .data.data_addr1
> +; NORMAL-NEXT:        Alignment:       3
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:      - Index:           5
> +; NORMAL-NEXT:        Name:            .rodata.data_comdat
> +; NORMAL-NEXT:        Alignment:       0
> +; NORMAL-NEXT:        Flags:           [  ]
> +; NORMAL-NEXT:    Comdats:
> +; NORMAL-NEXT:      - Name:            func_comdat
> +; NORMAL-NEXT:        Entries:
> +; NORMAL-NEXT:          - Kind:            FUNCTION
> +; NORMAL-NEXT:            Index:           5
> +; NORMAL-NEXT:          - Kind:            DATA
> +; NORMAL-NEXT:            Index:           5
> +; NORMAL-NEXT:  - Type:            CUSTOM
> +; NORMAL-NEXT:    Name:            name
> +; NORMAL-NEXT:    FunctionNames:
> +; NORMAL-NEXT:      - Index:           0
> +; NORMAL-NEXT:        Name:            puts
> +; NORMAL-NEXT:      - Index:           1
> +; NORMAL-NEXT:        Name:            foo_import
> +; NORMAL-NEXT:      - Index:           2
> +; NORMAL-NEXT:        Name:            bar_import
> +; NORMAL-NEXT:      - Index:           3
> +; NORMAL-NEXT:        Name:            hello
> +; NORMAL-NEXT:      - Index:           4
> +; NORMAL-NEXT:        Name:            my_func
> +; NORMAL-NEXT:      - Index:           5
> +; NORMAL-NEXT:        Name:            func_comdat
> +; NORMAL-NEXT:...
>
> Modified: lld/trunk/wasm/Writer.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/Writer.cpp?rev=368078&r1=368077&r2=368078&view=diff
> ==============================================================================
> --- lld/trunk/wasm/Writer.cpp (original)
> +++ lld/trunk/wasm/Writer.cpp Tue Aug  6 13:09:04 2019
> @@ -901,7 +901,7 @@ void Writer::run() {
>      createCallCtorsFunction();
>    }
>
> -  if (config->sharedMemory && !config->shared)
> +  if (!config->relocatable && config->sharedMemory && !config->shared)
>      createInitTLSFunction();
>
>    if (errorCount())
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list