[oe,3/3] libhugetlbfs: fix page size and text offset for arm arches

Message ID 1415301783-5342-4-git-send-email-gary.robertson@linaro.org
State New
Headers show

Commit Message

gary.robertson@linaro.org Nov. 6, 2014, 7:23 p.m.
From: "Gary S. Robertson" <gary.robertson@linaro.org>

Fixed computation of page size and text segment offset for various arm
architectures - including both LE and BE variants of armv7 as well as
aarch64

Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
---
 ...rch64-fix-page-size-not-properly-computed.patch |   32 -----------
 ...s-arm-arches-fix-page-size-and-text-offse.patch |   57 ++++++++++++++++++++
 .../libhugetlbfs/libhugetlbfs_git.bb               |    1 +
 3 files changed, 58 insertions(+), 32 deletions(-)
 delete mode 100644 meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
 create mode 100644 meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch

Comments

gary.robertson@linaro.org Nov. 7, 2014, 1:38 a.m. | #1
As per the other patches sent in this series, please ignore for now...
looks like it may be better to update the version of libhugetlbfs used in
the recipe after these patches are accepted there.

On Thu, Nov 6, 2014 at 1:23 PM, Gary S. Robertson <gary.robertson@linaro.org
> wrote:

> From: "Gary S. Robertson" <gary.robertson@linaro.org>
>
> Fixed computation of page size and text segment offset for various arm
> architectures - including both LE and BE variants of armv7 as well as
> aarch64
>
> Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
> ---
>  ...rch64-fix-page-size-not-properly-computed.patch |   32 -----------
>  ...s-arm-arches-fix-page-size-and-text-offse.patch |   57
> ++++++++++++++++++++
>  .../libhugetlbfs/libhugetlbfs_git.bb               |    1 +
>  3 files changed, 58 insertions(+), 32 deletions(-)
>  delete mode 100644
> meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
>  create mode 100644
> meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
>
> diff --git
> a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
> b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
> deleted file mode 100644
> index da60ba0..0000000
> ---
> a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -Subject: [PATCH] aarch64: fix page size not properly computed
> -
> -There's 2 issues fixed:
> -* typo on MB variable (MB -> $MB)
> -* some linker variants are missing (linux and big endian)
> -  - aarch64elfb
> -  - aarch64linux
> -  - aarch64linuxb
> -
> -Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
> -
> -Upstream-Status: Submitted
> ----
> - ld.hugetlbfs | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/ld.hugetlbfs b/ld.hugetlbfs
> -index df446dd..6553547 100755
> ---- a/ld.hugetlbfs
> -+++ b/ld.hugetlbfs
> -@@ -87,7 +87,7 @@ elf32ppclinux|elf64ppc)      HPAGE_SIZE=$((16*$MB))
> SLICE_SIZE=$((256*$MB)) ;;
> - elf64lppc)            HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
> - elf_i386|elf_x86_64)  HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
> - elf_s390|elf64_s390)  HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
> --armelf_linux_eabi|aarch64elf) HPAGE_SIZE=$((2*MB))
> SLICE_SIZE=$HPAGE_SIZE ;;
> -+armelf_linux_eabi|aarch64elf*|aarch64linux*)  HPAGE_SIZE=$((2*$MB))
> SLICE_SIZE=$HPAGE_SIZE ;;
> - esac
> -
> - if [ "$HTLB_ALIGN" == "slice" ]; then
> ---
> -1.9.2
> -
> diff --git
> a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
> b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
> new file mode 100644
> index 0000000..68cd71b
> --- /dev/null
> +++
> b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
> @@ -0,0 +1,57 @@
> +From 1ab6f7f9b34fc745451140fc21db6763dffc5785 Mon Sep 17 00:00:00 2001
> +From: "Gary S. Robertson" <gary.robertson@linaro.org>
> +Date: Thu, 25 Sep 2014 14:57:06 -0500
> +Subject: [libhugetlbfs][PATCH] ld.hugetlbfs: arm arches - fix page size
> and text offset
> + setup
> +
> +There's 3 issues fixed:
> +* typo on MB variable (MB -> $MB)
> +* some linker variants are missing (linux and big endian)
> +  - armelfb_linux_eabi
> +  - aarch64elfb
> +  - aarch64linux
> +  - aarch64linuxb
> +* text segment offset was not specified for armv7 BE
> +
> +NOTE: This patch replaces and makes obsolete the following previously
> +      submitted patch:
> +
> +      aarch64: fix page size not properly computed
> +      by: Fathi Boudra <fathi.boudra@linaro.org>
> +
> +Upstream Status: Submitted
> +
> +Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
> +---
> + ld.hugetlbfs |    8 ++++----
> + 1 file changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/ld.hugetlbfs b/ld.hugetlbfs
> +index df446dd..4417442 100755
> +--- a/ld.hugetlbfs
> ++++ b/ld.hugetlbfs
> +@@ -87,7 +87,7 @@ elf32ppclinux|elf64ppc)      HPAGE_SIZE=$((16*$MB))
> SLICE_SIZE=$((256*$MB)) ;;
> + elf64lppc)            HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
> + elf_i386|elf_x86_64)  HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
> + elf_s390|elf64_s390)  HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
> +-armelf_linux_eabi|aarch64elf) HPAGE_SIZE=$((2*MB))
> SLICE_SIZE=$HPAGE_SIZE ;;
> ++armelf*_linux_eabi|aarch64elf*|aarch64linux*) HPAGE_SIZE=$((2*$MB))
> SLICE_SIZE=$HPAGE_SIZE ;;
> + esac
> +
> + if [ "$HTLB_ALIGN" == "slice" ]; then
> +@@ -96,9 +96,9 @@ if [ "$HTLB_ALIGN" == "slice" ]; then
> +
> +       # targeting the ARM platform one needs to explicitly set the text
> segment offset
> +       # otherwise it will be NULL.
> +-      if [ "$EMU" == "armelf_linux_eabi" ]; then
> +-              HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE"
> +-      fi
> ++      case "$EMU" in
> ++      armelf*_linux_eabi)     HTLBOPTS="$HTLBOPTS
> -Ttext-segment=$SLICE_SIZE" ;;
> ++      esac
> + fi
> +
> + ${LD} "${args[@]}" ${HTLBOPTS}
> +--
> +1.7.9.5
> +
> diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
> b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
> index 0af77f1..e490848 100644
> --- a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
> +++ b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
> @@ -20,6 +20,7 @@ SRC_URI = "git://git.code.sf.net/p/libhugetlbfs/code \
>
>  file://0001-replace-lib-lib64-hardcoded-values-by-LIBDIR32-LIBDI.patch \
>      file://0001-Extend-arm32-support-to-include-BE-variants.patch \
>      file://0001-libhugetlbfs-Recognize-all-ix86-arches.patch \
> +
> file://0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch \
>  "
>
>  S = "${WORKDIR}/git"
> --
> 1.7.9.5
>
>

