[meta-oe] bhugetlbfs: revert one commit from 2.23 to work around build error on arm

Submitted by Martin Jansa on Sept. 16, 2020, 11:53 a.m. | Patch ID: 176561

Details

Message ID 20200916115337.3202969-1-Martin.Jansa@gmail.com
State Accepted
Commit fd96948662fe961d4882376070612bb0357cd303
Headers show

Commit Message

Martin Jansa Sept. 16, 2020, 11:53 a.m.
* 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 <Martin.Jansa@gmail.com>
---
 ...bfs-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

Patch hide | download patch | download mbox

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 <martin.jansa@lge.com>
+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 <Martin.Jansa@gmail.com>
+
+# 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<pver>\d+(\.\d+)+)"