Mercurial > hg > icedtea8
changeset 2882:449b25581834
PR3341: jstack.stp should support ppc64[le,be]
2019-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
PR3341: jstack.stp should support ppc64[le,be]
* NEWS: Updated.
2019-01-28 Mark Wielaard <mjw@redhat.com>
PR3341: jstack.stp should support ppc64[le,be]
* tapset/jstack.stp.in: Add ppc64 support.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Mon, 11 Feb 2019 03:36:11 +0000 |
parents | fbc0e6cbc34f |
children | 97c468298911 |
files | ChangeLog NEWS tapset/jstack.stp.in |
diffstat | 3 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Feb 07 18:18:55 2019 +0000 +++ b/ChangeLog Mon Feb 11 03:36:11 2019 +0000 @@ -1,3 +1,13 @@ +2019-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org> + + PR3341: jstack.stp should support ppc64[le,be] + * NEWS: Updated. + +2019-01-28 Mark Wielaard <mjw@redhat.com> + + PR3341: jstack.stp should support ppc64[le,be] + * tapset/jstack.stp.in: Add ppc64 support. + 2019-02-03 Andrew John Hughes <gnu_andrew@member.fsf.org> Bump aarch32 to jdk8u192-b12-aarch32-181022.
--- a/NEWS Thu Feb 07 18:18:55 2019 +0000 +++ b/NEWS Mon Feb 11 03:36:11 2019 +0000 @@ -120,6 +120,8 @@ - PR3675: Update CVE URL - PR3683: Addition of 8189170 in 8u192 breaks 8197429 backport - PR3691: wget not detected by configure +* SystemTap + - PR3341: jstack.stp should support ppc64[le,be] * AArch64 port - S8160748, PR3682: [AArch64] Inconsistent types for ideal_reg - S8189170, PR3682: [AArch64] Add option to disable stack overflow checking in primordial thread for use with JNI_CreateJavaJVM
--- a/tapset/jstack.stp.in Thu Feb 07 18:18:55 2019 +0000 +++ b/tapset/jstack.stp.in Mon Feb 11 03:36:11 2019 +0000 @@ -55,7 +55,12 @@ @_private global CodeCache_heap; @_private global sp_register; +/* On PowerPC there is a link register, but no frame pointer register. */ +%(arch == "powerpc" %? +@_private global link_register; +%: @_private global fp_register; +%) @_private global pc_register; @_private global ptr_size; @_private global ptr_mask; @@ -108,6 +113,12 @@ pc_register = "pc"; ptr_size = 8; // XXX - might be probing 32-on-64 jvm. ptr_mask = 0xFFFFFFFFFFFFFFFF; + %: %(arch == "powerpc" %? + sp_register = "r1"; + link_register = "link"; + pc_register = "nip"; + ptr_size = 8; // XXX - might be probing 32-on-64 jvm. + ptr_mask = 0xFFFFFFFFFFFFFFFF; %: sp_register = ""; fp_register = ""; @@ -115,7 +126,7 @@ ptr_size = 8; ptr_mask = 0xFFFFFFFFFFFFFFFF; error("unknown architecture") - %) %) %) + %) %) %) %) // Pretend we have an array at address zero and take address of second // element and we have the size. @@ -280,9 +291,16 @@ // to "recover" the previous fp in case we hit a code blob that didn't // preserve it. frames = ""; +%(arch == "powerpc" %? + sp = register(sp_register); + fp = sp + 72; /* fp + (-3 * ptr_size) = 48, parameter save area offset */ + link = register(link_register); + pc = register(pc_register); +%: sp = register(sp_register); fp = register(fp_register); pc = register(pc_register); +%) depth = 0; while (pc != 0 && depth < max_depth) { @@ -441,9 +459,17 @@ old_fp = fp; old_sp = sp +%(arch == "powerpc" %? + sp = user_long(sp); + fp = sp + 72; /* fp + (-3 * ptr_size) = 48, parameter save area offset */ + pc = link; + link = user_long(sp + 16); + trust_fp = 1; /* We don't need to recover the frame pointer. */ +%: sp = fp; fp = user_long(sp); pc = user_long(fp + ptr_size); +%) // Do we need to double check? We do not want to do this // unless necessary. We have to assume most code is "sane"