[Ltrace-devel] [PATCH 08/11] Make some functions and datastructures global. Definitely a hack.
Joe Damato
ice799 at gmail.com
Mon Nov 8 23:47:41 UTC 2010
---
common.h | 8 ++++++++
ltrace-elf.c | 20 +++++++++++---------
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/common.h b/common.h
index 45d38fc..115b954 100644
--- a/common.h
+++ b/common.h
@@ -233,6 +233,14 @@ extern void open_pid(pid_t pid);
extern void show_summary(void);
extern arg_type_info * lookup_prototype(enum arg_type at);
+extern void do_init_elf(struct ltelf *lte, const char *filename);
+extern void do_close_elf(struct ltelf *lte);
+extern int in_load_libraries(const char *name, struct ltelf *lte, size_t count, GElf_Sym *sym);
+extern struct library_symbol *library_symbols;
+extern void add_library_symbol(GElf_Addr addr, const char *name,
+ struct library_symbol **library_symbolspp,
+ enum toplt type_of_plt, int is_weak);
+
/* Arch-dependent stuff: */
extern char * pid2name(pid_t pid);
extern void trace_set_options(Process * proc, pid_t pid);
diff --git a/ltrace-elf.c b/ltrace-elf.c
index dafb5cb..ee5e350 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -12,19 +12,20 @@
#include "common.h"
-static void do_init_elf(struct ltelf *lte, const char *filename);
-static void do_close_elf(struct ltelf *lte);
-static void add_library_symbol(GElf_Addr addr, const char *name,
+void do_init_elf(struct ltelf *lte, const char *filename);
+void do_close_elf(struct ltelf *lte);
+void add_library_symbol(GElf_Addr addr, const char *name,
struct library_symbol **library_symbolspp,
enum toplt type_of_plt, int is_weak);
-static int in_load_libraries(const char *name, struct ltelf *lte, size_t count, GElf_Sym *sym);
+int in_load_libraries(const char *name, struct ltelf *lte, size_t count, GElf_Sym *sym);
static GElf_Addr opd2addr(struct ltelf *ltc, GElf_Addr addr);
+struct library_symbol *library_symbols = NULL;
#ifdef PLT_REINITALISATION_BP
extern char *PLTs_initialized_by_here;
#endif
-static void
+void
do_init_elf(struct ltelf *lte, const char *filename) {
int i;
GElf_Addr relplt_addr = 0;
@@ -317,7 +318,7 @@ do_init_elf(struct ltelf *lte, const char *filename) {
}
}
-static void
+void
do_close_elf(struct ltelf *lte) {
debug(DEBUG_FUNCTION, "do_close_elf()");
if (lte->lte_flags & LTE_HASH_MALLOCED)
@@ -326,7 +327,7 @@ do_close_elf(struct ltelf *lte) {
close(lte->fd);
}
-static void
+void
add_library_symbol(GElf_Addr addr, const char *name,
struct library_symbol **library_symbolspp,
enum toplt type_of_plt, int is_weak) {
@@ -361,7 +362,7 @@ private_elf_gnu_hash(const char *name) {
return h & 0xffffffff;
}
-static int
+int
in_load_libraries(const char *name, struct ltelf *lte, size_t count, GElf_Sym *sym) {
size_t i;
unsigned long hash;
@@ -468,7 +469,6 @@ opd2addr(struct ltelf *lte, GElf_Addr addr) {
struct library_symbol *
read_elf(Process *proc) {
- struct library_symbol *library_symbols = NULL;
struct ltelf lte[MAX_LIBRARIES + 1];
size_t i;
struct opt_x_t *xptr;
@@ -478,6 +478,8 @@ read_elf(Process *proc) {
debug(DEBUG_FUNCTION, "read_elf(file=%s)", proc->filename);
+ library_symbols = NULL;
+ library_num = 0;
elf_version(EV_CURRENT);
do_init_elf(lte, proc->filename);
--
1.7.0.4
More information about the Ltrace-devel
mailing list