VirtualBox

Changeset 100253 in vbox for trunk


Ignore:
Timestamp:
Jun 23, 2023 8:45:52 AM (18 months ago)
Author:
vboxsync
Message:

bldprogs/VBoxDef2LazyLoad: Add support for building with gcc which has a slightly different assembly syntax, bug fixes for the generated code which didn't work previously, bugref:10457

Location:
trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/VBoxDef2LazyLoad.cpp

    r99552 r100253  
    7878#elif defined(RT_ARCH_ARM64)
    7979static RTLDRARCH    g_enmTarget = RTLDRARCH_ARM64;
     80#else
     81# error "Port me!"
     82#endif
     83#if      defined(RT_OS_DARWIN)
     84static RTLDRFMT     g_enmLdrFmt = RTLDRFMT_MACHO;
     85#elif    defined(RT_OS_WINDOWS)
     86static RTLDRFMT     g_enmLdrFmt = RTLDRFMT_PE;
     87#elif    defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) || defined(RT_OS_SOLARIS) \
     88      || defined(RT_OS_NETBSD) || defined(RT_OS_OPENBSD)
     89static RTLDRFMT     g_enmLdrFmt = RTLDRFMT_ELF;
    8090#else
    8191# error "Port me!"
     
    11021112static RTEXITCODE generateOutputInnerArm64(FILE *pOutput)
    11031113{
    1104 //    bool fMachO  = true;
    1105 //    bool fDarwin = true;
    1106     const char *pszNmPfx = "_";
    1107 
    1108     fprintf(pOutput, ";;\n");
     1114    const char *pszNmPfx = g_enmLdrFmt == RTLDRFMT_ELF ? "" : "_";
     1115
     1116    fprintf(pOutput, "/*\n");
    11091117    for (unsigned i = 0; i < g_cInputs; i++)
    1110         fprintf(pOutput, ";; Autogenerated from '%s'.\n", g_apszInputs[i]);
    1111 
    1112     fprintf(pOutput,
    1113             ";; DO NOT EDIT!\n"
    1114             ";;\n"
    1115             "\n"
    1116             "\n"
    1117             /*"%%include \"iprt/asmdefs.mac\"\n"*/
     1118        fprintf(pOutput, " * Autogenerated from '%s'.\n", g_apszInputs[i]);
     1119
     1120    fprintf(pOutput,
     1121            " * DO NOT EDIT!\n"
     1122            " */\n"
     1123            "\n"
     1124            "\n"
     1125            "#include \"iprt/asmdefs-arm.h\"\n"
    11181126            "\n"
    11191127            "\n");
     
    11231131     */
    11241132    fprintf(pOutput,
    1125             ";\n"
    1126             "; Thunks.\n"
    1127             ";\n"
    1128             ".section __TEXT,__text,regular,pure_instructions\n");
     1133            "/*\n"
     1134            " * Thunks.\n"
     1135            " */\n"
     1136            "BEGINCODE\n");
    11291137    for (PMYEXPORT pExp = g_pExpHead; pExp; pExp = pExp->pNext)
    11301138        if (!pExp->fData)
     
    11331141                    ".globl %s%s\n"
    11341142                    "%s%s:\n"
    1135                     "    adrp    x9, %sg_pfn%s@PAGE\n"
    1136                     "    ldr     x9, [x9, %sg_pfn%s@PAGEOFF]\n"
     1143                    "    adrp    x9, PAGE(%sg_pfn%s)\n"
     1144                    "    ldr     x9, [x9, PAGEOFF(%sg_pfn%s)]\n"
    11371145                    "    br      x9\n",
    11381146                    pszNmPfx, pExp->szName, pszNmPfx, pExp->szName, pszNmPfx, pExp->szName, pszNmPfx, pExp->szName);
     
    11421150                    ".globl %sLazyGetPtr_%s\n"
    11431151                    "%sLazyGetPtr_%s:\n"
    1144                     "    adrp    x9, %sg_LazyPtr_%s@PAGE\n"
    1145                     "    ldr     x9, [x9, %sg_LazyPtr_%s@PAGEOFF]\n"
     1152                    "    adrp    x9, PAGE(%sg_LazyPtr_%s)\n"
     1153                    "    ldr     x9, [x9, PAGEOFF(%sg_LazyPtr_%s)]\n"
    11461154                    "    cmp     x9, #0\n"
    1147                     "    b.ne    ___LazyLoad___%s\n"
     1155                    "    b.eq    ___LazyLoad___%s\n"
    11481156                    "    mov     x0, x9\n"
    11491157                    "    ret\n",
    11501158                    pszNmPfx, pExp->szName, pszNmPfx, pExp->szName, pszNmPfx, pExp->szName, pszNmPfx, pExp->szName, pExp->pszExportedNm);
    11511159    fprintf(pOutput,
     1160            "ENDCODE\n"
    11521161            "\n"
    11531162            "\n");
     
    11571166     */
    11581167    fprintf(pOutput,
    1159             ";\n"
    1160             "; Import pointers. Initialized to point to lazy loading stubs.\n"
    1161             ";\n"
    1162             ".section __DATA,__data\n"
     1168            "/*\n"
     1169            " * Import pointers. Initialized to point to lazy loading stubs.\n"
     1170            " */\n"
     1171            "BEGINDATA\n"
    11631172            ".p2align 3\n"
    11641173            "g_apfnImports:\n");
     
    11831192                    pszNmPfx, pExp->szName, pszNmPfx, pExp->szName);
    11841193    fprintf(pOutput,
    1185             "    .quad 0 ; Terminator entry for traversal.\n"
     1194            "    .quad 0 /* Terminator entry for traversal. */\n"
     1195            "ENDDATA\n"
    11861196            "\n"
    11871197            "\n");
     
    11941204     */
    11951205    fprintf(pOutput,
    1196             ";\n"
    1197             "; Imported names.\n"
    1198             ";\n"
    1199             ".section __TEXT,__cstring,cstring_literals\n"
     1206            "/*\n"
     1207            " * Imported names.\n"
     1208            " */\n"
     1209            "BEGINCONST\n"
    12001210            "g_szLibrary:\n"
    12011211            "    .asciz \"%s\"\n"
     
    12131223            "g_szFailLoadFmt:    .asciz \"Lazy loader failed to load \\\"%%s\\\": %%Rrc\\n\"\n"
    12141224            "g_szFailResolveFmt: .asciz \"Lazy loader failed to resolve symbol \\\"%%s\\\" in \\\"%%s\\\": %%Rrc\\n\"\n"
     1225            "ENDCONST\n"
    12151226            "\n"
    12161227            "\n");
     
    12201231     */
    12211232    fprintf(pOutput,
    1222             ";\n"
    1223             "; Lazy load+resolve stubs.\n"
    1224             ";\n"
    1225             ".section __TEXT,__text,regular,pure_instructions\n"
     1233            "/*\n"
     1234            " * Lazy load+resolve stubs.\n"
     1235            " */\n"
     1236            "BEGINCODE\n"
    12261237            ".p2align 3\n");
    12271238    for (PMYEXPORT pExp = g_pExpHead; pExp; pExp = pExp->pNext)
     
    12301241            fprintf(pOutput,
    12311242                    "___LazyLoad___%s:\n"
    1232                     "    adrp    x9, g_sz%s@PAGE\n"
    1233                     "    add     x9, x9, g_sz%s@PAGEOFF\n"
    1234                     "    adrp    x10, %s%s%s@PAGE\n"
    1235                     "    add     x10, x10, %s%s%s@PAGEOFF\n"
     1243                    "    adrp    x9, PAGE(g_sz%s)\n"
     1244                    "    add     x9, x9, PAGEOFF(g_sz%s)\n"
     1245                    "    adrp    x10, PAGE(%s%s%s)\n"
     1246                    "    add     x10, x10, PAGEOFF(%s%s%s)\n"
     1247                    "    mov     x16, x30\n"
    12361248                    "    bl      LazyLoadResolver\n"
     1249                    "    mov     x30, x16\n"
    12371250                    , pExp->pszExportedNm,
    12381251                    pExp->pszExportedNm, pExp->pszExportedNm,
     
    12431256                    "___LazyLoad___%s:\n"
    12441257                    "    movk    w9, #%u\n"
    1245                     "    adrp    x10, %s%s%s@PAGE\n"
    1246                     "    add     x10, x10, %s%s%s@PAGEOFF\n"
     1258                    "    adrp    x10, PAGE(%s%s%s)\n"
     1259                    "    add     x10, x10, PAGEOFF(%s%s%s)\n"
    12471260                    , pExp->pszExportedNm,
    12481261                    pExp->uOrdinal,
     
    12561269    }
    12571270    fprintf(pOutput,
     1271            "ENDCODE\n"
    12581272            "\n"
    12591273            "\n"
     
    12641278     */
    12651279    fprintf(pOutput,
    1266             ";\n"
    1267             "; The module handle.\n"
    1268             ";\n"
    1269             ".section __DATA,__data\n"
     1280            "/*\n"
     1281            " * The module handle.\n"
     1282            " */\n"
     1283            "BEGINDATA\n"
    12701284            "g_hMod:\n"
    12711285            "    .quad 0\n"
     1286            "ENDDATA\n"
    12721287            "\n"
    12731288            "\n"
     
    12781293     */
    12791294    fprintf(pOutput,
    1280             ";\n"
    1281             "; The resolver code.\n"
    1282             ";\n"
    1283             ".section __TEXT,__text,regular,pure_instructions\n"
     1295            "/*\n"
     1296            " * The resolver code.\n"
     1297            " */\n"
     1298            "BEGINCODE\n"
    12841299            ".p2align 3\n"
    12851300            "LazyLoadResolver:\n"
    12861301            "    .cfi_startproc\n"
    1287             "    ; Create frame.\n"
     1302            "    /* Create frame. */\n"
    12881303            "    sub     sp, sp, #(16 + 192)\n"
    12891304            "    stp     x29, x30, [sp, #192]\n"
     
    12921307            "    .cfi_offset x30, -8\n"
    12931308            "    .cfi_offset x29, -16\n"
    1294             "    ; Save all argument registers and a handful of preserved ones.\n"
     1309            "    /* Save all argument registers and a handful of preserved ones. */\n"
    12951310            "    stp     x0,   x1, [sp, #(192 - 16)]\n"
    12961311            "    .cfi_offset  x0, -32\n"
     
    13191334            "    str     x8,       [sp, #(192 - 144)]\n"
    13201335            "\n"
    1321             "    ; Shift the symbol name to x19 and g_pfnXXXX pointer to x20 as these are preserved registers\n"
    1322             "    ; (in case we need to call LazyLoadModule/RTLdrLoad)\n"
     1336            "    /* Shift the symbol name to x19 and g_pfnXXXX pointer to x20 as these are preserved registers\n"
     1337            "     * (in case we need to call LazyLoadModule/RTLdrLoad) */\n"
    13231338            "    mov     x19, x9\n"
    13241339            "    mov     x20, x10\n"
    13251340            "\n"
    1326             "    ; Get the module handle and call RTLdrGetSymbol(RTLDRMOD hLdrMod, const char *pszSymbol, void **ppvValue)\n"
    1327             "    adrp    x0, g_hMod@PAGE\n"
    1328             "    ldr     x0, [x0, g_hMod@PAGEOFF]\n"
     1341            "    /* Get the module handle and call RTLdrGetSymbol(RTLDRMOD hLdrMod, const char *pszSymbol, void **ppvValue) */\n"
     1342            "    adrp    x0, PAGE(g_hMod)\n"
     1343            "    ldr     x0, [x0, PAGEOFF(g_hMod)]\n"
    13291344            "    cmp     x0, #0\n"
    1330             "    b.eq    LazyLoading\n"
     1345            "    b.ne    Lloaded\n"
     1346            "    bl      LazyLoading\n"
     1347            "Lloaded:\n"
    13311348            "    mov     x1, x19\n"
    13321349            "    mov     x2, x20\n"
     
    13361353            "    b.eq    Lreturn\n"
    13371354            "\n"
    1338             "Lbadsym: ; Call sRTAssertMsg2Weak. Variadic (...) arguments are passed on the stack it seems.\n"
     1355            "Lbadsym: /* Call sRTAssertMsg2Weak. Variadic (...) arguments are passed on the stack it seems. */\n"
    13391356            "    mov     x3, x0\n"
    1340             "    adrp    x2, g_szLibrary@PAGE\n"
    1341             "    add     x2, x2, g_szLibrary@PAGEOFF\n"
     1357            "    adrp    x2, PAGE(g_szLibrary)\n"
     1358            "    add     x2, x2, PAGEOFF(g_szLibrary)\n"
    13421359            "    mov     x1, x19\n"
    1343             "    adrp    x0, g_szFailLoadFmt@PAGE\n"
    1344             "    add     x0, x0, g_szFailLoadFmt@PAGEOFF\n"
     1360            "    adrp    x0, PAGE(g_szFailLoadFmt)\n"
     1361            "    add     x0, x0, PAGEOFF(g_szFailLoadFmt)\n"
    13451362            "    stp     x1, x2, [sp]\n"
    13461363            "    str     x3,     [sp, #16]\n"
     
    13511368
    13521369            "Lreturn:\n"
    1353             "    ; Restore saved register\n"
     1370            "    /* Restore saved register */\n"
    13541371            "    ldr     x8,       [sp, #(192 - 144)]\n"
    13551372            "    .cfi_restore x8\n"
     
    13901407
    13911408    fprintf(pOutput,
    1392             ";\n"
    1393             "; Loads the module.\n"
    1394             "; ASSUMES called from LazyLoadResolver where all relevant registers are already saved.\n"
    1395             ";\n"
     1409            "/*\n"
     1410            " * Loads the module.\n"
     1411            " * ASSUMES called from LazyLoadResolver where all relevant registers are already saved.\n"
     1412            " */\n"
    13961413            "LazyLoading:\n"
    13971414            "    .cfi_startproc\n"
    1398             "    ; Create frame.\n"
     1415            "    /* Create frame. */\n"
    13991416            "    sub     sp, sp, #(16 + 48)\n"
    14001417            "    stp     x29, x30, [sp, #48]\n"
     
    14071424    if (!g_fSystemLibrary)
    14081425        fprintf(pOutput,
    1409                 "    ; Call SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod, uint32_t fFlags, PRTERRINFO pErrInfo);\n"
     1426                "    /* Call SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod, uint32_t fFlags, PRTERRINFO pErrInfo); */\n"
    14101427                "    mov     x3, #0\n"
    14111428                "    mov     x2, #0\n"
    1412                 "    adrp    x1, g_hMod@PAGE\n"
    1413                 "    add     x1, x1, g_hMod@PAGEOFF\n"
    1414                 "    adrp    x0, g_szLibrary@PAGE\n"
    1415                 "    add     x0, x0, g_szLibrary@PAGEOFF\n"
     1429                "    adrp    x1, PAGE(g_hMod)\n"
     1430                "    add     x1, x1, PAGEOFF(g_hMod)\n"
     1431                "    adrp    x0, PAGE(g_szLibrary)\n"
     1432                "    add     x0, x0, PAGEOFF(g_szLibrary)\n"
    14161433                "    bl      %sSUPR3HardenedLdrLoadAppPriv\n"
    14171434                , pszNmPfx);
    14181435    else
    14191436        fprintf(pOutput,
    1420                 "    ; Call RTLdrLoadSystem(const char *pszFilename, bool fNoUnload, PRTLDRMOD phLdrMod);\n"
    1421                 "    adrp    x2, g_hMod@PAGE\n"
    1422                 "    add     x2, x2, g_hMod@PAGEOFF\n"
     1437                "    /* Call RTLdrLoadSystem(const char *pszFilename, bool fNoUnload, PRTLDRMOD phLdrMod); */\n"
     1438                "    adrp    x2, PAGE(g_hMod)\n"
     1439                "    add     x2, x2, PAGEOFF(g_hMod)\n"
    14231440                "    mov     x1, #1\n"
    1424                 "    adrp    x0, g_szLibrary@PAGE\n"
    1425                 "    add     x0, x0, g_szLibrary@PAGEOFF\n"
     1441                "    adrp    x0, PAGE(g_szLibrary)\n"
     1442                "    add     x0, x0, PAGEOFF(g_szLibrary)\n"
    14261443                "    bl      %sRTLdrLoadSystem\n"
    14271444                , pszNmPfx);
     
    14311448            "    b.eq    Lload_return\n"
    14321449            "\n"
    1433             "Lbadload: ; Call sRTAssertMsg2Weak. Variadic (...) arguments are passed on the stack it seems.\n"
     1450            "Lbadload: /* Call sRTAssertMsg2Weak. Variadic (...) arguments are passed on the stack it seems. */\n"
    14341451            "    mov     x2, x0\n"
    1435             "    adrp    x1, g_szLibrary@PAGE\n"
    1436             "    add     x1, x1, g_szLibrary@PAGEOFF\n"
    1437             "    adrp    x0, g_szFailResolveFmt@PAGE\n"
    1438             "    add     x0, x0, g_szFailResolveFmt@PAGEOFF\n"
     1452            "    adrp    x1, PAGE(g_szLibrary)\n"
     1453            "    add     x1, x1, PAGEOFF(g_szLibrary)\n"
     1454            "    adrp    x0, PAGE(g_szFailResolveFmt)\n"
     1455            "    add     x0, x0, PAGEOFF(g_szFailResolveFmt)\n"
    14391456            "    stp     x1, x2, [sp]\n"
    14401457            "    bl      %sRTAssertMsg2Weak\n"
     
    14431460            "    b       Lbadloadloop\n"
    14441461            "Lload_return:\n"
    1445             "    adrp    x0, g_hMod@PAGE\n"
    1446             "    ldr     x0, [x0, g_hMod@PAGEOFF]\n"
     1462            "    adrp    x0, PAGE(g_hMod)\n"
     1463            "    ldr     x0, [x0, PAGEOFF(g_hMod)]\n"
    14471464            "    ldp     x29, x30, [sp, #48]\n"
    14481465            "    .cfi_restore x29\n"
     
    14511468            "    ret\n"
    14521469            "    .cfi_endproc\n"
     1470            "ENDCODE\n"
    14531471            "\n"
    14541472            "\n"
     
    14631481        int cchLibBaseName = (int)(strchr(g_pszLibrary, '.') ? strchr(g_pszLibrary, '.') - g_pszLibrary : strlen(g_pszLibrary));
    14641482        fprintf(pOutput,
    1465                 ";;\n"
    1466                 "; ExplicitlyLoad%.*s(bool fResolveAllImports, pErrInfo);\n"
    1467                 ";\n"
    1468                 ".section __TEXT,__text,regular,pure_instructions\n"
     1483                "/**\n"
     1484                " * ExplicitlyLoad%.*s(bool fResolveAllImports, pErrInfo);\n"
     1485                " */\n"
     1486                "BEGINCODE\n"
    14691487                ".p2align 3\n"
    14701488                ".globl %sExplicitlyLoad%.*s\n"
    14711489                "%sExplicitlyLoad%.*s:\n"
    14721490                "    .cfi_startproc\n"
    1473                 "    ; Create frame.\n"
     1491                "    /* Create frame. */\n"
    14741492                "    sub     sp, sp, #(16 + 96)\n"
    14751493                "    stp     x29, x30, [sp, #96]\n"
     
    14861504                "    .cfi_offset x22, -48\n"
    14871505
    1488                 "    ; Save the input parameters.\n"
     1506                "    /* Save the input parameters. */\n"
    14891507                "    mov     x20, x0\n"
    14901508                "    mov     x21, x1\n"
    14911509                "\n"
    1492                 "    ;\n"
    1493                 "    ; Is the module already loaded?\n"
    1494                 "    ;\n"
    1495                 "    adrp    x0, g_hMod@PAGE\n"
    1496                 "    ldr     x0, [x0, g_hMod@PAGEOFF]\n"
     1510                "    /*\n"
     1511                "     * Is the module already loaded?\n"
     1512                "     */\n"
     1513                "    adrp    x0, PAGE(g_hMod)\n"
     1514                "    ldr     x0, [x0, PAGEOFF(g_hMod)]\n"
    14971515                "    cmp     x0, #0\n"
    14981516                "    b.ne    Lexplicit_loaded_module\n"
     
    15061524        if (!g_fSystemLibrary)
    15071525            fprintf(pOutput,
    1508                     "    ; Call SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod, uint32_t fFlags, PRTERRINFO pErrInfo);\n"
     1526                    "    /* Call SUPR3HardenedLdrLoadAppPriv(const char *pszFilename, PRTLDRMOD phLdrMod, uint32_t fFlags, PRTERRINFO pErrInfo); */\n"
    15091527                    "    mov     x3, x21\n"
    15101528                    "    mov     x2, #0\n"
    1511                     "    adrp    x1, g_hMod@PAGE\n"
    1512                     "    add     x1, x1, g_hMod@PAGEOFF\n"
    1513                     "    adrp    x0, g_szLibrary@PAGE\n"
    1514                     "    add     x0, x0, g_szLibrary@PAGEOFF\n"
     1529                    "    adrp    x1, PAGE(g_hMod)\n"
     1530                    "    add     x1, x1, PAGEOFF(g_hMod)\n"
     1531                    "    adrp    x0, PAGE(g_szLibrary)\n"
     1532                    "    add     x0, x0, PAGEOFF(g_szLibrary)\n"
    15151533                    "    bl      %sSUPR3HardenedLdrLoadAppPriv\n"
    15161534                    , pszNmPfx);
    15171535        else
    15181536            fprintf(pOutput,
    1519                     "    ; Call RTLdrLoadSystem(const char *pszFilename, bool fNoUnload, PRTLDRMOD phLdrMod);\n"
    1520                     "    adrp    x2, g_hMod@PAGE\n"
    1521                     "    add     x2, x2, g_hMod@PAGEOFF\n"
     1537                    "    /* Call RTLdrLoadSystem(const char *pszFilename, bool fNoUnload, PRTLDRMOD phLdrMod); */\n"
     1538                    "    adrp    x2, PAGE(g_hMod)\n"
     1539                    "    add     x2, x2, PAGEOFF(g_hMod)\n"
    15221540                    "    mov     x1, #1\n"
    1523                     "    adrp    x0, g_szLibrary@PAGE\n"
    1524                     "    add     x0, x0, g_szLibrary@PAGEOFF\n"
     1541                    "    adrp    x0, PAGE(g_szLibrary)\n"
     1542                    "    add     x0, x0, PAGEOFF(g_szLibrary)\n"
    15251543                    "    bl      %sRTLdrLoadSystem\n"
    15261544                    , pszNmPfx);
     
    15311549
    15321550        fprintf(pOutput,
    1533                 "    ;\n"
    1534                 "    ; Resolve the imports too if requested to do so.\n"
    1535                 "    ;\n"
     1551                "    /*\n"
     1552                "     * Resolve the imports too if requested to do so.\n"
     1553                "     */\n"
    15361554                "Lexplicit_loaded_module:\n"
    15371555                "    cmp     w20, #0\n"
    15381556                "    b.eq    Lexplicit_load_return\n"
    15391557                "\n"
    1540                 "    adrp     x22, g_szzNames@PAGE\n"
    1541                 "    add      x22, x22, g_szzNames@PAGEOFF\n"
    1542                 "    adrp     x23, g_apfnImports@PAGE\n"
    1543                 "    add      x23, x23, g_apfnImports@PAGEOFF\n"
     1558                "    adrp     x22, PAGE(g_szzNames)\n"
     1559                "    add      x22, x22, PAGEOFF(g_szzNames)\n"
     1560                "    adrp     x23, PAGE(g_apfnImports)\n"
     1561                "    add      x23, x23, PAGEOFF(g_apfnImports)\n"
    15441562                "Lexplicit_load_next_import:\n"
    15451563                "    ldr     x0, [x23]\n"
     
    15471565                "    b.eq    Lexplicit_load_return\n"
    15481566                "\n"
    1549                 "    ; Get the module handle and call RTLdrGetSymbol(RTLDRMOD hLdrMod, const char *pszSymbol, void **ppvValue)\n"
    1550                 "    adrp    x0, g_hMod@PAGE\n"
    1551                 "    ldr     x0, [x0, g_hMod@PAGEOFF]\n"
     1567                "    /* Get the module handle and call RTLdrGetSymbol(RTLDRMOD hLdrMod, const char *pszSymbol, void **ppvValue) */\n"
     1568                "    adrp    x0, PAGE(g_hMod)\n"
     1569                "    ldr     x0, [x0, PAGEOFF(g_hMod)]\n"
    15521570                "    mov     x1, x22\n"
    15531571                "    mov     x2, x23\n"
     
    15561574                "    b.ne    Lexplicit_load_symbol_error\n"
    15571575                "\n"
    1558                 "    ; Advance.\n"
     1576                "    /* Advance. */\n"
    15591577                "    add     x23, x23, #8\n"
    15601578                "Lexplict_load_advance_string:\n"
     
    15651583                "    b       Lexplicit_load_next_import\n"
    15661584                "\n"
    1567                 "    ;\n"
    1568                 "    ; Error loading a symbol. Call RTErrInfoSet(PRTERRINFO pErrInfo, int rc, const char *pszMsg) on pErrInfo (preserves x0).\n"
    1569                 "    ;\n"
     1585                "    /*\n"
     1586                "     * Error loading a symbol. Call RTErrInfoSet(PRTERRINFO pErrInfo, int rc, const char *pszMsg) on pErrInfo (preserves x0).\n"
     1587                "     */\n"
    15701588                "Lexplicit_load_symbol_error:\n"
    15711589                "    mov     x2, x22\n"
     
    15901608                "    ret\n"
    15911609                "    .cfi_endproc\n"
     1610                "ENDCODE\n"
    15921611                "\n"
    15931612                "\n"
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette