Annotation of hatari/tests/debugger/test-symbols.c, revision 1.1.1.3

1.1       root        1: /* 
                      2:  * Code to test Hatari symbol/address (re-)loading in src/debug/symbols.c
                      3:  */
                      4: #include <stdio.h>
                      5: #include <SDL_types.h>
                      6: #include <stdbool.h>
                      7: #include "debug_priv.h"
                      8: #include "symbols.h"
                      9: #include "main.h"
                     10: #include "log.h"
                     11: 
                     12: int main(int argc, const char *argv[])
                     13: {
                     14:        /* expected to fail */
                     15:        const char *fail_name[] = {
                     16:                "afoo",
                     17:                "zbar",
                     18:        };
                     19:        Uint32 fail_addr[] = {
                     20:                0x10,
                     21:                0x30,
                     22:        };
                     23:        /* expected to succeed */
                     24:        const char *success_name[] = {
                     25:                "os_magic",
                     26:                "p_root"
                     27:        };
                     28:        Uint32 success_addr[] = {
                     29:                0x14,
                     30:                0x28,
                     31:        };
                     32: 
1.1.1.2   root       33: #define DO_CMD(cmd) Symbols_Command(ARRAY_SIZE(cmd), cmd)
1.1       root       34:        char symbols[] = "symbols";
                     35:        char fname[] = "data/os-header.sym";
                     36:        char sname[] = "name";
1.1.1.3 ! root       37:        char scode[] = "code";
        !            38:        char sdata[] = "data";
1.1       root       39:        char sfree[] = "free";
                     40:        char *cmd_load[] = { symbols, fname };
                     41:        char *cmd_free[] = { symbols, sfree };
                     42:        char *cmd_show_byname[] = { symbols, sname };
1.1.1.3 ! root       43:        char *cmd_show_bycode[] = { symbols, scode };
        !            44:        char *cmd_show_bydata[] = { symbols, sdata };
1.1       root       45: 
                     46:        int i, tests = 0, errors = 0;
                     47:        const char *name;
                     48:        Uint32 addr;
                     49: 
                     50:        DO_CMD(cmd_load);
1.1.1.3 ! root       51:        DO_CMD(cmd_show_bycode);
        !            52:        DO_CMD(cmd_show_bydata);
1.1       root       53:        DO_CMD(cmd_show_byname);
                     54:        DO_CMD(cmd_load);       /* free + reload */
                     55: 
                     56:        fprintf(stderr, "\nStuff that should FAIL:\n");
1.1.1.2   root       57:        for (i = 0; i < ARRAY_SIZE(fail_name); i++) {
1.1       root       58:                name = fail_name[i];
                     59:                if (Symbols_GetCpuAddress(SYMTYPE_ALL, name, &addr)) {
                     60:                        fprintf(stderr, "*** Unexpected SUCCESS from '%s' (0x%08x) ***\n", name, addr);
                     61:                        errors++;
                     62:                } else {
                     63:                        fprintf(stderr, "- '%s'\n", name);
                     64:                }
                     65:        }
                     66:        tests += i;
1.1.1.2   root       67:        for (i = 0; i < ARRAY_SIZE(fail_addr); i++) {
1.1       root       68:                addr = fail_addr[i];
1.1.1.3 ! root       69:                name = Symbols_GetByCpuAddress(addr, SYMTYPE_ALL);
1.1       root       70:                if (name) {
                     71:                        fprintf(stderr, "*** Unexpected SUCCESS from 0x%08x (%s) ***\n", addr, name);
                     72:                        errors++;
                     73:                } else {
                     74:                        fprintf(stderr, "- 0x%08x\n", addr);
                     75:                }
                     76:        }
                     77:        tests += i;
                     78: 
                     79:        fprintf(stderr, "\nStuff that should SUCCEED:\n");
1.1.1.2   root       80:        for (i = 0; i < ARRAY_SIZE(success_name); i++) {
1.1       root       81:                name = success_name[i];
                     82:                if (Symbols_GetCpuAddress(SYMTYPE_ALL, name, &addr)) {
                     83:                        fprintf(stderr, "- '%s'\n", name);
                     84:                } else {
                     85:                        fprintf(stderr, "*** Unexpected FAIL from '%s' ***\n", name);
                     86:                        errors++;
                     87:                }
                     88:        }
                     89:        tests += i;
1.1.1.2   root       90:        for (i = 0; i < ARRAY_SIZE(success_addr); i++) {
1.1       root       91:                addr = success_addr[i];
1.1.1.3 ! root       92:                name = Symbols_GetByCpuAddress(addr, SYMTYPE_ALL);
1.1       root       93:                if (name) {
                     94:                        fprintf(stderr, "- 0x%08x: %s\n", addr, name);
                     95:                } else {
                     96:                        fprintf(stderr, "*** Unexpected FAIL from 0x%08x ***\n", addr);
                     97:                        errors++;
                     98:                }
                     99:        }
                    100:        tests += i;
                    101: 
                    102:        DO_CMD(cmd_free);
                    103:        if (errors) {
                    104:                fprintf(stderr, "\n***Detected %d ERRORs in %d automated tests!***\n\n",
                    105:                        errors, tests);
                    106:        } else {
                    107:                fprintf(stderr, "\nFinished without any errors!\n\n");
                    108:        }
                    109:        return errors;
                    110: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.