Message ID | 20220225024751.21765-1-joe.slater@windriver.com |
---|---|
State | Accepted, archived |
Commit | 58b16da805b774465f15c8bee59f8361a47ccd4e |
Headers | show |
Series | [1/1] zip: modify when match.S is built | expand |
On Thu, Feb 24, 2022 at 6:48 PM Joe Slater <joe.slater@windriver.com> wrote: > > Use the correct $CPP to test if match.S is buildable, > and do not build it if QA checks require PIC code. > > Signed-off-by: Joe Slater <joe.slater@windriver.com> > --- > .../0001-configure-use-correct-CPP.patch | 47 +++++++++++++++++++ > ...002-configure-support-PIC-code-build.patch | 34 ++++++++++++++ > meta/recipes-extended/zip/zip_3.0.bb | 3 ++ > 3 files changed, 84 insertions(+) > create mode 100644 meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch > create mode 100644 meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch > > diff --git a/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch > new file mode 100644 > index 0000000000..02253f968c > --- /dev/null > +++ b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch > @@ -0,0 +1,47 @@ > +From 7a2729ee7f5d9b9d4a0d9b83fe641a2ab03c4ee0 Mon Sep 17 00:00:00 2001 > +From: Joe Slater <joe.slater@windriver.com> > +Date: Thu, 24 Feb 2022 17:36:59 -0800 > +Subject: [PATCH 1/2] configure: use correct CPP > + > +configure uses CPP to test that two assembler routines > +can be built. Unfortunately, it will use /usr/bin/cpp > +if it exists, invalidating the tests. We use the $CC > +passed to configure. > + > +Upstream-Status: Inappropriate [openembedded specific] > + > +Signed-off-by: Joe Slater <joe.slater@windriver.com> > +--- > + unix/configure | 15 +++++++++------ > + 1 file changed, 9 insertions(+), 6 deletions(-) > + > +diff --git a/unix/configure b/unix/configure > +index 73ba803..7e21070 100644 > +--- a/unix/configure > ++++ b/unix/configure > +@@ -220,13 +220,16 @@ fi > + echo Check for the C preprocessor > + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. > + CPP="${CC} -E" > ++ > ++# We should not change CPP for yocto builds. > ++# > + # solaris as(1) needs -P, maybe others as well ? > +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" > +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp > +-[ -f /lib/cpp ] && CPP=/lib/cpp > +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp > +-[ -f /xenix ] && CPP="${CC} -E" > +-[ -f /lynx.os ] && CPP="${CC} -E" > ++# [ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" > ++# [ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp > ++# [ -f /lib/cpp ] && CPP=/lib/cpp > ++# [ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp > ++# [ -f /xenix ] && CPP="${CC} -E" > ++# [ -f /lynx.os ] && CPP="${CC} -E" > + > + echo "#include <stdio.h>" > conftest.c > + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" > +-- > +2.24.1 > + > diff --git a/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch > new file mode 100644 > index 0000000000..6e0879616a > --- /dev/null > +++ b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch > @@ -0,0 +1,34 @@ > +From b0492506d2c28581193906e9d260d4f0451e2c39 Mon Sep 17 00:00:00 2001 > +From: Joe Slater <joe.slater@windriver.com> > +Date: Thu, 24 Feb 2022 17:46:03 -0800 > +Subject: [PATCH 2/2] configure: support PIC code build > + > +Disable building match.S. The code requires > +relocation in .text. > + > +Upstream-Status: Inappropriate [openembedded specific] > + > +Signed-off-by: Joe Slater <joe.slater@windriver.com> > +--- > + unix/configure | 5 +++-- > + 1 file changed, 3 insertions(+), 2 deletions(-) > + > +diff --git a/unix/configure b/unix/configure > +index 7e21070..1bc698b 100644 > +--- a/unix/configure > ++++ b/unix/configure > +@@ -242,8 +242,9 @@ if eval "$CPP match.S > _match.s 2>/dev/null"; then > + if test ! -s _match.s || grep error < _match.s > /dev/null; then > + : > + elif eval "$CC -c _match.s >/dev/null 2>/dev/null" && [ -f _match.o ]; then > +- CFLAGS="${CFLAGS} -DASMV" > +- OBJA="match.o" > ++ # disable match.S for PIC code > ++ # CFLAGS="${CFLAGS} -DASMV" > ++ # OBJA="match.o" you could convert this to do a runtime check for pic'ness is_pic=$(echo | $CPP -dM - | grep -i __pic__) if [ "$is_pic" = "" ]; then compile match.o else fi This will also mean you dont have to do the check you are doing in recipe while applying this patch > + echo "int foo() { return 0;}" > conftest.c > + $CC -c conftest.c >/dev/null 2>/dev/null > + echo Check if compiler generates underlines > +-- > +2.24.1 > + > diff --git a/meta/recipes-extended/zip/zip_3.0.bb b/meta/recipes-extended/zip/zip_3.0.bb > index 18b5d8648e..42a17f9450 100644 > --- a/meta/recipes-extended/zip/zip_3.0.bb > +++ b/meta/recipes-extended/zip/zip_3.0.bb > @@ -14,6 +14,9 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar. > file://fix-security-format.patch \ > file://10-remove-build-date.patch \ > file://zipnote-crashes-with-segfault.patch \ > + file://0001-configure-use-correct-CPP.patch \ > + ${@bb.utils.contains('ERROR_QA', 'textrel', \ > + 'file://0002-configure-support-PIC-code-build.patch', '', d)} \ I think its fine to apply it unconditionally since OE toolchain generates PIC by default. > " > UPSTREAM_VERSION_UNKNOWN = "1" > > -- > 2.24.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#162333): https://lists.openembedded.org/g/openembedded-core/message/162333 > Mute This Topic: https://lists.openembedded.org/mt/89381221/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch new file mode 100644 index 0000000000..02253f968c --- /dev/null +++ b/meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch @@ -0,0 +1,47 @@ +From 7a2729ee7f5d9b9d4a0d9b83fe641a2ab03c4ee0 Mon Sep 17 00:00:00 2001 +From: Joe Slater <joe.slater@windriver.com> +Date: Thu, 24 Feb 2022 17:36:59 -0800 +Subject: [PATCH 1/2] configure: use correct CPP + +configure uses CPP to test that two assembler routines +can be built. Unfortunately, it will use /usr/bin/cpp +if it exists, invalidating the tests. We use the $CC +passed to configure. + +Upstream-Status: Inappropriate [openembedded specific] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> +--- + unix/configure | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 73ba803..7e21070 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -220,13 +220,16 @@ fi + echo Check for the C preprocessor + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. + CPP="${CC} -E" ++ ++# We should not change CPP for yocto builds. ++# + # solaris as(1) needs -P, maybe others as well ? +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp +-[ -f /lib/cpp ] && CPP=/lib/cpp +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp +-[ -f /xenix ] && CPP="${CC} -E" +-[ -f /lynx.os ] && CPP="${CC} -E" ++# [ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" ++# [ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp ++# [ -f /lib/cpp ] && CPP=/lib/cpp ++# [ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp ++# [ -f /xenix ] && CPP="${CC} -E" ++# [ -f /lynx.os ] && CPP="${CC} -E" + + echo "#include <stdio.h>" > conftest.c + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" +-- +2.24.1 + diff --git a/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch new file mode 100644 index 0000000000..6e0879616a --- /dev/null +++ b/meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch @@ -0,0 +1,34 @@ +From b0492506d2c28581193906e9d260d4f0451e2c39 Mon Sep 17 00:00:00 2001 +From: Joe Slater <joe.slater@windriver.com> +Date: Thu, 24 Feb 2022 17:46:03 -0800 +Subject: [PATCH 2/2] configure: support PIC code build + +Disable building match.S. The code requires +relocation in .text. + +Upstream-Status: Inappropriate [openembedded specific] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> +--- + unix/configure | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 7e21070..1bc698b 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -242,8 +242,9 @@ if eval "$CPP match.S > _match.s 2>/dev/null"; then + if test ! -s _match.s || grep error < _match.s > /dev/null; then + : + elif eval "$CC -c _match.s >/dev/null 2>/dev/null" && [ -f _match.o ]; then +- CFLAGS="${CFLAGS} -DASMV" +- OBJA="match.o" ++ # disable match.S for PIC code ++ # CFLAGS="${CFLAGS} -DASMV" ++ # OBJA="match.o" + echo "int foo() { return 0;}" > conftest.c + $CC -c conftest.c >/dev/null 2>/dev/null + echo Check if compiler generates underlines +-- +2.24.1 + diff --git a/meta/recipes-extended/zip/zip_3.0.bb b/meta/recipes-extended/zip/zip_3.0.bb index 18b5d8648e..42a17f9450 100644 --- a/meta/recipes-extended/zip/zip_3.0.bb +++ b/meta/recipes-extended/zip/zip_3.0.bb @@ -14,6 +14,9 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar. file://fix-security-format.patch \ file://10-remove-build-date.patch \ file://zipnote-crashes-with-segfault.patch \ + file://0001-configure-use-correct-CPP.patch \ + ${@bb.utils.contains('ERROR_QA', 'textrel', \ + 'file://0002-configure-support-PIC-code-build.patch', '', d)} \ " UPSTREAM_VERSION_UNKNOWN = "1"
Use the correct $CPP to test if match.S is buildable, and do not build it if QA checks require PIC code. Signed-off-by: Joe Slater <joe.slater@windriver.com> --- .../0001-configure-use-correct-CPP.patch | 47 +++++++++++++++++++ ...002-configure-support-PIC-code-build.patch | 34 ++++++++++++++ meta/recipes-extended/zip/zip_3.0.bb | 3 ++ 3 files changed, 84 insertions(+) create mode 100644 meta/recipes-extended/zip/zip-3.0/0001-configure-use-correct-CPP.patch create mode 100644 meta/recipes-extended/zip/zip-3.0/0002-configure-support-PIC-code-build.patch