[lld] r187645 - [PECOFF] A symbol with symbol with section number 0 and non-zero value represents a BSS atom.

Rui Ueyama ruiu at google.com
Mon Aug 5 21:06:40 PDT 2013


On Mon, Aug 5, 2013 at 8:58 PM, Shankar Easwaran <shankare at codeaurora.org>wrote:

> Isnt this supposed to be meant for common symbols ?


I guess it's the correct terminology, but I don't know much about it. Is
this different from atoms for BSS?


>
> On 8/2/2013 12:25 AM, Rui Ueyama wrote:
>
>> Author: ruiu
>> Date: Fri Aug  2 00:25:31 2013
>> New Revision: 187645
>>
>> URL: http://llvm.org/viewvc/llvm-**project?rev=187645&view=rev<http://llvm.org/viewvc/llvm-project?rev=187645&view=rev>
>> Log:
>> [PECOFF] A symbol with symbol with section number 0 and non-zero value
>> represents a BSS atom.
>>
>> Added:
>>      lld/trunk/test/pecoff/Inputs/**bss-undef.obj.yaml
>>      lld/trunk/test/pecoff/bss-**undef.test
>> Modified:
>>      lld/trunk/lib/ReaderWriter/**PECOFF/ReaderCOFF.cpp
>>
>> Modified: lld/trunk/lib/ReaderWriter/**PECOFF/ReaderCOFF.cpp
>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/lib/**
>> ReaderWriter/PECOFF/**ReaderCOFF.cpp?rev=187645&r1=**
>> 187644&r2=187645&view=diff<http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp?rev=187645&r1=187644&r2=187645&view=diff>
>> ==============================**==============================**
>> ==================
>> --- lld/trunk/lib/ReaderWriter/**PECOFF/ReaderCOFF.cpp (original)
>> +++ lld/trunk/lib/ReaderWriter/**PECOFF/ReaderCOFF.cpp Fri Aug  2
>> 00:25:31 2013
>> @@ -161,6 +161,20 @@ private:
>>       // Filter non-defined atoms, and group defined atoms by its section.
>>       SectionToSymbolsT definedSymbols;
>>       for (const coff_symbol *sym : symbols) {
>> +      // A symbol with section number 0 and non-zero value represents an
>> +      // uninitialized data. I don't understand why there are two ways
>> to define
>> +      // an uninitialized data symbol (.bss and this way), but that's
>> how COFF
>> +      // works.
>> +      if (sym->SectionNumber == llvm::COFF::IMAGE_SYM_**UNDEFINED &&
>> +          sym->Value > 0) {
>> +        StringRef name = _symbolName[sym];
>> +        uint32_t size = sym->Value;
>> +        auto *atom = new (_alloc) COFFBSSAtom(*this, name, sym, size, 0);
>> +        result.push_back(atom);
>> +        continue;
>> +      }
>> +
>> +      // Skip if it's not for defined atom.
>>         if (sym->SectionNumber == llvm::COFF::IMAGE_SYM_ABSOLUTE ||
>>             sym->SectionNumber == llvm::COFF::IMAGE_SYM_**UNDEFINED)
>>           continue;
>>
>> Added: lld/trunk/test/pecoff/Inputs/**bss-undef.obj.yaml
>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/test/pecoff/**
>> Inputs/bss-undef.obj.yaml?rev=**187645&view=auto<http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/Inputs/bss-undef.obj.yaml?rev=187645&view=auto>
>> ==============================**==============================**
>> ==================
>> --- lld/trunk/test/pecoff/Inputs/**bss-undef.obj.yaml (added)
>> +++ lld/trunk/test/pecoff/Inputs/**bss-undef.obj.yaml Fri Aug  2
>> 00:25:31 2013
>> @@ -0,0 +1,43 @@
>> +---
>> +header:
>> +  Machine:         IMAGE_FILE_MACHINE_I386
>> +  Characteristics: [  ]
>> +sections:
>> +  - Name:            .text
>> +    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
>> IMAGE_SCN_MEM_READ ]
>> +    Alignment:       4
>> +    SectionData:     ""
>> +  - Name:            .data
>> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_**DATA,
>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>> +    Alignment:       4
>> +    SectionData:     03000000
>> +symbols:
>> +  - Name:            .text
>> +    Value:           0
>> +    SectionNumber:   1
>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
>> +    NumberOfAuxSymbols: 1
>> +    AuxiliaryData:   000000000000000000000000000000**000000
>> +  - Name:            .data
>> +    Value:           0
>> +    SectionNumber:   2
>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>> +    StorageClass:    IMAGE_SYM_CLASS_STATIC
>> +    NumberOfAuxSymbols: 1
>> +    AuxiliaryData:   040000000000000000000000000000**000000
>> +  - Name:            _bssdata1
>> +    Value:           4
>> +    SectionNumber:   0
>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>> +  - Name:            _bssdata2
>> +    Value:           4
>> +    SectionNumber:   0
>> +    SimpleType:      IMAGE_SYM_TYPE_NULL
>> +    ComplexType:     IMAGE_SYM_DTYPE_NULL
>> +    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>> +...
>>
>> Added: lld/trunk/test/pecoff/bss-**undef.test
>> URL: http://llvm.org/viewvc/llvm-**project/lld/trunk/test/pecoff/**
>> bss-undef.test?rev=187645&**view=auto<http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/bss-undef.test?rev=187645&view=auto>
>> ==============================**==============================**
>> ==================
>> --- lld/trunk/test/pecoff/bss-**undef.test (added)
>> +++ lld/trunk/test/pecoff/bss-**undef.test Fri Aug  2 00:25:31 2013
>> @@ -0,0 +1,22 @@
>> +# RUN: yaml2obj %p/Inputs/bss-undef.obj.yaml > %t.obj
>> +#
>> +# RUN: lld -flavor link /out:%t /subsystem:console /force -- %t.obj \
>> +# RUN:    && llvm-readobj -sections %t | FileCheck %s
>> +
>> +CHECK:       Section {
>> +CHECK:         Number: 2
>> +CHECK-NEXT:    Name: .bss
>> +CHECK-NEXT:    VirtualSize: 0x0
>> +CHECK-NEXT:    VirtualAddress: 0x2000
>> +CHECK-NEXT:    RawDataSize: 512
>> +CHECK-NEXT:    PointerToRawData: 0x0
>> +CHECK-NEXT:    PointerToRelocations: 0x0
>> +CHECK-NEXT:    PointerToLineNumbers: 0x0
>> +CHECK-NEXT:    RelocationCount: 0
>> +CHECK-NEXT:    LineNumberCount: 0
>> +CHECK-NEXT:    Characteristics [
>> +CHECK-NEXT:      IMAGE_SCN_CNT_UNINITIALIZED_**DATA
>> +CHECK-NEXT:      IMAGE_SCN_MEM_READ
>> +CHECK-NEXT:      IMAGE_SCN_MEM_WRITE
>> +CHECK-NEXT:    ]
>> +CHECK-NEXT:  }
>>
>>
>> ______________________________**_________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/**mailman/listinfo/llvm-commits<http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>>
>>
>>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by the Linux Foundation
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130805/0f8e6dd4/attachment.html>


More information about the llvm-commits mailing list