Blame tests/run-readelf-n.sh

Packit Service 97d2fb
# Copyright (C) 2018 Red Hat, Inc.
Packit Service 97d2fb
# This file is part of elfutils.
Packit Service 97d2fb
#
Packit Service 97d2fb
# This file is free software; you can redistribute it and/or modify
Packit Service 97d2fb
# it under the terms of the GNU General Public License as published by
Packit Service 97d2fb
# the Free Software Foundation; either version 3 of the License, or
Packit Service 97d2fb
# (at your option) any later version.
Packit Service 97d2fb
#
Packit Service 97d2fb
# elfutils is distributed in the hope that it will be useful, but
Packit Service 97d2fb
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 97d2fb
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 97d2fb
# GNU General Public License for more details.
Packit Service 97d2fb
#
Packit Service 97d2fb
# You should have received a copy of the GNU General Public License
Packit Service 97d2fb
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 97d2fb
Packit Service 97d2fb
. $srcdir/test-subr.sh
Packit Service 97d2fb
Packit Service 97d2fb
# - testfile-gnu-property-note.c
Packit Service 97d2fb
# int
Packit Service 97d2fb
# main ()
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   return 0;
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# gcc -fcf-protection -c testfile-gnu-property-note.c
Packit Service 97d2fb
# gcc -o testfile-gnu-property-note testfile-gnu-property-note.o
Packit Service 97d2fb
# eu-strip --strip-sections testfile-gnu-property-note
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile-gnu-property-note.o testfile-gnu-property-note
Packit Service 97d2fb
Packit Service 97d2fb
# Test reading notes through sections
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 6] '.note.gnu.property' of 32 bytes at offset 0x80:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    X86 FEATURE_1_AND: 00000003 IBT SHSTK
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# Test reading notes through segments
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note segment of 32 bytes at offset 0x300:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    X86 FEATURE_1_AND: 00000003 IBT SHSTK
Packit Service 97d2fb
Packit Service 97d2fb
Note segment of 68 bytes at offset 0x320:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_ABI_TAG
Packit Service 97d2fb
    OS: Linux, ABI: 3.2.0
Packit Service 97d2fb
  GNU                   20  GNU_BUILD_ID
Packit Service 97d2fb
    Build ID: 83cb2229fabd2065d1361f5b46424cd75270f94b
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# NT_VERSION note type clashes with "GNU" owner type NT_GNU_ABI_TAG.
Packit Service 97d2fb
# Uses owner name (with zero desc) for version string.
Packit Service 97d2fb
testfiles testfile11
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile11 << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 2] '.note.ABI-tag' of 32 bytes at offset 0x128:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_ABI_TAG
Packit Service 97d2fb
    OS: Linux, ABI: 2.2.5
Packit Service 97d2fb
Packit Service 97d2fb
Note section [35] '.note' of 60 bytes at offset 0x13364:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  01.01                  0  VERSION
Packit Service 97d2fb
  01.01                  0  VERSION
Packit Service 97d2fb
  01.01                  0  VERSION
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# See run-annobingroup.sh
Packit Service 97d2fb
testfiles testfile-annobingroup.o
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile-annobingroup.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 5] '.gnu.build.attributes' of 272 bytes at offset 0x50:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GA                    16  GNU Build Attribute OPEN
Packit Service 97d2fb
    Address Range: 0 - 0
Packit Service 97d2fb
    VERSION: "3p8"
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    TOOL: "gcc 8.1.1 20180712"
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    "GOW": 5
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    STACK_PROT: 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    "stack_clash": FALSE
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    "cf_protection": 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    PIC: 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    SHORT_ENUM: FALSE
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    ABI: c001100000012
Packit Service 97d2fb
  GA                     0  GNU Build Attribute OPEN
Packit Service 97d2fb
    "stack_realign": FALSE
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 7] '.gnu.build.attributes..text.unlikely' of 216 bytes at offset 0x160:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GA                    16  GNU Build Attribute FUNC
Packit Service 97d2fb
    Address Range: 0 - 0
Packit Service 97d2fb
    ABI: c001100000012
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    "stack_realign": FALSE
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    STACK_PROT: 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    "stack_clash": FALSE
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    "cf_protection": 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    PIC: 0
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    "GOW": 5
Packit Service 97d2fb
  GA                     0  GNU Build Attribute FUNC
Packit Service 97d2fb
    SHORT_ENUM: FALSE
