Home | History | Annotate | Download | only in asan

Lines Matching refs:descr

86   ShadowAddressDescription descr;
87 if (!GetShadowAddressInformation(addr, &descr)) return false;
88 descr.Print();
92 bool GetShadowAddressInformation(uptr addr, ShadowAddressDescription *descr) {
96 if (shadow_kind != kShadowKindGap) descr->shadow_byte = *(u8 *)addr;
97 descr->addr = addr;
98 descr->kind = shadow_kind;
103 static void GetAccessToHeapChunkInformation(ChunkAccess *descr,
106 descr->bad_addr = addr;
107 if (chunk.AddrIsAtLeft(addr, access_size, &descr->offset)) {
108 descr->access_type = kAccessTypeLeft;
109 } else if (chunk.AddrIsAtRight(addr, access_size, &descr->offset)) {
110 descr->access_type = kAccessTypeRight;
111 if (descr->offset < 0) {
112 descr->bad_addr -= descr->offset;
113 descr->offset = 0;
115 } else if (chunk.AddrIsInside(addr, access_size, &descr->offset)) {
116 descr->access_type = kAccessTypeInside;
118 descr->access_type = kAccessTypeUnknown;
120 descr->chunk_begin = chunk.Beg();
121 descr->chunk_size = chunk.UsedSize();
122 descr->user_requested_alignment = chunk.UserRequestedAlignment();
123 descr->alloc_type = chunk.GetAllocType();
126 static void PrintHeapChunkAccess(uptr addr, const ChunkAccess &descr) {
130 switch (descr.access_type) {
132 str.AppendF("%p is located %zd bytes before", (void *)descr.bad_addr,
133 descr.offset);
136 str.AppendF("%p is located %zd bytes after", (void *)descr.bad_addr,
137 descr.offset);
140 str.AppendF("%p is located %zd bytes inside of", (void *)descr.bad_addr,
141 descr.offset);
146 (void *)descr.bad_addr);
148 str.AppendF(" %zu-byte region [%p,%p)\n", descr.chunk_size,
149 (void *)descr.chunk_begin,
150 (void *)(descr.chunk_begin + descr.chunk_size));
156 HeapAddressDescription *descr) {
161 descr->addr = addr;
162 GetAccessToHeapChunkInformation(&descr->chunk_access, chunk, addr,
165 descr->alloc_tid = chunk.AllocTid();
166 descr->alloc_stack_id = chunk.GetAllocStackId();
167 descr->free_tid = chunk.FreeTid();
168 if (descr->free_tid != kInvalidTid)
169 descr->free_stack_id = chunk.GetFreeStackId();
181 HeapAddressDescription descr;
182 if (!GetHeapAddressInformation(addr, access_size, &descr)) {
188 descr.Print();
194 StackAddressDescription *descr) {
198 descr->addr = addr;
199 descr->tid = t->tid();
203 descr->frame_descr = nullptr;
207 descr->offset = access.offset;
208 descr->access_size = access_size;
209 descr->frame_pc = access.frame_pc;
210 descr->frame_descr = access.frame_descr;
216 descr->frame_pc = *reinterpret_cast<uptr *>(descr->frame_pc);
218 descr->frame_pc += 16;
269 StackAddressDescription descr;
270 if (!GetStackAddressInformation(addr, access_size, &descr)) return false;
271 descr.Print();
302 GlobalAddressDescription *descr) {
303 descr->addr = addr;
304 int globals_num = GetGlobalsForAddress(addr, descr->globals, descr->reg_sites,
305 ARRAY_SIZE(descr->globals));
306 descr->size = globals_num;
307 descr->access_size = access_size;
313 GlobalAddressDescription descr;
314 if (!GetGlobalAddressInformation(addr, access_size, &descr)) return false;
316 descr.Print(bug_type);