Patch

diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
deleted file mode 100644
index da60ba0..0000000
--- a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-aarch64-fix-page-size-not-properly-computed.patch
+++ /dev/null
@@ -1,32 +0,0 @@ 
-Subject: [PATCH] aarch64: fix page size not properly computed
-
-There's 2 issues fixed:
-* typo on MB variable (MB -> $MB)
-* some linker variants are missing (linux and big endian)
-  - aarch64elfb
-  - aarch64linux
-  - aarch64linuxb
-
-Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
-
-Upstream-Status: Submitted
----
- ld.hugetlbfs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ld.hugetlbfs b/ld.hugetlbfs
-index df446dd..6553547 100755
---- a/ld.hugetlbfs
-+++ b/ld.hugetlbfs
-@@ -87,7 +87,7 @@ elf32ppclinux|elf64ppc)	HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
- elf64lppc)		HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
- elf_i386|elf_x86_64)	HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
- elf_s390|elf64_s390)	HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
--armelf_linux_eabi|aarch64elf)	HPAGE_SIZE=$((2*MB)) SLICE_SIZE=$HPAGE_SIZE ;;
-+armelf_linux_eabi|aarch64elf*|aarch64linux*)	HPAGE_SIZE=$((2*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
- esac
- 
- if [ "$HTLB_ALIGN" == "slice" ]; then
--- 
-1.9.2
-
diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
new file mode 100644
index 0000000..68cd71b
--- /dev/null
+++ b/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch
@@ -0,0 +1,57 @@ 
+From 1ab6f7f9b34fc745451140fc21db6763dffc5785 Mon Sep 17 00:00:00 2001
+From: "Gary S. Robertson" <gary.robertson@linaro.org>
+Date: Thu, 25 Sep 2014 14:57:06 -0500
+Subject: [libhugetlbfs][PATCH] ld.hugetlbfs: arm arches - fix page size and text offset
+ setup
+
+There's 3 issues fixed:
+* typo on MB variable (MB -> $MB)
+* some linker variants are missing (linux and big endian)
+  - armelfb_linux_eabi
+  - aarch64elfb
+  - aarch64linux
+  - aarch64linuxb
+* text segment offset was not specified for armv7 BE
+
+NOTE: This patch replaces and makes obsolete the following previously
+      submitted patch:
+
+      aarch64: fix page size not properly computed
+      by: Fathi Boudra <fathi.boudra@linaro.org>
+
+Upstream Status: Submitted
+
+Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
+---
+ ld.hugetlbfs |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/ld.hugetlbfs b/ld.hugetlbfs
+index df446dd..4417442 100755
+--- a/ld.hugetlbfs
++++ b/ld.hugetlbfs
+@@ -87,7 +87,7 @@ elf32ppclinux|elf64ppc)	HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
+ elf64lppc)		HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;;
+ elf_i386|elf_x86_64)	HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
+ elf_s390|elf64_s390)	HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
+-armelf_linux_eabi|aarch64elf)	HPAGE_SIZE=$((2*MB)) SLICE_SIZE=$HPAGE_SIZE ;;
++armelf*_linux_eabi|aarch64elf*|aarch64linux*)	HPAGE_SIZE=$((2*$MB)) SLICE_SIZE=$HPAGE_SIZE ;;
+ esac
+ 
+ if [ "$HTLB_ALIGN" == "slice" ]; then
+@@ -96,9 +96,9 @@ if [ "$HTLB_ALIGN" == "slice" ]; then
+ 
+ 	# targeting the ARM platform one needs to explicitly set the text segment offset
+ 	# otherwise it will be NULL.
+-	if [ "$EMU" == "armelf_linux_eabi" ]; then
+-		HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE"
+-	fi
++	case "$EMU" in
++	armelf*_linux_eabi)	HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE" ;;
++	esac
+ fi
+ 
+ ${LD} "${args[@]}" ${HTLBOPTS}
+-- 
+1.7.9.5
+
diff --git a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
index 0af77f1..e490848 100644
--- a/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
+++ b/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
@@ -20,6 +20,7 @@  SRC_URI = "git://git.code.sf.net/p/libhugetlbfs/code \
     file://0001-replace-lib-lib64-hardcoded-values-by-LIBDIR32-LIBDI.patch \
     file://0001-Extend-arm32-support-to-include-BE-variants.patch \
     file://0001-libhugetlbfs-Recognize-all-ix86-arches.patch \
+    file://0001-ld.hugetlbfs-arm-arches-fix-page-size-and-text-offse.patch \
 "
 
 S = "${WORKDIR}/git"