diff options
author | Walter Doekes <walter+asterisk@wjd.nu> | 2013-08-22 08:26:55 +0000 |
---|---|---|
committer | Walter Doekes <walter+asterisk@wjd.nu> | 2013-08-22 08:26:55 +0000 |
commit | 80edcdcc45c0ed6c9223af59b2c6961df2e7a325 (patch) | |
tree | 53533d506aaff547b2a68911c906c78822070ede /main/asterisk.exports.in | |
parent | 75bb247d2b442762243de7bcac293fd003e1c4a2 (diff) |
Add _IO_stdin_used in version-script to fix SIGBUSes on Sparc.
The --version-script,asterisk.exports linker flag (and the module
exports) didn't provide _IO_stdin_used in the list of exported symbols.
That causes some kind of libc compatibility mode to kick in, where
stdio file structures (stdout/stderr) land somewhere else. In the
case of the Sparc, they landed on misaligned memory.
This became apparent first after r376428 (Reorder startup sequence)
when a lot of ast_log's were replaced with fprintf's. Writing to
stderr triggered a SIGBUS. (Compared to x86 and amd64 architectures,
the Sparc is very picky about memory alignment.)
(issue ASTERISK-21763)
(issue ASTERISK-21665)
Reported by: Jeremy Kister
Review: https://reviewboard.asterisk.org/r/2760/
........
Merged revisions 397377 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 397378 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/asterisk.exports.in')
-rw-r--r-- | main/asterisk.exports.in | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/main/asterisk.exports.in b/main/asterisk.exports.in index 3f32be1d5..364b3b05e 100644 --- a/main/asterisk.exports.in +++ b/main/asterisk.exports.in @@ -49,6 +49,25 @@ LINKER_SYMBOL_PREFIXres_srtp; LINKER_SYMBOL_PREFIXres_srtp_policy; LINKER_SYMBOL_PREFIXsecure_call_info; + /* + + If _IO_stdin_used is not exported, stdout/stderr may not get + properly aligned. That causes breakage on some architectures. + + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#51 + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#94 + http://lists.gnu.org/archive/html/bug-glibc/2001-12/msg00203.html + + We export the symbol to get proper behaviour. Now printf + doesn't SIGBUS anymore on the SPARC. + + Michael Karcher wrote on Jan 13, 2013: + > A build process that mangles the export of _IO_stdin_used is + > (as defined by the libc ABI, even if not explicitly written + > down) broken. [...] + + */ + LINKER_SYMBOL_PREFIX_IO_stdin_used; local: *; }; |