Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2015 02:44:02 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        freebsd-current@freebsd.org, jkim@FreeBSD.org
Cc:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   11.0-CURRENT: BIO_F_DGRAM_SCTP_WRITE, /head/crypto/openssl/crypto/bio/bio_err.c -r280297 vs. updating to head snaphot -r280598
Message-ID:  <2D2B8572-425D-42EC-AD9D-8975E9B9CBFA@dsl-only.net>
In-Reply-To: <24B7C687-9147-42F1-AE49-92F93DC85AA8@dsl-only.net>
References:  <24B7C687-9147-42F1-AE49-92F93DC85AA8@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Basic context:

# freebsd-version -ku; uname -apKU
11.0-CURRENT
11.0-CURRENT
FreeBSD FBSDG5C0 11.0-CURRENT FreeBSD 11.0-CURRENT #1 r279514M: Sat Mar =
21 05:15:23 PDT 2015     =
root@FBSDG5C0:/usr/obj/usr/srcC/sys/GENERIC64vtsc-NODEBUG  powerpc =
powerpc64 1100062 1100062


The problem:

Summary of the details that are listed later. All of the following =
exist:

> /usr/src/crypto/openssl/crypto/bio/bio.h
> /usr/obj/usr/src/tmp/usr/include/openssl/bio.h
> /usr/include/openssl/bio.h

The first two can be newer than the last during buildworld.

The buildworld compile of /head/crypto/openssl/crypto/bio/bio_err.c from =
an updated /usr/src can/does end up using the last instead of one of the =
first two, at least for the powerpc64-xtoolchain-gcc style of buildworld =
activity that I am trying.

The recent addition of BIO_F_DGRAM_SCTP_WRITE ends up with its =
definition missing because of this: during the build =
/usr/include/openssl/bio.h ends up being the file included and the =
compile fails from the missing additional definition.

Either the #include paths in /head/crypto/openssl/crypto/bio/bio_err.c =
or the command line arguments should force the =
/usr/obj/usr/src/tmp/usr/include/openssl/bio.h (or =
/usr/src/crypto/openssl/crypto/bio/bio.h ) vintage file to be found. The =
bio.h relevant includes are shown below...

> #include <stdio.h>
> #include <openssl/err.h>
> #include <openssl/bio.h>

More than bio.h might have such issues since there is an openssl/err.h =
include path in /head/crypto/openssl/crypto/bio/bio_err.c .

I have not checked for other .c files with similar issues for =
<openssl/...> usage during buildworld.


The problem details:

/head/crypto/openssl/crypto/bio/bio_err.c -r280297 added:

>      {ERR_FUNC(BIO_F_DGRAM_SCTP_WRITE), "DGRAM_SCTP_WRITE"},

and head (20150325 r280598) contains it.

But the BIO_F_DGRAM_SCTP_WRITE reference blocks buildworld (for at least =
/usr/local/bin/powerpc64-portbld-freebsd11.0-gcc =
(powerpc64-xtoolchain=3Dgcc) use):

> /usr/local/bin/powerpc64-portbld-freebsd11.0-gcc -fpic -DPIC  -O2 =
-pipe   -DTERMIOS -DANSI_SOURCE =
-I/usr/src/secure/lib/libcrypto/../../../crypto/openssl =
-I/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto =
-I/usr/obj/usr/src/secure/lib/libcrypto -DOPENSSL_THREADS -DDSO_DLFCN =
-DHAVE_DLFCN_H =
-I/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/asn1 =
-I/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp =
-I/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/modes =
-std=3Dgnu89 -fstack-protector -Wno-pointer-sign   -c =
/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bio/bio_err.c=
 -o bio_err.So
> In file included from =
/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bio/bio_err.c=
:63:0:
> =
/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bio/bio_err.c=
:99:15: error: 'BIO_F_DGRAM_SCTP_WRITE' undeclared here (not in a =
function)
>      {ERR_FUNC(BIO_F_DGRAM_SCTP_WRITE), "DGRAM_SCTP_WRITE"},
>                ^

Looking to see where usage and definitions might be in /usr/src for =
-r280598 ...

> # pwd
> /usr/src
> $ find . \( -type d -name .svn -prune \) -or \( -type f -exec grep =
BIO_F_DGRAM_SCTP_WRITE {} \; -print \) | more
> # define BIO_F_DGRAM_SCTP_WRITE                           133
> ./crypto/openssl/crypto/bio/bio.h
>             BIOerr(BIO_F_DGRAM_SCTP_WRITE, ERR_R_MALLOC_ERROR);
> ./crypto/openssl/crypto/bio/bss_dgram.c
>     {ERR_FUNC(BIO_F_DGRAM_SCTP_WRITE), "DGRAM_SCTP_WRITE"},
> ./crypto/openssl/crypto/bio/bio_err.c

And looking at the list of includes in =
/head/crypto/openssl/crypto/bio/bio_err.c -r280297 shows:

> #include <stdio.h>
> #include <openssl/err.h>
> #include <openssl/bio.h>

That there was no complaint about bio.h being missing suggests that a =
<openssl/bio.h> was found but did not contain a BIO_F_DGRAM_SCTP_WRITE =
definition: so a different one than a copy of what the above find/grep =
reported.

