Bug 16279

Summary: Need a way to create two COFF sections with the same name but different comdats
Product: binutils Reporter: Rafael Ávila de Espíndola <rafael>
Component: gasAssignee: Not yet assigned to anyone <unassigned>
Status: NEW ---    
Severity: enhancement CC: ktietz70
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description Rafael Ávila de Espíndola 2013-12-01 15:15:07 UTC
On ELF one can easily create two sections with the same name in different comdats:

---------------------------------------------
.section	foo,"axG",@progbits,f,comdat
.globl f
f:
  ret

.section	foo,"axG",@progbits,g,comdat
.globl g
g:
  ret
---------------------------------------------

on COFF that is not possible since the .section directive doesn't include the comdat information (that is part of the .linkonce directive). This means that a compiler using gas needs to produce unique names, producing more complex .obj files than the ones produced by msvc, which, for example, have all c++ inline functions in sections named .text.

The assembler included in LLVM solved this by allowing the information normally passed to .linkonce to be passed to .section itself:
http://llvm.org/docs/Extensions.html#section-directive