Ignore:
Timestamp:
Nov 12, 2006, 7:16:41 AM (19 years ago)
Author:
bird
Message:

More testing and another bug fixed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/testcase/tst-0-driver.c

    r2870 r2871  
    397397
    398398    /*
    399      * Now do what tst-0 would do.
     399     * Now do what tst-0 would do; load the three dlls, resolve and call their functions.
    400400     */
    401401    if (!g_cErrors)
    402402    {
    403 
     403        HKLDRMOD hModA;
     404        int (*pfnFuncA)(void);
     405        HKLDRMOD hModB;
     406        int (*pfnFuncB)(void);
     407        HKLDRMOD hModC;
     408        int (*pfnFuncC)(void);
     409        uintptr_t uValue;
     410
     411        rc = kLdrDyldLoad("tst-0-a", NULL, NULL, KLDRDYLD_SEARCH_HOST, 0, &hModA, NULL, 0);
     412        if (rc)
     413            Failure("kLdrDyldLoad(\"tst-0-a\",,,,) -> %d (%#x)\n", rc, rc);
     414        if (!rc)
     415        {
     416            rc = kLdrDyldLoad("tst-0-b", NULL, NULL, KLDRDYLD_SEARCH_HOST, 0, &hModB, szErr, sizeof(szErr));
     417            if (rc)
     418                Failure("kLdrDyldLoad(\"tst-0-b\",,,,) -> %d (%#x) szErr='%s'\n", rc, rc, szErr);
     419        }
     420        if (!rc)
     421        {
     422            rc = kLdrDyldLoad("tst-0-c", NULL, NULL, KLDRDYLD_SEARCH_HOST, 0, &hModC, szErr, sizeof(szErr));
     423            if (rc)
     424                Failure("kLdrDyldLoad(\"tst-0-c\",,,,) -> %d (%#x) szErr='%s'\n", rc, rc, szErr);
     425        }
     426        if (!rc)
     427        {
     428            rc = kLdrDyldQuerySymbol(hModA, NIL_KLDRMOD_SYM_ORDINAL, MY_NAME("FuncA"), &uValue, NULL);
     429            if (!rc)
     430                pfnFuncA = (int (*)(void))uValue;
     431            else
     432                Failure("kLdrDyldQuerySymbol(,,\"FuncA\",,) -> %d (%#x)\n", rc, rc);
     433        }
     434        if (!rc)
     435        {
     436            rc = kLdrDyldQuerySymbol(hModB, NIL_KLDRMOD_SYM_ORDINAL, MY_NAME("FuncB"), &uValue, NULL);
     437            if (!rc)
     438                pfnFuncB = (int (*)(void))uValue;
     439            else
     440                Failure("kLdrDyldQuerySymbol(,,\"FuncB\",,) -> %d (%#x)\n", rc, rc);
     441        }
     442        if (!rc)
     443        {
     444            rc = kLdrDyldQuerySymbol(hModC, NIL_KLDRMOD_SYM_ORDINAL, MY_NAME("FuncC"), &uValue, NULL);
     445            if (!rc)
     446                pfnFuncC = (int (*)(void))uValue;
     447            else
     448                Failure("kLdrDyldQuerySymbol(,,\"FuncA\",,) -> %d (%#x)\n", rc, rc);
     449        }
     450        if (!rc)
     451        {
     452            rc = pfnFuncA() | pfnFuncB() | pfnFuncC();
     453            if (rc == 0x42424242)
     454                printf("tst-0-driver: FuncA/B/C => %#x (correct)\n", rc);
     455            else
     456                Failure("FuncA/B/C => %#x\n", rc);
     457        }
    404458    }
    405459
     
    408462     */
    409463    if (!g_cErrors)
    410         printf("tst-0: SUCCESS\n");
     464        printf("tst-0-driver: SUCCESS\n");
    411465    else
    412         printf("tst-0: FAILURE - %d errors\n", g_cErrors);
     466        printf("tst-0-driver: FAILURE - %d errors\n", g_cErrors);
    413467    return !!g_cErrors;
    414468}
Note: See TracChangeset for help on using the changeset viewer.