diff --git a/tests/test-progs/stack-print/bin/x86/linux/stack-print b/tests/test-progs/stack-print/bin/x86/linux/stack-print
new file mode 100755
index 0000000..e40dc48
--- /dev/null
+++ b/tests/test-progs/stack-print/bin/x86/linux/stack-print
Binary files differ
diff --git a/tests/test-progs/stack-print/src/stack-print.c b/tests/test-progs/stack-print/src/stack-print.c
new file mode 100644
index 0000000..9fbf962
--- /dev/null
+++ b/tests/test-progs/stack-print/src/stack-print.c
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2017 Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * For use for simulation and test purposes only
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Brandon Potter
+ */
+
+#include <elf.h>
+#include <stdio.h>
+
+int main(int argc, char **argv, char **envp)
+{
+    int i;
+
+    printf("%p: argc: [%d]\n", &argc, argc);
+    printf("\n");
+
+    for (i = 0; i < argc; i++)
+        printf("%p: argv[%d]: [%s]\n", &argv[i], i, argv[i]);
+    printf("\n");
+
+    i = 0;
+    while (envp[i] != NULL) {
+        printf("%p: envp[%d]: [%s]\n", &envp[i], i, envp[i]);
+        i++;
+    }
+    printf("\n");
+
+    Elf64_auxv_t *auxv = (Elf64_auxv_t*)&envp[--i];
+    while (auxv++) {
+        char *type;
+        switch(auxv->a_type) {
+            case AT_IGNORE:
+                type = "AT_IGNORE";
+                break;
+            case AT_EXECFD:
+                type = "AT_EXECFD";
+                break;
+            case AT_PHDR:
+                type = "AT_PHDR";
+                break;
+            case AT_PHENT:
+                type = "AT_PHENT";
+                break;
+            case AT_PHNUM:
+                type = "AT_PHNUM";
+                break;
+            case AT_PAGESZ:
+                type = "AT_PAGESZ";
+                break;
+            case AT_BASE:
+                type = "AT_BASE";
+                break;
+            case AT_FLAGS:
+                type = "AT_FLAGS";
+                break;
+            case AT_ENTRY:
+                type = "AT_ENTRY";
+                break;
+            case AT_NOTELF:
+                type = "AT_NOTELF";
+                break;
+            case AT_UID:
+                type = "AT_UID";
+                break;
+            case AT_EUID:
+                type = "AT_EUID";
+                break;
+            case AT_GID:
+                type = "AT_GID";
+                break;
+            case AT_EGID:
+                type = "AT_EGID";
+                break;
+            case AT_CLKTCK:
+                type = "AT_CLKTCK";
+                break;
+            case AT_PLATFORM:
+                type = "AT_PLATFORM";
+                break;
+            case AT_HWCAP:
+                type = "AT_HWCAP";
+                break;
+            case AT_FPUCW:
+                type = "AT_FPUCW";
+                break;
+            case AT_DCACHEBSIZE:
+                type = "AT_DCACHEBSIZE";
+                break;
+            case AT_ICACHEBSIZE:
+                type = "AT_ICACHEBSIZE";
+                break;
+            case AT_UCACHEBSIZE:
+                type = "AT_UCACHEBSIZE";
+                break;
+            case AT_IGNOREPPC:
+                type = "AT_IGNOREPPC";
+                break;
+            case AT_SECURE:
+                type = "AT_SECURE";
+                break;
+            case AT_BASE_PLATFORM:
+                type = "AT_BASE_PLATFORM";
+                break;
+            case AT_RANDOM:
+                type = "AT_RANDOM";
+                break;
+            case AT_EXECFN:
+                type = "AT_EXECFN";
+                break;
+            case AT_SYSINFO:
+                type = "AT_SYSINFO";
+                break;
+            case AT_SYSINFO_EHDR:
+                type = "AT_SYSINFO_EHDR";
+                break;
+            case AT_L1I_CACHESHAPE:
+                type = "AT_L1I_CACHESHAPE";
+                break;
+            case AT_L1D_CACHESHAPE:
+                type = "AT_L1D_CACHESHAPE";
+                break;
+            case AT_L2_CACHESHAPE:
+                type = "AT_L2_CACHESHAPE";
+                break;
+            case AT_L3_CACHESHAPE:
+                type = "AT_L3_CACHESHAPE";
+                break;
+            case AT_NULL:
+            default:
+                printf("\n");
+                return 0;
+        }
+        printf("%p: %s: [%lx]\n", auxv, type, auxv->a_un.a_val);
+    }
+}
+
