Skip to content

Instantly share code, notes, and snippets.

@whiter4bbit
Created July 4, 2012 14:37
Show Gist options
  • Save whiter4bbit/3047691 to your computer and use it in GitHub Desktop.
Save whiter4bbit/3047691 to your computer and use it in GitHub Desktop.
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ cat foo.h
#ifndef FOO_H
#define FOO_H
typedef struct foo_int *foo_t;
//foo_t init_foo();
int run_foo(foo_t foo);
#endif //FOO_H
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ cat foo.c
#include "foo.h"
#include <stdlib.h>
struct foo_int {
int bar;
};
foo_t init_foo() {
return malloc(sizeof(struct foo_int));
}
int run_foo(foo_t foo) {
return ((struct foo_int*)foo)->bar + 20;
}
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ cat main.c
#include <stdio.h>
#include "foo.h"
int main(void)
{
foo_t foo = init_foo();
int res = run_foo(foo);
printf("%d\n", res);
return 0;
}
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ llvm-gcc -c foo.c -Wall
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ llvm-gcc -c main.c -Wall
main.c: In function ‘main’:
main.c:6: warning: implicit declaration of function ‘init_foo’
main.c:6: warning: initialization makes pointer from integer without a cast
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ llvm-gcc foo.o main.o
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ ./a.out
zsh: segmentation fault ./a.out
whiter4bbit@mac-mini-pavel ~/dev/objc_fun/llvm-bug $ llvm-gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment