[PPC/Darwin] Fix long double symbol exports.

Message ID B383F5E5-BC71-4451-AC40-2F349216D7D9@sandoe.co.uk
State New
Headers show
Series
  • [PPC/Darwin] Fix long double symbol exports.
Related show

Commit Message

Iain Sandoe Dec. 6, 2018, 7:52 p.m.
Hi,

During 8.x, the rs6000 target-specific mangling was reorganised which uncovered
a long-standing bug in Darwin’s mangling for ‘IBM’ long double.  Now the symbols
are correctly mangled, and we end up with a bunch of test link fails.

This patch adds the necessary subset of the Linux long double exports to Darwin’s
export table.

I have tested this on a few bootstrap/regtest cycles on powerpc-darwin9, and on the
power7 linux system.

For the record, I’ve noted the library versions from the Linux side, although Darwin
does not version symbols in this way.

OK for trunk and 8.x?
thanks
Iain

libstdc++/

	* /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.

Comments

Mike Stump Dec. 6, 2018, 10:36 p.m. | #1
On Dec 6, 2018, at 11:52 AM, Iain Sandoe <iain@sandoe.co.uk> wrote:
> 

> During 8.x, the rs6000 target-specific mangling was reorganised which uncovered

> a long-standing bug in Darwin’s mangling for ‘IBM’ long double.  Now the symbols

> are correctly mangled, and we end up with a bunch of test link fails.

> 

> This patch adds the necessary subset of the Linux long double exports to Darwin’s

> export table.

> 

> I have tested this on a few bootstrap/regtest cycles on powerpc-darwin9, and on the

> power7 linux system.

> 

> For the record, I’ve noted the library versions from the Linux side, although Darwin

> does not version symbols in this way.

> 

> OK for trunk and 8.x?


Don't know if the libstdc++ want to review this or they want me to...  I'm fine with it.
Jonathan Wakely Dec. 10, 2018, 12:55 p.m. | #2
On 06/12/18 14:36 -0800, Mike Stump wrote:
>On Dec 6, 2018, at 11:52 AM, Iain Sandoe <iain@sandoe.co.uk> wrote:

>>

>> During 8.x, the rs6000 target-specific mangling was reorganised which uncovered

>> a long-standing bug in Darwin’s mangling for ‘IBM’ long double.  Now the symbols

>> are correctly mangled, and we end up with a bunch of test link fails.

>>

>> This patch adds the necessary subset of the Linux long double exports to Darwin’s

>> export table.

>>

>> I have tested this on a few bootstrap/regtest cycles on powerpc-darwin9, and on the

>> power7 linux system.

>>

>> For the record, I’ve noted the library versions from the Linux side, although Darwin

>> does not version symbols in this way.

>>

>> OK for trunk and 8.x?

>

>Don't know if the libstdc++ want to review this or they want me to...  I'm fine with it.


Me too. OK for trunk and 8.x - thanks.

Patch

diff --git a/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver b/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
index ffe32b6..f0aee9e 100644
--- a/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
+++ b/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
@@ -1 +1,22 @@ 
   __eprintf;
+# 3.4
+  _ZNSt14numeric_limitsIgE*;
+  _ZNSirsERg;
+  _ZNSolsEg;
+  _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
+  _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
+  _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
+  _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
+  _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
+# 3.4.7
+  _ZNSi10_M_extractIgEERSiRT_;
+  _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_;
+  _ZNSo9_M_insertIgEERSoT_;
+  _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_;
+# 3.4.10
+  _ZNKSt3tr14hashIgEclEg;
+  _ZNKSt4hashIgEclEg;
+# ldbl 1.3
+  _ZT[IS]g;
+  _ZT[IS]Pg;
+  _ZT[IS]PKg;