#define NULL (void *)0 struct block { void *function; const struct block *superblock; }; struct global_block { struct block block; void *compunit_symtab; }; extern const struct block *block_global_block (const struct block *block); void * block_objfile (const struct block *block) { const struct global_block *global_block; if (block->function != NULL) return block->function; global_block = (struct global_block *) block_global_block (block); return global_block->compunit_symtab; } const struct block * block_global_block (const struct block *block) { if (block == NULL) return NULL; while (block->superblock != NULL) block = block->superblock; return block; }