Lines Matching +defs:stack +defs:o
198 UNINITIALIZED BufferedStackTrace stack; \
199 stack.Unwind(pc, bp, nullptr, true, flags().store_context_size);
205 stack.Print(); \
208 // Return a chain with the previous ID id and the current stack.
210 static u32 ChainOrigin(u32 id, StackTrace *stack, bool from_init = false) {
227 Origin o = Origin::FromRawId(id);
228 stack->tag = StackTrace::TAG_UNKNOWN;
229 Origin chained = Origin::CreateChainedOrigin(o, stack);
234 StackTrace *stack) {
235 dfsan_origin o = GetOriginIfTainted(src, size);
236 if (o) {
237 o = ChainOrigin(o, stack);
238 *(dfsan_origin *)origin_for((void *)dst) = o;
243 // memory ranges cannot be overlapped. This is used by memcpy. stack records the
244 // stack trace of the memcpy. When dst and src are not 4-byte aligned properly,
248 StackTrace *stack) {
253 ChainAndWriteOriginIfTainted((uptr)src, beg + kOriginAlign - d, beg, stack);
265 stack);
283 last_dst_o = ChainOrigin(last_src_o, stack);
291 // This is used by memmove. stack records the stack trace of the memmove.
293 StackTrace *stack) {
300 stack);
319 last_dst_o = ChainOrigin(last_src_o, stack);
327 ChainAndWriteOriginIfTainted((uptr)src, beg + kOriginAlign - d, beg, stack);
332 // transfer operations. stack records the stack trace of the memory transfer
335 StackTrace *stack) {
352 return ReverseCopyOrigin(dst, src, size, stack);
353 return CopyOrigin(dst, src, size, stack);
388 return ChainOrigin(id, &stack);
390 // Return a new origin chain with the previous ID id and the current stack
397 // Return a new origin chain with the previous ID id and the current stack
413 MoveOrigin(dst, src, len, &stack);
440 // so that the getting the caller stack frame works correctly.
443 MoveOrigin(dst, src, size, &stack);
469 // so that the getting the caller stack frame works correctly.
472 MoveOrigin(dst, src, size, &stack);
563 // origin chain with the previous ID o and the current stack trace. This is
566 dfsan_label s, void *p, uptr size, dfsan_origin o) {
570 SetOrigin(p, size, ChainOrigin(o, &stack));
585 init_origin = ChainOrigin(0, &stack, true);
598 dfsan_origin init_origin = ChainOrigin(0, &stack, true);
815 static bool PrintOriginTraceFramesToStr(Origin o, InternalScopedString *out) {
819 while (o.isChainedOrigin()) {
820 StackTrace stack;
821 dfsan_origin origin_id = o.raw_id();
822 o = o.getNextChainedOrigin(&stack);
823 if (o.isChainedOrigin())
832 stack.PrintTo(out);
854 Origin o = Origin::FromRawId(origin);
855 return PrintOriginTraceFramesToStr(o, out);
919 Origin o = Origin::FromRawId(origin);
922 bool success = PrintOriginTraceFramesToStr(o, &trace);
939 Origin o = Origin::FromRawId(origin);
942 bool success = PrintOriginTraceFramesToStr(o, &trace);
968 Origin o = Origin::FromRawId(origin);
969 dfsan_origin origin_id = o.raw_id();
970 while (o.isChainedOrigin()) {
971 StackTrace stack;
972 origin_id = o.raw_id();
973 o = o.getNextChainedOrigin(&stack);
993 stack.Print();
1001 return stack.PrintTo(out_buf, out_buf_size);
1063 void dfsan_set_arg_origin_tls(uptr offset, dfsan_origin o) {
1064 __dfsan_arg_origin_tls[offset] = o;