/* * bpf-script-test-relocation.c * Test BPF loader checking relocation */ #ifndef LINUX_VERSION_CODE # error Need LINUX_VERSION_CODE # error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' #endif #define BPF_ANY 0 #define BPF_MAP_TYPE_ARRAY 2 #define BPF_FUNC_map_lookup_elem 1 #define BPF_FUNC_map_update_elem 2 static void *(*bpf_map_lookup_elem)(void *map, void *key) = (void *) BPF_FUNC_map_lookup_elem; static void *(*bpf_map_update_elem)(void *map, void *key, void *value, int flags) = (void *) BPF_FUNC_map_update_elem; struct bpf_map_def { unsigned int type; unsigned int key_size; unsigned int value_size; unsigned int max_entries; }; #define SEC(NAME) __attribute__((section(NAME), used)) struct bpf_map_def SEC("maps") my_table = { .type = BPF_MAP_TYPE_ARRAY, .key_size = sizeof(int), .value_size = sizeof(int), .max_entries = 1, }; int this_is_a_global_val; SEC("func=sys_write") int bpf_func__sys_write(void *ctx) { int key = 0; int value = 0; /* * Incorrect relocation. Should not allow this program be * loaded into kernel. */ bpf_map_update_elem(&this_is_a_global_val, &key, &value, 0); return 0; } char _license[] SEC("license") = "GPL"; int _version SEC("version") = LINUX_VERSION_CODE; back</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>net-next plumbings</td><td class='sub right'>Tobias Klauser</td></tr></table> <table class='tabs'><tr><td> <a href='/cgit.cgi/linux/net-next.git/'>summary</a><a href='/cgit.cgi/linux/net-next.git/refs/?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>refs</a><a href='/cgit.cgi/linux/net-next.git/log/tools/build/feature/test-libunwind-debug-frame.c'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/tools/build/feature/test-libunwind-debug-frame.c?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/tools/build/feature/test-libunwind-debug-frame.c?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>commit</a><a class='active' href='/cgit.cgi/linux/net-next.git/diff/tools/build/feature/test-libunwind-debug-frame.c?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/tools/build/feature/test-libunwind-debug-frame.c'> <input type='hidden' name='id' value='f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/diff/?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>root</a>/<a href='/cgit.cgi/linux/net-next.git/diff/tools?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>tools</a>/<a href='/cgit.cgi/linux/net-next.git/diff/tools/build?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>build</a>/<a href='/cgit.cgi/linux/net-next.git/diff/tools/build/feature?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>feature</a>/<a href='/cgit.cgi/linux/net-next.git/diff/tools/build/feature/test-libunwind-debug-frame.c?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>test-libunwind-debug-frame.c</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=f9a42e0d58cf0fe3d902e63d4582f2ea4cd2bb8b'>Diffstat</a> (limited to 'tools/build/feature/test-libunwind-debug-frame.c')</div><table summary='diffstat' class='diffstat'>