diff options
Diffstat (limited to '')
-rw-r--r-- | debian/rules.d/tools/objtool/Makefile | 18 | ||||
-rw-r--r-- | debian/rules.d/tools/objtool/objtool.c | 21 |
2 files changed, 39 insertions, 0 deletions
diff --git a/debian/rules.d/tools/objtool/Makefile b/debian/rules.d/tools/objtool/Makefile new file mode 100644 index 0000000000..8666355f6e --- /dev/null +++ b/debian/rules.d/tools/objtool/Makefile @@ -0,0 +1,18 @@ +PROGS = \ + objtool \ + objtool.real-powerpc \ + objtool.real-x86 + +include $(top_rulesdir)/Makefile.inc + +objtool.real-%: + mkdir -p $* +# objtool always uses HOSTCC, HOSTLD, and HOSTAR; we need to override +# these on the command line to make cross-builds work. But it also +# builds fixdep which still needs to be native in a cross-build. Set +# REALHOSTCC and REALHOSTLD variables which will be used for fixdep. + $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR)/$* HOSTARCH=$(KERNEL_ARCH) ARCH=$* HOSTCC=$(CC) HOSTLD=$(CROSS_COMPILE)ld HOSTAR=$(CROSS_COMPILE)ar REALHOSTCC=gcc REALHOSTLD=ld V=1 EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' + ln -f $*/objtool $@ + +%: %.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ diff --git a/debian/rules.d/tools/objtool/objtool.c b/debian/rules.d/tools/objtool/objtool.c new file mode 100644 index 0000000000..beb42c631f --- /dev/null +++ b/debian/rules.d/tools/objtool/objtool.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +int main(int argc, char **argv) +{ + const char *arch; + char prog[1024]; + + arch = getenv("SRCARCH"); + if (!arch) { + fprintf(stderr, "objtool: SRCARCH variable not defined\n"); + return 2; + } + + snprintf(prog, sizeof(prog), "%s.real-%s", argv[0], arch); + execv(prog, argv); + + fprintf(stderr, "objtool: Failed to execute %s\n", prog); + return 1; +} |