#! /bin/sh
# Copyright (C) 2012, 2013, 2014 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# elfutils is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. $srcdir/test-subr.sh
testfiles testfile63
testrun_compare ${abs_top_builddir}/src/readelf -n testfile63 <<\EOF
Note segment of 892 bytes at offset 0x274:
Owner Data size Type
CORE 148 PRSTATUS
info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
sigpend: <>
sighold: <>
pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
utime: 0.000000, stime: 0.010000, cutime: 0.000000, cstime: 0.000000
orig_r0: -1, fpvalid: 1
r0: 1 r1: -1091672508 r2: -1091672500
r3: 0 r4: 0 r5: 0
r6: 33728 r7: 0 r8: 0
r9: 0 r10: -1225703496 r11: -1091672844
r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48
pc: 0x00008500 spsr: 0x60000010
CORE 124 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400500
uid: 0, gid: 0, pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
fname: a.out, psargs: ./a.out
CORE 144 AUXV
HWCAP: 0xe8d7 <swp half thumb fast-mult vfp edsp>
PAGESZ: 4096
CLKTCK: 100
PHDR: 0x8034
PHENT: 32
PHNUM: 8
BASE: 0xb6eee000
FLAGS: 0
ENTRY: 0x83c0
UID: 0
EUID: 0
GID: 0
EGID: 0
SECURE: 0
RANDOM: 0xbeee674e
EXECFN: 0xbeee6ff4
PLATFORM: 0xbeee675e
NULL
CORE 116 FPREGSET
f0: 0x000000000000000000000000 f1: 0x000000000000000000000000
f2: 0x000000000000000000000000 f3: 0x000000000000000000000000
f4: 0x000000000000000000000000 f5: 0x000000000000000000000000
f6: 0x000000000000000000000000 f7: 0x000000000000000000000000
LINUX 260 ARM_VFP
fpscr: 0x00000000
d0: 0x0000000000000000 d1: 0x0000000000000000
d2: 0x0000000000000000 d3: 0x0000000000000000
d4: 0x0000000000000000 d5: 0x0000000000000000
d6: 0x0000000000000000 d7: 0x0000000000000000
d8: 0x0000000000000000 d9: 0x0000000000000000
d10: 0x0000000000000000 d11: 0x0000000000000000
d12: 0x0000000000000000 d13: 0x0000000000000000
d14: 0x0000000000000000 d15: 0x0000000000000000
d16: 0x0000000000000000 d17: 0x0000000000000000
d18: 0x0000000000000000 d19: 0x0000000000000000
d20: 0x0000000000000000 d21: 0x0000000000000000
d22: 0x0000000000000000 d23: 0x0000000000000000
d24: 0x0000000000000000 d25: 0x0000000000000000
d26: 0x0000000000000000 d27: 0x0000000000000000
d28: 0x0000000000000000 d29: 0x0000000000000000
d30: 0x0000000000000000 d31: 0x0000000000000000
EOF
testfiles testfile67
testrun_compare ${abs_top_builddir}/src/readelf -n testfile67 <<\EOF
Note segment of 1044 bytes at offset 0xe8:
Owner Data size Type
CORE 336 PRSTATUS
info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4
sigpend: <>
sighold: <>
pid: 805, ppid: 804, pgrp: 804, sid: 699
utime: 0.000042, stime: 0.000103, cutime: 0.000000, cstime: 0.000000
orig_r2: 2571552016, fpvalid: 1
pswm: 0x0705c00180000000 pswa: 0x00000000800000d6
r0: 4393751543808 r1: 4398002544388
r2: 11 r3: 2571578208
r4: 2571702016 r5: 4398003235624
r6: 2571580768 r7: 2571702016
r8: 2571578208 r9: 2571552016
r10: 2571552016 r11: 0
r12: 4398003499008 r13: 2148274656
r14: 0 r15: 4398040761216
a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000
a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000
a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000
a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000
CORE 136 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000400400
uid: 0, gid: 0, pid: 805, ppid: 804, pgrp: 804, sid: 699
fname: 1, psargs: ./1
CORE 304 AUXV
SYSINFO_EHDR: 0
HWCAP: 0x37f
PAGESZ: 4096
CLKTCK: 100
PHDR: 0x80000040
PHENT: 56
PHNUM: 2
BASE: 0
FLAGS: 0
ENTRY: 0x800000d4
UID: 0
EUID: 0
GID: 0
EGID: 0
SECURE: 0
RANDOM: 0x3ffffa8463c
EXECFN: 0x3ffffa85ff4
PLATFORM: 0x3ffffa8464c
NULL
CORE 136 FPREGSET
fpc: 0x00000000
f0: 0x0000000000000040 f1: 0x4b00000000000000
f2: 0x0000000000000041 f3: 0x3ad50b5555555600
f4: 0x0000000000000000 f5: 0x0000000000000000
f6: 0x0000000000000000 f7: 0x0000000000000000
f8: 0x0000000000000000 f9: 0x0000000000000000
f10: 0x0000000000000000 f11: 0x0000000000000000
f12: 0x0000000000000000 f13: 0x0000000000000000
f14: 0x0000000000000000 f15: 0x0000000000000000
LINUX 8 S390_LAST_BREAK
last_break: 0x000003fffd75ccbe
LINUX 4 S390_SYSTEM_CALL
system_call: 0
EOF
testfiles testfile68
testrun_compare ${abs_top_builddir}/src/readelf -n testfile68 <<\EOF
Note segment of 852 bytes at offset 0x94:
Owner Data size Type
CORE 224 PRSTATUS
info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4
sigpend: <>
sighold: <>
pid: 839, ppid: 838, pgrp: 838, sid: 699
utime: 0.000043, stime: 0.000102, cutime: 0.000000, cstime: 0.000000
orig_r2: -1723388288, fpvalid: 1
pswm: 0x070dc000 pswa: 0x8040009a
r0: 0 r1: -43966716 r2: 11 r3: -1723238816
r4: -1723265280 r5: -43275480 r6: -1723245280 r7: -1723265280
r8: -1723238816 r9: -1723388288 r10: -1723388288 r11: 0
r12: -43012096 r13: -2146692640 r14: 0 r15: 2139883440
a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000
a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000
a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000
a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000
CORE 124 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400400
uid: 0, gid: 0, pid: 839, ppid: 838, pgrp: 838, sid: 699
fname: 2, psargs: ./2
CORE 152 AUXV
SYSINFO_EHDR: 0
HWCAP: 0x37f
PAGESZ: 4096
CLKTCK: 100
PHDR: 0x400034
PHENT: 32
PHNUM: 2
BASE: 0
FLAGS: 0
ENTRY: 0x400098
UID: 0
EUID: 0
GID: 0
EGID: 0
SECURE: 0
RANDOM: 0x7f8c090c
EXECFN: 0x7f8c1ff4
PLATFORM: 0x7f8c091c
NULL
CORE 136 FPREGSET
fpc: 0x00000000
f0: 0x0000000000000040 f1: 0x4b00000000000000
f2: 0x0000000000000041 f3: 0x3ad50b5555555600
f4: 0x0000000000000000 f5: 0x0000000000000000
f6: 0x0000000000000000 f7: 0x0000000000000000
f8: 0x0000000000000000 f9: 0x0000000000000000
f10: 0x0000000000000000 f11: 0x0000000000000000
f12: 0x0000000000000000 f13: 0x0000000000000000
f14: 0x0000000000000000 f15: 0x0000000000000000
LINUX 8 S390_LAST_BREAK
last_break: 0xfd75ccbe
LINUX 4 S390_SYSTEM_CALL
system_call: 0
LINUX 64 S390_HIGH_GPRS
high_r0: 0x000003ff, high_r1: 0x000003ff, high_r2: 0x00000000
high_r3: 0x00000000, high_r4: 0x00000000, high_r5: 0x000003ff
high_r6: 0x00000000, high_r7: 0x00000000, high_r8: 0x00000000
high_r9: 0x00000000, high_r10: 0x00000000, high_r11: 0x00000000
high_r12: 0x000003ff, high_r13: 0x00000000, high_r14: 0x00000000
high_r15: 0x00000000
EOF
# To reproduce this core dump, do this on x86_64 machine with Linux
# 3.7 or later:
# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
# $ ./a.out
testfiles testfile71
testrun_compare ${abs_top_builddir}/src/readelf -n testfile71 <<\EOF
Note segment of 1476 bytes at offset 0x430:
Owner Data size Type
CORE 336 PRSTATUS
info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
sigpend: <>
sighold: <>
pid: 9664, ppid: 2868, pgrp: 9664, sid: 2868
utime: 0.000000, stime: 0.004000, cutime: 0.000000, cstime: 0.000000
orig_rax: -1, fpvalid: 0
r15: 0 r14: 0
r13: 140734971656848 r12: 4195328
rbp: 0x00007fff69fe39b0 rbx: 0
r11: 266286012928 r10: 140734971656256
r9: 0 r8: 266289790592
rax: 305419896 rcx: 4195584
rdx: 140734971656872 rsi: 140734971656856
rdi: 1 rip: 0x00000000004004f9
rflags: 0x0000000000010246 rsp: 0x00007fff69fe39b0
fs.base: 0x00007fa1c8933740 gs.base: 0x0000000000000000
cs: 0x0033 ss: 0x002b ds: 0x0000 es: 0x0000 fs: 0x0000 gs: 0x0000
CORE 136 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000000200
uid: 1000, gid: 1000, pid: 9664, ppid: 2868, pgrp: 9664, sid: 2868
fname: a.out, psargs: ./a.out
CORE 128 SIGINFO
si_signo: 11, si_errno: 0, si_code: 1
fault address: 0x12345678
CORE 304 AUXV
SYSINFO_EHDR: 0x7fff69ffe000
HWCAP: 0xafebfbff <fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss tm pbe>
PAGESZ: 4096
CLKTCK: 100
PHDR: 0x400040
PHENT: 56
PHNUM: 9
BASE: 0
FLAGS: 0
ENTRY: 0x400400
UID: 1000
EUID: 1000
GID: 1000
EGID: 1000
SECURE: 0
RANDOM: 0x7fff69fe3d19
EXECFN: 0x7fff69fe4ff0
PLATFORM: 0x7fff69fe3d29
NULL
CORE 469 FILE
10 files:
00400000-00401000 00000000 4096 /home/petr/a.out
00600000-00601000 00000000 4096 /home/petr/a.out
00601000-00602000 00001000 4096 /home/petr/a.out
3dffa00000-3dffa21000 00000000 135168 /usr/lib64/ld-2.17.so
3dffc20000-3dffc21000 00020000 4096 /usr/lib64/ld-2.17.so
3dffc21000-3dffc22000 00021000 4096 /usr/lib64/ld-2.17.so
3dffe00000-3dfffb6000 00000000 1794048 /usr/lib64/libc-2.17.so
3dfffb6000-3e001b6000 001b6000 2097152 /usr/lib64/libc-2.17.so
3e001b6000-3e001ba000 001b6000 16384 /usr/lib64/libc-2.17.so
3e001ba000-3e001bc000 001ba000 8192 /usr/lib64/libc-2.17.so
EOF
# To reproduce this core dump, do this on an aarch64 machine:
# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
# $ ./a.out
testfiles testfile_aarch64_core
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_aarch64_core <<\EOF
Note segment of 2512 bytes at offset 0x270:
Owner Data size Type
CORE 392 PRSTATUS
info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
sigpend: <>
sighold: <>
pid: 16547, ppid: 3822, pgrp: 16547, sid: 3822
utime: 0.010000, stime: 0.000000, cutime: 0.000000, cstime: 0.000000
pc: 0x0000000000400548, pstate: 0x0000000060000000, fpvalid: 1
x0: 305419896 x1: 548685596648
x2: 548685596664 x3: 4195648
x4: 0 x5: 548536191688
x6: 0 x7: -6341196323062964528
x8: 135 x9: 4294967295
x10: 4195026 x11: 184256
x12: 144 x13: 15
x14: 548536635328 x15: 0
x16: 548534815304 x17: 4262024
x18: 548685596000 x19: 0
x20: 0 x21: 4195296
x22: 0 x23: 0
x24: 0 x25: 0
x26: 0 x27: 0
x28: 0 x29: 548685596320
x30: 548534815544 sp: 0x0000007fc035c6a0
CORE 136 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000400400
uid: 0, gid: 0, pid: 16547, ppid: 3822, pgrp: 16547, sid: 3822
fname: a.out, psargs: ./a.out
CORE 128 SIGINFO
si_signo: 11, si_errno: 0, si_code: 1
fault address: 0x12345678
CORE 304 AUXV
SYSINFO_EHDR: 0x7fb7500000
HWCAP: 0x3
PAGESZ: 65536
CLKTCK: 100
PHDR: 0x400040
PHENT: 56
PHNUM: 7
BASE: 0x7fb7520000
FLAGS: 0
ENTRY: 0x4003e0
UID: 0
EUID: 0
GID: 0
EGID: 0
SECURE: 0
RANDOM: 0x7fc035c9e8
EXECFN: 0x7fc035fff0
PLATFORM: 0x7fc035c9f8
NULL
CORE 306 FILE
6 files:
00400000-00410000 00000000 65536 /root/elfutils/build/a.out
00410000-00420000 00000000 65536 /root/elfutils/build/a.out
7fb7370000-7fb74d0000 00000000 1441792 /usr/lib64/libc-2.17.so
7fb74d0000-7fb74f0000 00150000 131072 /usr/lib64/libc-2.17.so
7fb7520000-7fb7540000 00000000 131072 /usr/lib64/ld-2.17.so
7fb7540000-7fb7550000 00010000 65536 /usr/lib64/ld-2.17.so
CORE 528 FPREGSET
fpsr: 0x00000000, fpcr: 0x00000000
v0: 0x00000000000af54b000000000000fe02
v1: 0x00000000000000000000000000000000
v2: 0x00000000000000000000000000000000
v3: 0x00000000000000000000000000000000
v4: 0x00000000000000000000000000000000
v5: 0x00000000000000000000000000000000
v6: 0x00000000000000000000000000000000
v7: 0x00000000000000000000000000000000
v8: 0x00000000000000000000000000000000
v9: 0x00000000000000000000000000000000
v10: 0x00000000000000000000000000000000
v11: 0x00000000000000000000000000000000
v12: 0x00000000000000000000000000000000
v13: 0x00000000000000000000000000000000
v14: 0x00000000000000000000000000000000
v15: 0x00000000000000000000000000000000
v16: 0x00000000000000000000000000000000
v17: 0x00000000000000000000000000000000
v18: 0x00000000000000000000000000000000
v19: 0x00000000000000000000000000000000
v20: 0x00000000000000000000000000000000
v21: 0x00000000000000000000000000000000
v22: 0x00000000000000000000000000000000
v23: 0x00000000000000000000000000000000
v24: 0x00000000000000000000000000000000
v25: 0x00000000000000000000000000000000
v26: 0x00000000000000000000000000000000
v27: 0x00000000000000000000000000000000
v28: 0x00000000000000000000000000000000
v29: 0x00000000000000000000000000000000
v30: 0x00000000000000000000000000000000
v31: 0x00000000000000000000000000000000
LINUX 8 ARM_TLS
tls: 0x0000007fb73606f0
LINUX 264 ARM_HW_BREAK
dbg_info: 0x00000610
DBGBVR0_EL1: 0x0000000000000000, DBGBCR0_EL1: 0x00000000
DBGBVR1_EL1: 0x0000000000000000, DBGBCR1_EL1: 0x00000000
DBGBVR2_EL1: 0x0000000000000000, DBGBCR2_EL1: 0x00000000
DBGBVR3_EL1: 0x0000000000000000, DBGBCR3_EL1: 0x00000000
DBGBVR4_EL1: 0x0000000000000000, DBGBCR4_EL1: 0x00000000
DBGBVR5_EL1: 0x0000000000000000, DBGBCR5_EL1: 0x00000000
DBGBVR6_EL1: 0x0000000000000000, DBGBCR6_EL1: 0x00000000
DBGBVR7_EL1: 0x0000000000000000, DBGBCR7_EL1: 0x00000000
DBGBVR8_EL1: 0x0000000000000000, DBGBCR8_EL1: 0x00000000
DBGBVR9_EL1: 0x0000000000000000, DBGBCR9_EL1: 0x00000000
DBGBVR10_EL1: 0x0000000000000000, DBGBCR10_EL1: 0x00000000
DBGBVR11_EL1: 0x0000000000000000, DBGBCR11_EL1: 0x00000000
DBGBVR12_EL1: 0x0000000000000000, DBGBCR12_EL1: 0x00000000
DBGBVR13_EL1: 0x0000000000000000, DBGBCR13_EL1: 0x00000000
DBGBVR14_EL1: 0x0000000000000000, DBGBCR14_EL1: 0x00000000
DBGBVR15_EL1: 0x0000000000000000, DBGBCR15_EL1: 0x00000000
LINUX 264 ARM_HW_WATCH
dbg_info: 0x00000610
DBGWVR0_EL1: 0x0000000000000000, DBGWCR0_EL1: 0x00000000
DBGWVR1_EL1: 0x0000000000000000, DBGWCR1_EL1: 0x00000000
DBGWVR2_EL1: 0x0000000000000000, DBGWCR2_EL1: 0x00000000
DBGWVR3_EL1: 0x0000000000000000, DBGWCR3_EL1: 0x00000000
DBGWVR4_EL1: 0x0000000000000000, DBGWCR4_EL1: 0x00000000
DBGWVR5_EL1: 0x0000000000000000, DBGWCR5_EL1: 0x00000000
DBGWVR6_EL1: 0x0000000000000000, DBGWCR6_EL1: 0x00000000
DBGWVR7_EL1: 0x0000000000000000, DBGWCR7_EL1: 0x00000000
DBGWVR8_EL1: 0x0000000000000000, DBGWCR8_EL1: 0x00000000
DBGWVR9_EL1: 0x0000000000000000, DBGWCR9_EL1: 0x00000000
DBGWVR10_EL1: 0x0000000000000000, DBGWCR10_EL1: 0x00000000
DBGWVR11_EL1: 0x0000000000000000, DBGWCR11_EL1: 0x00000000
DBGWVR12_EL1: 0x0000000000000000, DBGWCR12_EL1: 0x00000000
DBGWVR13_EL1: 0x0000000000000000, DBGWCR13_EL1: 0x00000000
DBGWVR14_EL1: 0x0000000000000000, DBGWCR14_EL1: 0x00000000
DBGWVR15_EL1: 0x0000000000000000, DBGWCR15_EL1: 0x00000000
EOF
# To reproduce this core dump, do this on an i686 machine:
# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
# $ ./a.out
testfiles testfile_i686_core
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_i686_core <<\EOF
Note segment of 1000 bytes at offset 0x214:
Owner Data size Type
CORE 144 PRSTATUS
info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
sigpend: <>
sighold: <>
pid: 27395, ppid: 1130, pgrp: 27395, sid: 1130
utime: 0.000000, stime: 0.001000, cutime: 0.000000, cstime: 0.000000
orig_eax: -1, fpvalid: 0
ebx: 1334976512 ecx: -1239415396 edx: -1079283900
esi: 0 edi: 0 ebp: 0xbfab6f18
eax: 305419896 eip: 0x08048408 eflags: 0x00010246
esp: 0xbfab6f18
ds: 0x007b es: 0x007b fs: 0x0000 gs: 0x0033 cs: 0x0073 ss: 0x007b
CORE 124 PRPSINFO
state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00000200
uid: 1000, gid: 1000, pid: 27395, ppid: 1130, pgrp: 27395, sid: 1130
fname: a.out, psargs: ./a.out
CORE 128 SIGINFO
si_signo: 11, si_errno: 0, si_code: 1
fault address: 0x12345678
CORE 160 AUXV
SYSINFO: 0xb77fc414
SYSINFO_EHDR: 0xb77fc000
HWCAP: 0x780abfd <fpu de pse tsc msr pae mce cx8 apic sep pge cmov mmx fxsr sse sse2>
PAGESZ: 4096
CLKTCK: 100
PHDR: 0x8048034
PHENT: 32
PHNUM: 9
BASE: 0
FLAGS: 0
ENTRY: 0x80482f0
UID: 1000
EUID: 1000
GID: 1000
EGID: 1000
SECURE: 0
RANDOM: 0xbfab70eb
EXECFN: 0xbfab7ff4
PLATFORM: 0xbfab70fb
NULL
CORE 275 FILE
9 files:
08048000-08049000 00000000 4096 /tmp/a.out
08049000-0804a000 00000000 4096 /tmp/a.out
0804a000-0804b000 00001000 4096 /tmp/a.out
4f744000-4f763000 00000000 126976 /usr/lib/ld-2.18.so
4f764000-4f765000 0001f000 4096 /usr/lib/ld-2.18.so
4f765000-4f766000 00020000 4096 /usr/lib/ld-2.18.so
4f768000-4f920000 00000000 1802240 /usr/lib/libc-2.18.so
4f920000-4f922000 001b8000 8192 /usr/lib/libc-2.18.so
4f922000-4f923000 001ba000 4096 /usr/lib/libc-2.18.so
LINUX 48 386_TLS
index: 6, base: 0xb77da700, limit: 0x000fffff, flags: 0x00000051
index: 7, base: 0x00000000, limit: 0x00000000, flags: 0x00000028
index: 8, base: 0x00000000, limit: 0x00000000, flags: 0x00000028
EOF
exit 0