summaryrefslogtreecommitdiff
path: root/lib/libdtrace/common/dt_pragma.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libdtrace/common/dt_pragma.c')
-rw-r--r--lib/libdtrace/common/dt_pragma.c41
1 files changed, 8 insertions, 33 deletions
diff --git a/lib/libdtrace/common/dt_pragma.c b/lib/libdtrace/common/dt_pragma.c
index 9fae5ac42c40..9cb3c3b8d615 100644
--- a/lib/libdtrace/common/dt_pragma.c
+++ b/lib/libdtrace/common/dt_pragma.c
@@ -21,19 +21,14 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, Joyent Inc. All rights reserved.
*/
#include <assert.h>
#include <strings.h>
#include <alloca.h>
-#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
#include <dt_parser.h>
#include <dt_impl.h>
#include <dt_provider.h>
@@ -201,29 +196,6 @@ dt_pragma_binding(const char *prname, dt_node_t *dnp)
dtp->dt_globals->dh_defer = &dt_pragma_apply;
}
-static void
-dt_pragma_depends_finddep(dtrace_hdl_t *dtp, const char *lname, char *lib,
- size_t len)
-{
- dt_dirpath_t *dirp;
- struct stat sbuf;
- int found = 0;
-
- for (dirp = dt_list_next(&dtp->dt_lib_path); dirp != NULL;
- dirp = dt_list_next(dirp)) {
- (void) snprintf(lib, len, "%s/%s", dirp->dir_path, lname);
-
- if (stat(lib, &sbuf) == 0) {
- found = 1;
- break;
- }
- }
-
- if (!found)
- xyerror(D_PRAGMA_DEPEND,
- "failed to find dependency in libpath: %s", lname);
-}
-
/*
* The #pragma depends_on directive can be used to express a dependency on a
* module, provider or library which if not present will cause processing to
@@ -253,13 +225,16 @@ dt_pragma_depends(const char *prname, dt_node_t *cnp)
if (yypcb->pcb_cflags & DTRACE_C_CTL) {
assert(dtp->dt_filetag != NULL);
- dt_pragma_depends_finddep(dtp, nnp->dn_string, lib,
- sizeof (lib));
-
+ /*
+ * We have the file we are working on in dtp->dt_filetag
+ * so find that node and add the dependency in.
+ */
dld = dt_lib_depend_lookup(&dtp->dt_lib_dep,
dtp->dt_filetag);
assert(dld != NULL);
+ (void) snprintf(lib, sizeof (lib), "%s%s",
+ dld->dtld_libpath, nnp->dn_string);
if ((dt_lib_depend_add(dtp, &dld->dtld_dependencies,
lib)) != 0) {
xyerror(D_PRAGMA_DEPEND,
@@ -281,8 +256,8 @@ dt_pragma_depends(const char *prname, dt_node_t *cnp)
dtp->dt_filetag);
assert(dld != NULL);
- dt_pragma_depends_finddep(dtp, nnp->dn_string, lib,
- sizeof (lib));
+ (void) snprintf(lib, sizeof (lib), "%s%s",
+ dld->dtld_libpath, nnp->dn_string);
dld = dt_lib_depend_lookup(&dtp->dt_lib_dep_sorted,
lib);
assert(dld != NULL);