source: rtems/testsuites/libtests/dl07/dl-o1.c @ 03139d5b

5
Last change on this file since 03139d5b was 03139d5b, checked in by Chris Johns <chrisj@…>, on 11/20/18 at 03:56:11

libdl: Add object file dependencies to track references

Tracking references lets us manage when an object file can be
unloaded. If an object file has references to it, it cannot be
unloaded.

Modules that depend on each other cannot be unloaded.

Updates #3605

  • 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: %4u: %p: %d\n",   PAINT_VAR (dl01_bss1));
47  printf (DL_NAME ":         dl01_bss2: %4u: %p: %f\n",   PAINT_VAR (dl01_bss2[0]));
48  printf (DL_NAME ":         dl01_bss3: %4u: %p: %02x\n", PAINT_VAR (dl01_bss3[0]));
49  printf (DL_NAME ":        dl01_data1: %4u: %p: %d\n",   PAINT_VAR (dl01_data1));
50  /* no  %f in the rtems test printer */
51  printf (DL_NAME ":        dl01_data2: %4u: %p: %f\n",   PAINT_VAR (dl01_data2));
52  printf (DL_NAME ":       dl01_const1: %4u: %p: %d\n",   PAINT_VAR (dl01_const1));
53  printf (DL_NAME ":       dl01_const2: %4u: %p: %f\n",   PAINT_VAR (dl01_const2));
54  printf (DL_NAME ":        dl01_func1: %4u: %p\n",       sizeof(dl01_func1), &dl01_func1);
55  return 0;
56}
Note: See TracBrowser for help on using the repository browser.