Using a find to report other bio.h files shows:

> # find / \( -type d -name .svn -prune \) -or \( -type f -name bio.h =
-print \) | more
> /usr/src/crypto/openssl/crypto/bio/bio.h
> /usr/src/sys/sys/bio.h
> /usr/obj/usr/src/tmp/usr/include/openssl/bio.h
> /usr/include/openssl/bio.h
> /usr/include/sys/bio.h

(Ignoring .../sys/bio.h as distinct by content and by path prefix...)

The diff of /usr/obj/usr/src/tmp/usr/include/openssl/bio.h and =
/usr/include/openssl/bio.h shows the problem if the wrong file is found =
and used:

> diff -w /usr/src/crypto/openssl/crypto/bio/bio.h =
/usr/include/openssl/bio.h | less
> ...
> 797,798c775
> < /*
> <  * The following lines are auto generated by the script mkerr.pl. =
Any changes
> ---
> > /* The following lines are auto generated by the script mkerr.pl. =
Any changes
> 832d808
> < # define BIO_F_DGRAM_SCTP_WRITE                           133




Context details:

> make -j 8 CROSS_TOOLCHAIN=3Dpowerpc64-gcc=20
> WITHOUT_CLANG_BOOTSTRAP=3D WITHOUT_CLANG=3D WITHOUT_CLANG_IS_CC=3D \
> WITHOUT_LLDB=3D \
> WITH_GCC_BOOTSTRAP=3D WITH_GCC=3D WITHOUT_GNUCXX=3D \
> WITHOUT_BOOT=3D WITHOUT_LIB32=3D \
> buildworld buildkernel \
> KERNCONF=3DGENERIC64vtsc-NODEBUG
> TARGET=3Dpowerpc TARGET_ARCH=3Dpowerpc64

> # svnlite info /usr/src
> Path: .
> Working Copy Root Path: /usr/src
> URL: https://svn0.us-west.freebsd.org/base/head
> Relative URL: ^/head
> Repository Root: https://svn0.us-west.freebsd.org/base
> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
> Revision: 280615
> Node Kind: directory
> Schedule: normal
> Last Changed Author: hselasky
> Last Changed Rev: 280598
> Last Changed Date: 2015-03-25 06:32:27 -0700 (Wed, 25 Mar 2015)

signals.h and pthread.h have been updated to more recent than -r280598 =
in order to avoid the __nonnull issues that exist as of -r280598.

> # svnlite st /usr/src --no-ignore
> ?       /usr/src/.snap
> ?       /usr/src/restoresymtable
> M       /usr/src/sys/ddb/db_main.c
> M       /usr/src/sys/ddb/db_script.c
> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc
> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODEBUG
> ?       /usr/src/sys/powerpc/conf/GENERICvtsc
> ?       /usr/src/sys/powerpc/conf/GENERICvtsc-NODEBUG
> M       /usr/src/sys/powerpc/ofw/ofw_machdep.c
> M       /usr/src/sys/powerpc/ofw/ofwcall64.S

(The .c/.S changes are tied to a PowerMac-G5-specific boot-problem fix =
and getting information from early boot failures if I get any more. The =
GENERIC<?>'s remove ps3 in order to have both vt and sc at the same =
time.)

> # more /etc/src.conf=20
> NO_WERROR=3D
> WITH_LIBCPLUSPLUS=3D
> CC=3D/usr/local/bin/powerpc64-portbld-freebsd11.0-gcc
> CXX=3D/usr/local/bin/powerpc64-portbld-freebsd11.0-g++
> CPP=3D/usr/local/bin/powerpc64-portbld-freebsd11.0-cpp
> CROSS_BINUTILS_PREFIX=3D/usr/local/powerpc64-freebsd/bin/
> X_COMPILER_TYPE=3Dgcc
> CXXFLAGS+=3D-I/usr/obj/usr/srcC/tmp/usr/include/c++/v1/. -std=3Dgnu++11 =
-L/usr/obj/usr/srcC/lib/libc++/.
> CXXFLAGS+=3D-I/usr/include/c++/v1/. -std=3Dgnu++11 -L/usr/lib/.

(The above and just below experiments with mostly(?) avoiding use of gcc =
4.2.1, even for CC/CXX/CPP contexts.)

> # ls -FPal /usr/bin/g[+c]*
> lrwxr-xr-x  1 root  wheel     48 Mar 20 02:03 /usr/bin/g++@ -> =
/usr/local/bin/powerpc64-portbld-freebsd11.0-g++
> lrwxr-xr-x  1 root  wheel     48 Mar 19 04:20 /usr/bin/gcc@ -> =
/usr/local/bin/powerpc64-portbld-freebsd11.0-gcc

> # more /etc/make.conf
> WRKDIRPREFIX=3D/usr/obj/portswork
> #WITH_DEBUG=3D
> MALLOC_PRODUCTION=3D

=3D=3D=3D
Mark Millard
markmi at dsl-only.net





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2D2B8572-425D-42EC-AD9D-8975E9B9CBFA>