[PATCH] D51027: [LLD][ELD] - Do not reject INFO output section type when used with a start address.
    Peter Smith via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Aug 21 07:56:46 PDT 2018
    
    
  
peter.smith added a comment.
I'm not sure it is possible to do exactly what the author is doing with https://bugs.llvm.org/show_bug.cgi?id=38625 with a section without SHF_ALLOC. The entire contents of the output section are defined by .= stack_start. As stack_start is calculated by the linker I don't think it would have been possible to do this with a section.
My preference would be to support the INFO, COPY, OVERLAY with an address for embedded users. Many people start by porting examples from GNU ld and aren't experts in linker scripts or startup code. I think it would be useful to be as compatible as possible. I also think we can't imply deprecation from "supported for backwards compatibility" as deprecation often implies removal at a future point.
  PROVIDE(_stack_start = ORIGIN(RAM) + LENGTH(RAM));
  .stack _edata (INFO) :
  {
    _estack = .;
    . = _stack_start;
    _sstack = .;
  } > RAM
In the arm-none-eabi gcc toolchain the sample linker scripts using COPY have a .heap and .stack section to provide the size that are already not SHF_ALLOC (so the COPY isn't strictly necessary):
  	.heap (COPY):
  	{
  		__end__ = .;
  		PROVIDE(end = .);
  		*(.heap*)
  		__HeapLimit = .;
  	} > RAM
  
  	/* .stack_dummy section doesn't contains any symbols. It is only
  	 * used for linker to calculate size of stack sections, and assign
  	 * values to stack symbols later */
  	.stack_dummy (COPY):
  	{
  		*(.stack*)
  	} > RAM
With the .heap and .stack sections being defined in the startup code for a particular device with something like:
  	.section .stack
  	.align	3
  #ifdef __STACK_SIZE
  	.equ	Stack_Size, __STACK_SIZE
  #else
  	.equ	Stack_Size, 0xc00
  #endif
  	.globl	__StackTop
  	.globl	__StackLimit
  __StackLimit:
  	.space	Stack_Size
  	.size	__StackLimit, . - __StackLimit
  __StackTop:
  	.size	__StackTop, . - __StackTop
https://reviews.llvm.org/D51027
    
    
More information about the llvm-commits
mailing list