summaryrefslogtreecommitdiffhomepage
path: root/ir/be/begnuas.h
diff options
context:
space:
mode:
authorMatthias Braun <matthias.braun@kit.edu>2012-04-25 23:01:59 +0200
committerMatthias Braun <matthias.braun@kit.edu>2012-04-26 01:23:53 +0200
commitcc9d3be2116747d0d9d1445d3116c69ce041ae57 (patch)
treedffbc2f3b9707115859c2586b0ab9e9b5c54b522 /ir/be/begnuas.h
parent5f6c325fb0ecef208f510046e0ade03a645b3540 (diff)
dwarf: initial support for callframe and params
- We now always output dwarf3 so we can use DW_OP_call_frame_cfa and avoid construction location lists, but just reuse the callframe info lists. - Backends have to emit debug info as callframe calculation changes: The ia32 backend has a preliminary implementation which assumes esp offset of frame_type_size at the beginning of a block (currently always true), the no-omit-fp mode assumes ebp relative addressing (which is correct except for the prolog/epilogue insns)
Diffstat (limited to 'ir/be/begnuas.h')
-rw-r--r--ir/be/begnuas.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/ir/be/begnuas.h b/ir/be/begnuas.h
index 12e2aa7..43aa2e4 100644
--- a/ir/be/begnuas.h
+++ b/ir/be/begnuas.h
@@ -29,6 +29,7 @@
#include <stdbool.h>
#include "be_types.h"
#include "beemitter.h"
+#include "bedwarf.h"
typedef enum {
GAS_SECTION_TEXT, /**< text section - program code */
@@ -44,7 +45,8 @@ typedef enum {
GAS_SECTION_DEBUG_ABBREV, /**< dwarf debug abbrev */
GAS_SECTION_DEBUG_LINE, /**< dwarf debug line */
GAS_SECTION_DEBUG_PUBNAMES, /**< dwarf pub names */
- GAS_SECTION_LAST = GAS_SECTION_DEBUG_PUBNAMES,
+ GAS_SECTION_DEBUG_FRAME, /**< dwarf callframe infos */
+ GAS_SECTION_LAST = GAS_SECTION_DEBUG_FRAME,
GAS_SECTION_TYPE_MASK = 0xFF,
GAS_SECTION_FLAG_TLS = 1 << 8, /**< thread local flag */
@@ -86,7 +88,8 @@ 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(const ir_entity *entity,
- unsigned po2alignment);
+ unsigned po2alignment,
+ const parameter_dbg_info_t *paramter_infos);
void be_gas_emit_function_epilog(const ir_entity *entity);