Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: binutils-2.20/dlwrap.c

Issue 8713008: Add dlwrap.c to binutils to simulate dlopen/dlsym for gold plugin (Closed)
Patch Set: x Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « binutils-2.20/dlwrap.h ('k') | binutils-2.20/gold/Makefile.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #include <stdio.h>
2 #include <string.h>
3
sehr (please use chromium) 2012/02/15 19:47:57 Please add explicitly a comment that this is a hac
4 /* This must match RTLD_NOW in dlwrap.h */
5 #define PNACL_RTLD_NOW 0x2
6
7 static int dummy;
8 static int haserr = 0;
9 static char errmsg[200];
10
11 /* This is not the real signature of this function,
12 * but we just need the symbol address.
13 */
14 #ifdef HAS_LLVM_PLUGIN
15 void llvm_plugin_onload();
16 #endif
17
18 void *pnacl_dlopen(const char *filename, int flag) {
19 void *ret;
20 if (flag != 0 && flag != PNACL_RTLD_NOW) {
21 sprintf(errmsg, "Error: Unknown flag to pnacl_dlopen: %d\n", flag);
22 haserr = 1;
23 return NULL;
24 }
25 if (strstr(filename, "LLVMgold") == NULL) {
26 sprintf(errmsg, "Error: Unexpected pnacl_dlopen: %s\n", filename);
27 haserr = 1;
28 return NULL;
29 }
30 return (void*)&dummy;
31 }
32
33 char *pnacl_dlerror(void) {
34 if (haserr) {
35 haserr = 0;
36 return errmsg;
37 }
38 return NULL;
39 }
40
41 void *pnacl_dlsym(void *handle, const char *symbol) {
42 if (handle != (void*)&dummy) {
43 sprintf(errmsg, "Error: Unexpected pnacl_dlsym handle\n");
44 haserr = 1;
45 return NULL;
46 }
47
48 if (strcmp(symbol, "onload") != 0) {
49 sprintf(errmsg, "Error: Unexpected pnacl_dlsym symbol: %s\n", symbol);
50 haserr = 1;
51 return NULL;
52 }
53 #ifdef HAS_LLVM_PLUGIN
54 return (void*)&llvm_plugin_onload;
55 #else
56 sprintf(errmsg, "Error: LLVM plugin not available\n");
57 haserr = 1;
58 return NULL;
59 #endif
60 }
61
62 int pnacl_dlclose(void *handle) {
63 return 0;
64 }
OLDNEW
« no previous file with comments | « binutils-2.20/dlwrap.h ('k') | binutils-2.20/gold/Makefile.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698