#!/bin/bash
#
# Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
#
# SPDX-License-Identifier: BSD-2-Clause
#

# Auto-generates the kernel_symbols table for accessing kernel symbols.

if [ $# -ne 2 ]; then
    echo "Usage: $0 objdump-command kernel.elf" 1>&2
    exit 1
fi

cat - <<EOT
/* Auto-generated by $0. Do not edit manually. */

/* Include Kconfig variables. */
#include <autoconf.h>
#include <sel4test/gen_config.h>

#include <string.h>

static struct kernel_symbol {
    char *symbol;
    void *addr;
} kernel_symbols[] = {
EOT

# Objdump the symbol table and format it nicely for C.
"$1" --syms "$2" \
    | grep --color=none "^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f] " \
    | sed 's/\([0-9a-f]*\) .* \(.*\)/    { .symbol = "\2", .addr = (void*)0xf\1 },/g'

cat - <<EOT
    { .symbol = NULL, .addr = (void*)NULL }, /* Terminate array. */
};

void * resolve_kernel_symbol(char *symbol) {
    for (int i = 0; kernel_symbols[i].symbol != NULL ; ++i) {
        if (!strcmp(kernel_symbols[i].symbol, symbol)) {
            return kernel_symbols[i].addr;
        }
    }
    return NULL;
}
EOT
