亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? loadsomcofflib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
     * SPR #21836: loadSegmentsAllocate() allocate memory aligned on      * the max value of sections alignement saved in seg.flagsText,     * seg.flagsData, seg.flagsBss.     */    if (loadSegmentsAllocate (&seg) != OK)        {        printErr ("Could not allocate segments\n");        goto error;        }    /*     * make sure all allocated segments are aligned OK.     * This will always be true if the memory is malloc'ed,     * since SEG_ALIGN, and _MEM_ALIGN, and the maximum     * possible subspace alignment are all "8"     */    pText = (char *) ROUND_UP (seg.addrText, SEG_ALIGN);    pData = (char *) ROUND_UP (seg.addrData, SEG_ALIGN);    pBss  = (char *) ROUND_UP (seg.addrBss, SEG_ALIGN);    pComm = (char *) ((int)pBss + seg.sizeBss                      - ROUND_UP(commSize, SEG_ALIGN));    if ( (pText != seg.addrText) ||         (pData != seg.addrData) ||         (pBss  != seg.addrBss) )        {        printErr ("loadModuleAtSym: segment alignment error\n");        goto error;        }    DBG_PUT ("pText = 0x%x, pData = 0x%x, pBss = 0x%x pComm = 0x%x\n",             (int)pText, (int)pData, (int)pBss, (int)pComm);    DBG_PUT ("sizeText = 0x%x, sizeData = 0x%x, sizeBss = 0x%x\n",             seg.sizeText, seg.sizeData, seg.sizeBss);    /* load all subspaces into memory */    if (loadSubspaces (fd, &somHdr, pSubInfo, pSubspace, pText, pData, pBss)                      != OK)        {        errno = S_loadSomCoffLib_LOAD_SPACE;        goto error;        }    /* add segment names to symbol table before other symbols */    if (!(symFlag & LOAD_NO_SYMBOLS))        addSegNames (fd, pText, pData, pBss, symTbl, group);    /* process symbol table */    status = rdSymtab (pSymBuf, somHdr.symbol_total, pSubspace,                       pSubInfo, symFlag, symTbl, &pGlobal, pComm, group);    /* Perform linker fixup requests on the subspaces */    if (somHdr.version_id == NEW_VERSION_ID)        {        if (somHdr.fixup_request_total != 0)            (void) linkSubspaces ((UCHAR *) pReloc, pSubspace,                                    somHdr.subspace_total, pSubInfo, pSymBuf,                                    somHdr.symbol_total,                                   symTbl, pGlobal, moduleId);        }    else        {        errno = S_loadSomCoffLib_RELOC_VERSION;        goto error;        }    /* return load addresses, where called for */    if (ppText != NULL)        *ppText = pText;    if (ppData != NULL)        *ppData = pData;    if (ppBss != NULL)        *ppBss = pBss;    /* clear out bss */    bzero (pBss, (int) seg.sizeBss);    /* flush text to memory */    CACHE_TEXT_UPDATE (pText, seg.sizeText);    /*     * Add the segments to the module.     * This has to happen after the relocation gets done.     * If the relocation happens first, the checksums won't be     * correct.     */    moduleSegAdd (moduleId, SEGMENT_TEXT, pText, seg.sizeText, seg.flagsText);    moduleSegAdd (moduleId, SEGMENT_DATA, pData, seg.sizeData, seg.flagsData);    moduleSegAdd (moduleId, SEGMENT_BSS, pBss, seg.sizeBss, seg.flagsBss);                    /* error:     * clean up dynamically allocated temporary buffers and return ERROR */error:done:    if (pSubInfo != NULL)        free ((char *) pSubInfo);    if (pSpaceStrings != NULL)        free ((char *) pSpaceStrings);    if (pSpace!= NULL)        free ((char *) pSpace);    if (pSubspace!= NULL)        free ((char *) pSubspace);    if (pSymBuf != NULL)        free ((char *) pSymBuf);    if (pSymStr != NULL)        free ((char *) pSymStr);    if (pReloc!= NULL)        free ((char *) pReloc);    if (status == OK)        return (moduleId);    else        {        moduleDelete (moduleId);        return (NULL);        }    }/******************************************************************************** symbolNameSet - make all symbols records point to their name strings*/  static void symbolNameSet    (    SYMREC *   pSym,           /* pointer to symbol table */    int        nSyms,          /* # of entries in symbol table */    char *     pSymStr,        /* pointer to symbol string table */    SUBSPACE * pSubspace,      /* pointer to subspace dictionary */    int        nSubs,          /* number of subspaces */    char *     pSpaceStr,      /* pointer to space name string table */    SPACE *    pSpace,	       /* pointer to space dictionary */    int        nSpaces	       /* number of spaces */    )    {    int ix;    for (ix = 0; ix < nSyms; ix++)        pSym[ix].symbol_name = pSymStr + pSym[ix].name.n_strx;    for (ix = 0; ix < nSubs; ix++)        pSubspace[ix].subspace_name = pSpaceStr + pSubspace[ix].name.n_strx;    for (ix = 0; ix < nSpaces; ix++)        pSpace[ix].space_name = pSpaceStr + pSpace[ix].name.n_strx;    }/********************************************************************************* commSizeGet - this routine go through the symbol table to calculate the *                  size of STORAGE data for relocatable files** STORAGE requests (i.e., "common data") are simply turned into BSS* by this loader (and all other VxWorks loaders). The loader adds* an area for these symbols by increasing the normal BSS area.* This allows us to not have to malloc memory for each STORAGE symbol.** As a side effect, all the STORAGE symbols are partially relocated.* That is - the symbol_value field of the symbols SYMREC structure* is turned into an offset from the start of the STORAGE segment*/static void commSizeGet    (    SYMREC * pSymBuf,              /* symbol dictionary */    int      nEnts,                /* number of symbols */    SUBSPACE *pSubspace,           /* subspace relocation info */    int *    pCommSize             /* where to return comm size */    )    {    SYMREC * pSym = pSymBuf;    int      size =  0;    int      subspaceIndex;    int      ix;    int      iy;    SYMREC * pSearch;    int      symSize;    for (ix = 0; ix < nEnts; ix ++)        {        if (pSym->symbol_type == ST_STORAGE)            {            pSearch = pSymBuf;            /* XXX - search for the previous record for same symbol             * in symbol table. For some reason STORAGE symbols             * sometime appear in pairs.             */            for (iy = 0; iy < ix; iy ++)                {                if (strcmp(pSym->symbol_name, pSearch->symbol_name) == 0)                    break;                pSearch ++;                }            /* deal with a new storage symbol */            if (iy == ix)                {                subspaceIndex = pSym->symbol_info;                size = ROUND_UP (size, pSubspace[subspaceIndex].alignment);                symSize = pSym->symbol_value;                pSym->symbol_value = size;                size += symSize;                pSym->secondary_def = 0;                }            /* duplicate storage symbol */            else                {                pSym->secondary_def = 1;                }            }        pSym ++;        }    *pCommSize = size;    }/********************************************************************************* rdSymtab - Process the VxWorks symbol table** This is passed a pointer to an HP-PA SOM symbol table and processes* each of the external symbols defined therein.  This processing performs* two functions:*  1) New symbols are entered in the system symbol table as*     specified by the "symFlag" argument:*        ALL_SYMBOLS    = all defined symbols (LOCAL and GLOBAL) are added,*        GLOBAL_SYMBOLS = only external (GLOBAL) symbols are added,*        NO_SYMBOLS     = no symbols are added;*  2) Undefined externals are looked up in the system table.*     If an undefined external cannot be found in the symbol table,*     an error message is printed, but ERROR is not returned until the entire*     symbol table has been read, which allows all undefined externals to be*     reported.** Absolute symbols are automatically discarded.** RETURNS: OK or ERROR*/static STATUS rdSymtab     (    SYMREC *   pSymBuf,		/* pointer to symbol table */    FAST int   nEnts,           /* # of entries in symbol table */    SUBSPACE * pSubspace,       /* pointer to subspace dictionary */    SUB_INFO * pSubInfo,        /* subspace relocation info */    int        symFlag,         /* symbols to be added to table                                  *   ([NO|GLOBAL|ALL]_SYMBOLS) */    SYMTAB_ID  symTbl,          /* symbol table to use */    SYMREC **  pSymGlobal,      /* '$global$' symbol entry pointer */    char *     pComm,           /* start of comm area (within bss segment) */    int        group            /* symbol group */    )    {    char *   name;              /* symbol name (plus EOS) */    SYMREC * pSym = (SYMREC *) pSymBuf;  /* symbol entry pointer */    int      ix;		/* symbols subspace index */    SYM_TYPE vxSymType;         /* symbol type */    UCHAR    arg_reloc;		/* argument relocation info */    int      status  = OK;      /* return status */    *pSymGlobal = NULL;    for (; nEnts > 0; nEnts -= 1, pSym ++)        {        /* throw away absolute symbols */        if (pSym->symbol_type == ST_ABSOLUTE)            continue;        /* throw away symbol and argument extentions */        if (pSym->symbol_type == ST_SYM_EXT)            continue;        if (pSym->symbol_type == ST_ARG_EXT)            continue;        /* throw away invalid symbols */        if (pSym->symbol_type == ST_NULL)            continue;        /* get the symbol name */        name = pSym->symbol_name;        /* keep the symbol $global$ handy */        if ( (pSym->symbol_type == ST_DATA) && (!strcmp(name, "$global$")) )            *pSymGlobal = pSym;        if (!pSubspace[pSym->symbol_info].is_loadable)            WARN ("Warning: symbol %s is unloadable!\n", name);        if (pSym->must_qualify)            WARN ("Warning: symbol %s must qualify!\n", name);        if (pSym->is_common || pSym->dup_common)            WARN ("Warning: symbol %s is a common block!\n", name);        /* add new symbols to the symbol table */        if ((pSym->symbol_scope == SS_UNIVERSAL) ||            (pSym->symbol_scope == SS_LOCAL))            {            /* relocate the symbol relative to it's associated subspace */            ix = pSym->symbol_info;            pSym->symbol_value = pSym->symbol_value                                 - pSubspace[ix].subspace_start                                 + (unsigned int)pSubInfo[ix].loadAddr;            switch (pSym->symbol_type)                {                /* Data or BSS symbols */                case ST_DATA:                    if (pSubInfo[ix].loadType == LOAD_BSS)                        {                        vxSymType = N_BSS;                        DBG_PUT ("new BSS symbol %s (0x%x)\n", name,                                 pSym->symbol_value);                        }                    else                        {                        vxSymType = N_DATA;                        DBG_PUT ("new DATA symbol %s (0x%x)\n", name,                                  pSym->symbol_value);                        }                    arg_reloc = 0;                    break;                /* Text symbols */                case ST_CODE:                case ST_PRI_PROG:                case ST_SEC_PROG:                case ST_MILLICODE:                case ST_ENTRY:                    vxSymType = N_TEXT | ((UCHAR)(pSym->arg_reloc & 3) << 6);                    arg_reloc = (UCHAR)(pSym->arg_reloc >> 2);                    pSym->symbol_value &= 0xfffffffc;                    break;                /* ignore stubs */                case ST_STUB:                    continue;                /* These have never popped up yet */                case ST_MODULE:                case ST_PLABEL:                case ST_OCT_DIS:                case ST_MILLI_EXT:                default:                    WARN ("Warning: symbol %s is of type %d\n",                               name, pSym->symbol_type);                    continue;                }            if ( (pSym->symbol_scope == SS_UNIVERSAL) && (!pSym->hidden) )                vxSymType |= N_EXT;            if ( ((symFlag & LOAD_LOCAL_SYMBOLS) && !(vxSymType & N_EXT)) ||                ((symFlag & LOAD_GLOBAL_SYMBOLS) && (vxSymType & N_EXT)) )                {                DBG_PUT ("adding symbol %s to symTbl\n", name);                if (externSymAdd (symTbl, name, (char*)pSym->symbol_value,                            vxSymType, group, arg_reloc) != OK)                    {                    printErr ("can't add symbol %s (errno=%#x)\n",                                name, errnoGet());                    }                }            }        /* Add STORAGE (common) symbols as BSS */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久蜜臀| 国产成人精品一区二区三区网站观看 | 精品国产一区二区三区久久久蜜月 | 欧美无乱码久久久免费午夜一区| 午夜久久福利影院| 久久蜜桃av一区二区天堂| 97精品电影院| 国产精品一级在线| 婷婷久久综合九色综合伊人色| 国产拍欧美日韩视频二区| 欧美日韩国产综合视频在线观看| 不卡的av网站| 久久91精品久久久久久秒播| 亚洲美女免费视频| 国产精品午夜在线| 欧美刺激脚交jootjob| 欧美羞羞免费网站| 99久久亚洲一区二区三区青草| 国产在线国偷精品产拍免费yy| 天天色天天操综合| 亚洲激情欧美激情| 日韩伦理免费电影| 欧美国产一区在线| 欧美va亚洲va在线观看蝴蝶网| 欧美高清一级片在线| 色综合色综合色综合 | 在线视频欧美精品| 99精品热视频| 成人av在线电影| 高清成人在线观看| 国产电影精品久久禁18| 久久精品国产精品亚洲精品| 日本网站在线观看一区二区三区 | 亚洲精品伦理在线| 国产精品电影一区二区| 国产欧美视频一区二区| 精品成人一区二区三区| 日韩欧美激情四射| 日韩亚洲欧美中文三级| 欧美一级片免费看| 欧美一级高清大全免费观看| 91精品国产乱| 日韩欧美的一区| 日韩精品最新网址| 精品久久久久久亚洲综合网| 日韩精品一区在线观看| 日韩免费在线观看| 精品国内二区三区| 久久亚洲二区三区| 日本一区二区高清| 亚洲欧美一区二区久久| 亚洲另类春色国产| 亚洲国产一区视频| 偷拍自拍另类欧美| 精品亚洲porn| 国产不卡视频在线播放| 99久久夜色精品国产网站| 成人av综合一区| 色哟哟亚洲精品| 欧美绝品在线观看成人午夜影视| 欧美一区二区在线看| 日韩精品中文字幕在线不卡尤物| 欧美成人性战久久| 国产精品麻豆视频| 亚洲一二三区视频在线观看| 青椒成人免费视频| 国产成人高清视频| 在线中文字幕不卡| 91精品国产综合久久精品性色| 欧美精品一区二区久久婷婷| 国产精品久久久久久久久图文区| 亚洲图片欧美综合| 麻豆高清免费国产一区| 大尺度一区二区| 欧美性猛片xxxx免费看久爱| 日韩一区国产二区欧美三区| 中文欧美字幕免费| 亚欧色一区w666天堂| 精东粉嫩av免费一区二区三区| av一二三不卡影片| 欧美麻豆精品久久久久久| 精品久久久久久久久久久久久久久久久| 久久九九国产精品| 亚洲视频资源在线| 久久精品国产精品亚洲红杏| 91美女片黄在线观看91美女| 欧美一区二区三区电影| 国产日本亚洲高清| 日韩主播视频在线| 懂色av一区二区在线播放| 欧美日韩国产小视频| 日韩美女一区二区三区四区| 亚洲女子a中天字幕| 日本不卡不码高清免费观看| jizzjizzjizz欧美| 日韩一区二区免费在线电影| 亚洲色图20p| 黑人巨大精品欧美一区| 欧美丝袜第三区| 日本一区二区三区久久久久久久久不 | 欧美videos大乳护士334| 国产精品拍天天在线| 日韩不卡在线观看日韩不卡视频| 国产成人在线看| 欧美日韩精品专区| 亚洲色图一区二区三区| 精品中文av资源站在线观看| 欧美中文字幕不卡| 欧美经典三级视频一区二区三区| 日韩高清在线一区| 色女孩综合影院| 国产精品无码永久免费888| 男人的j进女人的j一区| 欧美体内she精高潮| 中文字幕一区免费在线观看| 精品一区二区成人精品| 91精品国产入口| 一区二区三区色| 成人免费看的视频| 欧美一级精品在线| 丝瓜av网站精品一区二区| 在线精品视频一区二区| 中文字幕一区免费在线观看| 成人精品一区二区三区中文字幕| 日韩一区二区三免费高清| 一级中文字幕一区二区| 色香色香欲天天天影视综合网| 国产欧美一区二区三区在线老狼| 蜜桃91丨九色丨蝌蚪91桃色| 制服丝袜亚洲色图| 婷婷开心久久网| 欧美色国产精品| 亚洲精品欧美二区三区中文字幕| av一二三不卡影片| 综合久久综合久久| 99精品黄色片免费大全| 中文一区二区完整视频在线观看| 国产美女精品在线| 久久精品欧美日韩| 成人免费看视频| 中文字幕一区二区不卡| 不卡的av中国片| 亚洲日韩欧美一区二区在线| 91香蕉视频污| 一片黄亚洲嫩模| 欧美日韩视频不卡| 天天av天天翘天天综合网 | 亚洲美女屁股眼交| 日本丶国产丶欧美色综合| 怡红院av一区二区三区| 91成人国产精品| 日韩激情av在线| 日韩欧美一二三区| 岛国一区二区在线观看| 亚洲欧洲精品一区二区三区 | 欧美色男人天堂| 男男视频亚洲欧美| 久久蜜臀精品av| av不卡在线播放| 亚洲国产va精品久久久不卡综合| 91精品婷婷国产综合久久性色| 麻豆成人免费电影| 中日韩免费视频中文字幕| 91小视频免费观看| 午夜久久久久久久久 | 一区二区三区欧美日| 欧美日韩成人激情| 国产一级精品在线| 依依成人综合视频| 日韩欧美中文字幕公布| 国产成人福利片| 一区二区高清在线| 久久综合一区二区| 99精品国产视频| 日本中文在线一区| 国产日韩欧美一区二区三区乱码| 色综合久久久久综合体桃花网| 肉色丝袜一区二区| 中文字幕乱码一区二区免费| 欧美亚洲尤物久久| 国内精品伊人久久久久av影院 | 日本亚洲三级在线| 国产精品毛片久久久久久久 | 国产精品久久久久久久久免费相片| 91高清在线观看| 国产在线不卡一卡二卡三卡四卡| 亚洲激情图片小说视频| 欧美精品一区二区在线观看| 色综合久久88色综合天天免费| 蜜桃视频在线观看一区二区| 中文字幕日韩一区| 精品国产伦一区二区三区观看体验 | 日韩免费一区二区| 成人黄动漫网站免费app| 亚洲国产乱码最新视频| 国产欧美1区2区3区| 91麻豆精品国产91久久久久久| 国产高清不卡二三区| 亚洲va中文字幕| 国产精品成人免费精品自在线观看|