[LLVMbugs] [Bug 8383] New: #pragma weak does not honor visibility
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Oct 14 16:42:40 PDT 2010
http://llvm.org/bugs/show_bug.cgi?id=8383
Summary: #pragma weak does not honor visibility
Product: clang
Version: 2.8
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: jed at 59a2.org
CC: llvmbugs at cs.uiuc.edu
$ cat weak.c
#define EXPORT __attribute((visibility("default")))
extern int EXPORT foo_a(void);
extern int EXPORT foo_b(void);
extern int EXPORT foo_c(void);
#pragma weak foo_a = foo_c
int foo_b(void) __attribute((weak, alias(("foo_c"))));
int foo_c(void) { return 0; }
$ clang -shared -fvisibility=hidden weak.c -o libweak.so && nm -D libweak.so |
grep foo
0000000000000550 W foo_b
0000000000000550 T foo_c
$ gcc -shared -fvisibility=hidden weak.c -o libweak.so && nm -D libweak.so |
grep foo
000000000000055c W foo_a
000000000000055c W foo_b
000000000000055c T foo_c
The visibility of the symbol "foo_a" is not respected, but the pragma is
clearly supported because the following works as expected.
$ clang -shared -fvisibility=default weak.c -o libweak.so && nm -D libweak.so |
grep foo
0000000000000580 W foo_a
0000000000000580 W foo_b
0000000000000580 T foo_c
$ clang --version
clang version 2.8 (branches/release_28)
Target: x86_64-unknown-linux-gnu
Thread model: posix
$ uname -a
Linux kunyang 2.6.35-ARCH #1 SMP PREEMPT Wed Sep 29 08:45:18 CEST 2010 x86_64
Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz GenuineIntel GNU/Linux
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list