summaryrefslogtreecommitdiffhomepage
path: root/ir/be/begnuas.h
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2010-02-11 01:18:43 +0100
committerMatthias Braun <matze@braunis.de>2010-02-11 01:18:43 +0100
commit04bdfdfd695bd5d7e9c45f59074ac6bed4148ec7 (patch)
tree5d045d2094ee6ed5ff0aa43ac20c0f82e979f203 /ir/be/begnuas.h
parentbfd8bf38d1e4fb790fdc9300cb00c9ae9af0857a (diff)
allow several odd weak combinations
[r27110]
Diffstat (limited to 'ir/be/begnuas.h')
-rw-r--r--ir/be/begnuas.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/ir/be/begnuas.h b/ir/be/begnuas.h
index a7d7d6d..c259fdc 100644
--- a/ir/be/begnuas.h
+++ b/ir/be/begnuas.h
@@ -36,7 +36,8 @@ typedef enum section_t {
GAS_SECTION_DATA, /**< data section - contains arbitrary data */
GAS_SECTION_RODATA, /**< rodata section - contains read-only data */
GAS_SECTION_BSS, /**< bss section - contains uninitialized data */
- GAS_SECTION_TLS, /**< thread local storage section */
+ GAS_SECTION_TLS_DATA, /**< thread local storage section */
+ GAS_SECTION_TLS_BSS, /**< thread local storage yero initialized */
GAS_SECTION_CONSTRUCTORS, /**< ctors section */
GAS_SECTION_DESTRUCTORS, /**< dtors section */
GAS_SECTION_CSTRING, /**< section for constant strings */
@@ -69,11 +70,6 @@ extern char be_gas_elf_type_char;
void be_gas_emit_decls(const be_main_env_t *main_env);
/**
- * Emit an entity (the entities name or a block label)
- */
-void be_gas_emit_entity(ir_entity *entity);
-
-/**
* Switch the current output section to the given out.
*
* @param section the new output section
@@ -83,9 +79,17 @@ void be_gas_emit_switch_section(be_gas_section_t section);
/**
* emit assembler instructions necessary before starting function code
*/
-void be_gas_emit_function_prolog(ir_entity *entity, unsigned po2alignment);
+void be_gas_emit_function_prolog(const ir_entity *entity,
+ unsigned po2alignment);
-void be_gas_emit_function_epilog(ir_entity *entity);
+void be_gas_emit_function_epilog(const ir_entity *entity);
+
+/**
+ * emit ld_ident of an entity and performs additional mangling if necessary.
+ * (mangling is necessary for ir_visibility_private for example).
+ * Emits a block label for type_code entities.
+ */
+void be_gas_emit_entity(const ir_entity *entity);
/**
* Return the label prefix for labeled blocks.