X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbegnuas.h;h=ba171852fedf44a8f7de15c446d35c1aff7a5343;hb=b151d11c50d89b9dffadfb63f7ccfd81ea8db44f;hp=5343338c44fb77e03bc4ada0a11afda030313b7c;hpb=d6c7b2150b8e7aa199889a4725204e9ea9bc875e;p=libfirm diff --git a/ir/be/begnuas.h b/ir/be/begnuas.h index 5343338c4..ba171852f 100644 --- a/ir/be/begnuas.h +++ b/ir/be/begnuas.h @@ -28,7 +28,7 @@ #define FIRM_BE_BEGNUAS_H #include -#include "be.h" +#include "be_types.h" #include "beemitter.h" typedef enum { @@ -47,27 +47,29 @@ typedef enum { GAS_SECTION_FLAG_TLS = 1 << 8, /**< thread local flag */ GAS_SECTION_FLAG_COMDAT = 1 << 9 /**< thread local version of _BSS */ } be_gas_section_t; +ENUM_BITSET(be_gas_section_t) typedef enum object_file_format_t { OBJECT_FILE_FORMAT_ELF, /**< Executable and Linkable Format (unixes) */ OBJECT_FILE_FORMAT_COFF, /**< Common Object File Format (Windows) */ OBJECT_FILE_FORMAT_MACH_O, /**< Mach Object File Format (OS/X) */ - OBJECT_FILE_FORMAT_LAST = OBJECT_FILE_FORMAT_MACH_O + OBJECT_FILE_FORMAT_ELF_SPARC, /**< Sparc variant of ELF */ + OBJECT_FILE_FORMAT_LAST = OBJECT_FILE_FORMAT_ELF_SPARC } object_file_format_t; /** The variable where the GAS dialect is stored. */ extern object_file_format_t be_gas_object_file_format; extern bool be_gas_emit_types; + /** * the .type directive needs to specify @function, #function or %function * depending on the target architecture (yay) */ -extern char be_gas_elf_type_char; +extern char be_gas_elf_type_char; /** * Generate all entities. * @param main_env the main backend environment - * @param emit_commons if non-zero, emit commons (non-local uninitialized entities) */ void be_gas_emit_decls(const be_main_env_t *main_env); @@ -86,6 +88,8 @@ void be_gas_emit_function_prolog(const ir_entity *entity, void be_gas_emit_function_epilog(const ir_entity *entity); +char const *be_gas_get_private_prefix(void); + /** * emit ld_ident of an entity and performs additional mangling if necessary. * (mangling is necessary for ir_visibility_private for example). @@ -94,9 +98,9 @@ void be_gas_emit_function_epilog(const ir_entity *entity); void be_gas_emit_entity(const ir_entity *entity); /** - * Return the label prefix for labeled blocks. + * Emit (a private) symbol name for a firm block */ -const char *be_gas_block_label_prefix(void); +void be_gas_emit_block_name(const ir_node *block); /** * Return the label prefix for labeled instructions.