- Timestamp:
- Dec 20, 2010 4:49:31 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Debugger/DBGPlugInSolaris.cpp
r35253 r35254 166 166 AssertCompileSize(SOL64v9_modctl_t, 0x80); 167 167 168 typedef struct SOL32v4_modctl169 {170 uint32_t mod_next; /**< 0 */171 uint32_t mod_prev; /**< 4 */172 int32_t mod_id; /**< 8 */173 uint32_t mod_mp; /**< c Pointer to the kernel runtime loader bits. */174 uint32_t mod_inprogress_thread; /**< 10 */175 uint32_t mod_modinfo; /**< 14 */176 uint32_t mod_linkage; /**< 18 */177 uint32_t mod_filename; /**< 1c */178 uint32_t mod_modname; /**< 20 */179 int32_t mod_busy; /**< 24 */180 int32_t mod_stub; /**< 28 */181 uint32_t mod_loaded:1; /**< 2c DIFF 1 */182 uint32_t mod_installed:1; /**< 2c */183 uint32_t mod_uninstalled:1; /**< 2c */184 uint32_t mod_noautounload:1; /**< 2c */185 int8_t mod_want; /**< 30 DIFF 2 */186 char mod_padding1[3];187 uint32_t mod_requisites; /**< 34 */188 uint32_t mod_dependents; /**< 38 */189 int32_t mod_loadcnt; /**< 3c */190 /* DIFF 3: 8 bytes added in v9 */191 } SOL32v4_modctl_t;192 AssertCompileSize(SOL32v4_modctl_t, 0x40);193 194 168 typedef union SOL_modctl 195 169 { 196 SOL32v4_modctl_t v4;197 170 SOL32v9_modctl_t v9_32; 198 171 SOL32v11_modctl_t v11_32; … … 990 963 } 991 964 992 /* v4 - 32bit only */993 {994 DBGFR3AddrFromFlat(pVM, &ModCtlAddr, HitAddr.FlatPtr - RT_OFFSETOF(SOL32v4_modctl_t, mod_loadcnt));995 SOL32v4_modctl_t ModCtlv4;996 rc = DBGFR3MemRead(pVM, 0, &ModCtlAddr, &ModCtlv4, sizeof(ModCtlv4));997 if (RT_SUCCESS(rc))998 {999 if ( SOL32_VALID_ADDRESS(ModCtlv4.mod_next)1000 && SOL32_VALID_ADDRESS(ModCtlv4.mod_prev)1001 && ModCtlv4.mod_id == 01002 && SOL32_VALID_ADDRESS(ModCtlv4.mod_mp)1003 && SOL32_VALID_ADDRESS(ModCtlv4.mod_filename)1004 && SOL32_VALID_ADDRESS(ModCtlv4.mod_modname)1005 && ModCtlv4.mod_requisites == 01006 && (ModCtlv4.mod_loadcnt == 1 || ModCtlv4.mod_loadcnt == 0) )1007 {1008 char szUnix[5];1009 DBGFADDRESS NameAddr;1010 DBGFR3AddrFromFlat(pVM, &NameAddr, ModCtlv4.mod_modname);1011 rc = DBGFR3MemRead(pVM, 0, &NameAddr, &szUnix, sizeof(szUnix));1012 if (RT_SUCCESS(rc))1013 {1014 if (!strcmp(szUnix, "unix"))1015 {1016 pThis->AddrUnixModCtl = ModCtlAddr;1017 pThis->iModCtlVer = 4;1018 cbModCtl = sizeof(ModCtlv4);1019 break;1020 }1021 Log(("sol32 mod_name=%.*s v4\n", sizeof(szUnix), szUnix));1022 }1023 }1024 }1025 }1026 1027 965 /* next */ 1028 966 DBGFR3AddrFromFlat(pVM, &CurAddr, HitAddr.FlatPtr + cbExpr); … … 1101 1039 1102 1040 /* 32-bit search range. */ 1103 DBGFR3AddrFromFlat(pVM, &Addr, 0x e0010000 /*0xfe800000*/);1104 RTGCUINTPTR cbRange = 4 * 1024 * 1024; //0xfec00000 - 0xfe800000;1041 DBGFR3AddrFromFlat(pVM, &Addr, 0xfe800000); 1042 RTGCUINTPTR cbRange = 0xfec00000 - 0xfe800000; 1105 1043 1106 1044 DBGFADDRESS HitAddr;
Note:
See TracChangeset
for help on using the changeset viewer.