Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Anyone running -current?
So here are, finaly, the details of the story:
Newer gcc has this in config/elfos.h:
/* A C statement (sans semicolon) to output to the stdio stream STREAM
any text necessary for declaring the name of an external symbol
named NAME which is referenced in this compilation but not defined.
It is needed to properly support non-default visibility. */
#ifndef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
default_elf_asm_output_external (FILE, DECL, NAME)
#endif
This boils down to putting a statement like
.protected _lc_global_locale
into every assembler file that uses _lc_global_locale but does not define
it. At the ELF level, this means the symbol looks like:
Num: Value Size Type Bind Vis Ndx Name
50: 00000000 0 NOTYPE GLOBAL PROTECTED UND _lc_global_locale
instead of:
50: 00000000 0 NOTYPE GLOBAL DEFAULT UND _lc_global_locale
And ld would do the right thing if we had it properly marked protected.
Basically this means that gcc 4.1 is not able to use symbols with non default
visibility - which is a pain, as we use it besides the case at hand also
for ld.elf_so (at least).
Anyway, I don't feel like backporting that change to gcc 4.1. For unbreaking
-current it will be enough to #ifndef __VAX__ the __dso_protected declaration
and document it in doc/HACKS.
If anyone else would like to fight this at the gcc level, please speak up!
Martin
Home |
Main Index |
Thread Index |
Old Index