projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix C/should_fail/init2.c: if there is no outer_type (error case), just go on.
[cparser]
/
mangle.c
diff --git
a/mangle.c
b/mangle.c
index
b7d2bec
..
f8f32b1
100644
(file)
--- a/
mangle.c
+++ b/
mangle.c
@@
-1,6
+1,6
@@
/*
* This file is part of cparser.
/*
* This file is part of cparser.
- * Copyright (C) 2007-200
8
Matthias Braun <matze@braunis.de>
+ * Copyright (C) 2007-200
9
Matthias Braun <matze@braunis.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@
-222,7
+222,6
@@
static void mangle_type(type_t *orig_type)
case TYPE_BITFIELD:
panic("no mangling for this type implemented yet");
case TYPE_BITFIELD:
panic("no mangling for this type implemented yet");
- break;
}
panic("invalid type encountered while mangling");
}
}
panic("invalid type encountered while mangling");
}
@@
-262,12
+261,11
@@
ident *create_name_win32(entity_t *entity)
assert(is_declaration(entity));
assert(is_declaration(entity));
- if (entity->declaration.modifiers & DM_DLLIMPORT) {
- /* add prefix for imported symbols */
- obstack_printf(o, "__imp_");
- }
-
if (entity->kind == ENTITY_FUNCTION) {
if (entity->kind == ENTITY_FUNCTION) {
+ if (entity->declaration.modifiers & DM_DLLIMPORT)
+ /* add prefix for imported symbols */
+ obstack_printf(o, "__imp_");
+
cc_kind_t cc = entity->declaration.type->function.calling_convention;
/* calling convention prefix */
cc_kind_t cc = entity->declaration.type->function.calling_convention;
/* calling convention prefix */
@@
-281,7
+279,7
@@
ident *create_name_win32(entity_t *entity)
switch (entity->declaration.type->function.linkage) {
case LINKAGE_INVALID:
switch (entity->declaration.type->function.linkage) {
case LINKAGE_INVALID:
-
break
;
+
panic("linkage type of function is invalid")
;
case LINKAGE_C:
obstack_printf(o, "%s", entity->base.symbol->string);
case LINKAGE_C:
obstack_printf(o, "%s", entity->base.symbol->string);
@@
-331,7
+329,9
@@
ident *create_name_linux_elf(entity_t *entity)
if (entity->kind == ENTITY_FUNCTION) {
switch (entity->declaration.type->function.linkage) {
if (entity->kind == ENTITY_FUNCTION) {
switch (entity->declaration.type->function.linkage) {
- case LINKAGE_INVALID: break;
+ case LINKAGE_INVALID:
+ panic("linkage type of function is invalid");
+
case LINKAGE_C: break;
case LINKAGE_CXX: needs_mangling = true; break;
}
case LINKAGE_C: break;
case LINKAGE_CXX: needs_mangling = true; break;
}
@@
-353,6
+353,9
@@
ident *create_name_linux_elf(entity_t *entity)
*/
ident *create_name_macho(entity_t *entity)
{
*/
ident *create_name_macho(entity_t *entity)
{
+ if (entity->kind == ENTITY_FUNCTION && entity->declaration.type->function.linkage == LINKAGE_INVALID)
+ panic("linkage type of function is invalid");
+
obstack_printf(&obst, "_%s", entity->base.symbol->string);
return make_id_from_obst();
}
obstack_printf(&obst, "_%s", entity->base.symbol->string);
return make_id_from_obst();
}