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

Last change on this file since 6c9f017 was 6c9f017, checked in by Chris Johns <chrisj@…>, on Feb 2, 2019 at 4:09:53 AM

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.2 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#include "dl-o1.h"
15#include "dl-o2.h"
16
17#define printf(...) rtems_printf(&rtems_test_printer, __VA_ARGS__);
18
19/*
20 * Create some symbols. The uninitialised will be in the common section with
21 * separated text and data and this means there is no actual section in the ELF
22 * file, the details for this are in the symbols.
23 */
24int         dl01_bss1;            /* unitialised, .bss */
25float       dl01_bss2[30];        /* unitialised, .bss */
26char        dl01_bss3[10];        /* unitialised, .bss */
27int         dl01_data1 = 1;       /* initialised, .data */
28float       dl01_data2 = 0.3333;  /* initialised, .data */
29const int   dl01_const1 = 3;      /* read-only, .const */
30const float dl01_const2 = 0.666;  /* read-only, .const */
31int dl01_func1(void)              /* code, .text */
32{
33  return 4;
34}
35
36/*
37 * Yes a decl in the source. This is a modules main and I could not find which
38 * header main is defined in.
39 */
40int rtems_main_o1 (void);
41
42#define DL_NAME       "dlo1"
43#define PAINT_VAR(_v) sizeof(_v), &_v, _v
44
45int rtems_main_o1 (void)
46{
47  printf (DL_NAME ": module: %s @ %p\n",
48          dl_localise_file (__FILE__), rtems_main_o1);
49  printf (DL_NAME ":         dl01_bss1: %4zu: %p: %d\n",   PAINT_VAR (dl01_bss1));
50  printf (DL_NAME ":         dl01_bss2: %4zu: %p: %f\n",   PAINT_VAR (dl01_bss2[0]));
51  printf (DL_NAME ":         dl01_bss3: %4zu: %p: %02x\n", PAINT_VAR (dl01_bss3[0]));
52  printf (DL_NAME ":        dl01_data1: %4zu: %p: %d\n",   PAINT_VAR (dl01_data1));
53  /* no  %f in the rtems test printer */
54  printf (DL_NAME ":        dl01_data2: %4zu: %p: %f\n",   PAINT_VAR (dl01_data2));
55  printf (DL_NAME ":       dl01_const1: %4zu: %p: %d\n",   PAINT_VAR (dl01_const1));
56  printf (DL_NAME ":       dl01_const2: %4zu: %p: %f\n",   PAINT_VAR (dl01_const2));
57  printf (DL_NAME ":        dl01_func1: %4zu: %p\n",       sizeof(dl01_func1), &dl01_func1);
58
59  rtems_main_o2 ();
60
61  return 0;
62}
Note: See TracBrowser for help on using the repository browser.