summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorDan McDonald <danmcd@nexenta.com>2011-11-18 20:48:37 +0000
committerDan McDonald <danmcd@nexenta.com>2011-11-18 20:48:37 +0000
commit149775e4e52b307722e6ba685551b334e3f2b346 (patch)
tree21a2f2f31ec11dfad958eed029b81fdb99ecf3ab /usr/src
parent4a3b1d5b615ff6e54da1cc17f331e1ac794c5191 (diff)
downloadillumos-joyent-149775e4e52b307722e6ba685551b334e3f2b346.tar.gz
1803 appcert's symbol hash insert is needlessly baroque
Reviewed by: Garrett D'Amore <garrett@nexenta.com> Reviewed by: Gordon Ross <gwr@nexenta.com> Reviewed by: Jason King <jason.brian.king@gmail.com> Reviewed by: Joshua M. Clulow <josh@sysmgr.org> Approved by: Gordon Ross <gwr@nexenta.com>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/abi/appcert/static_prof/static_prof.c55
1 files changed, 19 insertions, 36 deletions
diff --git a/usr/src/cmd/abi/appcert/static_prof/static_prof.c b/usr/src/cmd/abi/appcert/static_prof/static_prof.c
index 7f1675fa15..7d2d71c20f 100644
--- a/usr/src/cmd/abi/appcert/static_prof/static_prof.c
+++ b/usr/src/cmd/abi/appcert/static_prof/static_prof.c
@@ -28,7 +28,7 @@
/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
-#pragma ident "%Z%%M% %I% %E% SMI"
+/* Copyright 2011 Nexenta Systems, Inc. All rights reserved. */
/* ------------------------------------------------------------------------ */
@@ -100,42 +100,27 @@ store_binding(binding_bucket * bind)
{
unsigned long bktno;
unsigned long orig_bktno;
- int table_full = FALSE;
- int i;
bktno = my_elf_hash(bind->sym) % DEFBKTS;
orig_bktno = bktno;
- if (!bkts[bktno].sym) {
- bkts[bktno].sym = bind->sym;
- bkts[bktno].obj = bind->obj;
- bkts[bktno].ref_lib = bind->ref_lib;
- bkts[bktno].def_lib = bind->def_lib;
- bkts[bktno].section = bind->section;
- bkts[bktno].stbind = bind->stbind;
- bkts[bktno].sttype = bind->sttype;
- } else {
+ while (bkts[bktno].sym != NULL) {
bktno = (bktno + 1) % DEFBKTS;
- for (i = bktno; i < DEFBKTS; i = (i + 1) % DEFBKTS) {
- if (i == orig_bktno) {
- table_full = TRUE;
- exit(1);
- }
- if (!bkts[i].sym)
- break;
- }
- if ((!bkts[i].sym) && (table_full != TRUE)) {
- bkts[i].sym = bind->sym;
- bkts[i].obj = bind->obj;
- bkts[i].ref_lib = bind->ref_lib;
- bkts[i].def_lib = bind->def_lib;
- bkts[i].section = bind->section;
- bkts[i].stbind = bind->stbind;
- bkts[i].sttype = bind->sttype;
- }
+
+ if (bktno == orig_bktno)
+ exit(1);
}
+
+ bkts[bktno].sym = bind->sym;
+ bkts[bktno].obj = bind->obj;
+ bkts[bktno].ref_lib = bind->ref_lib;
+ bkts[bktno].def_lib = bind->def_lib;
+ bkts[bktno].section = bind->section;
+ bkts[bktno].stbind = bind->stbind;
+ bkts[bktno].sttype = bind->sttype;
}
+
/* ========== check_store_binding ========================================= */
/*
* DESCRIPTION:
@@ -1023,8 +1008,7 @@ scan_symbols(obj_list * c,
binding_bucket *binding;
/* look only at .text section symbols */
if (!is_text_section(symtab_entry->st_shndx,
- c->obj->elf,
- c->obj->ehdr))
+ c->obj->elf, c->obj->ehdr))
continue;
/* look only at weak and global symbols */
@@ -1049,7 +1033,7 @@ scan_symbols(obj_list * c,
}
sym_name = buf + symtab_entry->st_name;
binding = (struct binding_bucket *)
- malloc(sizeof (binding_bucket));
+ malloc(sizeof (binding_bucket));
binding->sym = sym_name;
binding->obj = c->obj->ename;
binding->section = "TEXT";
@@ -1206,7 +1190,7 @@ print_symtab(obj_list * com,
c = (obj_list *) malloc(sizeof (obj_list));
c->obj = (obj_com *) malloc(sizeof (obj_com));
fullname = (char *)malloc(strlen(com->obj->ename)
- + strlen(filename) + 2);
+ + strlen(filename) + 2);
(void *) strcpy(fullname, com->obj->ename);
(void *) strcat(fullname, "(");
(void *) strcat(fullname, filename);
@@ -1470,7 +1454,7 @@ find_dtneeded(obj_list * c)
if (dcurrent->d_tag == DT_NEEDED) {
tmp_lib = (dt_list *) malloc(sizeof (dt_list));
tmp_lib->libname = c->obj->dynnames +
- dcurrent->d_un.d_val;
+ dcurrent->d_un.d_val;
tmp_lib->d_tag = dcurrent->d_tag;
tmp_lib->next = NULL;
dt_needed = add_dtneeded(dt_needed, tmp_lib);
@@ -1683,8 +1667,7 @@ analyze_args(obj_list * c,
if (c->obj->numfiles > 0) {
i = 0;
c->obj->filenames = (char **)
- malloc(sizeof (char *) *
- (c->obj->numfiles + 1));
+ malloc(sizeof (char *) * (c->obj->numfiles + 1));
for (; optind < argc; i++, optind++)
c->obj->filenames[i] = argv[optind];
}