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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? msc.c

?? 這是一個開放源代碼的與WINNT/WIN2K/WIN2003兼容的操作系統
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
 * File msc.c - read VC++ debug information from COFF and eventually
 * from PDB files.
 *
 * Copyright (C) 1996,      Eric Youngdale.
 * Copyright (C) 1999-2000, Ulrich Weigand.
 * Copyright (C) 2004,      Eric Pouech.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
/*
 * Note - this handles reading debug information for 32 bit applications
 * that run under Windows-NT for example.  I doubt that this would work well
 * for 16 bit applications, but I don't think it really matters since the
 * file format is different, and we should never get in here in such cases.
 *
 * TODO:
 *	Get 16 bit CV stuff working.
 *	Add symbol size to internal symbol table.
 */
 
#include "config.h"
#include "wine/port.h"
 
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
 
#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "winternl.h"
 
#include <pseh/pseh.h>
 
#include "wine/debug.h"
#include "dbghelp_private.h"
#include "mscvpdb.h"
 
WINE_DEFAULT_DEBUG_CHANNEL(dbghelp_msc);
 
#define MAX_PATHNAME_LEN 1024
 
/*========================================================================
 * Debug file access helper routines
 */
 
static _SEH_FILTER(page_fault)
{
    if (_SEH_GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
        return _SEH_EXECUTE_HANDLER;
    return _SEH_CONTINUE_SEARCH;
}
 
static void dump(const void* ptr, unsigned len)
{
    int         i, j;
    BYTE        msg[128];
    const char* hexof = "0123456789abcdef";
    const BYTE* x = (const BYTE*)ptr;
 
    for (i = 0; i < len; i += 16)
    {
        sprintf(msg, "%08x: ", i);
        memset(msg + 10, ' ', 3 * 16 + 1 + 16);
        for (j = 0; j < min(16, len - i); j++)
        {
            msg[10 + 3 * j + 0] = hexof[x[i + j] >> 4];
            msg[10 + 3 * j + 1] = hexof[x[i + j] & 15];
            msg[10 + 3 * j + 2] = ' ';
            msg[10 + 3 * 16 + 1 + j] = (x[i + j] >= 0x20 && x[i + j] < 0x7f) ?
                x[i + j] : '.';
        }
        msg[10 + 3 * 16] = ' ';
        msg[10 + 3 * 16 + 1 + 16] = '\0';
        FIXME("%s\n", msg);
    }
}
 
/*========================================================================
 * Process CodeView type information.
 */
 
#define MAX_BUILTIN_TYPES	0x0480
#define FIRST_DEFINABLE_TYPE    0x1000
 
static struct symt*     cv_basic_types[MAX_BUILTIN_TYPES];
 
#define SymTagCVBitField        (SymTagMax + 0x100)
struct codeview_bitfield
{
    struct symt         symt;
    unsigned            subtype;
    unsigned            bitposition;
    unsigned            bitlength;
};
 
struct cv_defined_module
{
    BOOL                allowed;
    unsigned int        num_defined_types;
    struct symt**       defined_types;
 
    struct codeview_bitfield* bitfields;
    unsigned            num_bitfields;
    unsigned            used_bitfields;
};
/* FIXME: don't make it static */
#define CV_MAX_MODULES          32
static struct cv_defined_module cv_zmodules[CV_MAX_MODULES];
static struct cv_defined_module*cv_current_module;
 
static void codeview_init_basic_types(struct module* module)
{
    /*
     * These are the common builtin types that are used by VC++.
     */
    cv_basic_types[T_NOTYPE] = NULL;
    cv_basic_types[T_ABS]    = NULL;
    cv_basic_types[T_VOID]   = &symt_new_basic(module, btVoid,  "void", 0)->symt;
    cv_basic_types[T_CHAR]   = &symt_new_basic(module, btChar,  "char", 1)->symt;
    cv_basic_types[T_SHORT]  = &symt_new_basic(module, btInt,   "short int", 2)->symt;
    cv_basic_types[T_LONG]   = &symt_new_basic(module, btInt,   "long int", 4)->symt;
    cv_basic_types[T_QUAD]   = &symt_new_basic(module, btInt,   "long long int", 8)->symt;
    cv_basic_types[T_UCHAR]  = &symt_new_basic(module, btUInt,  "unsigned char", 1)->symt;
    cv_basic_types[T_USHORT] = &symt_new_basic(module, btUInt,  "unsigned short", 2)->symt;
    cv_basic_types[T_ULONG]  = &symt_new_basic(module, btUInt,  "unsigned long", 4)->symt;
    cv_basic_types[T_UQUAD]  = &symt_new_basic(module, btUInt,  "unsigned long long", 8)->symt;
    cv_basic_types[T_REAL32] = &symt_new_basic(module, btFloat, "float", 4)->symt;
    cv_basic_types[T_REAL64] = &symt_new_basic(module, btFloat, "double", 8)->symt;
    cv_basic_types[T_RCHAR]  = &symt_new_basic(module, btInt,   "signed char", 1)->symt;
    cv_basic_types[T_WCHAR]  = &symt_new_basic(module, btWChar, "wchar_t", 2)->symt;
    cv_basic_types[T_INT4]   = &symt_new_basic(module, btInt,   "INT4", 4)->symt;
    cv_basic_types[T_UINT4]  = &symt_new_basic(module, btUInt,  "UINT4", 4)->symt;
 
    cv_basic_types[T_32PVOID]   = &symt_new_pointer(module, cv_basic_types[T_VOID])->symt;
    cv_basic_types[T_32PCHAR]   = &symt_new_pointer(module, cv_basic_types[T_CHAR])->symt;
    cv_basic_types[T_32PSHORT]  = &symt_new_pointer(module, cv_basic_types[T_SHORT])->symt;
    cv_basic_types[T_32PLONG]   = &symt_new_pointer(module, cv_basic_types[T_LONG])->symt;
    cv_basic_types[T_32PQUAD]   = &symt_new_pointer(module, cv_basic_types[T_QUAD])->symt;
    cv_basic_types[T_32PUCHAR]  = &symt_new_pointer(module, cv_basic_types[T_UCHAR])->symt;
    cv_basic_types[T_32PUSHORT] = &symt_new_pointer(module, cv_basic_types[T_USHORT])->symt;
    cv_basic_types[T_32PULONG]  = &symt_new_pointer(module, cv_basic_types[T_ULONG])->symt;
    cv_basic_types[T_32PUQUAD]  = &symt_new_pointer(module, cv_basic_types[T_UQUAD])->symt;
    cv_basic_types[T_32PREAL32] = &symt_new_pointer(module, cv_basic_types[T_REAL32])->symt;
    cv_basic_types[T_32PREAL64] = &symt_new_pointer(module, cv_basic_types[T_REAL64])->symt;
    cv_basic_types[T_32PRCHAR]  = &symt_new_pointer(module, cv_basic_types[T_RCHAR])->symt;
    cv_basic_types[T_32PWCHAR]  = &symt_new_pointer(module, cv_basic_types[T_WCHAR])->symt;
    cv_basic_types[T_32PINT4]   = &symt_new_pointer(module, cv_basic_types[T_INT4])->symt;
    cv_basic_types[T_32PUINT4]  = &symt_new_pointer(module, cv_basic_types[T_UINT4])->symt;
}
 
static int numeric_leaf(int* value, const unsigned short int* leaf)
{
    unsigned short int type = *leaf++;
    int length = 2;
 
    if (type < LF_NUMERIC)
    {
        *value = type;
    }
    else
    {
        switch (type)
        {
        case LF_CHAR:
            length += 1;
            *value = *(const char*)leaf;
            break;
 
        case LF_SHORT:
            length += 2;
            *value = *(const short*)leaf;
            break;
 
        case LF_USHORT:
            length += 2;
            *value = *(const unsigned short*)leaf;
            break;
 
        case LF_LONG:
            length += 4;
            *value = *(const int*)leaf;
            break;
 
        case LF_ULONG:
            length += 4;
            *value = *(const unsigned int*)leaf;
            break;
 
        case LF_QUADWORD:
        case LF_UQUADWORD:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 8;
            *value = 0;    /* FIXME */
            break;
 
        case LF_REAL32:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 4;
            *value = 0;    /* FIXME */
            break;
 
        case LF_REAL48:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 6;
            *value = 0;    /* FIXME */
            break;
 
        case LF_REAL64:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 8;
            *value = 0;    /* FIXME */
            break;
 
        case LF_REAL80:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 10;
            *value = 0;    /* FIXME */
            break;
 
        case LF_REAL128:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 16;
            *value = 0;    /* FIXME */
            break;
 
        case LF_COMPLEX32:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 4;
            *value = 0;    /* FIXME */
            break;
 
        case LF_COMPLEX64:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 8;
            *value = 0;    /* FIXME */
            break;
 
        case LF_COMPLEX80:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 10;
            *value = 0;    /* FIXME */
            break;
 
        case LF_COMPLEX128:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 16;
            *value = 0;    /* FIXME */
            break;
 
        case LF_VARSTRING:
	    FIXME("Unsupported numeric leaf type %04x\n", type);
            length += 2 + *leaf;
            *value = 0;    /* FIXME */
            break;
 
        default:
	    FIXME("Unknown numeric leaf type %04x\n", type);
            *value = 0;
            break;
        }
    }
 
    return length;
}
 
/* convert a pascal string (as stored in debug information) into
 * a C string (null terminated).
 */
static const char* terminate_string(const struct p_string* p_name)
{
    static char symname[256];
 
    memcpy(symname, p_name->name, p_name->namelen);
    symname[p_name->namelen] = '\0';
 
    return (!*symname || strcmp(symname, "__unnamed") == 0) ? NULL : symname;
}
 
static struct symt*  codeview_get_type(unsigned int typeno, BOOL allow_special)
{
    struct symt*        symt = NULL;
 
    /*
     * Convert Codeview type numbers into something we can grok internally.
     * Numbers < FIRST_DEFINABLE_TYPE are all fixed builtin types.
     * Numbers from FIRST_DEFINABLE_TYPE and up are all user defined (structs, etc).
     */
    if (typeno < FIRST_DEFINABLE_TYPE)
    {
        if (typeno < MAX_BUILTIN_TYPES)
	    symt = cv_basic_types[typeno];
    }
    else
    {
        unsigned        mod_index = typeno >> 24;
        unsigned        mod_typeno = typeno & 0x00FFFFFF;
        struct cv_defined_module*       mod;
 
        mod = (mod_index == 0) ? cv_current_module : &cv_zmodules[mod_index];
 
        if (mod_index >= CV_MAX_MODULES || !mod->allowed) 
            FIXME("Module of index %d isn't loaded yet (%x)\n", mod_index, typeno);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产一区二区三区| 久久精品无码一区二区三区| 国产精品综合在线视频| 亚洲精品久久嫩草网站秘色| 国产喂奶挤奶一区二区三区| 欧美在线三级电影| www.在线成人| 国产一区欧美一区| 午夜精品123| 亚洲欧美欧美一区二区三区| 26uuu亚洲综合色欧美| 在线播放欧美女士性生活| 欧美成人伊人久久综合网| 97精品国产露脸对白| 国产成人精品免费在线| 日本不卡一区二区三区高清视频| 自拍偷拍国产精品| 国产欧美日韩另类一区| 精品久久久久一区二区国产| 欧美手机在线视频| 91影院在线免费观看| 成人精品视频一区| 国产成人免费高清| 国内外成人在线| 久久99久久99| 日韩av成人高清| 日日夜夜精品视频天天综合网| 一区二区免费在线| 国产精品国产三级国产有无不卡| 久久久久久**毛片大全| 精品国产凹凸成av人网站| 91精品国产入口| 欧美日韩国产欧美日美国产精品| 色偷偷久久人人79超碰人人澡| www.综合网.com| 97se狠狠狠综合亚洲狠狠| 成年人国产精品| 成人av网址在线| 不卡av免费在线观看| 99精品视频在线播放观看| 夫妻av一区二区| 成人av在线一区二区| 91色视频在线| 欧美艳星brazzers| 欧美天堂一区二区三区| 6080亚洲精品一区二区| 日韩欧美在线观看一区二区三区| 日韩一区二区三| 精品欧美一区二区三区精品久久| 精品国一区二区三区| 亚洲精品一线二线三线| 精品福利一区二区三区免费视频| 久久人人97超碰com| 国产精品乱子久久久久| 亚洲日本丝袜连裤袜办公室| 夜夜精品浪潮av一区二区三区| 亚洲成人av一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 毛片av中文字幕一区二区| 国产夫妻精品视频| 91网上在线视频| 欧美久久婷婷综合色| 亚洲精品欧美专区| 青青草伊人久久| 国产成人一区二区精品非洲| 91一区二区三区在线观看| 欧美色图第一页| 精品91自产拍在线观看一区| 国产精品不卡一区二区三区| 亚洲国产成人高清精品| 狠狠色狠狠色综合系列| 91免费精品国自产拍在线不卡| 欧美亚男人的天堂| 精品久久久久久久久久久久包黑料| 国产网站一区二区三区| 亚洲一区二区三区视频在线| 久久aⅴ国产欧美74aaa| 99久久99久久综合| 8x8x8国产精品| 在线精品视频免费观看| 99精品视频免费在线观看| 欧美日韩综合一区| 精品av综合导航| 亚洲一区二区三区中文字幕| 美女视频网站黄色亚洲| 99国产精品国产精品久久| 欧美精品高清视频| 国产精品狼人久久影院观看方式| 午夜久久久久久电影| 成人免费看的视频| 91.xcao| 欧美国产欧美综合| 水野朝阳av一区二区三区| 成人激情黄色小说| 精品免费日韩av| 亚洲午夜精品网| 9色porny自拍视频一区二区| 日韩写真欧美这视频| 亚洲欧美一区二区久久| 国模少妇一区二区三区| 欧美日韩一区二区电影| 国产欧美精品一区二区色综合朱莉 | 亚洲黄网站在线观看| 国产在线播放一区| 欧美剧情片在线观看| 欧美国产综合色视频| 久久激情五月激情| 欧洲一区在线观看| 亚洲欧洲国产日本综合| 国产精品一区二区黑丝| 欧美一级理论性理论a| 一区二区在线观看免费视频播放| 国产精品白丝jk黑袜喷水| 欧美一级专区免费大片| 亚洲成人资源在线| 在线观看区一区二| 亚洲美女淫视频| 99久久久久免费精品国产 | 欧美国产成人精品| 久久成人免费网| 6080日韩午夜伦伦午夜伦| 一区二区三区美女视频| 成人午夜av影视| 91浏览器在线视频| 国产成人在线观看免费网站| 成人在线综合网站| 欧美精品一区二| 国产真实精品久久二三区| 欧美丰满少妇xxxxx高潮对白 | 欧美成人a∨高清免费观看| 亚洲国产欧美在线| 欧美制服丝袜第一页| 亚洲一区免费观看| 欧美影院午夜播放| 一区二区在线观看视频| 欧美主播一区二区三区美女| 一区二区三区四区在线播放| 色欧美片视频在线观看| 一区二区不卡在线播放| 色av成人天堂桃色av| 亚洲一区二区在线免费看| 一本色道久久综合狠狠躁的推荐| 亚洲精品国产无天堂网2021| 一本色道**综合亚洲精品蜜桃冫| 亚洲免费观看高清完整| 日本精品免费观看高清观看| 一区二区三区中文字幕电影 | 国产伦理精品不卡| 久久久91精品国产一区二区精品| 国产精品一区二区在线看| 中文字幕免费不卡在线| 成人激情免费网站| 一区二区三区**美女毛片| 欧美精品v日韩精品v韩国精品v| 亚洲1区2区3区4区| 日韩午夜小视频| 国产一区二区精品久久99 | 日本亚洲三级在线| 精品国产3级a| 94色蜜桃网一区二区三区| 亚洲第一激情av| 色婷婷综合久久久| 中文字幕中文字幕中文字幕亚洲无线| 国产精品一区在线观看乱码| 国产精品美女久久久久久久久久久 | 久久蜜桃av一区精品变态类天堂 | 成人免费高清视频| 亚洲制服丝袜在线| 精品国产一区二区在线观看| 国产精品18久久久久久久网站| 一区二区中文视频| 欧美日韩日日夜夜| 韩国av一区二区三区| 亚洲人快播电影网| 日韩欧美自拍偷拍| 91色porny蝌蚪| 麻豆成人av在线| 亚洲欧美福利一区二区| 日韩亚洲欧美一区二区三区| 成人高清免费在线播放| 日本亚洲欧美天堂免费| 中文字幕亚洲欧美在线不卡| 91精品国产综合久久久蜜臀图片| 国产乱子轮精品视频| 亚洲国产毛片aaaaa无费看| 日韩欧美国产一区在线观看| 92国产精品观看| 韩国视频一区二区| 亚洲第一成人在线| 欧美经典三级视频一区二区三区| 欧美老年两性高潮| 成人毛片视频在线观看| 日本vs亚洲vs韩国一区三区| 亚洲伦在线观看| 久久久久九九视频| 日韩写真欧美这视频| 欧美午夜不卡视频| 福利91精品一区二区三区| 久久99国产精品免费网站| 亚洲二区在线观看|