Packit Service 97d2fb
Packit Service 97d2fb
Note section [22] '.note.gnu.property' of 48 bytes at offset 0x40c:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   32  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    X86 0xc0000000 data: 00 00 00 00
Packit Service 97d2fb
    X86 0xc0000001 data: 00 00 00 00
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
#
Packit Service 97d2fb
# = gnu_props.S
Packit Service 97d2fb
#
Packit Service 97d2fb
# #define NT_GNU_PROPERTY_TYPE_0 5
Packit Service 97d2fb
# #define GNU_PROPERTY_STACK_SIZE 1
Packit Service 97d2fb
# #define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
Packit Service 97d2fb
Packit Service 97d2fb
# /* Normal notes always have alignment and padding of 4 bytes,
Packit Service 97d2fb
#    but GNU Property notes use 4 byte words, with 8 byte padding
Packit Service 97d2fb
#    for ELFCLASS64.  */
Packit Service 97d2fb
# #if __SIZEOF_PTRDIFF_T__  == 8
Packit Service 97d2fb
# # define ALIGN 3
Packit Service 97d2fb
# #elif __SIZEOF_PTRDIFF_T__  == 4
Packit Service 97d2fb
# # define ALIGN 2
Packit Service 97d2fb
# #endif
Packit Service 97d2fb
#
Packit Service 97d2fb
# 	.section ".note.gnu.property", "a"
Packit Service 97d2fb
# 	.p2align ALIGN
Packit Service 97d2fb
# 	/* First note.  */
Packit Service 97d2fb
# 	.long 1f - 0f			/* name length.  */
Packit Service 97d2fb
# 	.long 4f - 2f			/* data length.  */
Packit Service 97d2fb
# 	.long NT_GNU_PROPERTY_TYPE_0	/* note type.  */
Packit Service 97d2fb
# 0:
Packit Service 97d2fb
# 	.asciz "GNU"			/* vendor name.  */
Packit Service 97d2fb
# 1:
Packit Service 97d2fb
# 	.p2align ALIGN			/* Padding.  */
Packit Service 97d2fb
# 2:
Packit Service 97d2fb
# 	.long GNU_PROPERTY_STACK_SIZE	/* pr_type.  */
Packit Service 97d2fb
# 	.long 4f - 3f			/* pr_datasz.  */
Packit Service 97d2fb
# 3:
Packit Service 97d2fb
# 	.dc.a 0x280000			/* Stack size.  */
Packit Service 97d2fb
# 4:
Packit Service 97d2fb
# 	.p2align ALIGN
Packit Service 97d2fb
#
Packit Service 97d2fb
# 	/* Second note.  */
Packit Service 97d2fb
# 	.long 6f - 5f				/* name length.  */
Packit Service 97d2fb
# 	.long 8f - 7f				/* data length.  */
Packit Service 97d2fb
# 	.long NT_GNU_PROPERTY_TYPE_0		/* note type.  */
Packit Service 97d2fb
# 5:
Packit Service 97d2fb
# 	.asciz "GNU"				/* vendor name.  */
Packit Service 97d2fb
# 6:
Packit Service 97d2fb
# 	.p2align ALIGN				/* Padding.  */
Packit Service 97d2fb
# 7:
Packit Service 97d2fb
# 	.long GNU_PROPERTY_NO_COPY_ON_PROTECTED /* pr_type.  */
Packit Service 97d2fb
# 	.long 0					/* pr_datasz.  */
Packit Service 97d2fb
# 	/* No data.  */
Packit Service 97d2fb
# 8:
Packit Service 97d2fb
# 	.p2align ALIGN
Packit Service 97d2fb
#
Packit Service 97d2fb
# On x86_64
Packit Service 97d2fb
# gcc -m64 -c -o testfile_gnu_props_64le.o gnu_props.S
Packit Service 97d2fb
# gcc -m32 -c -o testfile_gnu_props_32le.o gnu_props.S
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile_gnu_props.32le.o testfile_gnu_props.64le.o
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_gnu_props.32le.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 4] '.note.gnu.property' of 52 bytes at offset 0x34:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   12  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    STACK_SIZE 0x280000
Packit Service 97d2fb
  GNU                    8  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    NO_COPY_ON_PROTECTION
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_gnu_props.64le.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 4] '.note.gnu.property' of 56 bytes at offset 0x40:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    STACK_SIZE 0x280000
Packit Service 97d2fb
  GNU                    8  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    NO_COPY_ON_PROTECTION
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# On ppc64
Packit Service 97d2fb
# gcc -m32 -c -o testfile_gnu_props.32be.o gnu_props.S
Packit Service 97d2fb
# gcc -m64 -c -o testfile_gnu_props.64be.o gnu_props.S
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile_gnu_props.32be.o testfile_gnu_props.64be.o
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_gnu_props.32be.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 4] '.note.gnu.property' of 52 bytes at offset 0x34:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   12  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    STACK_SIZE 0x280000
Packit Service 97d2fb
  GNU                    8  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    NO_COPY_ON_PROTECTION
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile_gnu_props.64be.o << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 4] '.note.gnu.property' of 56 bytes at offset 0x40:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    STACK_SIZE 0x280000
Packit Service 97d2fb
  GNU                    8  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    NO_COPY_ON_PROTECTION
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
# - testfile-gnu-property-note.c
Packit Service 97d2fb
# int
Packit Service 97d2fb
# main ()
Packit Service 97d2fb
# {
Packit Service 97d2fb
#   return 0;
Packit Service 97d2fb
# }
Packit Service 97d2fb
#
Packit Service 97d2fb
# gcc -mbranch-protection=standard -c testfile-gnu-property-note.c
Packit Service 97d2fb
# gcc -o testfile-gnu-property-note-aarch64 testfile-gnu-property-note.o
Packit Service 97d2fb
# eu-strip --remove-section=.gnu.build.attributes \
Packit Service 97d2fb
#	   testfile-gnu-property-note-aarch64
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile-gnu-property-note-aarch64
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/src/readelf -n testfile-gnu-property-note-aarch64 << EOF
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 2] '.note.gnu.property' of 32 bytes at offset 0x2c8:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_PROPERTY_TYPE_0
Packit Service 97d2fb
    AARCH64 FEATURE_1_AND: 00000003 BTI PAC
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 3] '.note.gnu.build-id' of 36 bytes at offset 0x2e8:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   20  GNU_BUILD_ID
Packit Service 97d2fb
    Build ID: af82d6df6f3b396487e3e27a826ca9cbbbecbe5f
Packit Service 97d2fb
Packit Service 97d2fb
Note section [ 4] '.note.ABI-tag' of 32 bytes at offset 0x30c:
Packit Service 97d2fb
  Owner          Data size  Type
Packit Service 97d2fb
  GNU                   16  GNU_ABI_TAG
Packit Service 97d2fb
    OS: Linux, ABI: 3.7.0
Packit Service 97d2fb
EOF