SPU ELF - Untitled
Description: Untitled

Next: TI COFF, Previous: PowerPC64 ELF64, Up: Machine Dependent

### 4.11 `ld` and SPU ELF Support

`--plugin`
  This option marks an executable as a PIC plugin module.

`--no-overlays`
  Normally, `ld` recognizes calls to functions within overlay regions, and redirects such calls to an overlay manager via a stub. `ld` also provides a built-in overlay manager. This option turns off all this special overlay handling.

`--emit-stub-syms`
  This option causes `ld` to label overlay stubs with a local symbol that encodes the stub type and destination.

`--extra-overlay-stubs`
  This option causes `ld` to add overlay call stubs on all function calls out of overlay regions. Normally stubs are not added on calls to non-overlay regions.

`--local-store=lo:hi`
  `ld` usually checks that a final executable for SPU fits in the address range 0 to 256k. This option may be used to change the range. Disable the check entirely with `--local-store=0:0`.

`--stack-analysis`
  SPU local store space is limited. Over-allocation of stack space unnecessarily limits space available for code and data, while under-allocation results in runtime failures. If given this option, `ld` will provide an estimate of maximum stack usage. `ld` does this by examining symbols in code sections to determine the extents of functions, and looking at function prologues for stack adjusting instructions. A call-graph is created by looking for relocations on branch instructions. The graph is then searched for the maximum stack usage path. Note that this analysis does not find calls made via function pointers, and does not handle recursion and other cycles in the call graph. Stack usage may be under-estimated if your code makes such calls. Also, stack usage for dynamic allocation, e.g. alloca, will not be detected. If a link map is requested, detailed information about each function's stack usage and calls will be given.

`--emit-stack-syms`
  This option, if given along with `--stack-analysis` will result in `ld` emitting stack sizing symbols for each function. These take the form `__stack_<function_name>` for global functions, and `__stack_<number>_<function_name>` for static functions. `<number>` is the section id in hex. The value of such symbols is the stack requirement for the corresponding function. The symbol size will be zero, type `STT_NOTYPE`, binding `STB_LOCAL`, and section `SHN_ABS`.