+1999-02-07 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf/dl-lookup.c: Increment _dl_num_relocations in the four entry
+ point functions, not do_lookup since the later can be called more
+ than once.
+
1999-02-03 Jakub Jelinek <jj@ultra.linux.cz>
* sysdeps/generic/segfault.c: Add ADVANCE_STACK_FRAME
/* Look up a symbol in the loaded objects.
- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
size_t n = scope->r_nlist;
struct link_map *map;
- ++_dl_num_relocations;
-
for (; i < n; ++i)
{
const ElfW(Sym) *symtab;
goto found_it;
}
- /* If we have seem exactly one versioned symbol while we are
+ /* If we have seen exactly one versioned symbol while we are
looking for an unversioned symbol and the version is not the
default version we still accept this symbol since there are
no possible ambiguities. */
struct sym_val current_value = { NULL, NULL };
struct r_scope_elem **scope;
+ ++_dl_num_relocations;
+
/* Search the relevant loaded objects for a definition. */
for (scope = symbol_scope; *scope; ++scope)
if (do_lookup (undef_name, hash, *ref, ¤t_value,
struct r_scope_elem **scope;
size_t i;
+ ++_dl_num_relocations;
+
/* Search the relevant loaded objects for a definition. */
scope = symbol_scope;
for (i = 0; (*scope)->r_duplist[i] != skip_map; ++i)
struct sym_val current_value = { NULL, NULL };
struct r_scope_elem **scope;
+ ++_dl_num_relocations;
+
/* Search the relevant loaded objects for a definition. */
for (scope = symbol_scope; *scope; ++scope)
{
struct r_scope_elem **scope;
size_t i;
+ ++_dl_num_relocations;
+
/* Search the relevant loaded objects for a definition. */
scope = symbol_scope;
for (i = 0; (*scope)->r_duplist[i] != skip_map; ++i)
/* Catch segmentation faults and print backtrace.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
# define INNER_THAN <
#endif
+/* By default assume the `next' pointer in struct layout points to the
+ next struct layout. */
+#ifndef ADVANCE_STACK_FRAME
+# define ADVANCE_STACK_FRAME(next) ((struct layout *) (next))
+#endif
+
struct layout
{
- struct layout *next;
+ void *next;
void *return_address;
};
{
++cnt;
- current = current->next;
+ current = ADVANCE_STACK_FRAME (current->next);
}
arr = alloca (cnt * sizeof (void *));
{
arr[cnt++] = current->return_address;
- current = current->next;
+ current = ADVANCE_STACK_FRAME (current->next);
}
/* If the last return address was NULL, assume that it doesn't count. */
sa.sa_flags |= SA_ONSTACK;
}
}
-
+
if (sigs == NULL)
sigaction (SIGSEGV, &sa, NULL);
else if (sigs[0] == '\0')