summaryrefslogtreecommitdiffstats
path: root/cddl/contrib
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2015-01-06 02:13:49 +0000
committermarkj <markj@FreeBSD.org>2015-01-06 02:13:49 +0000
commit6a7ad120864bf269d1ef19a90ace5c2889c117b4 (patch)
tree366f11a69fee261c338a533460a67c8031f4a37a /cddl/contrib
parent31e20d297940ae18759181d9e91813c7ef820a81 (diff)
downloadFreeBSD-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/contrib')
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/drti.c5
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 ||
OpenPOWER on IntegriCloud