1From 0a163f60b4a316c4b6f1726a71c84755f3bd85e7 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <martin.jansa@lge.com>
3Date: Wed, 16 Sep 2020 04:36:04 -0700
4Subject: [PATCH] Revert "ld.hugetlbfs: fix -Ttext-segment argument on AArch64"
5
6This reverts commit 852dcc963ce44861ed7c4e225aa92ff2b5b43579.
7
8* works around
9  ERROR: libhugetlbfs-1_2.23-r0 do_populate_sysroot: Fatal errors occurred in subprocesses:
10  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.
11  Subprocess output:arm-oe-linux-gnueabi-strip:
12  libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58: error: PHDR segment not covered by LOAD segment
13  arm-oe-linux-gnueabi-strip: libhugetlbfs/1_2.23-r0/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/stmuFa58[.interp]: file format not recognized
14
15I don't see anything suspicious in the build (the same cmdline as in 2.22
16version), but it uses
17
18libhugetlbfs/1_2.22-r0-old/temp/log.do_compile:arm-oe-linux-gnueabi-gcc
19 -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1
20-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
21-fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
22-Werror=format-security -Werror=return-type
23--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.22-r0/recipe-sysroot
24-I.. -O2 -Wall -g -o obj32/linkhuge_rw.o -c linkhuge_rw.c
25libhugetlbfs/1_2.22-r0-old/temp/log.do_compile:arm-oe-linux-gnueabi-gcc
26 -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1
27-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
28-fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
29-Werror=format-security -Werror=return-type
30--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.22-r0/recipe-sysroot
31-B./obj32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
32-ldl -L../obj32 -o obj32/linkhuge_rw -Wl,--no-as-needed -lpthread -ldl
33-lhugetlbfs_privutils -Wl,--hugetlbfs-align obj32/linkhuge_rw.o
34obj32/testutils.o
35libhugetlbfs/1_2.23-r0-new/temp/log.do_compile:arm-oe-linux-gnueabi-gcc
36 -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1
37-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
38-fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
39-Werror=format-security -Werror=return-type
40--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.23-r0/recipe-sysroot
41-I.. -O2 -Wall -g -o obj32/linkhuge_rw.o -c linkhuge_rw.c
42libhugetlbfs/1_2.23-r0-new/temp/log.do_compile:arm-oe-linux-gnueabi-gcc
43 -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -Wl,-O1
44-Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
45-fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
46-Werror=format-security -Werror=return-type
47--sysroot=/jenkins/mjansa/build/ros/oe-melodic-gatesgarth/libhugetlbfs/1_2.23-r0/recipe-sysroot
48-B./obj32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
49-ldl -L../obj32 -o obj32/linkhuge_rw -Wl,--no-as-needed -lpthread -ldl
50-lhugetlbfs_privutils -Wl,--hugetlbfs-align obj32/linkhuge_rw.o
51obj32/testutils.o
52
53And the git log between 2.22 and 2.23 is also very short and looks
54reasonable.
55https://github.com/libhugetlbfs/libhugetlbfs/compare/2.22...2.23
56
57When checking with readelf -l it also shows the error about PHDR segment:
58arm-oe-linux-gnueabi-readelf -l
59./1_2.22-r0-old/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw
60
61Elf file type is DYN (Shared object file)
62Entry point 0x201105
63There are 10 program headers, starting at offset 52
64
65Program Headers:
66  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
67  PHDR           0x000034 0x00200034 0x00200034 0x00140 0x00140 R   0x4
68  INTERP         0x000174 0x00200174 0x00200174 0x0001d 0x0001d R   0x1
69      [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3]
70  LOAD           0x000000 0x00200000 0x00200000 0x1222c 0x1222c R E 0x200000
71  LOAD           0x1ffdf0 0x005ffdf0 0x005ffdf0 0x102e0 0x202ec RW  0x200000
72  DYNAMIC        0x1ffdf8 0x005ffdf8 0x005ffdf8 0x00128 0x00128 RW  0x4
73  NOTE           0x000194 0x00200194 0x00200194 0x00044 0x00044 R   0x4
74  GNU_EH_FRAME   0x012224 0x00212224 0x00212224 0x00008 0x00008 R   0x4
75  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
76  EXIDX          0x001c5c 0x00201c5c 0x00201c5c 0x00008 0x00008 R   0x4
77  GNU_RELRO      0x1ffdf0 0x005ffdf0 0x005ffdf0 0x00210 0x00210 RW  0x4
78
79 Section to Segment mapping:
80  Segment Sections...
81   00
82   01     .interp
83   02     .interp .note.ABI-tag .note.gnu.build-id .dynsym .dynstr
84.gnu.hash .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text
85.fini .ARM.extab .ARM.exidx .rodata .eh_frame .eh_frame_hdr
86   03     .fini_array .init_array .dynamic .got .data .bss
87   04     .dynamic
88   05     .note.ABI-tag .note.gnu.build-id
89   06     .eh_frame_hdr
90   07
91   08     .ARM.extab .ARM.exidx
92   09     .fini_array .init_array .dynamic .got
93
94arm-oe-linux-gnueabi-readelf -l
95./1_2.23-r0-new/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw
96
97Elf file type is DYN (Shared object file)
98Entry point 0x31cd1
99There are 10 program headers, starting at offset 52
100
101Program Headers:
102  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
103  PHDR           0x000000 0x00000000 0x00000000 0x00000 0x00000 R   0
104readelf: Error: the PHDR segment is not covered by a LOAD segment
105  INTERP         0x030d40 0x00030d40 0x00030d40 0x0001d 0x0001d R   0x1
106      [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3]
107  LOAD           0x030d40 0x00030d40 0x00030d40 0x120b8 0x120b8 R E 0x200000
108  LOAD           0x1ffdf0 0x003ffdf0 0x003ffdf0 0x102e0 0x202ec RW  0x200000
109  DYNAMIC        0x1ffdf8 0x003ffdf8 0x003ffdf8 0x00128 0x00128 RW  0x4
110  NOTE           0x030d60 0x00030d60 0x00030d60 0x00044 0x00044 R   0x4
111  GNU_EH_FRAME   0x042df0 0x00042df0 0x00042df0 0x00008 0x00008 R   0x4
112  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
113  EXIDX          0x032828 0x00032828 0x00032828 0x00008 0x00008 R   0x4
114  GNU_RELRO      0x1ffdf0 0x003ffdf0 0x003ffdf0 0x00210 0x00210 RW  0x4
115
116 Section to Segment mapping:
117  Segment Sections...
118   00
119   01     .interp
120   02     .interp .note.ABI-tag .note.gnu.build-id .dynsym .dynstr
121.gnu.hash .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text
122.fini .ARM.extab .ARM.exidx .rodata .eh_frame .eh_frame_hdr
123   03     .fini_array .init_array .dynamic .got .data .bss
124   04     .dynamic
125   05     .note.ABI-tag .note.gnu.build-id
126   06     .eh_frame_hdr
127   07
128   08     .ARM.extab .ARM.exidx
129   09     .fini_array .init_array .dynamic .got
130
131And the diff between these 2:
132
1331_2.22-r0-old/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw.readelf
1341_2.23-r0-new/sysroot-destdir/usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw.readelf
135 Elf file type is DYN (Shared object file)
136-Entry point 0x201105
137+Entry point 0x31cd1
138 There are 10 program headers, starting at offset 52
139
140 Program Headers:
141   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
142-  PHDR           0x000034 0x00200034 0x00200034 0x00140 0x00140 R   0x4
143-  INTERP         0x000174 0x00200174 0x00200174 0x0001d 0x0001d R   0x1
144+  PHDR           0x000000 0x00000000 0x00000000 0x00000 0x00000 R   0
145+readelf: Error: the PHDR segment is not covered by a LOAD segment
146+  INTERP         0x030d40 0x00030d40 0x00030d40 0x0001d 0x0001d R   0x1
147       [Requesting program interpreter: /usr/lib/ld-linux-armhf.so.3]
148-  LOAD           0x000000 0x00200000 0x00200000 0x1222c 0x1222c R E 0x200000
149-  LOAD           0x1ffdf0 0x005ffdf0 0x005ffdf0 0x102e0 0x202ec RW  0x200000
150-  DYNAMIC        0x1ffdf8 0x005ffdf8 0x005ffdf8 0x00128 0x00128 RW  0x4
151-  NOTE           0x000194 0x00200194 0x00200194 0x00044 0x00044 R   0x4
152-  GNU_EH_FRAME   0x012224 0x00212224 0x00212224 0x00008 0x00008 R   0x4
153+  LOAD           0x030d40 0x00030d40 0x00030d40 0x120b8 0x120b8 R E 0x200000
154+  LOAD           0x1ffdf0 0x003ffdf0 0x003ffdf0 0x102e0 0x202ec RW  0x200000
155+  DYNAMIC        0x1ffdf8 0x003ffdf8 0x003ffdf8 0x00128 0x00128 RW  0x4
156+  NOTE           0x030d60 0x00030d60 0x00030d60 0x00044 0x00044 R   0x4
157+  GNU_EH_FRAME   0x042df0 0x00042df0 0x00042df0 0x00008 0x00008 R   0x4
158   GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
159-  EXIDX          0x001c5c 0x00201c5c 0x00201c5c 0x00008 0x00008 R   0x4
160-  GNU_RELRO      0x1ffdf0 0x005ffdf0 0x005ffdf0 0x00210 0x00210 RW  0x4
161+  EXIDX          0x032828 0x00032828 0x00032828 0x00008 0x00008 R   0x4
162+  GNU_RELRO      0x1ffdf0 0x003ffdf0 0x003ffdf0 0x00210 0x00210 RW  0x4
163
164  Section to Segment mapping:
165
166Revert fixes this build issue, but I still don't see why it fails this way.
167
168Upstream-Status: Pending
169
170Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
171
172# Please enter the commit message for your changes. Lines starting
173# with '#' will be ignored, and an empty message aborts the commit.
174#
175# Date:      Wed Sep 16 13:43:09 2020 +0200
176#
177# On branch jansa/master
178# Changes to be committed:
179#	new file:   meta-oe/recipes-benchmark/libhugetlbfs/files/0001-Revert-ld.hugetlbfs-fix-Ttext-segment-argument-on-AA.patch
180#	modified:   meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
181#
182# Untracked files:
183#	counts.txt
184#	diff
185#	log.svn
186#	log.svn2
187#	wip/
188#
189---
190 ld.hugetlbfs | 4 +---
191 1 file changed, 1 insertion(+), 3 deletions(-)
192
193diff --git a/ld.hugetlbfs b/ld.hugetlbfs
194index 5e4e497..6ee8238 100755
195--- a/ld.hugetlbfs
196+++ b/ld.hugetlbfs
197@@ -130,9 +130,7 @@ if [ "$HTLB_ALIGN" == "slice" ]; then
198 	# targeting the ARM platform one needs to explicitly set the text segment offset
199 	# otherwise it will be NULL.
200 	case "$EMU" in
201-	armelf*_linux_eabi|aarch64elf*|aarch64linux*)
202-		printf -v TEXTADDR "%x" "$SLICE_SIZE"
203-		HTLBOPTS="$HTLBOPTS -Ttext-segment=$TEXTADDR" ;;
204+	armelf*_linux_eabi|aarch64elf*|aarch64linux*)	HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE" ;;
205 	elf_i386)		HTLBOPTS="$HTLBOPTS -Ttext-segment=0x08000000" ;;
206 	elf64ppc|elf64lppc)
207 		if [ "$MMU_TYPE" == "Hash" ] ; then
208--
2092.17.1
210
211