Glad its working a bit better for you.  If you are inclined, please feel
free to open a PR with your changes for review.

Best
Neil


On Thu, May 16, 2024 at 7:40 AM Dennis Clarke <dcla...@blastwave.org> wrote:

> On 5/15/24 18:34, Neil Horman wrote:
> > You are correct, the files you reference (most of them in fact) get built
> > into separate objects in the event the build flags are different for
> shared
> > and static libraries, and should be unrelated to the issue you are seeing
> >
>
>      I was somewhat puzzled by this also. Yes.
>
> > As for the undefined symbols, thats definitely a mystery.  most notably,
> > the symbols referenced are internal.  That is to say they shouldn't be
> > exported in the symbol table for libssl.so (though a quick look with
> > objectdump shows they are, which may be a separate issue)
> >
> > Looking at the sources, I can see what _might_ be happening
> >
> > cert_comp_tests.c includes "../ssl/ssl_local.h"
> > if quic is enabled (i.e. OPENSSL_NO_QUIC is undefined), ssl_local.h
> > includes quic/quic_local.h
> > quic_local.h includes internal/quic_txp.h
> > quic_txp.h includes internal/quic_stream_map.h
> > quic_stream_map.h defines a static inline function
> > named ossl_quic_stream_recv_get_final_size which calls
> > ossl_quic_rxfc_get_final_size, which in turn
> > calls ossl_quic_rxfc_get_final_size
> >
> > I'm guessing the other symbols have simmilar patterns.
> >
>
>      I am still digging into the issue.
>      I thank you the thoughtful reply.
>
>
> > As to why its happening my first guess would be that more recent
> compilers
> > like gcc and clang do lazy symbol resolution, only resolving a
> subordonate
> > symbol, when its calling parent is found to be used.  Given
> > ossl_quic_stream_recv_get_final_size isn't called anywhere in
> > comp_stream_test.c, the compiler disposes of the symbol prior to any need
> > to resolve its called symbols, and so everything is ok.
> >
>
>      I also suspect a linker issue here and the sad fact is that the GNU
>   ld just will not suffice in this server. C'est la vie ici.
>
>
> > conversely (again, I'm guessing here) the solaris 5.10 compiler likely
> take
> > a more bulldozer-ish approach, leaving everything in the object file and
> > only stripping symbols after all resolutions are complete, leading to the
> > missing symbols error, despite its not being needed.
> >
>
>      I have to laugh at the "bulldozer" idea as you are likely quite
> correct there.
>
>
> > As to what to do about this...I'm unsure.  The quick hack I would imagine
> > would be to move the definition of ossl_quic_stream_recv_get_final_size
> > into a c file (likely quic_stream_map.c) and just declare a prototype in
> > the quic_stream_map.h header, so as to avoid the unneeded symbol
> > resolution.  You would have to lather rinse  repeat with the other
> missing
> > symbols of course.
> >
> > As to your prior question about how long the ability to support SunOS
> will
> > last, well, unfortunately I don't think any of us can say.  I believe the
> > platoform you are building on is on our unadpoted platform list:
> > https://www.openssl.org/policies/general-supplemental/platforms.html
> >
> > And while we endeavor to keep openssl building on as many platforms as
> > possible, its not feasible to cover all the currently
> > unmaintained platforms.  You do have some agency here however. If you are
> > willing and interested, you could volunteer to be a community platform
> > maintainer for your target platform.  This would entail you building
> > openssl on your adopted platform, and running the test suite routinely,
> > reporting bugs and fixing errors as they occur.  Its not a small amount
> of
> > work, but it would be a significant contribution toward ensuring that
> > openssl stays viable on the targets you need.
> >
> I can tell you that this morning I see :
>
> .
> .
> .
> All tests successful.
> Files=312, Tests=3182, 6714 wallclock secs (25.22 usr  3.10 sys +
> 6370.32 cusr 170.55 csys = 6569.19 CPU)
> Result: PASS
> `test' is up to date.
>
> hubble $ pwd
> /opt/bw/build/openssl-3.3.0_SunOS_5.10_SPARC64.005
>
> hubble $
> hubble $ psrinfo -pv
> The physical processor has 8 virtual processors (0-7)
>    SPARC64-VII+ (portid 1024 impl 0x7 ver 0xa1 clock 2860 MHz)
> hubble $
> hubble $ uname -a
> SunOS hubble 5.10 Generic_150400-67 sun4u sparc SUNW,SPARC-Enterprise
> hubble $
>
> hubble $ hash -r
> hubble $ which openssl
> /opt/bw/bin/openssl
> hubble $
>
> hubble $ ldd /opt/bw/bin/openssl
>          libssl.so.3 =>   /opt/bw/lib/libssl.so.3
>          libcrypto.so.3 =>        /opt/bw/lib/libcrypto.so.3
>          libsocket.so.1 =>        /lib/64/libsocket.so.1
>          libnsl.so.1 =>   /lib/64/libnsl.so.1
>          libdl.so.1 =>    /lib/64/libdl.so.1
>          librt.so.1 =>    /lib/64/librt.so.1
>          libstatomic.so.1 =>      /opt/bw/lib/libstatomic.so.1
>          libc.so.1 =>     /lib/64/libc.so.1
>          libmp.so.2 =>    /lib/64/libmp.so.2
>          libmd.so.1 =>    /lib/64/libmd.so.1
>          libscf.so.1 =>   /lib/64/libscf.so.1
>          libaio.so.1 =>   /lib/64/libaio.so.1
>          libdoor.so.1 =>  /lib/64/libdoor.so.1
>          libuutil.so.1 =>         /lib/64/libuutil.so.1
>          libgen.so.1 =>   /lib/64/libgen.so.1
>          libm.so.2 =>     /lib/64/libm.so.2
>          /lib/sparcv9/../libm/sparcv9/libm_hwcap1.so.2
>          /platform/SUNW,SPARC-Enterprise/lib/sparcv9/libc_psr.so.1
> hubble $ /opt/bw/bin/openssl version
> OpenSSL 3.3.0 9 Apr 2024 (Library: OpenSSL 3.3.0 9 Apr 2024)
> hubble $
>
> Which seems to work like a charm and I do have a few patches.
>
> What I would like to do is climb in and see what can be done to create a
> pure ISO 9899:1990 clean code path. May be reduced in features but would
> still work pretty much everywhere. Maybe.
>
> Sure do wish I had my old Oracle support contract to update this server
> a bit but they want a LOT of money for that.
>
> --
> Dennis Clarke
> RISC-V/SPARC/PPC/ARM/CISC
> UNIX and Linux spoken
>
>

Reply via email to