SHA256
1
0
forked from pool/systemtap
systemtap/pr31288-build-with-gcc14.patch
Tony Jones 54d088036b Accepting request 1164226 from home:jones_tony:branches:devel:tools
- Fix runtime issues with v6.8 kernel (bsc#1222249)
    New patch: get-shm_flag-defines-from-the-appropriate-include-file-for-linux-6.8-kernel.patch
    New patch: pr31373-deal-with-the-removal-of-strlcpy-from-linux-6.8.patch
- Fix gcc14 build errors (bsc#1221706)
    New patch: bpf-translate.cxx-fix-build-against-upcoming-gcc14.patch
    New patch: pr31288-build-with-gcc14-cont.patch
    New patch: pr31288-build-with-gcc14.patch
    New patch: staprun-fix-build-against-upcoming-gcc14.patch
    New patch: stapvirt.c-more-gcc-14-werror-calloc-transposed-args-compatibility.patch

OBS-URL: https://build.opensuse.org/request/show/1164226
OBS-URL: https://build.opensuse.org/package/show/devel:tools/systemtap?expand=0&rev=148
2024-04-02 19:00:34 +00:00

1293 lines
46 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From: Frank Ch. Eigler <fche@redhat.com>
Date: Thu Jan 25 14:28:38 2024 -0500
Subject: PR31288: build with gcc14
Git-commit: 2604d135069f74cf5a223631cf92c9d0d818ef9c
References: bsc#1221706
Signed-off-by: Tony Jones <tonyj@suse.de>
X-Info: adjust patch, no 80642fc0d22abf9d5e19e705adfd7f12599ace7c
PR31288: build with gcc14
GCC14 makes -Wmissing-prototypes defaultish on, which triggers on such
gentle-spirited code as:
void foo(void) { }
when you should darn well know to have an exact duplicate declaration
prototype first. Because of course.
void foo(void);
void foo(void) { }
So anyway, with our fondness for -Werror, this broke the stap runtime
autoconf* business, bits of the runtime, bits of the translator.
Probably more stuff as yet unidentified. If your testsuite logs show:
[...]: error: no previous prototype for [...] [-Werror=missing-prototypes]
this is probably to blame.
Since this is coming to clang as well, we now get buildrun.cxx to
force -Wmissing-prototypes on all the time, so as to try to notice
occurrences of this problem earlier.
diff --git a/buildrun.cxx b/buildrun.cxx
index 76551415c..bb7bdcc9d 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -315,6 +315,7 @@ compile_pass (systemtap_session& s)
o << "CHECK_BUILD := $(CC) -DMODULE $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(CPPFLAGS) "
<< "$(LINUXINCLUDE) $(_KBUILD_CFLAGS) $(CFLAGS_KERNEL) $(EXTRA_CFLAGS) "
<< "$(CFLAGS) -DKBUILD_BASENAME=\\\"" << s.module_name << "\\\" "
+ << "-Wmissing-prototypes " // GCC14 prep, PR31288
<< WERROR << " -S -o /dev/null -xc " << endl;
o << "stap_check_build = $(shell " << superverbose << " if $(CHECK_BUILD) $(1) "
<< redirecterrors << " ; then echo \"$(2)\"; else echo \"$(3)\"; fi)" << endl;
@@ -345,6 +346,8 @@ compile_pass (systemtap_session& s)
// o << module_cflags << " += -Iusr/include" << endl;
// since such headers are cleansed of _KERNEL_ pieces that we need
+ o << module_cflags << " += -Wmissing-prototypes" << endl; // GCC14 prep, PR31288
+
o << "STAPCONF_HEADER := " << s.tmpdir << "/" << s.stapconf_name << endl;
o << ".DELETE_ON_ERROR: $(STAPCONF_HEADER)" << endl;
o << "$(STAPCONF_HEADER):" << endl;
diff --git a/runtime/linux/autoconf-access_ok_2args.c b/runtime/linux/autoconf-access_ok_2args.c
index 2e5c79a65..3e6041dd2 100644
--- a/runtime/linux/autoconf-access_ok_2args.c
+++ b/runtime/linux/autoconf-access_ok_2args.c
@@ -1,5 +1,7 @@
#include <linux/uaccess.h>
+int __something(void);
+
int __something(void)
{
return access_ok ((void*) 0, 4);
diff --git a/runtime/linux/autoconf-alloc-percpu-align.c b/runtime/linux/autoconf-alloc-percpu-align.c
index 158d579c0..912361269 100644
--- a/runtime/linux/autoconf-alloc-percpu-align.c
+++ b/runtime/linux/autoconf-alloc-percpu-align.c
@@ -1,6 +1,7 @@
#include <linux/percpu.h>
/* kernel commit f2a8205c */
+void foo (void);
void foo (void) {
(void) __alloc_percpu(sizeof(int), 8);
}
diff --git a/runtime/linux/autoconf-asm-access-ok.c b/runtime/linux/autoconf-asm-access-ok.c
index 1d0e61776..7a95758c2 100644
--- a/runtime/linux/autoconf-asm-access-ok.c
+++ b/runtime/linux/autoconf-asm-access-ok.c
@@ -1,5 +1,6 @@
#include <linux/uaccess.h>
+bool foo(const void __user *ptr, size_t size);
bool foo(const void __user *ptr, size_t size)
{
return __access_ok(ptr, size);
diff --git a/runtime/linux/autoconf-atomic_fetch_add_unless.c b/runtime/linux/autoconf-atomic_fetch_add_unless.c
index b765c39ef..b79c4742d 100644
--- a/runtime/linux/autoconf-atomic_fetch_add_unless.c
+++ b/runtime/linux/autoconf-atomic_fetch_add_unless.c
@@ -1,5 +1,7 @@
#include <linux/atomic.h>
+int foo(atomic_t *v);
+
int foo(atomic_t *v)
{
return atomic_fetch_add_unless(v, 1, 0);
diff --git a/runtime/linux/autoconf-bio-bi_opf.c b/runtime/linux/autoconf-bio-bi_opf.c
index 20db781f3..047ccd68c 100644
--- a/runtime/linux/autoconf-bio-bi_opf.c
+++ b/runtime/linux/autoconf-bio-bi_opf.c
@@ -19,6 +19,8 @@
* No intended functional changes in this commit.
*/
+void bar (void);
+
void bar (void)
{
struct bio foo;
diff --git a/runtime/linux/autoconf-cpu-clock.c b/runtime/linux/autoconf-cpu-clock.c
index b501bcdf3..6c80afdad 100644
--- a/runtime/linux/autoconf-cpu-clock.c
+++ b/runtime/linux/autoconf-cpu-clock.c
@@ -29,7 +29,8 @@
// reference sched_clock_cpu(). Thus it must be exported with the
// EXPORT_SYMBOL_GPL macro.
//
-
+void foo (void);
+
void foo (void) {
(void) cpu_clock(0);
}
diff --git a/runtime/linux/autoconf-d-real-inode.c b/runtime/linux/autoconf-d-real-inode.c
index 4ab820b8e..b8acdeafe 100644
--- a/runtime/linux/autoconf-d-real-inode.c
+++ b/runtime/linux/autoconf-d-real-inode.c
@@ -2,7 +2,7 @@
/* kernel function d_real_inode() is missing in older kernels like
* kernel-3.10.0-327.el7.x86_64 */
-
+void foo(void);
void foo(void) {
struct inode *ino = d_real_inode(NULL);
(void) ino;
diff --git a/runtime/linux/autoconf-dpath-path.c b/runtime/linux/autoconf-dpath-path.c
index c3654604b..fd2ae2c3c 100644
--- a/runtime/linux/autoconf-dpath-path.c
+++ b/runtime/linux/autoconf-dpath-path.c
@@ -1,6 +1,8 @@
#include <linux/path.h>
#include <linux/dcache.h>
+void ____autoconf_func(struct path *p);
+
void ____autoconf_func(struct path *p)
{
(void)d_path(p, NULL, 0);
diff --git a/runtime/linux/autoconf-files_lookup_fd_raw.c b/runtime/linux/autoconf-files_lookup_fd_raw.c
index 9e98aa064..5e8fd37d3 100644
--- a/runtime/linux/autoconf-files_lookup_fd_raw.c
+++ b/runtime/linux/autoconf-files_lookup_fd_raw.c
@@ -1,6 +1,8 @@
#include <linux/fdtable.h>
#include <linux/file.h>
+void foo(void);
+
void
foo(void)
{
diff --git a/runtime/linux/autoconf-from_kuid_munged.c b/runtime/linux/autoconf-from_kuid_munged.c
index 444dac1a6..6405a3bd7 100644
--- a/runtime/linux/autoconf-from_kuid_munged.c
+++ b/runtime/linux/autoconf-from_kuid_munged.c
@@ -1,6 +1,7 @@
#include <linux/uidgid.h>
/* We need to check for an exported or inlined from_kuid_munged() */
+uid_t bar (struct user_namespace *ns, kuid_t uid);
uid_t bar (struct user_namespace *ns, kuid_t uid) {
return (from_kuid_munged(ns, uid));
}
diff --git a/runtime/linux/autoconf-fs_supers-hlist.c b/runtime/linux/autoconf-fs_supers-hlist.c
index 3d626ce90..d49845548 100644
--- a/runtime/linux/autoconf-fs_supers-hlist.c
+++ b/runtime/linux/autoconf-fs_supers-hlist.c
@@ -11,6 +11,8 @@ vfs: convert fs_supers to hlist
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
*/
+int foo (struct super_block *sb);
+
int foo (struct super_block *sb) {
return (hlist_unhashed (& sb->s_instances));
}
diff --git a/runtime/linux/autoconf-get-kretprobe.c b/runtime/linux/autoconf-get-kretprobe.c
index ae5b4ab51..f25c1eae5 100644
--- a/runtime/linux/autoconf-get-kretprobe.c
+++ b/runtime/linux/autoconf-get-kretprobe.c
@@ -1,5 +1,7 @@
#include <linux/kprobes.h>
+void* foo(struct kretprobe_instance* ri);
+
void* foo(struct kretprobe_instance* ri)
{
return get_kretprobe(ri);
diff --git a/runtime/linux/autoconf-get_user_page_vma_remote.c b/runtime/linux/autoconf-get_user_page_vma_remote.c
index df3d05d27..78b28ce8e 100644
--- a/runtime/linux/autoconf-get_user_page_vma_remote.c
+++ b/runtime/linux/autoconf-get_user_page_vma_remote.c
@@ -31,6 +31,11 @@
// This forms part of a broader set of patches intended to eliminate the vmas
// parameter altogether.
+struct page *get_user_page_vma_remote_wrapper(struct mm_struct *mm,
+ unsigned long addr,
+ unsigned int gup_flags,
+ struct vm_area_struct **vmaps);
+
struct page *get_user_page_vma_remote_wrapper(struct mm_struct *mm,
unsigned long addr,
unsigned int gup_flags,
diff --git a/runtime/linux/autoconf-get_user_pages-flags.c b/runtime/linux/autoconf-get_user_pages-flags.c
index f135afa11..1bc317bb7 100644
--- a/runtime/linux/autoconf-get_user_pages-flags.c
+++ b/runtime/linux/autoconf-get_user_pages-flags.c
@@ -32,6 +32,11 @@
// struct vm_area_struct **vmas);
//
+long gupr_wrapper(struct task_struct *tsk, struct mm_struct *mm,
+ unsigned long start, unsigned long nr_pages,
+ unsigned int gup_flags, struct page **pages,
+ struct vm_area_struct **vmas);
+
long gupr_wrapper(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
unsigned int gup_flags, struct page **pages,
diff --git a/runtime/linux/autoconf-get_user_pages-notask_struct.c b/runtime/linux/autoconf-get_user_pages-notask_struct.c
index 15bb73bd2..4def2b4e2 100644
--- a/runtime/linux/autoconf-get_user_pages-notask_struct.c
+++ b/runtime/linux/autoconf-get_user_pages-notask_struct.c
@@ -29,6 +29,11 @@
// struct vm_area_struct **vmas);
//
+long gupr_wrapper(struct mm_struct *mm,
+ unsigned long start, unsigned long nr_pages,
+ unsigned int gup_flags, struct page **pages,
+ struct vm_area_struct **vmas);
+
long gupr_wrapper(struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
unsigned int gup_flags, struct page **pages,
diff --git a/runtime/linux/autoconf-get_user_pages_remote-flags.c b/runtime/linux/autoconf-get_user_pages_remote-flags.c
index c0c23609f..1ff9fff76 100644
--- a/runtime/linux/autoconf-get_user_pages_remote-flags.c
+++ b/runtime/linux/autoconf-get_user_pages_remote-flags.c
@@ -30,6 +30,11 @@
// struct vm_area_struct **vmas);
//
+long gupr_wrapper(struct task_struct *tsk, struct mm_struct *mm,
+ unsigned long start, unsigned long nr_pages,
+ unsigned int gup_flags, struct page **pages,
+ struct vm_area_struct **vmas);
+
long gupr_wrapper(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
unsigned int gup_flags, struct page **pages,
diff --git a/runtime/linux/autoconf-get_user_pages_remote-flags_locked.c b/runtime/linux/autoconf-get_user_pages_remote-flags_locked.c
index bb9b56717..bda2919a0 100644
--- a/runtime/linux/autoconf-get_user_pages_remote-flags_locked.c
+++ b/runtime/linux/autoconf-get_user_pages_remote-flags_locked.c
@@ -23,6 +23,11 @@
// struct vm_area_struct **vmas, int *locked);
//
+long gupr_wrapper2(struct task_struct *tsk, struct mm_struct *mm,
+ unsigned long start, unsigned long nr_pages,
+ unsigned int gup_flags, struct page **pages,
+ struct vm_area_struct **vmas, int *locked);
+
long gupr_wrapper2(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
unsigned int gup_flags, struct page **pages,
diff --git a/runtime/linux/autoconf-get_user_pages_remote-notask_struct.c b/runtime/linux/autoconf-get_user_pages_remote-notask_struct.c
index 3b849af3c..0b50f23ef 100644
--- a/runtime/linux/autoconf-get_user_pages_remote-notask_struct.c
+++ b/runtime/linux/autoconf-get_user_pages_remote-notask_struct.c
@@ -29,6 +29,11 @@
// struct vm_area_struct **vmas, int *locked);
//
+long gupr_wrapper(struct mm_struct *mm,
+ unsigned long start, unsigned long nr_pages,
+ unsigned int gup_flags, struct page **pages,
+ struct vm_area_struct **vmas, int *locked);
+
long gupr_wrapper(struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,
unsigned int gup_flags, struct page **pages,
diff --git a/runtime/linux/autoconf-grsecurity.c b/runtime/linux/autoconf-grsecurity.c
index ee2e4e55f..2b34290a3 100644
--- a/runtime/linux/autoconf-grsecurity.c
+++ b/runtime/linux/autoconf-grsecurity.c
@@ -5,6 +5,7 @@
struct module *t;
unsigned size;
+void foo (void);
void foo (void)
{
size += t->init_size_rw + t->init_size_rx + t->core_size_rw + t->core_size_rx;
diff --git a/runtime/linux/autoconf-hlist-4args.c b/runtime/linux/autoconf-hlist-4args.c
index ab9f8a5fe..8b504c50d 100644
--- a/runtime/linux/autoconf-hlist-4args.c
+++ b/runtime/linux/autoconf-hlist-4args.c
@@ -7,6 +7,7 @@ struct foo {
struct hlist_head *h;
+void foo (void);
void foo (void)
{
struct hlist_node *n;
diff --git a/runtime/linux/autoconf-hlist_add_tail_rcu.c b/runtime/linux/autoconf-hlist_add_tail_rcu.c
index 2c4660837..e5bc4a75f 100644
--- a/runtime/linux/autoconf-hlist_add_tail_rcu.c
+++ b/runtime/linux/autoconf-hlist_add_tail_rcu.c
@@ -1,5 +1,8 @@
#include <linux/rculist.h>
+void foo(struct hlist_node *n, struct hlist_head *h);
+
+
void foo(struct hlist_node *n, struct hlist_head *h)
{
hlist_add_tail_rcu(n, h);
diff --git a/runtime/linux/autoconf-hrtimer-getset-expires.c b/runtime/linux/autoconf-hrtimer-getset-expires.c
index 951cb99b3..39a0c23fc 100644
--- a/runtime/linux/autoconf-hrtimer-getset-expires.c
+++ b/runtime/linux/autoconf-hrtimer-getset-expires.c
@@ -1,5 +1,6 @@
#include <linux/hrtimer.h>
+void ____autoconf_func(struct hrtimer *t);
void ____autoconf_func(struct hrtimer *t)
{
hrtimer_set_expires(t, hrtimer_get_expires(t));
diff --git a/runtime/linux/autoconf-hw_breakpoint_context.c b/runtime/linux/autoconf-hw_breakpoint_context.c
index 0b625657c..d59d29360 100644
--- a/runtime/linux/autoconf-hw_breakpoint_context.c
+++ b/runtime/linux/autoconf-hw_breakpoint_context.c
@@ -2,6 +2,10 @@
/* void *context parameter is new since linux commit 4dc0da. */
struct perf_event * __percpu *
+hw_breakpoint_context(struct perf_event_attr *attr,
+ perf_overflow_handler_t triggered,
+ void *context);
+struct perf_event * __percpu *
hw_breakpoint_context(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context)
diff --git a/runtime/linux/autoconf-kernel_read-new-args.c b/runtime/linux/autoconf-kernel_read-new-args.c
index f77c7ccf1..4de0cb7d3 100644
--- a/runtime/linux/autoconf-kernel_read-new-args.c
+++ b/runtime/linux/autoconf-kernel_read-new-args.c
@@ -27,6 +27,8 @@
#include <linux/fs.h>
+ssize_t foo(struct file *file, void *buf, size_t count, loff_t *pos);
+
ssize_t foo(struct file *file, void *buf, size_t count, loff_t *pos)
{
return kernel_read(file, buf, count, pos);
diff --git a/runtime/linux/autoconf-kprobe-symbol-name.c b/runtime/linux/autoconf-kprobe-symbol-name.c
index eeb3f840e..6ee187330 100644
--- a/runtime/linux/autoconf-kprobe-symbol-name.c
+++ b/runtime/linux/autoconf-kprobe-symbol-name.c
@@ -1,5 +1,7 @@
#include <linux/kprobes.h>
+void func(struct kprobe *kp);
+
void func(struct kprobe *kp)
{
kp->symbol_name = "dummy";
diff --git a/runtime/linux/autoconf-ktime-get-real.c b/runtime/linux/autoconf-ktime-get-real.c
index 67b71409d..37164da17 100644
--- a/runtime/linux/autoconf-ktime-get-real.c
+++ b/runtime/linux/autoconf-ktime-get-real.c
@@ -1,5 +1,5 @@
#include <linux/ktime.h>
-
+void ____autoconf_func(struct timespec *ts);
void ____autoconf_func(struct timespec *ts)
{
ktime_get_real_ts(ts);
diff --git a/runtime/linux/autoconf-local-clock.c b/runtime/linux/autoconf-local-clock.c
index d148c873a..f4385ff2f 100644
--- a/runtime/linux/autoconf-local-clock.c
+++ b/runtime/linux/autoconf-local-clock.c
@@ -29,6 +29,7 @@
// reference sched_clock_cpu(). Thus it must be exported with the
// EXPORT_SYMBOL_GPL macro.
//
+void foo (void);
void foo (void) {
(void) local_clock();
diff --git a/runtime/linux/autoconf-lockdown-debugfs.c b/runtime/linux/autoconf-lockdown-debugfs.c
index 33fe50a54..c9a89ab80 100644
--- a/runtime/linux/autoconf-lockdown-debugfs.c
+++ b/runtime/linux/autoconf-lockdown-debugfs.c
@@ -1,5 +1,7 @@
#include <linux/security.h>
+int foo(void);
+
int foo(void) {
return security_locked_down(LOCKDOWN_DEBUGFS);
}
diff --git a/runtime/linux/autoconf-lockdown-kernel.c b/runtime/linux/autoconf-lockdown-kernel.c
index 90c241437..d4439c2fe 100644
--- a/runtime/linux/autoconf-lockdown-kernel.c
+++ b/runtime/linux/autoconf-lockdown-kernel.c
@@ -1,5 +1,7 @@
#include <linux/kernel.h>
+int foo(void);
+
int foo(void) {
return kernel_is_locked_down("something");
}
diff --git a/runtime/linux/autoconf-mm-context-vdso-base.c b/runtime/linux/autoconf-mm-context-vdso-base.c
index 99748fb75..c1428b492 100644
--- a/runtime/linux/autoconf-mm-context-vdso-base.c
+++ b/runtime/linux/autoconf-mm-context-vdso-base.c
@@ -1,5 +1,6 @@
#include <linux/sched.h>
+int context_vdso(struct task_struct *tsk);
int context_vdso(struct task_struct *tsk)
{
return (tsk->mm->context.vdso_base == 0L);
diff --git a/runtime/linux/autoconf-mm-context-vdso.c b/runtime/linux/autoconf-mm-context-vdso.c
index d2babc108..38e88fde1 100644
--- a/runtime/linux/autoconf-mm-context-vdso.c
+++ b/runtime/linux/autoconf-mm-context-vdso.c
@@ -1,5 +1,5 @@
#include <linux/sched.h>
-
+int context_vdso(struct task_struct *tsk);
int context_vdso(struct task_struct *tsk)
{
return (tsk->mm->context.vdso == NULL);
diff --git a/runtime/linux/autoconf-mm-shmempages.c b/runtime/linux/autoconf-mm-shmempages.c
index 2ce742be7..7f914be21 100644
--- a/runtime/linux/autoconf-mm-shmempages.c
+++ b/runtime/linux/autoconf-mm-shmempages.c
@@ -1,5 +1,7 @@
#include <linux/sched.h>
+void foo (void);
+
void foo (void) {
(void) MM_SHMEMPAGES;
}
diff --git a/runtime/linux/autoconf-mmap_lock.c b/runtime/linux/autoconf-mmap_lock.c
index 42119dc84..194e337a7 100644
--- a/runtime/linux/autoconf-mmap_lock.c
+++ b/runtime/linux/autoconf-mmap_lock.c
@@ -1,6 +1,8 @@
#include <linux/mm_types.h>
#include <linux/mmap_lock.h>
+int foobar(struct mm_struct *mm);
+
int foobar(struct mm_struct *mm) {
mmap_write_lock (mm);
mmap_read_unlock (mm);
diff --git a/runtime/linux/autoconf-module-sect-attrs.c b/runtime/linux/autoconf-module-sect-attrs.c
index f589dca30..78c0ada49 100644
--- a/runtime/linux/autoconf-module-sect-attrs.c
+++ b/runtime/linux/autoconf-module-sect-attrs.c
@@ -1,5 +1,7 @@
#include <linux/module.h>
+unsigned long foobar(struct module_sect_attrs *moosas);
+
unsigned long foobar(struct module_sect_attrs *moosas)
{
struct module_sect_attr msa = moosas->attrs[0];
diff --git a/runtime/linux/autoconf-netfilter-313b.c b/runtime/linux/autoconf-netfilter-313b.c
index 3b1883077..41fbaaef0 100644
--- a/runtime/linux/autoconf-netfilter-313b.c
+++ b/runtime/linux/autoconf-netfilter-313b.c
@@ -5,6 +5,13 @@
// to kernel-3.10.0-284.el7 per rhbz1230935#c4 as patch no 119478.
// This fixes PR18711.
+unsigned int
+new_style_hook(const struct nf_hook_ops *ops,
+ struct sk_buff *skb,
+ const struct net_device *nf_in,
+ const struct net_device *nf_out,
+ const struct nf_hook_state *state);
+
unsigned int
new_style_hook(const struct nf_hook_ops *ops,
struct sk_buff *skb,
diff --git a/runtime/linux/autoconf-netfilter-4_1.c b/runtime/linux/autoconf-netfilter-4_1.c
index 9f3ba01d5..a18b46c2b 100644
--- a/runtime/linux/autoconf-netfilter-4_1.c
+++ b/runtime/linux/autoconf-netfilter-4_1.c
@@ -14,6 +14,11 @@
//
// Signed-off-by: David S. Miller <davem@davemloft.net>
+unsigned int
+newer_style_hook(const struct nf_hook_ops *ops,
+ struct sk_buff *skb,
+ const struct nf_hook_state *state);
+
unsigned int
newer_style_hook(const struct nf_hook_ops *ops,
struct sk_buff *skb,
diff --git a/runtime/linux/autoconf-netfilter-4_4.c b/runtime/linux/autoconf-netfilter-4_4.c
index ad953efc3..9e1743515 100644
--- a/runtime/linux/autoconf-netfilter-4_4.c
+++ b/runtime/linux/autoconf-netfilter-4_4.c
@@ -28,6 +28,10 @@
// So we can simply remove all of the owner handling -- when module is
// removed it also needs to unregister all its hooks.
+unsigned int even_newer_style_hook(void *priv,
+ struct sk_buff *skb,
+ const struct nf_hook_state *state);
+
unsigned int even_newer_style_hook(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state)
diff --git a/runtime/linux/autoconf-netfilter.c b/runtime/linux/autoconf-netfilter.c
index f12266416..42e83fdb7 100644
--- a/runtime/linux/autoconf-netfilter.c
+++ b/runtime/linux/autoconf-netfilter.c
@@ -1,5 +1,11 @@
#include <linux/netfilter.h>
+unsigned int
+new_style_hook(const struct nf_hook_ops *ops, /* not: unsigned int hook; */
+ struct sk_buff *skb,
+ const struct net_device *in, const struct net_device *out,
+ int (*okfn)(struct sk_buff *));
+
unsigned int
new_style_hook(const struct nf_hook_ops *ops, /* not: unsigned int hook; */
struct sk_buff *skb,
diff --git a/runtime/linux/autoconf-nmi-uaccess-okay.c b/runtime/linux/autoconf-nmi-uaccess-okay.c
index fd4f54957..0cb4f63db 100644
--- a/runtime/linux/autoconf-nmi-uaccess-okay.c
+++ b/runtime/linux/autoconf-nmi-uaccess-okay.c
@@ -3,6 +3,8 @@
/* this function was no longer an inline since upstream kernel commit
* af5c40c6ee */
+bool foo(void);
+
bool foo(void)
{
return nmi_uaccess_okay();
diff --git a/runtime/linux/autoconf-pagefault_disable.c b/runtime/linux/autoconf-pagefault_disable.c
index c1b2c3a33..2a65f3f08 100644
--- a/runtime/linux/autoconf-pagefault_disable.c
+++ b/runtime/linux/autoconf-pagefault_disable.c
@@ -1,5 +1,6 @@
#include <linux/uaccess.h>
-
+int foo (int c);
+
int foo (int c)
{
pagefault_disable();
diff --git a/runtime/linux/autoconf-pde_data.c b/runtime/linux/autoconf-pde_data.c
index e8b582330..d5f7d5b0d 100644
--- a/runtime/linux/autoconf-pde_data.c
+++ b/runtime/linux/autoconf-pde_data.c
@@ -4,6 +4,8 @@
#include <linux/proc_fs.h>
+void* __something(const struct inode* i);
+
void* __something(const struct inode* i)
{
return pde_data (i);
diff --git a/runtime/linux/autoconf-perf-structpid.c b/runtime/linux/autoconf-perf-structpid.c
index cbf07ffa1..4fd390821 100644
--- a/runtime/linux/autoconf-perf-structpid.c
+++ b/runtime/linux/autoconf-perf-structpid.c
@@ -1,5 +1,7 @@
#include <linux/perf_event.h>
+void fn (void);
+
void fn (void) {
struct perf_event_attr *attr = NULL;
int cpu = 0;
diff --git a/runtime/linux/autoconf-proc_ops.c b/runtime/linux/autoconf-proc_ops.c
index e3d2f93a9..1d302a254 100644
--- a/runtime/linux/autoconf-proc_ops.c
+++ b/runtime/linux/autoconf-proc_ops.c
@@ -7,6 +7,9 @@
#include <linux/fs.h>
#include <linux/proc_fs.h>
+int
+proc_open_file_test(struct inode *inode, struct file *filp);
+
int
proc_open_file_test(struct inode *inode, struct file *filp)
{
diff --git a/runtime/linux/autoconf-procfs-owner.c b/runtime/linux/autoconf-procfs-owner.c
index dcec58b19..0545a0a50 100644
--- a/runtime/linux/autoconf-procfs-owner.c
+++ b/runtime/linux/autoconf-procfs-owner.c
@@ -1,7 +1,7 @@
#include <linux/proc_fs.h>
/* kernel commit 4d38a69c6 */
-
+void bar (void);
void bar (void) {
struct proc_dir_entry foo;
foo.owner = (void*) 0;
diff --git a/runtime/linux/autoconf-rcu_is_watching.c b/runtime/linux/autoconf-rcu_is_watching.c
index aca153e2a..4636e9057 100644
--- a/runtime/linux/autoconf-rcu_is_watching.c
+++ b/runtime/linux/autoconf-rcu_is_watching.c
@@ -4,7 +4,8 @@
//
// We need to use rcu_is_watching() where available to skip probes in
// rcu-idle state.
-
+struct context * _stp_runtime_get_context(void);
+
struct context * _stp_runtime_get_context(void)
{
if (! rcu_is_watching())
diff --git a/runtime/linux/autoconf-real-parent.c b/runtime/linux/autoconf-real-parent.c
index 16c26c479..fe7e3b567 100644
--- a/runtime/linux/autoconf-real-parent.c
+++ b/runtime/linux/autoconf-real-parent.c
@@ -8,6 +8,7 @@
struct task_struct t;
+void foo (void);
void foo (void)
{
struct task_struct *p;
diff --git a/runtime/linux/autoconf-regset.c b/runtime/linux/autoconf-regset.c
index 9d994b03c..895f58fd9 100644
--- a/runtime/linux/autoconf-regset.c
+++ b/runtime/linux/autoconf-regset.c
@@ -1,5 +1,6 @@
#include <linux/regset.h>
+int foobar(int n);
int foobar(int n) {
const struct user_regset_view *rsv = task_user_regset_view(current);
const struct user_regset *rs = & rsv->regsets[0];
diff --git a/runtime/linux/autoconf-relay-umode_t.c b/runtime/linux/autoconf-relay-umode_t.c
index a9e5126c0..6ebadbcda 100644
--- a/runtime/linux/autoconf-relay-umode_t.c
+++ b/runtime/linux/autoconf-relay-umode_t.c
@@ -27,6 +27,8 @@ static struct rchan_callbacks __stp_relay_callbacks = {
.create_buf_file = umode_t_callback,
};
+void foo (void);
+
void foo (void) {
(void) __stp_relay_callbacks.create_buf_file;
}
diff --git a/runtime/linux/autoconf-relay_buf-per_cpu_ptr.c b/runtime/linux/autoconf-relay_buf-per_cpu_ptr.c
index c105b3301..aae72376b 100644
--- a/runtime/linux/autoconf-relay_buf-per_cpu_ptr.c
+++ b/runtime/linux/autoconf-relay_buf-per_cpu_ptr.c
@@ -19,6 +19,8 @@
#include <linux/percpu.h>
#include <linux/bug.h>
+struct rchan_buf *relay_buf_test(struct rchan *chan, unsigned int cpu);
+
struct rchan_buf *relay_buf_test(struct rchan *chan, unsigned int cpu)
{
BUILD_BUG_ON(sizeof(chan->buf) != sizeof(struct rchan_buf **));
diff --git a/runtime/linux/autoconf-ring_buffer-flags.c b/runtime/linux/autoconf-ring_buffer-flags.c
index 7d7b8df03..7f4e5fa3e 100644
--- a/runtime/linux/autoconf-ring_buffer-flags.c
+++ b/runtime/linux/autoconf-ring_buffer-flags.c
@@ -1,5 +1,5 @@
#include <linux/ring_buffer.h>
-
+void ___autoconf_func(void);
void ___autoconf_func(void)
{
(void)ring_buffer_lock_reserve(NULL, 0, 0);
diff --git a/runtime/linux/autoconf-ring_buffer_lost_events.c b/runtime/linux/autoconf-ring_buffer_lost_events.c
index df3e315b3..52f3f7982 100644
--- a/runtime/linux/autoconf-ring_buffer_lost_events.c
+++ b/runtime/linux/autoconf-ring_buffer_lost_events.c
@@ -2,7 +2,7 @@
ring_buffer peek and consume calls. */
#include <linux/types.h>
#include <linux/ring_buffer.h>
-
+struct ring_buffer_event *foo (void);
struct ring_buffer_event *foo (void)
{
/* last field is not always there */
diff --git a/runtime/linux/autoconf-ring_buffer_read_prepare.c b/runtime/linux/autoconf-ring_buffer_read_prepare.c
index 03dc6ea10..22fa46d44 100644
--- a/runtime/linux/autoconf-ring_buffer_read_prepare.c
+++ b/runtime/linux/autoconf-ring_buffer_read_prepare.c
@@ -2,6 +2,7 @@
#include <linux/types.h>
#include <linux/ring_buffer.h>
+void foo (void);
void foo (void)
{
ring_buffer_read_prepare(NULL, 1);
diff --git a/runtime/linux/autoconf-save-stack-trace-no-bp.c b/runtime/linux/autoconf-save-stack-trace-no-bp.c
index 5c940f2d3..f1485ef8a 100644
--- a/runtime/linux/autoconf-save-stack-trace-no-bp.c
+++ b/runtime/linux/autoconf-save-stack-trace-no-bp.c
@@ -3,6 +3,8 @@
#include <linux/stacktrace.h>
#include <asm/stacktrace.h>
+void foo(struct task_struct *foo);
+
void foo(struct task_struct *foo)
{
struct stack_trace trace;
diff --git a/runtime/linux/autoconf-save-stack-trace.c b/runtime/linux/autoconf-save-stack-trace.c
index 07d45c312..922017126 100644
--- a/runtime/linux/autoconf-save-stack-trace.c
+++ b/runtime/linux/autoconf-save-stack-trace.c
@@ -3,6 +3,8 @@
#include <linux/stacktrace.h>
#include <asm/stacktrace.h>
+void foo(struct task_struct *foo);
+
void foo(struct task_struct *foo)
{
struct stack_trace trace;
@@ -16,6 +18,8 @@ void foo(struct task_struct *foo)
static const struct stacktrace_ops print_stack_ops;
+void dumper(struct task_struct *foo);
+
void dumper(struct task_struct *foo)
{
dump_trace(foo, 0, 0, 0, &print_stack_ops, 0);
diff --git a/runtime/linux/autoconf-set_fs.c b/runtime/linux/autoconf-set_fs.c
index 939e22f83..3fbdf8fac 100644
--- a/runtime/linux/autoconf-set_fs.c
+++ b/runtime/linux/autoconf-set_fs.c
@@ -1,6 +1,7 @@
#include <linux/uaccess.h>
// XXX set_fs is an inline function, so we can't detect it with exportconf:
+void __something(void);
void __something(void)
{
mm_segment_t oldfs = get_fs();
diff --git a/runtime/linux/autoconf-smpcall-4args.c b/runtime/linux/autoconf-smpcall-4args.c
index 2966d95ee..168b6c991 100644
--- a/runtime/linux/autoconf-smpcall-4args.c
+++ b/runtime/linux/autoconf-smpcall-4args.c
@@ -1,11 +1,15 @@
#include <linux/kernel.h>
#include <linux/smp.h>
+void foo (void *arg);
+
void foo (void *arg)
{
(void) arg;
}
+void bar (void);
+
void bar (void)
{
smp_call_function_single (0, &foo, 0, 1);
diff --git a/runtime/linux/autoconf-smpcall-5args.c b/runtime/linux/autoconf-smpcall-5args.c
index 83060f48d..1c8a948ea 100644
--- a/runtime/linux/autoconf-smpcall-5args.c
+++ b/runtime/linux/autoconf-smpcall-5args.c
@@ -1,11 +1,15 @@
#include <linux/kernel.h>
#include <linux/smp.h>
+void foo (void *arg);
+
void foo (void *arg)
{
(void) arg;
}
+void bar (void);
+
void bar (void)
{
smp_call_function_single (0, &foo, 0, 1, 0);
diff --git a/runtime/linux/autoconf-stack-trace-save-regs.c b/runtime/linux/autoconf-stack-trace-save-regs.c
index 1fd515f8f..d1e541a9f 100644
--- a/runtime/linux/autoconf-stack-trace-save-regs.c
+++ b/runtime/linux/autoconf-stack-trace-save-regs.c
@@ -1,5 +1,7 @@
#include <linux/stacktrace.h>
+unsigned int foo (void);
+
unsigned int foo (void)
{
unsigned long e[10];
diff --git a/runtime/linux/autoconf-stacktrace_h.c b/runtime/linux/autoconf-stacktrace_h.c
index ced52b2cb..236e41331 100644
--- a/runtime/linux/autoconf-stacktrace_h.c
+++ b/runtime/linux/autoconf-stacktrace_h.c
@@ -3,6 +3,8 @@
// Check to see if there is an <asm/stacktrace.h>
// and a struc stack_frame defined.
// Older kernels have struct stack_frame in <asm/processor.h>.
+int stack_frame_size(void);
+
int stack_frame_size(void) {
return sizeof(struct stack_frame);
}
diff --git a/runtime/linux/autoconf-stacktrace_ops-int-address.c b/runtime/linux/autoconf-stacktrace_ops-int-address.c
index 8ca277a6e..fb215ef11 100644
--- a/runtime/linux/autoconf-stacktrace_ops-int-address.c
+++ b/runtime/linux/autoconf-stacktrace_ops-int-address.c
@@ -4,6 +4,10 @@
// check for 4.6 patch which changed the function signature of
// stacktrace_ops 'address' member.
+int print_stack_address(void *data __attribute__ ((unused)),
+ unsigned long addr __attribute__ ((unused)),
+ int reliable __attribute__ ((unused)));
+
int print_stack_address(void *data __attribute__ ((unused)),
unsigned long addr __attribute__ ((unused)),
int reliable __attribute__ ((unused)))
diff --git a/runtime/linux/autoconf-stacktrace_ops-warning.c b/runtime/linux/autoconf-stacktrace_ops-warning.c
index 9c00f0583..75243e79f 100644
--- a/runtime/linux/autoconf-stacktrace_ops-warning.c
+++ b/runtime/linux/autoconf-stacktrace_ops-warning.c
@@ -2,6 +2,8 @@
#include <linux/sched.h>
#include <asm/stacktrace.h>
+void foo (void);
+
void foo (void)
{
struct stacktrace_ops t;
diff --git a/runtime/linux/autoconf-syscall_get_args_3args.c b/runtime/linux/autoconf-syscall_get_args_3args.c
index c08faa915..3435d99b0 100644
--- a/runtime/linux/autoconf-syscall_get_args_3args.c
+++ b/runtime/linux/autoconf-syscall_get_args_3args.c
@@ -7,6 +7,7 @@ struct task_struct *task;
struct pt_regs *regs;
unsigned long *args;
+void __something(void);
void __something(void)
{
syscall_get_arguments(task, regs, args);
diff --git a/runtime/linux/autoconf-task-state.c b/runtime/linux/autoconf-task-state.c
index 27a1d7c13..2941f2ef3 100644
--- a/runtime/linux/autoconf-task-state.c
+++ b/runtime/linux/autoconf-task-state.c
@@ -13,6 +13,8 @@
#include <linux/sched.h>
+unsigned int bar (struct task_struct *foo);
+
unsigned int bar (struct task_struct *foo) {
return (foo->state = 0);
}
diff --git a/runtime/linux/autoconf-task-uid.c b/runtime/linux/autoconf-task-uid.c
index 8e40f8314..614b450e2 100644
--- a/runtime/linux/autoconf-task-uid.c
+++ b/runtime/linux/autoconf-task-uid.c
@@ -1,5 +1,7 @@
#include <linux/sched.h>
+int bar (struct task_struct *foo);
+
int bar (struct task_struct *foo) {
return (foo->uid = 0);
}
diff --git a/runtime/linux/autoconf-task_work-struct.c b/runtime/linux/autoconf-task_work-struct.c
index b6dbf14d2..aedaea9ed 100644
--- a/runtime/linux/autoconf-task_work-struct.c
+++ b/runtime/linux/autoconf-task_work-struct.c
@@ -2,6 +2,8 @@
/* Original task_work code used 'struct task_work' (and
* init_task_work() had 3 arguments). */
+void __autoconf_func(void);
+
void __autoconf_func(void)
{
struct task_work work;
diff --git a/runtime/linux/autoconf-trace-printk.c b/runtime/linux/autoconf-trace-printk.c
index c7515bc64..dbed8880c 100644
--- a/runtime/linux/autoconf-trace-printk.c
+++ b/runtime/linux/autoconf-trace-printk.c
@@ -1,6 +1,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
+int bar (void);
int bar (void) {
static char *fmt = "%s\n";
trace_printk (fmt, "hello world");
diff --git a/runtime/linux/autoconf-tracepoint-has-data.c b/runtime/linux/autoconf-tracepoint-has-data.c
index 777c31378..c34c6db38 100644
--- a/runtime/linux/autoconf-tracepoint-has-data.c
+++ b/runtime/linux/autoconf-tracepoint-has-data.c
@@ -1,6 +1,9 @@
#include <linux/tracepoint.h>
#include <trace/events/sched.h>
+
+void baz (void *cb_data, struct task_struct *parent, struct task_struct *child);
+
void baz (void *cb_data, struct task_struct *parent, struct task_struct *child) {
(void) cb_data;
(void) parent;
@@ -10,6 +13,8 @@ void baz (void *cb_data, struct task_struct *parent, struct task_struct *child)
/* Until 2.6.35 (commit 38516ab59fbc5b), register_trace_* took one argument.
Until 5.7.0 (commit a2806ef77ff9a9), this could be checked by checking
for the absence of DECLARE_TRACE_NOARGS. Now _NOARGS variant is removed. */
+void bar (void);
+
void bar (void) {
register_trace_sched_process_fork(baz, NULL);
}
diff --git a/runtime/linux/autoconf-tracepoint-strings.c b/runtime/linux/autoconf-tracepoint-strings.c
index 1b4785c8d..fcfaa0c2e 100644
--- a/runtime/linux/autoconf-tracepoint-strings.c
+++ b/runtime/linux/autoconf-tracepoint-strings.c
@@ -1,6 +1,7 @@
#include <linux/tracepoint.h>
/* Until 3.15 (commit de7b2973903c), tracepoints used strings to register. */
+void foo (void);
void foo (void) {
(void) tracepoint_probe_register("foo", NULL, NULL);
tracepoint_probe_unregister("foo", NULL, NULL);
diff --git a/runtime/linux/autoconf-twa_resume.c b/runtime/linux/autoconf-twa_resume.c
index 306cd28ef..5a6a1d958 100644
--- a/runtime/linux/autoconf-twa_resume.c
+++ b/runtime/linux/autoconf-twa_resume.c
@@ -2,6 +2,8 @@
// Check to see if there is a define or enum for TWA_RESUME.
// Older kernels just pass in true or false into task_work_add()
+int twa_resume_exist(void);
+
int twa_resume_exist(void) {
return (TWA_RESUME == TWA_RESUME);
}
diff --git a/runtime/linux/autoconf-udelay_simple.c b/runtime/linux/autoconf-udelay_simple.c
index 3a7b19fb3..755448e7c 100644
--- a/runtime/linux/autoconf-udelay_simple.c
+++ b/runtime/linux/autoconf-udelay_simple.c
@@ -1,5 +1,7 @@
#include <asm/delay.h>
+void foo (unsigned long long usecs);
+
void foo (unsigned long long usecs)
{
udelay_simple(usecs);
diff --git a/runtime/linux/autoconf-unwind-stack-trace.c b/runtime/linux/autoconf-unwind-stack-trace.c
index 2ec399e67..8f784ffa4 100644
--- a/runtime/linux/autoconf-unwind-stack-trace.c
+++ b/runtime/linux/autoconf-unwind-stack-trace.c
@@ -1,6 +1,8 @@
#include <linux/sched.h>
#include <asm/unwind.h>
+void unwind_stack_trace (void);
+
void unwind_stack_trace (void)
{
struct unwind_state state;
diff --git a/runtime/linux/autoconf-user-access-begin-2-args.c b/runtime/linux/autoconf-user-access-begin-2-args.c
index 2ecc5af9e..32a82ae7a 100644
--- a/runtime/linux/autoconf-user-access-begin-2-args.c
+++ b/runtime/linux/autoconf-user-access-begin-2-args.c
@@ -1,5 +1,7 @@
#include <linux/uaccess.h>
+bool foo(const void __user *ptr, size_t size);
+
bool foo(const void __user *ptr, size_t size)
{
return user_access_begin(ptr, size);
diff --git a/runtime/linux/autoconf-user-access-begin-3-args.c b/runtime/linux/autoconf-user-access-begin-3-args.c
index 2942ddf08..2bb795b5f 100644
--- a/runtime/linux/autoconf-user-access-begin-3-args.c
+++ b/runtime/linux/autoconf-user-access-begin-3-args.c
@@ -1,5 +1,7 @@
#include <linux/uaccess.h>
+bool foo(int mode, const void __user *ptr, size_t size);
+
bool foo(int mode, const void __user *ptr, size_t size)
{
return user_access_begin(mode, ptr, size);
diff --git a/runtime/linux/autoconf-user-access-end.c b/runtime/linux/autoconf-user-access-end.c
index 4eafb8222..6109d42b6 100644
--- a/runtime/linux/autoconf-user-access-end.c
+++ b/runtime/linux/autoconf-user-access-end.c
@@ -1,5 +1,5 @@
#include <linux/uaccess.h>
-
+void foo(void);
void foo(void)
{
user_access_end();
diff --git a/runtime/linux/autoconf-utrace-via-tracepoints.c b/runtime/linux/autoconf-utrace-via-tracepoints.c
index 89ba29822..95f844015 100644
--- a/runtime/linux/autoconf-utrace-via-tracepoints.c
+++ b/runtime/linux/autoconf-utrace-via-tracepoints.c
@@ -13,6 +13,10 @@
#error "CONFIG_TRACEPOINTS is not enabled"
#endif
+void __sched_process_fork(void *cb_data __attribute__((unused)),
+ struct task_struct *parent __attribute__((unused)),
+ struct task_struct *child __attribute__((unused)));
+
void __sched_process_fork(void *cb_data __attribute__((unused)),
struct task_struct *parent __attribute__((unused)),
struct task_struct *child __attribute__((unused)))
@@ -20,12 +24,18 @@ void __sched_process_fork(void *cb_data __attribute__((unused)),
return;
}
+void __sched_process_exit(void *cb_data __attribute__((unused)),
+ struct task_struct *task __attribute__((unused)));
void __sched_process_exit(void *cb_data __attribute__((unused)),
struct task_struct *task __attribute__((unused)))
{
return;
}
+void __sched_process_exec(void *cb_data __attribute__ ((unused)),
+ struct task_struct *task __attribute__((unused)),
+ pid_t old_pid __attribute__((unused)),
+ struct linux_binprm *bprm __attribute__((unused)));
void __sched_process_exec(void *cb_data __attribute__ ((unused)),
struct task_struct *task __attribute__((unused)),
pid_t old_pid __attribute__((unused)),
@@ -34,6 +44,9 @@ void __sched_process_exec(void *cb_data __attribute__ ((unused)),
return;
}
+void __sys_enter(void *cb_data __attribute__ ((unused)),
+ struct pt_regs *regs __attribute__((unused)),
+ long id __attribute__((unused)));
void __sys_enter(void *cb_data __attribute__ ((unused)),
struct pt_regs *regs __attribute__((unused)),
long id __attribute__((unused)))
@@ -41,6 +54,9 @@ void __sys_enter(void *cb_data __attribute__ ((unused)),
return;
}
+void __sys_exit(void *cb_data __attribute__ ((unused)),
+ struct pt_regs *regs __attribute__((unused)),
+ long ret __attribute__((unused)));
void __sys_exit(void *cb_data __attribute__ ((unused)),
struct pt_regs *regs __attribute__((unused)),
long ret __attribute__((unused)))
@@ -48,7 +64,8 @@ void __sys_exit(void *cb_data __attribute__ ((unused)),
return;
}
-void __autoconf_func(void)
+void __autoconf_func(void);
+void __autoconf_func(void)
{
(void) register_trace_sched_process_fork(__sched_process_fork, NULL);
(void) register_trace_sched_process_exit(__sched_process_exit, NULL);
diff --git a/runtime/linux/autoconf-vm-area-pte.c b/runtime/linux/autoconf-vm-area-pte.c
index 6493cb0d1..f1541e931 100644
--- a/runtime/linux/autoconf-vm-area-pte.c
+++ b/runtime/linux/autoconf-vm-area-pte.c
@@ -1,6 +1,8 @@
#include <linux/vmalloc.h>
/* kernel commit cd12909cb576d373 */
+struct vm_struct * foo (void);
+
struct vm_struct * foo (void) {
return alloc_vm_area(PAGE_SIZE, NULL);
}
diff --git a/runtime/linux/autoconf-walk-stack.c b/runtime/linux/autoconf-walk-stack.c
index c6c972917..2b02e45ba 100644
--- a/runtime/linux/autoconf-walk-stack.c
+++ b/runtime/linux/autoconf-walk-stack.c
@@ -2,6 +2,8 @@
#include <linux/sched.h>
#include <asm/stacktrace.h>
+void foo (void);
+
void foo (void)
{
struct stacktrace_ops t;
diff --git a/runtime/linux/perf_event_counter_context.c b/runtime/linux/perf_event_counter_context.c
index 04d5912cb..88ff2bc87 100644
--- a/runtime/linux/perf_event_counter_context.c
+++ b/runtime/linux/perf_event_counter_context.c
@@ -1,6 +1,13 @@
#include <linux/perf_event.h>
/* void *context parameter is new since linux commit 4dc0da. */
+struct perf_event *
+pref_ec_context(struct perf_event_attr *attr,
+ int cpu,
+ struct task_struct *task,
+ perf_overflow_handler_t callback,
+ void *context);
+
struct perf_event *
pref_ec_context(struct perf_event_attr *attr,
int cpu,
diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h
index a0a9ac389..1fa62c7ed 100644
--- a/runtime/linux/runtime.h
+++ b/runtime/linux/runtime.h
@@ -457,6 +457,7 @@ static int stap_init_module (void)
module_init(stap_init_module);
+void stap_cleanup_module(void);
void stap_cleanup_module(void)
{
_stp_transport_close();
diff --git a/runtime/linux/task_finder2.c b/runtime/linux/task_finder2.c
index 3e97dd817..9c2f5ad88 100644
--- a/runtime/linux/task_finder2.c
+++ b/runtime/linux/task_finder2.c
@@ -695,6 +695,10 @@ __stp_call_callbacks(struct stap_task_finder_target *tgt,
}
}
+bool
+__verify_build_id(struct task_struct *tsk, unsigned long addr,
+ unsigned const char *build_id, int build_id_len);
+
bool
__verify_build_id(struct task_struct *tsk, unsigned long addr,
unsigned const char *build_id, int build_id_len)
diff --git a/runtime/sym.c b/runtime/sym.c
index 720ba2239..d702d1f11 100644
--- a/runtime/sym.c
+++ b/runtime/sym.c
@@ -368,9 +368,9 @@ static void _stp_filename_lookup_5(struct _stp_module *mod, char ** filename,
#endif /* STP_NEED_LINE_DATA */
-unsigned long _stp_linenumber_lookup(unsigned long addr, struct task_struct *task,
- char ** filename, int need_filename,
- struct context *c)
+static unsigned long _stp_linenumber_lookup(unsigned long addr, struct task_struct *task,
+ char ** filename, int need_filename,
+ struct context *c)
{
struct _stp_module *m;
struct _stp_section *sec;
diff --git a/runtime/transport/symbols.c b/runtime/transport/symbols.c
index 64ade9e0f..92635f3be 100644
--- a/runtime/transport/symbols.c
+++ b/runtime/transport/symbols.c
@@ -154,6 +154,8 @@ struct stap_module_sect_attrs
void get_module_sect_attrs(struct module* mod,
struct stap_module_sect_attrs* as);
+void put_module_sect_attrs(struct stap_module_sect_attrs* as);
+
void put_module_sect_attrs(struct stap_module_sect_attrs* as)
{
_stp_kfree(as->sections);
diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp
index 0a7cd74dc..cf54aa152 100644
--- a/tapset/linux/aux_syscalls.stp
+++ b/tapset/linux/aux_syscalls.stp
@@ -152,6 +152,8 @@ _stp_lookup_or_str(const _stp_val_array * const array, long val, char *ptr,
#ifndef STAPCONF_SIGSET_FROM_COMPAT_EXPORTED
void
+sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
+void
sigset_from_compat(sigset_t *set, compat_sigset_t *compat)
{
switch (_NSIG_WORDS) {
diff --git a/tapsets.cxx b/tapsets.cxx
index 4b8fa853d..05ad07e75 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -12229,6 +12229,7 @@ tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s)
if (used_args.empty())
{
tpop->newline() << "STP_TRACE_ENTER_REAL_NOARGS(" << enter_real_fn << ");";
+ s.op->newline() << "STP_TRACE_ENTER_REAL_NOARGS(" << enter_real_fn << ");";
s.op->newline() << "STP_TRACE_ENTER_REAL_NOARGS(" << enter_real_fn << ")";
}
else
@@ -12242,6 +12243,14 @@ tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline() << ", int64_t __tracepoint_arg_" << used_args[j]->name;
}
tpop->line() << ");";
+ s.op->newline() << ");";
+ s.op->indent(-2);
+ s.op->newline() << "STP_TRACE_ENTER_REAL(" << enter_real_fn;
+ s.op->indent(2);
+ for (unsigned j = 0; j < used_args.size(); ++j)
+ {
+ s.op->newline() << ", int64_t __tracepoint_arg_" << used_args[j]->name;
+ }
s.op->newline() << ")";
s.op->indent(-2);
}
@@ -12294,6 +12303,8 @@ tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s)
// emit normalized registration functions
+ s.op->newline() << "int register_tracepoint_probe_" << i << "(void);";
+ tpop->newline() << "int register_tracepoint_probe_" << i << "(void);" << endl;
tpop->newline() << "int register_tracepoint_probe_" << i << "(void) {";
tpop->newline(1) << "return STP_TRACE_REGISTER(" << p->tracepoint_name
<< ", " << enter_fn << ");";
@@ -12303,16 +12314,16 @@ tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s)
// can only occur if the tracepoint doesn't exist (yet?), or if we
// weren't even registered. The former should be OKed by the initial
// registration call, and the latter is safe to ignore.
+
+ // declare normalized registration functions
+ s.op->newline() << "void unregister_tracepoint_probe_" << i << "(void);";
+ tpop->newline() << "void unregister_tracepoint_probe_" << i << "(void);" << endl;
tpop->newline() << "void unregister_tracepoint_probe_" << i << "(void) {";
tpop->newline(1) << "(void) STP_TRACE_UNREGISTER(" << p->tracepoint_name
<< ", " << enter_fn << ");";
tpop->newline(-1) << "}";
tpop->newline();
- // declare normalized registration functions
- s.op->newline() << "int register_tracepoint_probe_" << i << "(void);";
- s.op->newline() << "void unregister_tracepoint_probe_" << i << "(void);";
-
tpop->assert_0_indent();
}
diff --git a/translate.cxx b/translate.cxx
index 675ef589f..24091d62b 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -1211,6 +1211,7 @@ c_unparser::emit_common_header ()
o->newline( 0) << "#define STP_ON_THE_FLY_INTERVAL (100*1000*1000)"; // default to 100 ms
o->newline( 0) << "#endif";
+ o->newline( 0) << "hrtimer_return_t module_refresh_timer_cb(struct hrtimer *timer);";
o->newline( 0) << "hrtimer_return_t module_refresh_timer_cb(struct hrtimer *timer) {";
o->newline(+1) << "if (atomic_cmpxchg(&need_module_refresh, 1, 0) == 1)";
// NB: one might like to invoke systemtap_module_refresh(NULL) directly from