summaryrefslogtreecommitdiffstats
path: root/cddl/contrib/opensolaris/lib/libdtrace/common
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2010-09-09 11:10:15 +0000
committerrpaulo <rpaulo@FreeBSD.org>2010-09-09 11:10:15 +0000
commitbf61bd49f55cf9af9d54bf6c18a64e95eec4b29c (patch)
treeefc59cc0b124b6399d89c7c828eb66b8b0ca9f31 /cddl/contrib/opensolaris/lib/libdtrace/common
parenta2f2f93652c6110c2d126720bc696a507347df3c (diff)
downloadFreeBSD-src-bf61bd49f55cf9af9d54bf6c18a64e95eec4b29c.zip
FreeBSD-src-bf61bd49f55cf9af9d54bf6c18a64e95eec4b29c.tar.gz
Don't clobber an existing target object file when doing the DTrace
linking process. This is needed because we change the source object files and the second this dtrace -G is run, no probes will be found. This hack allows us to build postgres with DTrace probes enabled. I'll try to find a way to fix this without needing this hack. Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libdtrace/common')
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
index 0b8899a..ca355ea 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
@@ -1616,6 +1616,18 @@ dtrace_program_link(dtrace_hdl_t *dtp, dtrace_prog_t *pgp, uint_t dflags,
int eprobes = 0, ret = 0;
#if !defined(sun)
+ if (access(file, R_OK) == 0) {
+ fprintf(stderr, "dtrace: target object (%s) already exists. "
+ "Please remove the target\ndtrace: object and rebuild all "
+ "the source objects if you wish to run the DTrace\n"
+ "dtrace: linking process again\n", file);
+ /*
+ * Several build infrastructures run DTrace twice (e.g.
+ * postgres) and we don't want the build to fail. Return
+ * 0 here since this isn't really a fatal error.
+ */
+ return (0);
+ }
/* XXX Should get a temp file name here. */
snprintf(tfile, sizeof(tfile), "%s.tmp", file);
#endif
OpenPOWER on IntegriCloud