* [PATCH V3 0/2] apr: fix off_t size can't match when configure and in target glibc
@ 2016-12-20 5:53 Dengke Du
2016-12-20 5:53 ` [PATCH V3 1/2] Revert "subversion: fix "svnadmin create" fail on x86" Dengke Du
2016-12-20 5:53 ` [PATCH V3 2/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
0 siblings, 2 replies; 3+ messages in thread
From: Dengke Du @ 2016-12-20 5:53 UTC (permalink / raw)
To: ross.burton; +Cc: openembedded-core
Changed in V3:
As Ross said, remove other instances of the APR_CHECK_SIZEOF_EXTENDED
macros in configure.in, this include "pid_t size_t ssize_t" types.
The following changes since commit d0d260b0b85790ceb136dd6b0445e8e33d038f5e:
u-boot/beaglebone: Select Beaglebone Black target specifically. (2016-12-17 09:57:37 +0000)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib dengke/fix-apr-configure-error-for-cross-compiling
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=dengke/fix-apr-configure-error-for-cross-compiling
Dengke Du (2):
Revert "subversion: fix "svnadmin create" fail on x86"
apr: fix off_t size can't match when configure and in target glibc
.../0001-fix-svnadmin-create-fail-on-x86.patch | 56 ----------------
.../subversion/subversion_1.9.5.bb | 1 -
..._t-size-doesn-t-match-in-glibc-when-cross.patch | 76 ++++++++++++++++++++++
meta/recipes-support/apr/apr_1.5.2.bb | 1 +
4 files changed, 77 insertions(+), 57 deletions(-)
delete mode 100644 meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch
create mode 100644 meta/recipes-support/apr/apr/0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch
--
2.7.4
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH V3 1/2] Revert "subversion: fix "svnadmin create" fail on x86"
2016-12-20 5:53 [PATCH V3 0/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
@ 2016-12-20 5:53 ` Dengke Du
2016-12-20 5:53 ` [PATCH V3 2/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
1 sibling, 0 replies; 3+ messages in thread
From: Dengke Du @ 2016-12-20 5:53 UTC (permalink / raw)
To: ross.burton; +Cc: openembedded-core
This reverts commit cfe6f3e251240c9d9a70354be0501600357f0b87.
This is because the apr configure wrong, when the apr configure meets the
cross compiling, it pass 8 bytes to "off_t", in apr source code configure.in,
it was hardcoded:
APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
The macro "APR_CHECK_SIZEOF_EXTENDED" was defined in build/apr_common.m4,
it use the "AC_TRY_RUN" macro, this macro let the off_t to 8, when cross
compiling enable.
But in glibc on the x86 or multilib target the "off_t" was 4 bytes, so this
cases dismatch for softwares which use the apr.h, such as subversion, run this:
svnadmin create test
It failed because the "APR_OFF_T_FMT" was "lld" in apr.h when apr configure,
but the "apr_off_t" was 4 bytes, in the apr source code: apr_snprintf.c
i_quad = va_arg(ap, apr_int64_t);
When the function apr_vformatter meets "lld", it would use the above to parse,
but the above read 8 bytes, so the follow-up data go to wrong.
So we should configure the apr correct when cross compiling. I do this on the
following patchs.
Signed-off-by: Dengke Du <dengke.du@windriver.com>
---
.../0001-fix-svnadmin-create-fail-on-x86.patch | 56 ----------------------
.../subversion/subversion_1.9.5.bb | 1 -
2 files changed, 57 deletions(-)
delete mode 100644 meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch
diff --git a/meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch b/meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch
deleted file mode 100644
index d440528..0000000
--- a/meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 09475e0befca8d120c957177ce8568fa2209a1a9 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Wed, 2 Nov 2016 11:09:44 +0800
-Subject: [PATCH] fix "svnadmin create" fail on x86
-
-When run the following command on x86:
-
- svnadmin create /var/test_repo
-
-It cause segmentation fault error like the following:
-
- [16499.751837] svnadmin[21117]: segfault at 83 ip 00000000f74bf7f6 sp 00000000ffdd9b34 error 4 in libc-2.24.so[f7441000+1af000]
- Segmentation fault (core dumped)
-
-This is because in source code ./subversion/libsvn_fs_fs/low_level.c,
-function svn_fs_fs__unparse_footer, when:
-
- target arch: x86
- apr_off_t: 4 bytes
-
-if the "APR_OFF_T_FMT" is "lld", it still use type "apr_off_t" to pass
-data to apr, but in apr source code file apr_snprintf.c the function
-apr_vformatter meet "lld", it would use the:
-
- i_quad = va_arg(ap, apr_int64_t);
-
-It uses the apr_int64_t to deal data, it read 8 bytes, so the follow-up
-data may be error.
-
-Upstream-Status: Pending
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- subversion/libsvn_fs_fs/low_level.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/subversion/libsvn_fs_fs/low_level.c b/subversion/libsvn_fs_fs/low_level.c
-index a27bbcc..6ddbe28 100644
---- a/subversion/libsvn_fs_fs/low_level.c
-+++ b/subversion/libsvn_fs_fs/low_level.c
-@@ -250,10 +250,10 @@ svn_fs_fs__unparse_footer(apr_off_t l2p_offset,
- {
- return svn_stringbuf_createf(result_pool,
- "%" APR_OFF_T_FMT " %s %" APR_OFF_T_FMT " %s",
-- l2p_offset,
-+ (APR_OFF_T_FMT=="lld") ? (apr_int64_t)l2p_offset : l2p_offset,
- svn_checksum_to_cstring(l2p_checksum,
- scratch_pool),
-- p2l_offset,
-+ (APR_OFF_T_FMT=="lld") ? (apr_int64_t)p2l_offset : p2l_offset,
- svn_checksum_to_cstring(p2l_checksum,
- scratch_pool));
- }
---
-2.7.4
-
diff --git a/meta/recipes-devtools/subversion/subversion_1.9.5.bb b/meta/recipes-devtools/subversion/subversion_1.9.5.bb
index 575bbca..05fba67 100644
--- a/meta/recipes-devtools/subversion/subversion_1.9.5.bb
+++ b/meta/recipes-devtools/subversion/subversion_1.9.5.bb
@@ -14,7 +14,6 @@ SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://disable_macos.patch \
file://serf.m4-Regex-modified-to-allow-D-in-paths.patch \
file://0001-Fix-libtool-name-in-configure.ac.patch \
- file://0001-fix-svnadmin-create-fail-on-x86.patch \
file://serfmacro.patch \
"
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH V3 2/2] apr: fix off_t size can't match when configure and in target glibc
2016-12-20 5:53 [PATCH V3 0/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
2016-12-20 5:53 ` [PATCH V3 1/2] Revert "subversion: fix "svnadmin create" fail on x86" Dengke Du
@ 2016-12-20 5:53 ` Dengke Du
1 sibling, 0 replies; 3+ messages in thread
From: Dengke Du @ 2016-12-20 5:53 UTC (permalink / raw)
To: ross.burton; +Cc: openembedded-core
When subversion run on x86 and lib32 on x86-64, it use the APR's
apr.h header file. But when configure the APR, APR meets the cross
compiling, it was hardcoded in configure.in in apr source code. As
the following:
APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
It pass 8 bytes to off_t when meets cross compiling, but on x86 or lib32
the off_t in glibc was 4 bytes, so it let the application who use apr.h
go to wrong.
Such as subversion:
svnadmin create test
So we should let the APR detect the correct off_t when cross compiling,
change it to the following:
AC_CHECK_SIZEOF(off_t)
The same for the following hardcoded types for cross compiling:
pid_t 8
size_t 8
ssize_t 8
Change the above correspondingly.
Signed-off-by: Dengke Du <dengke.du@windriver.com>
---
..._t-size-doesn-t-match-in-glibc-when-cross.patch | 76 ++++++++++++++++++++++
meta/recipes-support/apr/apr_1.5.2.bb | 1 +
2 files changed, 77 insertions(+)
create mode 100644 meta/recipes-support/apr/apr/0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch
diff --git a/meta/recipes-support/apr/apr/0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch b/meta/recipes-support/apr/apr/0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch
new file mode 100644
index 0000000..1237142
--- /dev/null
+++ b/meta/recipes-support/apr/apr/0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch
@@ -0,0 +1,76 @@
+From f26e8b88d2c90ed7eb9d4e276412b0923c23d10f Mon Sep 17 00:00:00 2001
+From: Dengke Du <dengke.du@windriver.com>
+Date: Wed, 14 Dec 2016 18:13:08 +0800
+Subject: [PATCH] apr: fix off_t size doesn't match in glibc when cross
+ compiling
+
+In configure.in, it contains the following:
+
+ APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
+
+the macro "APR_CHECK_SIZEOF_EXTENDED" was defined in build/apr_common.m4,
+it use the "AC_TRY_RUN" macro, this macro let the off_t to 8, when cross
+compiling enable.
+
+So it was hardcoded for cross compiling, we should detect it dynamic based on
+the sysroot's glibc. We change it to the following:
+
+ AC_CHECK_SIZEOF(off_t)
+
+The same for the following hardcoded types for cross compiling:
+
+ pid_t 8
+ ssize_t 8
+ size_t 8
+ off_t 8
+
+Change the above correspondingly.
+
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ configure.in | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 9d57ae6..5b19940 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1681,7 +1681,7 @@ else
+ socklen_t_value="int"
+ fi
+
+-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8)
++AC_CHECK_SIZEOF(pid_t)
+
+ if test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then
+ pid_t_fmt='#define APR_PID_T_FMT "hd"'
+@@ -1750,7 +1750,7 @@ APR_CHECK_TYPES_COMPATIBLE(ssize_t, long, [ssize_t_fmt="ld"])
+ APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned int, [size_t_fmt="u"])
+ APR_CHECK_TYPES_COMPATIBLE(size_t, unsigned long, [size_t_fmt="lu"])
+
+-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8)
++AC_CHECK_SIZEOF(ssize_t)
+
+ AC_MSG_CHECKING([which format to use for apr_ssize_t])
+ if test -n "$ssize_t_fmt"; then
+@@ -1767,7 +1767,7 @@ fi
+
+ ssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\""
+
+-APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8)
++AC_CHECK_SIZEOF(size_t)
+
+ AC_MSG_CHECKING([which format to use for apr_size_t])
+ if test -n "$size_t_fmt"; then
+@@ -1784,7 +1784,7 @@ fi
+
+ size_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\""
+
+-APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8)
++AC_CHECK_SIZEOF(off_t)
+
+ if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then
+ # Enable LFS
+--
+2.7.4
+
diff --git a/meta/recipes-support/apr/apr_1.5.2.bb b/meta/recipes-support/apr/apr_1.5.2.bb
index 302c935..f560c8b 100644
--- a/meta/recipes-support/apr/apr_1.5.2.bb
+++ b/meta/recipes-support/apr/apr_1.5.2.bb
@@ -17,6 +17,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \
file://upgrade-and-fix-1.5.1.patch \
file://Fix-packet-discards-HTTP-redirect.patch \
file://configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch \
+ file://0001-apr-fix-off_t-size-doesn-t-match-in-glibc-when-cross.patch \
"
SRC_URI[md5sum] = "4e9769f3349fe11fc0a5e1b224c236aa"
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-12-20 5:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-20 5:53 [PATCH V3 0/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
2016-12-20 5:53 ` [PATCH V3 1/2] Revert "subversion: fix "svnadmin create" fail on x86" Dengke Du
2016-12-20 5:53 ` [PATCH V3 2/2] apr: fix off_t size can't match when configure and in target glibc Dengke Du
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.