source: rtems/testsuites/libtests/dl07/dl-o1.c @ 6c9f017

5
Last change on this file since 6c9f017 was 6c9f017, checked in by Chris Johns <chrisj@…>, on 02/02/19 at 04:09:53

libdl: Add powerpc large memory and small data support.

  • Add support for architecure sections that can be handled by the architecture back end.
  • Add trampoline/fixup support for PowerPC. This means the PowerPC now supports large memory loading of applications.
  • Add a bit allocator to manage small block based regions of memory.
  • Add small data (sdata/sbss) support for the PowerPC. The support makes the linker allocated small data region of memory a global resource available to libdl loaded object files.

Updates #3687
Updates #3685

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2 * Copyright (c) 2018 Chris Johns <chrisj@rtems.org>.
3 * All rights reserved.
4 *
5 * The license and distribution terms for this file may be
6 * found in the file LICENSE in this distribution or at
7 * http://www.rtems.org/license/LICENSE.
8 */
9
10#include "dl-o1.h"
11
12#include <rtems/test.h>
13#include "dl-load.h"
14
15#define printf(...) rtems_printf(&rtems_test_printer, __VA_ARGS__);
16
17/*
18 * Create some symbols. The uninitialised will be in the common section with
19 * separated text and data and this means there is no actual section in the ELF
20 * file, the details for this are in the symbols.
21 */
22int         dl01_bss1;            /* unitialised, .bss */
23float       dl01_bss2[30];        /* unitialised, .bss */
24char        dl01_bss3[10];        /* unitialised, .bss */
25int         dl01_data1 = 1;       /* initialised, .data */
26float       dl01_data2 = 0.3333;  /* initialised, .data */
27const int   dl01_const1 = 3;      /* read-only, .const */
28const float dl01_const2 = 0.666;  /* read-only, .const */
29int dl01_func1(void)              /* code, .text */
30{
31  return 4;
32}
33
34/*
35 * Yes a decl in the source. This is a modules main and I could not find which
36 * header main is defined in.
37 */
38int rtems_main_o1 (void);
39
40#define DL_NAME       "dlo1"
41#define PAINT_VAR(_v) sizeof(_v), &_v, _v
42
43int rtems_main_o1 (void)
44{
45  printf (DL_NAME ": module: %s\n", dl_localise_file (__FILE__));
46  printf (DL_NAME ":         dl01_bss1: %4zu: %p: %d\n",   PAINT_VAR (dl01_bss1));
47  printf (DL_NAME ":         dl01_bss2: %4zu: %p: %f\n",   PAINT_VAR (dl01_bss2[0]));
48  printf (DL_NAME ":         dl01_bss3: %4zu: %p: %02x\n", PAINT_VAR (dl01_bss3[0]));
49  printf (DL_NAME ":        dl01_data1: %4zu: %p: %d\n",   PAINT_VAR (dl01_data1));
50  /* no  %f in the rtems test printer */
51  printf (DL_NAME ":        dl01_data2: %4zu: %p: %f\n",   PAINT_VAR (dl01_data2));
52  printf (DL_NAME ":       dl01_const1: %4zu: %p: %d\n",   PAINT_VAR (dl01_const1));
53  printf (DL_NAME ":       dl01_const2: %4zu: %p: %f\n",   PAINT_VAR (dl01_const2));
54  printf (DL_NAME ":        dl01_func1: %4zu: %p\n",       sizeof(dl01_func1), &dl01_func1);
55  return 0;
56}
Note: See TracBrowser for help on using the repository browser.