X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=mangle.c;h=780cb90742f02f187b9cecf12e60eaca27c2e0db;hb=864a15484c0e50d85507b17ee17fc49571fae66a;hp=4aacb56b72820f9a3534c24a0abf720393be2e07;hpb=03d3b8c10e86bd5604ac13f2cb020c11261977f8;p=cparser diff --git a/mangle.c b/mangle.c index 4aacb56..780cb90 100644 --- a/mangle.c +++ b/mangle.c @@ -38,7 +38,7 @@ static void mangle_type(type_t *type); static char get_atomic_type_mangle(atomic_type_kind_t kind) { switch (kind) { - case ATOMIC_TYPE_INVALID: break; + case ATOMIC_TYPE_INVALID: break; case ATOMIC_TYPE_VOID: return 'v'; case ATOMIC_TYPE_WCHAR_T: return 'w'; case ATOMIC_TYPE_BOOL: return 'b'; @@ -211,17 +211,11 @@ static void mangle_type(type_t *orig_type) case TYPE_IMAGINARY: mangle_imaginary_type(&type->imaginary); return; - case TYPE_INVALID: - panic("invalid type encountered while mangling"); case TYPE_ERROR: panic("error type encountered while mangling"); - case TYPE_BUILTIN: case TYPE_TYPEDEF: case TYPE_TYPEOF: panic("typeref not resolved while manging?!?"); - - case TYPE_BITFIELD: - panic("no mangling for this type implemented yet"); } panic("invalid type encountered while mangling"); } @@ -297,9 +291,6 @@ ident *create_name_win32(entity_t *entity) } switch (type->function.linkage) { - case LINKAGE_INVALID: - panic("linkage type of function is invalid"); - case LINKAGE_C: obstack_printf(o, "%s", entity->base.symbol->string); break; @@ -350,8 +341,6 @@ ident *create_name_linux_elf(entity_t *entity) type_t *type = skip_typeref(entity->declaration.type); assert(is_type_function(type)); switch (type->function.linkage) { - case LINKAGE_INVALID: - panic("linkage type of function is invalid"); case LINKAGE_C: if (entity->function.actual_name != NULL) name = entity->function.actual_name->string; @@ -377,8 +366,13 @@ ident *create_name_macho(entity_t *entity) if (entity->kind == ENTITY_FUNCTION) { type_t *type = skip_typeref(entity->declaration.type); assert(is_type_function(type)); - if (type->function.linkage == LINKAGE_INVALID) - panic("linkage type of function is invalid"); + + switch (type->function.linkage) { + default: + if (entity->function.actual_name != NULL) + return new_id_from_str(entity->function.actual_name->string); + break; + } } obstack_printf(&obst, "_%s", entity->base.symbol->string);