diff options
author | Andy Whitcroft <apw@canonical.com> | 2011-09-16 13:20:31 +0100 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2012-06-20 13:50:34 -0600 |
commit | 929e47dbeefc4fd0d41b29e6f255856a614b192b (patch) | |
tree | 025b73f83e146694bc05dd9564ac1bff7402f4a4 /scripts | |
parent | 4e64990dd043711329b2a912551a93e1c3abfdbd (diff) |
UBUNTU: SAUCE: headers_install: fix #include "..." usage for userspace
When headers are converted to userspace headers they may include
relative includes. For example x86 has the following in its
asm/posix_types.h:
# ifdef __i386__
# include "posix_types_32.h"
# else
# include "posix_types_64.h"
# endif
However this is not safe in the face of the gcc option -I- which removes
"the directory the file I am being included from" from the search list.
Convert these references to <dir/...> form avoiding this.
BugLink: http://bugs.launchpad.net/bugs/824377
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.headersinst | 6 | ||||
-rw-r--r-- | scripts/headers_install.pl | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index d3bae5e7b60..2a3c1b79b86 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst @@ -55,9 +55,9 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@)) quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ file$(if $(word 2, $(all-files)),s)) cmd_install = \ - $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \ - $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(objhdr-y); \ - $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(genhdr-y); \ + $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(printdir) $(header-y); \ + $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(printdir) $(objhdr-y); \ + $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(printdir) $(genhdr-y); \ for F in $(wrapper-files); do \ echo "\#include <asm-generic/$$F>" > $(install)/$$F; \ done; \ diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl index 48462be328b..9f56fc50116 100644 --- a/scripts/headers_install.pl +++ b/scripts/headers_install.pl @@ -18,7 +18,9 @@ use strict; -my ($readdir, $installdir, $arch, @files) = @ARGV; +my ($readdir, $installdir, $arch, $printdir, @files) = @ARGV; + +$printdir =~ s@^include/@@; my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; @@ -30,6 +32,10 @@ foreach my $file (@files) { open(my $out, '>', $tmpfile) or die "$tmpfile: $!\n"; while (my $line = <$in>) { + # Any #include which uses "" and does not have a path needs + # rewriting so that the resultant user space headers are + # safe against the use of -I-. + $line =~ s/^(\s*#\s*include\s+)"([^\/]*?)"/$1<$printdir\/$2>/; $line =~ s/([\s(])__user\s/$1/g; $line =~ s/([\s(])__force\s/$1/g; $line =~ s/([\s(])__iomem\s/$1/g; |