[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