From fd96948662fe961d4882376070612bb0357cd303 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 16 Sep 2020 13:53:37 +0200 Subject: libhugetlbfs: revert one commit from 2.23 to work around build error on arm * works around ERROR: libhugetlbfs-1_2.23-r0 do_populate_sysroot: Fatal errors occurred in subprocesses: Command '['arm-oe-linux-gnueabi-strip', '--remove-section=.comment', '--remove-section=.note', 'libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw']' returned non-zero exit status 1. Subprocess output:arm-oe-linux-gnueabi-strip: libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58: error: PHDR segment not covered by LOAD segment arm-oe-linux-gnueabi-strip: libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58[.interp]: file format not recognized Signed-off-by: Martin Jansa Signed-off-by: Khem Raj --- ...ugetlbfs-fix-Ttext-segment-argument-on-AA.patch | 210 +++++++++++++++++++++ .../libhugetlbfs/libhugetlbfs_git.bb | 1 + 2 files changed, 211 insertions(+) create mode 100644 meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch new file mode 100644 index 0000000000..0787ef27d2 --- /dev/null +++ b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch @@ -0,0 +1,210 @@ +From 0a163f60b4a316c4b6f1726a71c84755f3bd85e7 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Wed, 16 Sep 2020 04:36:04 -0700 +Subject: [PATCH] Revert "ld.hugetlbfs: fix -Ttext-segment argument on AArch64" + +This reverts commit 852dcc963ce44861ed7c4e225aa92ff2b5b43579. + +* works around + ERROR: libhugetlbfs-1_2.23-r0 do_populate_sysroot: Fatal errors occurred in subprocesses: + Command '['arm-oe-linux-gnueabi-strip', '--remove-section=.comment', '--remove-section=.note', 'libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw']' returned non-zero exit status 1. + Subprocess output:arm-oe-linux-gnueabi-strip: + libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58: error: PHDR segment not covered by LOAD segment + arm-oe-linux-gnueabi-strip: libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58[.interp]: file format not recognized + +I don't see anything suspicious in the build (the same cmdline as in 2.22 +version), but it uses + +libhugetlbfs/1_2.22-r0-old/temp/log.do_compile:arm-oe-linux-gnueabi-gcc + -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1 +-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security +-Werror=format-security -Werror=return-type +--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.22-r0/recipe-sysroot +-I.. -O2 -Wall -g -o obj32/linkhuge_rw.o -c linkhuge_rw.c +libhugetlbfs/1_2.22-r0-old/temp/log.do_compile:arm-oe-linux-gnueabi-gcc + -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1 +-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security +-Werror=format-security -Werror=return-type +--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.22-r0/recipe-sysroot +-B./obj32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-ldl -L../obj32 -o obj32/linkhuge_rw -Wl,--no-as-needed -lpthread -ldl +-lhugetlbfs_privutils -Wl,--hugetlbfs-align obj32/linkhuge_rw.o +obj32/testutils.o +libhugetlbfs/1_2.23-r0-new/temp/log.do_compile:arm-oe-linux-gnueabi-gcc + -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1 +-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security +-Werror=format-security -Werror=return-type +--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.23-r0/recipe-sysroot +-I.. -O2 -Wall -g -o obj32/linkhuge_rw.o -c linkhuge_rw.c +libhugetlbfs/1_2.23-r0-new/temp/log.do_compile:arm-oe-linux-gnueabi-gcc + -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1 +-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security +-Werror=format-security -Werror=return-type +--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.23-r0/recipe-sysroot +-B./obj32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now +-ldl -L../obj32 -o obj32/linkhuge_rw -Wl,--no-as-needed -lpthread -ldl +-lhugetlbfs_privutils -Wl,--hugetlbfs-align obj32/linkhuge_rw.o +obj32/testutils.o + +And the git log between 2.22 and 2.23 is also very short and looks +reasonable. +https://github.com/libhugetlbfs/libhugetlbfs/compare/2.22...2.23 + +When checking with readelf -l it also shows the error about PHDR segment: +arm-oe-linux-gnueabi-readelf -l +./1_2.22-r0-old/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw + +Elf file type is DYN (Shared object file) +Entry point 0x201105 +There are 10 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + PHDR 0x000034 0x00200034 0x00200034 0x00140 0x00140 R 0x4 + INTERP 0x000174 0x00200174 0x00200174 0x0001d 0x0001d R 0x1 + [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3] + LOAD 0x000000 0x00200000 0x00200000 0x1222c 0x1222c R E 0x200000 + LOAD 0x1ffdf0 0x005ffdf0 0x005ffdf0 0x102e0 0x202ec RW 0x200000 + DYNAMIC 0x1ffdf8 0x005ffdf8 0x005ffdf8 0x00128 0x00128 RW 0x4 + NOTE 0x000194 0x00200194 0x00200194 0x00044 0x00044 R 0x4 + GNU_EH_FRAME 0x012224 0x00212224 0x00212224 0x00008 0x00008 R 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 + EXIDX 0x001c5c 0x00201c5c 0x00201c5c 0x00008 0x00008 R 0x4 + GNU_RELRO 0x1ffdf0 0x005ffdf0 0x005ffdf0 0x00210 0x00210 RW 0x4 + + Section to Segment mapping: + Segment Sections... + 00 + 01 .interp + 02 .interp .note.ABI-tag .note.gnu.build-id .dynsym .dynstr +.gnu.hash .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text +.fini .ARM.extab .ARM.exidx .rodata .eh_frame .eh_frame_hdr + 03 .fini_array .init_array .dynamic .got .data .bss + 04 .dynamic + 05 .note.ABI-tag .note.gnu.build-id + 06 .eh_frame_hdr + 07 + 08 .ARM.extab .ARM.exidx + 09 .fini_array .init_array .dynamic .got + +arm-oe-linux-gnueabi-readelf -l +./1_2.23-r0-new/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw + +Elf file type is DYN (Shared object file) +Entry point 0x31cd1 +There are 10 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + PHDR 0x000000 0x00000000 0x00000000 0x00000 0x00000 R 0 +readelf: Error: the PHDR segment is not covered by a LOAD segment + INTERP 0x030d40 0x00030d40 0x00030d40 0x0001d 0x0001d R 0x1 + [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3] + LOAD 0x030d40 0x00030d40 0x00030d40 0x120b8 0x120b8 R E 0x200000 + LOAD 0x1ffdf0 0x003ffdf0 0x003ffdf0 0x102e0 0x202ec RW 0x200000 + DYNAMIC 0x1ffdf8 0x003ffdf8 0x003ffdf8 0x00128 0x00128 RW 0x4 + NOTE 0x030d60 0x00030d60 0x00030d60 0x00044 0x00044 R 0x4 + GNU_EH_FRAME 0x042df0 0x00042df0 0x00042df0 0x00008 0x00008 R 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 + EXIDX 0x032828 0x00032828 0x00032828 0x00008 0x00008 R 0x4 + GNU_RELRO 0x1ffdf0 0x003ffdf0 0x003ffdf0 0x00210 0x00210 RW 0x4 + + Section to Segment mapping: + Segment Sections... + 00 + 01 .interp + 02 .interp .note.ABI-tag .note.gnu.build-id .dynsym .dynstr +.gnu.hash .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text +.fini .ARM.extab .ARM.exidx .rodata .eh_frame .eh_frame_hdr + 03 .fini_array .init_array .dynamic .got .data .bss + 04 .dynamic + 05 .note.ABI-tag .note.gnu.build-id + 06 .eh_frame_hdr + 07 + 08 .ARM.extab .ARM.exidx + 09 .fini_array .init_array .dynamic .got + +And the diff between these 2: + +1_2.22-r0-old/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw.readelf +1_2.23-r0-new/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw.readelf + Elf file type is DYN (Shared object file) +-Entry point 0x201105 ++Entry point 0x31cd1 + There are 10 program headers, starting at offset 52 + + Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align +- PHDR 0x000034 0x00200034 0x00200034 0x00140 0x00140 R 0x4 +- INTERP 0x000174 0x00200174 0x00200174 0x0001d 0x0001d R 0x1 ++ PHDR 0x000000 0x00000000 0x00000000 0x00000 0x00000 R 0 ++readelf: Error: the PHDR segment is not covered by a LOAD segment ++ INTERP 0x030d40 0x00030d40 0x00030d40 0x0001d 0x0001d R 0x1 + [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3] +- LOAD 0x000000 0x00200000 0x00200000 0x1222c 0x1222c R E 0x200000 +- LOAD 0x1ffdf0 0x005ffdf0 0x005ffdf0 0x102e0 0x202ec RW 0x200000 +- DYNAMIC 0x1ffdf8 0x005ffdf8 0x005ffdf8 0x00128 0x00128 RW 0x4 +- NOTE 0x000194 0x00200194 0x00200194 0x00044 0x00044 R 0x4 +- GNU_EH_FRAME 0x012224 0x00212224 0x00212224 0x00008 0x00008 R 0x4 ++ LOAD 0x030d40 0x00030d40 0x00030d40 0x120b8 0x120b8 R E 0x200000 ++ LOAD 0x1ffdf0 0x003ffdf0 0x003ffdf0 0x102e0 0x202ec RW 0x200000 ++ DYNAMIC 0x1ffdf8 0x003ffdf8 0x003ffdf8 0x00128 0x00128 RW 0x4 ++ NOTE 0x030d60 0x00030d60 0x00030d60 0x00044 0x00044 R 0x4 ++ GNU_EH_FRAME 0x042df0 0x00042df0 0x00042df0 0x00008 0x00008 R 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 +- EXIDX 0x001c5c 0x00201c5c 0x00201c5c 0x00008 0x00008 R 0x4 +- GNU_RELRO 0x1ffdf0 0x005ffdf0 0x005ffdf0 0x00210 0x00210 RW 0x4 ++ EXIDX 0x032828 0x00032828 0x00032828 0x00008 0x00008 R 0x4 ++ GNU_RELRO 0x1ffdf0 0x003ffdf0 0x003ffdf0 0x00210 0x00210 RW 0x4 + + Section to Segment mapping: + +Revert fixes this build issue, but I still don't see why it fails this way. + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa + +# Please enter the commit message for your changes. Lines starting +# with '#' will be ignored, and an empty message aborts the commit. +# +# Date: Wed Sep 16 13:43:09 2020 +0200 +# +# On branch jansa/master +# Changes to be committed: +# new file: meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch +# modified: meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb +# +# Untracked files: +# counts.txt +# diff +# log.svn +# log.svn2 +# wip/ +# +--- + ld.hugetlbfs | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/ld.hugetlbfs b/ld.hugetlbfs +index 5e4e497..6ee8238 100755 +--- a/ld.hugetlbfs ++++ b/ld.hugetlbfs +@@ -130,9 +130,7 @@ if [ "$HTLB_ALIGN" == "slice" ]; then + # targeting the ARM platform one needs to explicitly set the text segment offset + # otherwise it will be NULL. + case "$EMU" in +- armelf*_linux_eabi|aarch64elf*|aarch64linux*) +- printf -v TEXTADDR "%x" "$SLICE_SIZE" +- HTLBOPTS="$HTLBOPTS -Ttext-segment=$TEXTADDR" ;; ++ armelf*_linux_eabi|aarch64elf*|aarch64linux*) HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE" ;; + elf_i386) HTLBOPTS="$HTLBOPTS -Ttext-segment=0x08000000" ;; + elf64ppc|elf64lppc) + if [ "$MMU_TYPE" == "Hash" ] ; then +-- +2.17.1 + diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb index b349096ec2..2f07c938bb 100644 --- a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb +++ b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb @@ -25,6 +25,7 @@ SRC_URI = " \ file://0005-Include-dirent.h-for-ino_t.patch \ file://0006-include-limits.h-for-PATH_MAX.patch \ file://0001-huge_page_setup_helper-use-python3-interpreter.patch \ + file://0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch \ " UPSTREAM_CHECK_GITTAGREGEX = "(?P\d+(\.\d+)+)" -- cgit 1.2.3-korg