diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2018-05-19 17:31:42 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2018-05-19 17:38:50 +0100 |
commit | 787d8d240bbeaa812bcf37deeedb3c467be468a3 (patch) | |
tree | ef2574872a63a0ca9c8f0fc91baf092fd1906ec2 /include | |
parent | 138734e5b9a6f93098291c09cf54d95ec3d301e7 (diff) | |
download | portable-787d8d240bbeaa812bcf37deeedb3c467be468a3.tar.gz portable-787d8d240bbeaa812bcf37deeedb3c467be468a3.tar.bz2 portable-787d8d240bbeaa812bcf37deeedb3c467be468a3.zip |
__warn_references: tweak assembly for "gnu.warning" section
On some targets ';' (like hppa) is treated as a comment
in assembly files. This occasionally causes the following
assembly failures:
```
Error: can't resolve `.gnu.warning.EVP_DecryptFinal'
{.gnu.warning.EVP_DecryptFinal section} - `.Ltext0' {.text section}
```
Note how branch (or other reference) attempts to cross the
boundary across two section types: '.text' and '.gnu.warning'.
Tobias Ulmer notes that openbsd already uses newlines
for similar macro:
https://github.com/openbsd/src/blob/master/sys/arch/hppa/include/cdefs.h
This change switches from ';' to newline as well.
Tested on hppa2.0 and x86_64.
Reported-by: Jeroen Roovers
Bug: https://bugs.gentoo.org/656104
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/compat/sys/types.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/compat/sys/types.h b/include/compat/sys/types.h index 2107119..dec09e3 100644 --- a/include/compat/sys/types.h +++ b/include/compat/sys/types.h | |||
@@ -62,7 +62,7 @@ typedef SSIZE_T ssize_t; | |||
62 | #if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG) | 62 | #if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG) |
63 | #define __warn_references(sym,msg) \ | 63 | #define __warn_references(sym,msg) \ |
64 | __asm__(".section .gnu.warning." __STRING(sym) \ | 64 | __asm__(".section .gnu.warning." __STRING(sym) \ |
65 | " ; .ascii \"" msg "\" ; .text"); | 65 | "\n\t.ascii \"" msg "\"\n\t.text"); |
66 | #else | 66 | #else |
67 | #define __warn_references(sym,msg) | 67 | #define __warn_references(sym,msg) |
68 | #endif | 68 | #endif |