diff options
| author | Ulrich Drepper <[email protected]> | 2005-07-26 05:00:05 +0000 |
|---|---|---|
| committer | Ulrich Drepper <[email protected]> | 2005-07-26 05:00:05 +0000 |
| commit | b08d5a8fb42f4586d756068065186b5af7e48dad (patch) | |
| tree | 9f05f86be7877ed461b4dc05f53b29ea4fc0d2a1 /libdwfl/dwfl_addrmodule.c | |
Adjust for monotone.
Diffstat (limited to 'libdwfl/dwfl_addrmodule.c')
| -rw-r--r-- | libdwfl/dwfl_addrmodule.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/libdwfl/dwfl_addrmodule.c b/libdwfl/dwfl_addrmodule.c new file mode 100644 index 00000000..69aab57c --- /dev/null +++ b/libdwfl/dwfl_addrmodule.c @@ -0,0 +1,38 @@ +/* Find module containing address. + Copyright (C) 2005 Red Hat, Inc. + + This program is Open Source software; you can redistribute it and/or + modify it under the terms of the Open Software License version 1.0 as + published by the Open Source Initiative. + + You should have received a copy of the Open Software License along + with this program; if not, you may obtain a copy of the Open Software + License version 1.0 from http://www.opensource.org/licenses/osl.php or + by writing the Open Source Initiative c/o Lawrence Rosen, Esq., + 3001 King Ranch Road, Ukiah, CA 95482. */ + +#include "libdwflP.h" + +Dwfl_Module * +dwfl_addrmodule (Dwfl *dwfl, Dwarf_Addr address) +{ + if (dwfl == NULL) + return NULL; + + /* Do binary search on the array indexed by module load address. */ + size_t l = 0, u = dwfl->nmodules; + while (l < u) + { + size_t idx = (l + u) / 2; + Dwfl_Module *m = dwfl->modules[idx]; + if (address < m->low_addr) + u = idx; + else if (address >= m->high_addr) + l = idx + 1; + else + return m; + } + + return NULL; +} +INTDEF (dwfl_addrmodule) |
