This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/20297] #pragma GCC visibility isn't properly handled for builtin functions
- From: "hjl at lucon dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 3 Mar 2005 00:05:36 -0000
- Subject: [Bug middle-end/20297] #pragma GCC visibility isn't properly handled for builtin functions
- References: <20050303000214.20297.hjl@lucon.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From hjl at lucon dot org 2005-03-03 00:05 -------
Created an attachment (id=8315)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8315&action=view)
A testcase
/export/build/gnu/gcc-4.0/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-4.0/build-x86_64-linux/gcc/ -O2 -fPIC -c -o foo.o
foo.c
/export/build/gnu/gcc-4.0/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-4.0/build-x86_64-linux/gcc/ -o libfoo.so -shared foo.o
foo.o: In function `foo':
foo.c:(.text+0x5): undefined reference to `memcpy'
/usr/local/bin/ld: foo.o: relocation R_X86_64_PC32 against `memcpy' can not be
used when making a shared object; recompile with -fPIC
/usr/local/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make: *** [libfoo.so] Error 1
The problem is gcc mishandles
#pragma GCC visibility push(hidden)
#pragma GCC visibility push(default)
typedef long unsigned int size_t;
extern void *memcpy (void *, const void *, size_t);
#pragma GCC visibility pop
and thinks memcpy is hidden. It only happens to builtin functions. When
memcpy is renamed to bar, gcc is OK.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20297