aboutsummaryrefslogtreecommitdiff
path: root/04_dynld_nostd/main.c
blob: 709fad0ebd24f669d7772c5730a304a4db735acf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Copyright (c) 2020 Johannes Stoelp

#include <io.h>
#include <syscalls.h>

// API of `libgreet.so`.
extern const char* get_greet();
extern const char* get_greet2();
extern int gCalled;

void _start() {
    pfmt("Running _start() @ %s\n", __FILE__);

    // Call function from libgreet.so -> generates PLT relocations.
    pfmt("get_greet()  -> %s\n", get_greet());
    pfmt("get_greet2() -> %s\n", get_greet2());

    // Reference global variable from libgreet.so -> generates RELA relocation.
    pfmt("libgreet.so called %d times\n", gCalled);
}