[Bug c/105177] New: GCC should warn if pragma redefine_extname fails due to missing declaration
timschumi at gmx dot de
gcc-bugzilla@gcc.gnu.org
Wed Apr 6 10:47:23 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105177
Bug ID: 105177
Summary: GCC should warn if pragma redefine_extname fails due
to missing declaration
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: timschumi at gmx dot de
Target Milestone: ---
The file `atomic-repro.c` compiles without warnings or errors when compiled
using the following compiler invocation:
$ cat atomic-repro.c
#pragma redefine_extname __atomic_load_c __atomic_load
void __atomic_load_c(void)
{
return;
}
$ gcc -Wall -Wextra -c atomic-repro.c
However, the resulting assembly/binary ends up using the original symbol name
instead of the new one.
I realize that the symbol using the old name may very well be technically
correct behavior (presumably due to the "linkage" restriction), but it feels
like this specific case at least could benefit from a warning to prevent people
from running into issues unexpectedly.
GCC has been configured with the following:
$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/
--with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit
--enable-cet=auto --enable-checking=release --enable-clocale=gnu
--enable-default-pie --enable-default-ssp --enable-gnu-indirect-function
--enable-gnu-unique-object --enable-linker-build-id --enable-lto
--enable-multilib --enable-plugin --enable-shared --enable-threads=posix
--disable-libssp --disable-libstdcxx-pch --disable-werror
--with-build-config=bootstrap-lto --enable-link-serialization=1
gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (GCC)
More information about the Gcc-bugs
mailing list