[RTEMS Project] #3687: Add architecture section support to libdl and support PowerPC's small data.

RTEMS trac trac at rtems.org
Sat Feb 2 05:18:03 UTC 2019

#3687: Add architecture section support to libdl and support PowerPC's small data.
  Reporter:  Chris Johns  |      Owner:  Chris Johns
      Type:  defect       |     Status:  assigned
  Priority:  normal       |  Milestone:  5.1
 Component:  lib/dl       |    Version:  5
  Severity:  normal       |   Keywords:
Blocked By:               |   Blocking:
 Add support for architecture specific sections. Allow architecture back
 end support to handle sections that are specific to an architecture.

 Add PowerPC `sdata` and `sbss` support. The PowerPC can support a '''small
 data''' 64K continuous system wide region of memory. Small data accesses
 are faster as the instruction is smaller however the variable is
 referenced as a signed 16bit offset from the register `r13`. This register
 is offset from the region's base address by 32K. The linker creates the
 `.sdata` and `.sbss` regions and sets the `_SDA_BASE_` symbol which is
 loaded into `r13`. Any run-time loaded code with small data support needs
 space in the small data region therefore a BSP needs a way to define the
 space and the linker needs to allocate it. Provide a way for PowerPC BSPs
 to add extra memory to the small data region.

 RTEMS supports the PowerPC EABI and uses `sysv` small data allocations.
 RTEMS uses the default variable size of `8` as the selector for a variable
 to be allocated in the small data region. The GCC user manual recommends
 all code is built with the same settings. Dynamically loaded code could be
 built with small data disabled and if enabled the default size is

 Note, small data is system wide which means a default size of `8` allows
 only 8192 8 byte variables.

 Provide an allocator to manage the available small data memory.

Ticket URL: <http://devel.rtems.org/ticket/3687>
RTEMS Project <http://www.rtems.org/>
RTEMS Project

More information about the bugs mailing list