darwin-protos.h (darwin_assemble_visibility): Declare.
* config/darwin-protos.h (darwin_assemble_visibility): Declare. * config/darwin.c (darwin_assemble_visibility): Define. Warn for anything other than VISIBILITY_DEFAULT and VISIBILITY_HIDDEN. * config/darwin.h (TARGET_ASM_ASSEMBLE_VISIBILITY): Use darwin_assemble_visibility instead of default. From-SVN: r73430
This commit is contained in:
parent
87a9cbf9ae
commit
6ce4806bb6
4 changed files with 40 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
|||
2003-11-10 Matt Austern <austern@apple.com>
|
||||
|
||||
* config/darwin-protos.h (darwin_assemble_visibility): Declare.
|
||||
* config/darwin.c (darwin_assemble_visibility): Define. Warn for
|
||||
anything other than VISIBILITY_DEFAULT and VISIBILITY_HIDDEN.
|
||||
* config/darwin.h (TARGET_ASM_ASSEMBLE_VISIBILITY): Use
|
||||
darwin_assemble_visibility instead of default.
|
||||
|
||||
2003-11-10 Waldek Hebisch <hebisch@math.uni.wroc.pl>
|
||||
|
||||
PR target/12865
|
||||
|
|
|
@ -118,5 +118,6 @@ extern void machopic_output_stub (FILE *, const char *, const char *);
|
|||
extern void darwin_exception_section (void);
|
||||
extern void darwin_eh_frame_section (void);
|
||||
extern void darwin_globalize_label (FILE *, const char *);
|
||||
extern void darwin_assemble_visibility (tree, int);
|
||||
extern void darwin_asm_output_dwarf_delta (FILE *, int, const char *,
|
||||
const char *);
|
||||
|
|
|
@ -41,6 +41,7 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "ggc.h"
|
||||
#include "langhooks.h"
|
||||
#include "tm_p.h"
|
||||
#include "errors.h"
|
||||
|
||||
static int machopic_data_defined_p (const char *);
|
||||
static void update_non_lazy_ptrs (const char *);
|
||||
|
@ -1324,6 +1325,29 @@ darwin_globalize_label (FILE *stream, const char *name)
|
|||
default_globalize_label (stream, name);
|
||||
}
|
||||
|
||||
/* Emit an assembler directive to set visibility for a symbol. The
|
||||
only supported visibilities are VISIBILITY_DEFAULT and
|
||||
VISIBILITY_HIDDEN; the latter corresponds to Darwin's "private
|
||||
extern". There is no MACH-O equivalent of ELF's
|
||||
VISIBILITY_INTERNAL or VISIBILITY_PROTECTED. */
|
||||
|
||||
void
|
||||
darwin_assemble_visibility (tree decl, int vis)
|
||||
{
|
||||
if (vis == VISIBILITY_DEFAULT)
|
||||
;
|
||||
else if (vis == VISIBILITY_HIDDEN)
|
||||
{
|
||||
fputs ("\t.private_extern ", asm_out_file);
|
||||
assemble_name (asm_out_file,
|
||||
(IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))));
|
||||
fputs ("\n", asm_out_file);
|
||||
}
|
||||
else
|
||||
warning ("internal and protected visibility attributes not supported"
|
||||
"in this configuration; ignored");
|
||||
}
|
||||
|
||||
/* Output a difference of two labels that will be an assembly time
|
||||
constant if the two labels are local. (.long lab1-lab2 will be
|
||||
very different if lab1 is at the boundary between two sections; it
|
||||
|
|
|
@ -708,6 +708,13 @@ objc_section_init (void) \
|
|||
#define GLOBAL_ASM_OP ".globl "
|
||||
#define TARGET_ASM_GLOBALIZE_LABEL darwin_globalize_label
|
||||
|
||||
/* Emit an assembler directive to set visibility for a symbol. Used
|
||||
to support visibility attribute and Darwin's private extern
|
||||
feature. */
|
||||
#undef TARGET_ASM_ASSEMBLE_VISIBILITY
|
||||
#define TARGET_ASM_ASSEMBLE_VISIBILITY darwin_assemble_visibility
|
||||
|
||||
|
||||
#undef ASM_GENERATE_INTERNAL_LABEL
|
||||
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
|
||||
sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM))
|
||||
|
|
Loading…
Add table
Reference in a new issue