[PATCH] libgcc/mkmap-symver: support skip_underscore (PR74748)

Jeff Law law@redhat.com
Thu Nov 17 21:08:00 GMT 2016


On 11/06/2016 09:32 AM, Waldemar Brodkorb wrote:
> Hi,
>
> Some platforms, such as Blackfin, have a special prefix for assembly
> symbols as opposed to C symbols. For this reason, a function named
> "foo()" in C will in fact be visible as a symbol called "_foo" in the
> ELF binary.
>
> The current linker version script logic in libgcc doesn't take into
> account this situation properly. The Blackfin specific
> libgcc/config/bfin/libgcc-glibc.ver has an additional "_" in front of
> every symbol so that it matches the output of "nm" (which gets parsed to
> produce the final linker version script). But due to this additional
> "_", ld no longer matches with the symbols since "ld" does the matching
> with the original symbol name, not the one prefixed with "_".
>
> Due to this, none of the symbols in libgcc/config/bfin/libgcc-glibc.ver
> are actually matched with symbols in libgcc. This causes all libgcc
> symbols to be left as "LOCAL", which causes lots of "undefined
> reference" whenever some C or C++ code that calls a function of libgcc
> is compiled.
>
> To address this, this commit introduces a "skip_underscore" variable to
> the mkmap-symver script. It tells mkmap-symver to ignore the leading
> underscore from the "nm" output.
>
> Note that this new argument is different from the existing
> "leading_underscore" argument, which *adds* an additional underscore to
> the generated linker version script.
>
> Having this functionality paves the way to using the generic linker
> version information for Blackfin, instead of using a custom one.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Tested-by: Waldemar Brodkorb <wbx@openadk.org>
>
> 2016-11-06  Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>
> 	PR gcc/74748
> 	* libgcc/mkmap-symver.awk: add support for skip_underscore
AFAICT this skips the first character regardless of whether or not it is 
an underscore when skip_underscore is in effect, right.  Is that 
intentional?

Jeff



More information about the Gcc-patches mailing list