Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
patches/binutils: Sync patches with buildroot
The buildroot patches have xtensa for the supported versions of binutils we use, and a few others that might help us keep away from host polution. Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
- Loading branch information
Showing
33 changed files
with
6,722 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines | ||
|
||
Likewise, binutils has no idea about any of these new targets either, so we | ||
fix that up too.. now we're able to actually build a real toolchain for | ||
sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more | ||
inept targets than that one, really. Go look, I promise). | ||
|
||
--- a/configure | ||
+++ b/configure | ||
@@ -1495,7 +1495,7 @@ | ||
mips*-*-*) | ||
noconfigdirs="$noconfigdirs gprof" | ||
;; | ||
- sh-*-* | sh64-*-*) | ||
+ sh*-*-* | sh64-*-*) | ||
case "${target}" in | ||
sh*-*-elf) | ||
;; | ||
--- a/configure.ac | ||
+++ b/configure.ac | ||
@@ -712,7 +712,7 @@ | ||
mips*-*-*) | ||
noconfigdirs="$noconfigdirs gprof" | ||
;; | ||
- sh-*-* | sh64-*-*) | ||
+ sh*-*-* | sh64-*-*) | ||
case "${target}" in | ||
sh*-*-elf) | ||
;; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.am binutils-2.17.50.0.17/ld/Makefile.am | ||
--- binutils-2.17.50.0.17.oorig/ld/Makefile.am 2007-06-18 19:29:29.000000000 +0200 | ||
+++ binutils-2.17.50.0.17/ld/Makefile.am 2007-06-25 10:00:36.000000000 +0200 | ||
@@ -18,7 +18,7 @@ | ||
# We put the scripts in the directory $(scriptdir)/ldscripts. | ||
# We can't put the scripts in $(datadir) because the SEARCH_DIR | ||
# directives need to be different for native and cross linkers. | ||
-scriptdir = $(tooldir)/lib | ||
+scriptdir = $(libdir) | ||
|
||
EMUL = @EMUL@ | ||
EMULATION_OFILES = @EMULATION_OFILES@ | ||
diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.in binutils-2.17.50.0.17/ld/Makefile.in | ||
--- binutils-2.17.50.0.17.oorig/ld/Makefile.in 2007-06-18 19:29:29.000000000 +0200 | ||
+++ binutils-2.17.50.0.17/ld/Makefile.in 2007-06-25 10:00:36.000000000 +0200 | ||
@@ -287,7 +287,7 @@ | ||
# We put the scripts in the directory $(scriptdir)/ldscripts. | ||
# We can't put the scripts in $(datadir) because the SEARCH_DIR | ||
# directives need to be different for native and cross linkers. | ||
-scriptdir = $(tooldir)/lib | ||
+scriptdir = $(libdir) | ||
BASEDIR = $(srcdir)/.. | ||
BFDDIR = $(BASEDIR)/bfd | ||
INCDIR = $(BASEDIR)/include |
21 changes: 21 additions & 0 deletions
21
patches/binutils/2.23.2/300-012_check_ldrunpath_length.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
diff -Nura binutils-2.21.orig/ld/emultempl/elf32.em binutils-2.21/ld/emultempl/elf32.em | ||
--- binutils-2.21.orig/ld/emultempl/elf32.em 2010-10-29 09:10:36.000000000 -0300 | ||
+++ binutils-2.21/ld/emultempl/elf32.em 2010-12-10 09:26:56.746102724 -0300 | ||
@@ -1270,6 +1270,8 @@ | ||
&& command_line.rpath == NULL) | ||
{ | ||
lib_path = (const char *) getenv ("LD_RUN_PATH"); | ||
+ if ((lib_path) && (strlen (lib_path) == 0)) | ||
+ lib_path = NULL; | ||
if (gld${EMULATION_NAME}_search_needed (lib_path, &n, | ||
force)) | ||
break; | ||
@@ -1497,6 +1499,8 @@ | ||
rpath = command_line.rpath; | ||
if (rpath == NULL) | ||
rpath = (const char *) getenv ("LD_RUN_PATH"); | ||
+ if ((rpath) && (strlen (rpath) == 0)) | ||
+ rpath = NULL; | ||
|
||
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next) | ||
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
Signed-off-by: Sven Rebhan <odinshorse@googlemail.com> | ||
|
||
Always try to prepend the sysroot prefix to absolute filenames first. | ||
|
||
http://bugs.gentoo.org/275666 | ||
http://sourceware.org/bugzilla/show_bug.cgi?id=10340 | ||
|
||
--- a/ld/ldfile.c | ||
+++ b/ld/ldfile.c | ||
@@ -308,18 +308,25 @@ | ||
directory first. */ | ||
if (! entry->flags.maybe_archive) | ||
{ | ||
- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) | ||
+ /* For absolute pathnames, try to always open the file in the | ||
+ sysroot first. If this fails, try to open the file at the | ||
+ given location. */ | ||
+ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); | ||
+ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) | ||
+ && ld_sysroot) | ||
{ | ||
char *name = concat (ld_sysroot, entry->filename, | ||
(const char *) NULL); | ||
if (ldfile_try_open_bfd (name, entry)) | ||
{ | ||
entry->filename = name; | ||
+ entry->flags.sysrooted = TRUE; | ||
return TRUE; | ||
} | ||
free (name); | ||
} | ||
- else if (ldfile_try_open_bfd (entry->filename, entry)) | ||
+ | ||
+ if (ldfile_try_open_bfd (entry->filename, entry)) | ||
return TRUE; | ||
|
||
if (IS_ABSOLUTE_PATH (entry->filename)) |
279 changes: 279 additions & 0 deletions
279
patches/binutils/2.23.2/600-poison-system-directories.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,279 @@ | ||
Patch adapted to binutils 2.23.2 and extended to use | ||
BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. | ||
|
||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | ||
|
||
Upstream-Status: Inappropriate [distribution: codesourcery] | ||
|
||
Patch originally created by Mark Hatle, forward-ported to | ||
binutils 2.21 by Scott Garman. | ||
|
||
purpose: warn for uses of system directories when cross linking | ||
|
||
Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 | ||
|
||
2008-07-02 Joseph Myers <joseph@codesourcery.com> | ||
|
||
ld/ | ||
* ld.h (args_type): Add error_poison_system_directories. | ||
* ld.texinfo (--error-poison-system-directories): Document. | ||
* ldfile.c (ldfile_add_library_path): Check | ||
command_line.error_poison_system_directories. | ||
* ldmain.c (main): Initialize | ||
command_line.error_poison_system_directories. | ||
* lexsup.c (enum option_values): Add | ||
OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. | ||
(ld_options): Add --error-poison-system-directories. | ||
(parse_args): Handle new option. | ||
|
||
2007-06-13 Joseph Myers <joseph@codesourcery.com> | ||
|
||
ld/ | ||
* config.in: Regenerate. | ||
* ld.h (args_type): Add poison_system_directories. | ||
* ld.texinfo (--no-poison-system-directories): Document. | ||
* ldfile.c (ldfile_add_library_path): Check | ||
command_line.poison_system_directories. | ||
* ldmain.c (main): Initialize | ||
command_line.poison_system_directories. | ||
* lexsup.c (enum option_values): Add | ||
OPTION_NO_POISON_SYSTEM_DIRECTORIES. | ||
(ld_options): Add --no-poison-system-directories. | ||
(parse_args): Handle new option. | ||
|
||
2007-04-20 Joseph Myers <joseph@codesourcery.com> | ||
|
||
Merge from Sourcery G++ binutils 2.17: | ||
|
||
2007-03-20 Joseph Myers <joseph@codesourcery.com> | ||
Based on patch by Mark Hatle <mark.hatle@windriver.com>. | ||
ld/ | ||
* configure.in (--enable-poison-system-directories): New option. | ||
* configure, config.in: Regenerate. | ||
* ldfile.c (ldfile_add_library_path): If | ||
ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, | ||
/usr/lib, /usr/local/lib or /usr/X11R6/lib. | ||
|
||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | ||
Signed-off-by: Scott Garman <scott.a.garman@intel.com> | ||
|
||
Index: b/ld/config.in | ||
=================================================================== | ||
--- a/ld/config.in | ||
+++ b/ld/config.in | ||
@@ -11,6 +11,9 @@ | ||
language is requested. */ | ||
#undef ENABLE_NLS | ||
|
||
+/* Define to warn for use of native system library directories */ | ||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES | ||
+ | ||
/* Additional extension a shared object might have. */ | ||
#undef EXTRA_SHLIB_EXTENSION | ||
|
||
Index: b/ld/configure | ||
=================================================================== | ||
--- a/ld/configure | ||
+++ b/ld/configure | ||
@@ -773,6 +773,7 @@ | ||
enable_targets | ||
enable_64_bit_bfd | ||
with_sysroot | ||
+enable_poison_system_directories | ||
enable_gold | ||
enable_got | ||
enable_werror | ||
@@ -1428,6 +1429,8 @@ | ||
(and sometimes confusing) to the casual installer | ||
--enable-targets alternative target configurations | ||
--enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) | ||
+ --enable-poison-system-directories | ||
+ warn for use of native system library directories | ||
--enable-gold[=ARG] build gold [ARG={default,yes,no}] | ||
--enable-got=<type> GOT handling scheme (target, single, negative, | ||
multigot) | ||
@@ -4338,7 +4341,18 @@ | ||
fi | ||
|
||
|
||
+# Check whether --enable-poison-system-directories was given. | ||
+if test "${enable_poison_system_directories+set}" = set; then : | ||
+ enableval=$enable_poison_system_directories; | ||
+else | ||
+ enable_poison_system_directories=no | ||
+fi | ||
+ | ||
+if test "x${enable_poison_system_directories}" = "xyes"; then | ||
|
||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h | ||
+ | ||
+fi | ||
|
||
# Check whether --enable-got was given. | ||
if test "${enable_got+set}" = set; then : | ||
Index: b/ld/configure.in | ||
=================================================================== | ||
--- a/ld/configure.in | ||
+++ b/ld/configure.in | ||
@@ -70,6 +70,16 @@ | ||
AC_SUBST(TARGET_SYSTEM_ROOT) | ||
AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) | ||
|
||
+AC_ARG_ENABLE([poison-system-directories], | ||
+ AS_HELP_STRING([--enable-poison-system-directories], | ||
+ [warn for use of native system library directories]),, | ||
+ [enable_poison_system_directories=no]) | ||
+if test "x${enable_poison_system_directories}" = "xyes"; then | ||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], | ||
+ [1], | ||
+ [Define to warn for use of native system library directories]) | ||
+fi | ||
+ | ||
dnl Use --enable-gold to decide if this linker should be the default. | ||
dnl "install_as_default" is set to false if gold is the default linker. | ||
dnl "installed_linker" is the installed BFD linker name. | ||
Index: b/ld/ldfile.c | ||
=================================================================== | ||
--- a/ld/ldfile.c | ||
+++ b/ld/ldfile.c | ||
@@ -116,6 +116,23 @@ | ||
new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL); | ||
else | ||
new_dirs->name = xstrdup (name); | ||
+ | ||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES | ||
+ if (command_line.poison_system_directories | ||
+ && ((!strncmp (name, "/lib", 4)) | ||
+ || (!strncmp (name, "/usr/lib", 8)) | ||
+ || (!strncmp (name, "/usr/local/lib", 14)) | ||
+ || (!strncmp (name, "/usr/X11R6/lib", 14)))) | ||
+ { | ||
+ if (command_line.error_poison_system_directories) | ||
+ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " | ||
+ "cross-compilation\n"), name); | ||
+ else | ||
+ einfo (_("%P: warning: library search path \"%s\" is unsafe for " | ||
+ "cross-compilation\n"), name); | ||
+ } | ||
+#endif | ||
+ | ||
} | ||
|
||
/* Try to open a BFD for a lang_input_statement. */ | ||
Index: b/ld/ld.h | ||
=================================================================== | ||
--- a/ld/ld.h | ||
+++ b/ld/ld.h | ||
@@ -203,6 +203,14 @@ | ||
/* If TRUE we'll just print the default output on stdout. */ | ||
bfd_boolean print_output_format; | ||
|
||
+ /* If TRUE (the default) warn for uses of system directories when | ||
+ cross linking. */ | ||
+ bfd_boolean poison_system_directories; | ||
+ | ||
+ /* If TRUE (default FALSE) give an error for uses of system | ||
+ directories when cross linking instead of a warning. */ | ||
+ bfd_boolean error_poison_system_directories; | ||
+ | ||
/* Big or little endian as set on command line. */ | ||
enum endian_enum endian; | ||
|
||
Index: b/ld/ldmain.c | ||
=================================================================== | ||
--- a/ld/ldmain.c | ||
+++ b/ld/ldmain.c | ||
@@ -265,6 +265,8 @@ | ||
command_line.warn_search_mismatch = TRUE; | ||
command_line.check_section_addresses = -1; | ||
command_line.disable_target_specific_optimizations = -1; | ||
+ command_line.poison_system_directories = TRUE; | ||
+ command_line.error_poison_system_directories = FALSE; | ||
|
||
/* We initialize DEMANGLING based on the environment variable | ||
COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the | ||
Index: b/ld/ld.texinfo | ||
=================================================================== | ||
--- a/ld/ld.texinfo | ||
+++ b/ld/ld.texinfo | ||
@@ -2154,6 +2154,18 @@ | ||
|
||
Passing @code{none} for @var{style} disables the setting from any | ||
@code{--build-id} options earlier on the command line. | ||
+ | ||
+@kindex --no-poison-system-directories | ||
+@item --no-poison-system-directories | ||
+Do not warn for @option{-L} options using system directories such as | ||
+@file{/usr/lib} when cross linking. This option is intended for use | ||
+in chroot environments when such directories contain the correct | ||
+libraries for the target system rather than the host. | ||
+ | ||
+@kindex --error-poison-system-directories | ||
+@item --error-poison-system-directories | ||
+Give an error instead of a warning for @option{-L} options using | ||
+system directories when cross linking. | ||
@end table | ||
|
||
@c man end | ||
Index: b/ld/lexsup.c | ||
=================================================================== | ||
--- a/ld/lexsup.c | ||
+++ b/ld/lexsup.c | ||
@@ -498,6 +498,14 @@ | ||
TWO_DASHES }, | ||
{ {"wrap", required_argument, NULL, OPTION_WRAP}, | ||
'\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES }, | ||
+ { {"no-poison-system-directories", no_argument, NULL, | ||
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, | ||
+ '\0', NULL, N_("Do not warn for -L options using system directories"), | ||
+ TWO_DASHES }, | ||
+ { {"error-poison-system-directories", no_argument, NULL, | ||
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, | ||
+ '\0', NULL, N_("Give an error for -L options using system directories"), | ||
+ TWO_DASHES }, | ||
}; | ||
|
||
#define OPTION_COUNT ARRAY_SIZE (ld_options) | ||
@@ -510,6 +518,7 @@ | ||
int ingroup = 0; | ||
char *default_dirlist = NULL; | ||
char *shortopts; | ||
+ char *BR_paranoid_env; | ||
struct option *longopts; | ||
struct option *really_longopts; | ||
int last_optind; | ||
@@ -1427,9 +1436,21 @@ | ||
einfo (_("%P%X: --hash-size needs a numeric argument\n")); | ||
} | ||
break; | ||
+ | ||
+ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: | ||
+ command_line.poison_system_directories = FALSE; | ||
+ break; | ||
+ | ||
+ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: | ||
+ command_line.error_poison_system_directories = TRUE; | ||
+ break; | ||
} | ||
} | ||
|
||
+ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); | ||
+ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) | ||
+ command_line.error_poison_system_directories = TRUE; | ||
+ | ||
while (ingroup) | ||
{ | ||
lang_leave_group (); | ||
Index: b/ld/ldlex.h | ||
=================================================================== | ||
--- a/ld/ldlex.h | ||
+++ b/ld/ldlex.h | ||
@@ -136,6 +136,8 @@ | ||
#endif /* ENABLE_PLUGINS */ | ||
OPTION_DEFAULT_SCRIPT, | ||
OPTION_PRINT_OUTPUT_FORMAT, | ||
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES, | ||
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, | ||
}; | ||
|
||
/* The initial parser states. */ |
Oops, something went wrong.