3
0
forked from pool/openssl-3
openssl-3/openssl-Fix_test_symbol_presence.patch

137 lines
5.0 KiB
Diff

From 38cf48b3044749fd5b37e36e5d9b2dc9fe7056ff Mon Sep 17 00:00:00 2001
From: Richard Levitte <levitte@openssl.org>
Date: Thu, 30 Nov 2023 08:48:33 +0100
Subject: [PATCH 1/3] test/recipes/01-test_symbol_presence.t: Ignore symbols
starting with '__'
On some platforms, the compiler may add symbols that aren't ours and that we
should ignore.
They are generally expected to start with a double underscore, and thereby
easy to detect.
Fixes #22869 (partially)
---
test/recipes/01-test_symbol_presence.t | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
index 9efa9f8d2d6eb..66e5669e193c7 100644
--- a/test/recipes/01-test_symbol_presence.t
+++ b/test/recipes/01-test_symbol_presence.t
@@ -124,7 +124,13 @@ foreach (sort keys %stlibname) {
# Return the result
$_
}
- grep(m|.* [BCDST] .*|, @$_);
+ # Drop any symbol starting with a double underscore, they
+ # are reserved for the compiler / system ABI and are none
+ # of our business
+ grep !m|^__|,
+ # Only look at external definitions
+ grep m|.* [BCDST] .*|,
+ @$_ ),
}
# Massage the mkdef.pl output to only contain global symbols
From feead62eb7873c6a8a95e75ad5ca3ac7b9ed8bcd Mon Sep 17 00:00:00 2001
From: Richard Levitte <levitte@openssl.org>
Date: Thu, 30 Nov 2023 09:02:25 +0100
Subject: [PATCH 2/3] test/recipes/01-test_symbol_presence.t: Treat common
symbols specially
Common symbols (type 'C' in the 'nm' output) are allowed to be defined more
than once. This makes test/recipes/01-test_symbol_presence.t reflect that.
Fixes #22869 (partially)
Fixes #22837
---
test/recipes/01-test_symbol_presence.t | 45 +++++++++++++++++---------
1 file changed, 30 insertions(+), 15 deletions(-)
diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
index 66e5669e193c7..cd3ac48bae5e7 100644
--- a/test/recipes/01-test_symbol_presence.t
+++ b/test/recipes/01-test_symbol_presence.t
@@ -114,23 +114,38 @@ foreach (sort keys %stlibname) {
my @arrays = ( \@stlib_lines );
push @arrays, \@shlib_lines unless disabled('shared');
foreach (@arrays) {
+ my %commons;
+ foreach (@$_) {
+ if (m|^(.*) C .*|) {
+ $commons{$1}++;
+ }
+ }
+ foreach (sort keys %commons) {
+ note "Common symbol: $_";
+ }
+
@$_ =
sort
- map {
- # Drop the first space and everything following it
- s| .*||;
- # Drop OpenSSL dynamic version information if there is any
- s|\@\@.+$||;
- # Return the result
- $_
- }
- # Drop any symbol starting with a double underscore, they
- # are reserved for the compiler / system ABI and are none
- # of our business
- grep !m|^__|,
- # Only look at external definitions
- grep m|.* [BCDST] .*|,
- @$_ ),
+ ( map {
+ # Drop the first space and everything following it
+ s| .*||;
+ # Drop OpenSSL dynamic version information if there is any
+ s|\@\@.+$||;
+ # Drop any symbol starting with a double underscore, they
+ # are reserved for the compiler / system ABI and are none
+ # of our business
+ s|^__||;
+ # Return the result
+ $_
+ }
+ # Drop any symbol starting with a double underscore, they
+ # are reserved for the compiler / system ABI and are none
+ # of our business
+ grep !m|^__|,
+ # Only look at external definitions
+ grep m|.* [BDST] .*|,
+ @$_ ),
+ keys %commons;
}
# Massage the mkdef.pl output to only contain global symbols
From 1055cefa6718167759e51165324b10345f8e7a99 Mon Sep 17 00:00:00 2001
From: Richard Levitte <levitte@openssl.org>
Date: Thu, 30 Nov 2023 10:09:41 +0100
Subject: [PATCH 3/3] fixup! test/recipes/01-test_symbol_presence.t: Treat
common symbols specially
---
test/recipes/01-test_symbol_presence.t | 4 ----
1 file changed, 4 deletions(-)
diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
index cd3ac48bae5e7..222b1886aec01 100644
--- a/test/recipes/01-test_symbol_presence.t
+++ b/test/recipes/01-test_symbol_presence.t
@@ -131,10 +131,6 @@ foreach (sort keys %stlibname) {
s| .*||;
# Drop OpenSSL dynamic version information if there is any
s|\@\@.+$||;
- # Drop any symbol starting with a double underscore, they
- # are reserved for the compiler / system ABI and are none
- # of our business
- s|^__||;
# Return the result
$_
}