Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

#3687 closed defect (fixed)

Add architecture section support to libdl and support PowerPC's small data.

Reported by: Chris Johns Owned by: Chris Johns
Priority: normal Milestone: 5.1
Component: lib/dl Version: 5
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

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 recommended.

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.

Change History (5)

comment:1 Changed on 02/08/19 at 23:08:42 by Chris Johns <chrisj@…>

In [changeset:"6c9f0176a916cdbe88e04417e7aa1405d80c500f/rtems" 6c9f017/rtems]:

Error: Processor CommitTicketReference failed
/data/trac/repo/rtems.git does not appear to be a Git repository.

comment:2 Changed on 02/11/19 at 10:43:14 by Sebastian Huber <sebastian.huber@…>

In [changeset:"eec706e2bf41a9a166aa5e744d041171015214ea/rtems" eec706e2/rtems]:

Error: Processor CommitTicketReference failed
/data/trac/repo/rtems.git does not appear to be a Git repository.

comment:3 Changed on 02/18/19 at 00:28:02 by Chris Johns <chrisj@…>

In [changeset:"3ecb207d05a585b34e88ac649be0e4f503fdb290/rtems" 3ecb207/rtems]:

Error: Processor CommitTicketReference failed
/data/trac/repo/rtems.git does not appear to be a Git repository.

comment:4 Changed on 03/06/19 at 19:34:29 by Chris Johns <chrisj@…>

In [changeset:"ec1dd51aae0cbce0560b3d72a6f86c938340f2fc/rtems" ec1dd51a/rtems]:

Error: Processor CommitTicketReference failed
/data/trac/repo/rtems.git does not appear to be a Git repository.

comment:5 Changed on 02/26/20 at 03:52:04 by Chris Johns

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.