X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeemitter_binary.c;h=596659e04f23ed8fa9ffba0edc95e6d3a23ddfd7;hb=78bac126e7f9ca55761ab892ebfa9c19a4a65fcf;hp=f80246f8fe0432a045ac6e21339f30bec0516b0c;hpb=b2841b518c71c38924d6d64d290cebd1a4aa3a7a;p=libfirm diff --git a/ir/be/beemitter_binary.c b/ir/be/beemitter_binary.c index f80246f8f..596659e04 100644 --- a/ir/be/beemitter_binary.c +++ b/ir/be/beemitter_binary.c @@ -32,6 +32,7 @@ #include "beemitter_binary.h" #include "obst.h" #include "pdeq.h" +#include "error.h" static code_fragment_t *first_fragment; static code_fragment_t *last_fragment; @@ -43,7 +44,7 @@ struct obstack code_fragment_obst; be_emit(8/16/32/entity) call!) */ code_fragment_t *be_get_current_fragment(void) { - code_fragment_t *fragment = obstack_base(&code_fragment_obst); + code_fragment_t *fragment = (code_fragment_t*)obstack_base(&code_fragment_obst); assert(obstack_object_size(&code_fragment_obst) >= sizeof(code_fragment_t)); assert(fragment->magic == CODE_FRAGMENT_MAGIC); @@ -60,7 +61,7 @@ static void alloc_fragment(void) assert(obstack_object_size(&code_fragment_obst) == 0); obstack_blank(&code_fragment_obst, sizeof(*fragment)); - fragment = obstack_base(&code_fragment_obst); + fragment = (code_fragment_t*)obstack_base(&code_fragment_obst); memset(fragment, 0, sizeof(*fragment)); #ifndef NDEBUG fragment->magic = CODE_FRAGMENT_MAGIC; @@ -176,6 +177,16 @@ static void determine_offsets(const binary_emiter_interface_t *interface) } while (changed); } +void be_emit_entity(ir_entity *entity, bool entity_sign, int offset, + bool is_relative) +{ + (void) entity; + (void) entity_sign; + (void) offset; + (void) is_relative; + panic("not implemented yet"); +} + void be_emit_code(FILE *output, const binary_emiter_interface_t *interface) { unsigned offset; @@ -198,9 +209,9 @@ void be_emit_code(FILE *output, const binary_emiter_interface_t *interface) assert(fragment->offset >= offset); nops = fragment->offset - offset; if (nops > 0) { - unsigned char *nopbuffer = obstack_alloc(&code_fragment_obst, nops); - interface->create_nops(nopbuffer, nops); - emit(output, nopbuffer, nops); + unsigned char *nopbuffer = (unsigned char*)obstack_alloc(&code_fragment_obst, nops); + interface->create_nops(nopbuffer, nops); + emit(output, nopbuffer, nops); offset = fragment->offset; obstack_free(&code_fragment_obst, nopbuffer); } @@ -210,7 +221,7 @@ void be_emit_code(FILE *output, const binary_emiter_interface_t *interface) offset += fragment->len; /* emit the jump */ - jmpbuffer = obstack_alloc(&code_fragment_obst, fragment->jumpsize_min); + jmpbuffer = (unsigned char*)obstack_alloc(&code_fragment_obst, fragment->jumpsize_min); interface->emit_jump(fragment, jmpbuffer); emit(output, jmpbuffer, fragment->jumpsize_min); offset += fragment->jumpsize_min;