__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# SPDX-License-Identifier: GPL-2.0 # # Copyright (c) 2023 MediaTek Inc. # # Authors: # Kuan-Ying Lee <[email protected]> # import gdb from linux import utils, constants if constants.LX_CONFIG_STACKDEPOT: stack_record_type = utils.CachedType('struct stack_record') DEPOT_STACK_ALIGN = 4 def help(): t = """Usage: lx-stack_depot_lookup [Hex handle value] Example: lx-stack_depot_lookup 0x00c80300\n""" gdb.write("Unrecognized command\n") raise gdb.GdbError(t) def stack_depot_fetch(handle): global DEPOT_STACK_ALIGN global stack_record_type stack_depot_disabled = gdb.parse_and_eval('stack_depot_disabled') if stack_depot_disabled: raise gdb.GdbError("stack_depot_disabled\n") handle_parts_t = gdb.lookup_type("union handle_parts") parts = handle.cast(handle_parts_t) offset = parts['offset'] << DEPOT_STACK_ALIGN pools_num = gdb.parse_and_eval('pools_num') if handle == 0: raise gdb.GdbError("handle is 0\n") pool_index = parts['pool_index_plus_1'] - 1 if pool_index >= pools_num: gdb.write("pool index %d out of bounds (%d) for stack id 0x%08x\n" % (parts['pool_index'], pools_num, handle)) return gdb.Value(0), 0 stack_pools = gdb.parse_and_eval('stack_pools') try: pool = stack_pools[pool_index] stack = (pool + gdb.Value(offset).cast(utils.get_size_t_type())).cast(stack_record_type.get_type().pointer()) size = int(stack['size'].cast(utils.get_ulong_type())) return stack['entries'], size except Exception as e: gdb.write("%s\n" % e) return gdb.Value(0), 0 def stack_depot_print(handle): if not constants.LX_CONFIG_STACKDEPOT: raise gdb.GdbError("CONFIG_STACKDEPOT is not enabled") entries, nr_entries = stack_depot_fetch(handle) if nr_entries > 0: for i in range(0, nr_entries): try: gdb.execute("x /i 0x%x" % (int(entries[i]))) except Exception as e: gdb.write("%s\n" % e) class StackDepotLookup(gdb.Command): """Search backtrace by handle""" def __init__(self): if constants.LX_CONFIG_STACKDEPOT: super(StackDepotLookup, self).__init__("lx-stack_depot_lookup", gdb.COMMAND_SUPPORT) def invoke(self, args, from_tty): if not constants.LX_CONFIG_STACKDEPOT: raise gdb.GdbError('CONFIG_STACKDEPOT is not set') argv = gdb.string_to_argv(args) if len(argv) == 1: handle = int(argv[0], 16) stack_depot_print(gdb.Value(handle).cast(utils.get_uint_type())) else: help() StackDepotLookup()
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| .gitignore | File | 65 B | 0644 |
|
| Makefile | File | 634 B | 0644 |
|
| __init__.py | File | 55 B | 0644 |
|
| clk.py | File | 2.57 KB | 0644 |
|
| config.py | File | 1.3 KB | 0644 |
|
| constants.py.in | File | 4.39 KB | 0644 |
|
| cpus.py | File | 6.05 KB | 0644 |
|
| device.py | File | 5.66 KB | 0644 |
|
| dmesg.py | File | 5.69 KB | 0644 |
|
| genpd.py | File | 2.65 KB | 0644 |
|
| interrupts.py | File | 7.67 KB | 0644 |
|
| kasan.py | File | 1.38 KB | 0644 |
|
| lists.py | File | 4.16 KB | 0644 |
|
| mapletree.py | File | 7.17 KB | 0644 |
|
| mm.py | File | 13.98 KB | 0644 |
|
| modules.py | File | 3.92 KB | 0644 |
|
| page_owner.py | File | 6.83 KB | 0644 |
|
| pgtable.py | File | 10.08 KB | 0644 |
|
| proc.py | File | 8.58 KB | 0644 |
|
| radixtree.py | File | 2.46 KB | 0644 |
|
| rbtree.py | File | 4.62 KB | 0644 |
|
| slab.py | File | 11.27 KB | 0644 |
|
| stackdepot.py | File | 2.62 KB | 0644 |
|
| symbols.py | File | 7.32 KB | 0644 |
|
| tasks.py | File | 3.17 KB | 0644 |
|
| timerlist.py | File | 7.86 KB | 0644 |
|
| utils.py | File | 5.87 KB | 0644 |
|
| vfs.py | File | 1.42 KB | 0644 |
|
| vmalloc.py | File | 2.33 KB | 0644 |
|
| xarray.py | File | 636 B | 0644 |
|