bedwarf: query backend for pointer size
authorMatthias Braun <matze@braunis.de>
Thu, 15 Nov 2012 08:29:39 +0000 (09:29 +0100)
committerMatthias Braun <matze@braunis.de>
Thu, 15 Nov 2012 09:32:28 +0000 (10:32 +0100)
Also improve doku of machine_size element in backend_params struct.

include/libfirm/be.h
ir/be/bedwarf.c

index 10af37a..4f44003 100644 (file)
@@ -134,8 +134,8 @@ typedef struct backend_params {
        /** Backend settings for if-conversion. */
        arch_allow_ifconv_func allow_ifconv;
 
-       /** size of machine words. This is usually the size of the general purpose
-        * integer registers. */
+       /** size of machine word in bits. This is usually the size of the general
+        * purpose integer/address registers. */
        unsigned machine_size;
 
        /**
index 64c182d..49f4a8f 100644 (file)
@@ -915,19 +915,20 @@ void be_dwarf_unit_begin(const char *filename)
        emit_label("info_section_begin");
        emit_label("info_begin");
 
+       const backend_params *be_params = be_get_backend_param();
+
        /* length of compilation unit info */
        emit_size("compile_unit_begin", "compile_unit_end");
        emit_label("compile_unit_begin");
        emit_int16(3);   /* dwarf version */
        emit_address("abbrev_begin");
-       emit_int8(4);    /* pointer size, TODO: query backend */
+       emit_int8(be_params->machine_size / 8); /* pointer size */
 
        /* compile_unit die */
        emit_uleb128(abbrev_compile_unit);
        emit_address("line_section_begin");
        emit_string_printf("libFirm (%u.%u %s)", ir_get_version_major(),
-                          ir_get_version_minor(),
-                          ir_get_version_revision());
+                          ir_get_version_minor(), ir_get_version_revision());
        emit_string(filename);
        if (language != 0)
                emit_int16(language);