diff options
author | markj <markj@FreeBSD.org> | 2015-01-06 02:13:49 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2015-01-06 02:13:49 +0000 |
commit | 6a7ad120864bf269d1ef19a90ace5c2889c117b4 (patch) | |
tree | 366f11a69fee261c338a533460a67c8031f4a37a /cddl | |
parent | 31e20d297940ae18759181d9e91813c7ef820a81 (diff) | |
download | FreeBSD-src-6a7ad120864bf269d1ef19a90ace5c2889c117b4.zip FreeBSD-src-6a7ad120864bf269d1ef19a90ace5c2889c117b4.tar.gz |
MFC r276250:
DOF tables are aligned according to the DOF section's alignment constraint,
so take this into account when iterating over DOF tables.
PR: 195555
Diffstat (limited to 'cddl')
-rw-r--r-- | cddl/contrib/opensolaris/lib/libdtrace/common/drti.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c b/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c index bb02d8c..b2854d2 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c @@ -163,6 +163,7 @@ dtrace_dof_init(void) size_t shstridx, symtabidx = 0, dynsymidx = 0; unsigned char *buf; int fixedprobes; + uint64_t aligned_filesz; #endif if (getenv("DTRACE_DOF_INIT_DISABLE") != NULL) @@ -226,7 +227,9 @@ dtrace_dof_init(void) while ((char *) dof < (char *) dofdata->d_buf + dofdata->d_size) { fixedprobes = 0; - dof_next = (void *) ((char *) dof + dof->dofh_filesz); + aligned_filesz = (shdr.sh_addralign == 0 ? dof->dofh_filesz : + roundup2(dof->dofh_filesz, shdr.sh_addralign)); + dof_next = (void *) ((char *) dof + aligned_filesz); #endif if (dof->dofh_ident[DOF_ID_MAG0] != DOF_MAG_MAG0 || |