AuxvParser::AuxvParser(int pid_, unsigned addr_size_) : pid(pid_), ref_count(0), interpreter_base(0x0), vsyscall_base(0x0), vsyscall_text(0x0), vsyscall_end(0x0), found_vsyscall(false), phdr(0x0), page_size(0x0), addr_size(addr_size_) { create_err = !readAuxvInfo(); }
Frame process::preStackWalkInit(Frame startFrame) { /* Do a special check for the vsyscall page. Silently drop the page if it exists. The IA-64 doesn't use DWARF to unwind out of the vsyscall page, so calcVsyscallFrame() is overkill. */ if( getVsyscallStart() == 0x0 ) { if( ! readAuxvInfo() ) { /* We're probably on Linux 2.4; use default values. */ setVsyscallRange( 0xffffffffffffe000, 0xfffffffffffff000 ); setVsyscallData( NULL ); } } Address next_pc = startFrame.getPC(); if (next_pc >= getVsyscallStart() && next_pc < getVsyscallEnd()) { return startFrame.getCallerFrame(); } return startFrame; }