Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in src/patchsets/binutils/2.28: 00_all_0001-ld-always-warn-about-textrels-in-files.patch 00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch 00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch 00_all_0004-gold-ld-enable-gnu-hash-by-default.patch 00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch 00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch README.history
Date: Fri, 03 Mar 2017 18:31:11
Message-Id: 20170303183108.90AF85B39@oystercatcher.gentoo.org
1 vapier 17/03/03 18:31:08
2
3 Added:
4 00_all_0001-ld-always-warn-about-textrels-in-files.patch
5 00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch
6 00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch
7 00_all_0004-gold-ld-enable-gnu-hash-by-default.patch
8 00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch
9 00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch
10 README.history
11 Log:
12 initial 2.28 patchset based on last 2.27 patchset
13
14 Revision Changes Path
15 1.1 src/patchsets/binutils/2.28/00_all_0001-ld-always-warn-about-textrels-in-files.patch
16
17 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0001-ld-always-warn-about-textrels-in-files.patch?rev=1.1&view=markup
18 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0001-ld-always-warn-about-textrels-in-files.patch?rev=1.1&content-type=text/plain
19
20 Index: 00_all_0001-ld-always-warn-about-textrels-in-files.patch
21 ===================================================================
22 From bb101959912073f460669d75097215cde7b20019 Mon Sep 17 00:00:00 2001
23 From: Mike Frysinger <vapier@g.o>
24 Date: Mon, 16 May 2005 22:10:19 -0400
25 Subject: [PATCH] ld: always warn about textrels in files
26
27 textrels are bad for forcing copy-on-write (this affects everyone), and for
28 security/runtime code generation, this affects security ppl. But in either
29 case, it doesn't matter who needs textrels, it's the very fact that they're
30 needed at all.
31 ---
32 ld/ldmain.c | 1 +
33 ld/testsuite/lib/ld-lib.exp | 4 ++++
34 2 files changed, 5 insertions(+)
35
36 diff --git a/ld/ldmain.c b/ld/ldmain.c
37 index 1e48b1a2dbbc..f634eaa908a5 100644
38 --- a/ld/ldmain.c
39 +++ b/ld/ldmain.c
40 @@ -294,6 +294,7 @@ main (int argc, char **argv)
41 link_info.dynamic_undefined_weak = -1;
42 link_info.pei386_auto_import = -1;
43 link_info.spare_dynamic_tags = 5;
44 + link_info.warn_shared_textrel = TRUE;
45 link_info.path_separator = ':';
46 #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
47 link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
48 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
49 index cf7886b4866f..6c6a0b7a001e 100644
50 --- a/ld/testsuite/lib/ld-lib.exp
51 +++ b/ld/testsuite/lib/ld-lib.exp
52 @@ -250,6 +250,10 @@ proc default_ld_simple_link { ld target objects } {
53 # symbol, since the default linker script might use ENTRY.
54 regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
55
56 + # Gentoo tweak:
57 + # We want to ignore TEXTREL warnings since we force enable them by default
58 + regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
59 +
60 return [string match "" $exec_output]
61 }
62
63 --
64 2.11.1
65
66
67
68
69 1.1 src/patchsets/binutils/2.28/00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch
70
71 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch?rev=1.1&view=markup
72 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch?rev=1.1&content-type=text/plain
73
74 Index: 00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch
75 ===================================================================
76 From 9c3fda8166172bb9fa818bf2b7fec003847393d8 Mon Sep 17 00:00:00 2001
77 From: Mike Frysinger <vapier@g.o>
78 Date: Mon, 25 May 2015 04:42:58 -0400
79 Subject: [PATCH] gold/ld: add support for poisoned system directories
80
81 This is based on the old CodeSourcery patch written by Joseph Myers to add
82 support to the link for detecting & rejecting bad -L paths when using a
83 cross-compiler. The differences here:
84 * The command line flags are always available.
85 * We can turn on & off the warning via the command line.
86 * The configure option controls the default warning behavior.
87 * Add support for gold.
88
89 It is not currently upstream, nor has it been submitted at all. There are
90 no plans to do so currently either.
91
92 BUG=chromium:488360
93 TEST=`cbuildbot chromiumos-sdk` passes # tests arm/amd64/mipsel/x86
94 TEST=`cbuildbot panther_moblab-full whirlwind-release` pass
95 TEST=`cbuildbot {x32,arm64}-generic-full` has no new failures
96 TEST=x86_64-cros-linux-gnu-ld throws warnings when using -L/lib (gold & bfd)
97
98 Reviewed-on: https://chromium-review.googlesource.com/272083
99 ---
100 gold/options.cc | 33 +++++++++++++++++++++++++++++++++
101 gold/options.h | 7 +++++++
102 ld/config.in | 3 +++
103 ld/configure | 14 ++++++++++++++
104 ld/configure.ac | 10 ++++++++++
105 ld/ld.h | 7 +++++++
106 ld/ld.texinfo | 18 ++++++++++++++++++
107 ld/ldfile.c | 20 ++++++++++++++++++++
108 ld/ldlex.h | 3 +++
109 ld/ldmain.c | 7 +++++++
110 ld/lexsup.c | 24 ++++++++++++++++++++++++
111 11 files changed, 146 insertions(+)
112
113 diff --git a/gold/options.cc b/gold/options.cc
114 index ed63b6f04feb..5de289b5dd2e 100644
115 --- a/gold/options.cc
116 +++ b/gold/options.cc
117 @@ -1285,6 +1285,39 @@ General_options::finalize()
118 // in the path, as appropriate.
119 this->add_sysroot();
120
121 + // Now check if library_path is poisoned.
122 + if (this->warn_poison_system_directories())
123 + {
124 + std::vector<std::string> bad_paths;
125 +
126 + bad_paths.push_back("/lib");
127 + // TODO: This check is disabled for now due to a bunch of packages that
128 + // use libtool and relink with -L/usr/lib paths (albeit after the right
129 + // sysroot path). Once those are fixed we can enable.
130 + // We also need to adjust it so it only rejects one or two levels deep.
131 + // Gcc's internal paths also live below /usr/lib.
132 + // http://crbug.com/488360
133 + // bad_paths.push_back("/usr/lib");
134 + bad_paths.push_back("/usr/local/lib");
135 + bad_paths.push_back("/usr/X11R6/lib");
136 +
137 + for (std::vector<std::string>::const_iterator b = bad_paths.begin();
138 + b != bad_paths.end();
139 + ++b)
140 + for (Dir_list::iterator p = this->library_path_.value.begin();
141 + p != this->library_path_.value.end();
142 + ++p)
143 + if (!p->name().compare(0, b->size(), *b))
144 + {
145 + if (this->error_poison_system_directories())
146 + gold_fatal(_("library search path \"%s\" is unsafe for "
147 + "cross-compilation"), p->name().c_str());
148 + else
149 + gold_warning(_("library search path \"%s\" is unsafe for "
150 + "cross-compilation"), p->name().c_str());
151 + }
152 + }
153 +
154 // Now that we've normalized the options, check for contradictory ones.
155 if (this->shared() && this->is_static())
156 gold_fatal(_("-shared and -static are incompatible"));
157 diff --git a/gold/options.h b/gold/options.h
158 index a8b1d46aa109..b7c725a82539 100644
159 --- a/gold/options.h
160 +++ b/gold/options.h
161 @@ -1344,6 +1344,13 @@ class General_options
162 DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
163 N_("Ignored"), NULL);
164
165 + DEFINE_bool(warn_poison_system_directories, options::TWO_DASHES, '\0', false,
166 + N_("Warn for -L options using system directories"),
167 + N_("Do not warn for -L options using system directories"));
168 + DEFINE_bool(error_poison_system_directories, options::TWO_DASHES, '\0', false,
169 + N_("Give an error for -L options using system directories"),
170 + NULL);
171 +
172 DEFINE_bool(warn_search_mismatch, options::TWO_DASHES, '\0', true,
173 N_("Warn when skipping an incompatible library"),
174 N_("Don't warn when skipping an incompatible library"));
175 diff --git a/ld/config.in b/ld/config.in
176 index 2c6d698b6ce1..d3cb7e882de9 100644
177 --- a/ld/config.in
178 +++ b/ld/config.in
179 @@ -17,6 +17,9 @@
180 language is requested. */
181 #undef ENABLE_NLS
182
183 +/* Define to warn for use of native system library directories */
184 +#undef ENABLE_POISON_SYSTEM_DIRECTORIES
185 +
186 /* Additional extension a shared object might have. */
187 #undef EXTRA_SHLIB_EXTENSION
188
189 diff --git a/ld/configure b/ld/configure
190 index 36af9695b1c8..bd1d677e0920 100755
191 --- a/ld/configure
192 +++ b/ld/configure
193 @@ -789,6 +789,7 @@ with_lib_path
194 enable_targets
195 enable_64_bit_bfd
196 with_sysroot
197 +enable_poison_system_directories
198 enable_gold
199 enable_got
200 enable_compressed_debug_sections
201 @@ -1446,6 +1447,8 @@ Optional Features:
202 --disable-largefile omit support for large files
203 --enable-targets alternative target configurations
204 --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
205 + --enable-poison-system-directories
206 + warn for use of native system library directories
207 --enable-gold[=ARG] build gold [ARG={default,yes,no}]
208 --enable-got=<type> GOT handling scheme (target, single, negative,
209 multigot)
210 @@ -15499,7 +15502,18 @@ else
211 fi
212
213
214 +# Check whether --enable-poison-system-directories was given.
215 +if test "${enable_poison_system_directories+set}" = set; then :
216 + enableval=$enable_poison_system_directories;
217 +else
218 + enable_poison_system_directories=no
219 +fi
220 +
221 +if test "x${enable_poison_system_directories}" = "xyes"; then
222
223 +$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
224 +
225 +fi
226
227 # Check whether --enable-got was given.
228 if test "${enable_got+set}" = set; then :
229 diff --git a/ld/configure.ac b/ld/configure.ac
230 index 36a9f5083aea..47f1d33fa58c 100644
231 --- a/ld/configure.ac
232 +++ b/ld/configure.ac
233 @@ -95,6 +95,16 @@ AC_SUBST(use_sysroot)
234 AC_SUBST(TARGET_SYSTEM_ROOT)
235 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
236
237 +AC_ARG_ENABLE([poison-system-directories],
238 + AS_HELP_STRING([--enable-poison-system-directories],
239 + [warn for use of native system library directories]),,
240 + [enable_poison_system_directories=no])
241 +if test "x${enable_poison_system_directories}" = "xyes"; then
242 + AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
243 + [1],
244 + [Define to warn for use of native system library directories])
245 +fi
246 +
247 dnl Use --enable-gold to decide if this linker should be the default.
248 dnl "install_as_default" is set to false if gold is the default linker.
249 dnl "installed_linker" is the installed BFD linker name.
250 diff --git a/ld/ld.h b/ld/ld.h
251 index 104bb8e2376b..e1c3f744862d 100644
252 --- a/ld/ld.h
253 +++ b/ld/ld.h
254 @@ -172,6 +172,13 @@ typedef struct
255 /* If set, display the target memory usage (per memory region). */
256 bfd_boolean print_memory_usage;
257
258 + /* If TRUE warn for uses of system directories when cross linking. */
259 + bfd_boolean warn_poison_system_directories;
260 +
261 + /* If TRUE (default FALSE) give an error for uses of system
262 + directories when cross linking instead of a warning. */
263 + bfd_boolean error_poison_system_directories;
264 +
265 /* Big or little endian as set on command line. */
266 enum endian_enum endian;
267
268 diff --git a/ld/ld.texinfo b/ld/ld.texinfo
269 index d393acdd9406..8eb156efb8dd 100644
270 --- a/ld/ld.texinfo
271 +++ b/ld/ld.texinfo
272 @@ -2403,6 +2403,24 @@ string identifying the original linked file does not change.
273
274 Passing @code{none} for @var{style} disables the setting from any
275 @code{--build-id} options earlier on the command line.
276 +
277 +@kindex --warn-poison-system-directories
278 +@item --warn-poison-system-directories
279 +Warn for @option{-L} options using system directories such as
280 +@file{/usr/lib} when cross linking. This option is intended for use
281 +in environments that want to detect and reject incorrect link settings.
282 +
283 +@kindex --no-warn-poison-system-directories
284 +@item --no-warn-poison-system-directories
285 +Do not warn for @option{-L} options using system directories such as
286 +@file{/usr/lib} when cross linking. This option is intended for use
287 +in chroot environments when such directories contain the correct
288 +libraries for the target system rather than the host.
289 +
290 +@kindex --error-poison-system-directories
291 +@item --error-poison-system-directories
292 +Give an error instead of a warning for @option{-L} options using
293 +system directories when cross linking.
294 @end table
295
296 @c man end
297 diff --git a/ld/ldfile.c b/ld/ldfile.c
298 index 0943bb2dfa0f..b3bc22469900 100644
299 --- a/ld/ldfile.c
300 +++ b/ld/ldfile.c
301 @@ -114,6 +114,26 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
302 new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL);
303 else
304 new_dirs->name = xstrdup (name);
305 +
306 + if (command_line.warn_poison_system_directories
307 + && (!strncmp (name, "/lib", 4)
308 + /* TODO: This check is disabled for now due to a bunch of packages that
309 + * use libtool and relink with -L/usr/lib paths (albeit after the right
310 + * sysroot path). Once those are fixed we can enable.
311 + * We also need to adjust it so it only rejects one or two levels deep.
312 + * Gcc's internal paths also live below /usr/lib.
313 + * http://crbug.com/488360 */
314 + /* || !strncmp (name, "/usr/lib", 8) */
315 + || !strncmp (name, "/usr/local/lib", 14)
316 + || !strncmp (name, "/usr/X11R6/lib", 14)))
317 + {
318 + if (command_line.error_poison_system_directories)
319 + einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
320 + "cross-compilation\n"), name);
321 + else
322 + einfo (_("%P: warning: library search path \"%s\" is unsafe for "
323 + "cross-compilation\n"), name);
324 + }
325 }
326
327 /* Try to open a BFD for a lang_input_statement. */
328 diff --git a/ld/ldlex.h b/ld/ldlex.h
329 index 3ecac2bc865e..7ed67bae3f23 100644
330 --- a/ld/ldlex.h
331 +++ b/ld/ldlex.h
332 @@ -141,6 +141,9 @@ enum option_values
333 OPTION_PRINT_OUTPUT_FORMAT,
334 OPTION_PRINT_SYSROOT,
335 OPTION_IGNORE_UNRESOLVED_SYMBOL,
336 + OPTION_WARN_POISON_SYSTEM_DIRECTORIES,
337 + OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES,
338 + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
339 OPTION_PUSH_STATE,
340 OPTION_POP_STATE,
341 OPTION_PRINT_MEMORY_USAGE,
342 diff --git a/ld/ldmain.c b/ld/ldmain.c
343 index f634eaa908a5..bba193355b0d 100644
344 --- a/ld/ldmain.c
345 +++ b/ld/ldmain.c
346 @@ -270,6 +270,13 @@ main (int argc, char **argv)
347 command_line.warn_mismatch = TRUE;
348 command_line.warn_search_mismatch = TRUE;
349 command_line.check_section_addresses = -1;
350 + command_line.warn_poison_system_directories =
351 +#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
352 + TRUE;
353 +#else
354 + FALSE;
355 +#endif
356 + command_line.error_poison_system_directories = FALSE;
357
358 /* We initialize DEMANGLING based on the environment variable
359 COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
360 diff --git a/ld/lexsup.c b/ld/lexsup.c
361 index 0b7d4976ac90..327b203eeb25 100644
362 --- a/ld/lexsup.c
363 +++ b/ld/lexsup.c
364 @@ -524,6 +524,18 @@ static const struct ld_option ld_options[] =
365 OPTION_IGNORE_UNRESOLVED_SYMBOL},
366 '\0', N_("SYMBOL"),
367 N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
368 + { {"warn-poison-system-directories", no_argument, NULL,
369 + OPTION_WARN_POISON_SYSTEM_DIRECTORIES},
370 + '\0', NULL, N_("Warn for -L options using system directories"),
371 + TWO_DASHES },
372 + { {"no-warn-poison-system-directories", no_argument, NULL,
373 + OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES},
374 + '\0', NULL, N_("Do not warn for -L options using system directories"),
375 + TWO_DASHES },
376 + { {"error-poison-system-directories", no_argument, NULL,
377 + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
378 + '\0', NULL, N_("Give an error for -L options using system directories"),
379 + TWO_DASHES },
380 { {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
381 '\0', NULL, N_("Push state of flags governing input file handling"),
382 TWO_DASHES },
383 @@ -1528,6 +1540,18 @@ parse_args (unsigned argc, char **argv)
384 }
385 break;
386
387 + case OPTION_WARN_POISON_SYSTEM_DIRECTORIES:
388 + command_line.warn_poison_system_directories = TRUE;
389 + break;
390 +
391 + case OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES:
392 + command_line.warn_poison_system_directories = FALSE;
393 + break;
394 +
395 + case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
396 + command_line.error_poison_system_directories = TRUE;
397 + break;
398 +
399 case OPTION_PUSH_STATE:
400 input_flags.pushed = xmemdup (&input_flags,
401 sizeof (input_flags),
402 --
403 2.11.1
404
405
406
407
408 1.1 src/patchsets/binutils/2.28/00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch
409
410 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch?rev=1.1&view=markup
411 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch?rev=1.1&content-type=text/plain
412
413 Index: 00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch
414 ===================================================================
415 From da0140fb5c8a9bccd0c66166c8e21cb3e37e2f1d Mon Sep 17 00:00:00 2001
416 From: Mike Frysinger <vapier@g.o>
417 Date: Fri, 7 Jan 2005 00:15:53 -0500
418 Subject: [PATCH] ld: enable new dtags by default for linux/gnu targets
419
420 The "new" dtags options have been around for 14+ years now, so for Linux
421 and GNU targets, enable them by default.
422
423 2012-01-21 Mike Frysinger <vapier@g.o>
424
425 * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
426 link_info.new_dtags to TRUE for linux/gnu targets.
427 * NEWS: Mention new dtags default.
428
429 2013-01-22 Roland McGrath <mcgrathr@××××××.com>
430
431 * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
432 new_dtags to TRUE for *-*-nacl* targets.
433 ---
434 ld/emultempl/elf32.em | 10 ++++++++++
435 1 file changed, 10 insertions(+)
436
437 diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
438 index 84adaef6dfe1..92b7e4aabd0b 100644
439 --- a/ld/emultempl/elf32.em
440 +++ b/ld/emultempl/elf32.em
441 @@ -103,6 +103,16 @@ gld${EMULATION_NAME}_before_parse (void)
442 input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
443 config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
444 config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
445 +EOF
446 +
447 +case ${target} in
448 + *-*-linux-* | *-*-k*bsd*-* | *-*-gnu* | *-*-nacl*)
449 + fragment <<EOF
450 + link_info.new_dtags = TRUE;
451 +EOF
452 + ;;
453 +esac
454 +fragment <<EOF
455 `if test -n "$CALL_NOP_BYTE" ; then echo link_info.call_nop_byte = $CALL_NOP_BYTE; fi`;
456 link_info.check_relocs_after_open_input = `if test "x${CHECK_RELOCS_AFTER_OPEN_INPUT}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
457 link_info.relro = DEFAULT_LD_Z_RELRO;
458 --
459 2.11.1
460
461
462
463
464 1.1 src/patchsets/binutils/2.28/00_all_0004-gold-ld-enable-gnu-hash-by-default.patch
465
466 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0004-gold-ld-enable-gnu-hash-by-default.patch?rev=1.1&view=markup
467 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0004-gold-ld-enable-gnu-hash-by-default.patch?rev=1.1&content-type=text/plain
468
469 Index: 00_all_0004-gold-ld-enable-gnu-hash-by-default.patch
470 ===================================================================
471 From a6c35c40daf508b4f236b870c2b60bfa9b68de9e Mon Sep 17 00:00:00 2001
472 From: Mike Frysinger <vapier@g.o>
473 Date: Sat, 27 Jan 2007 15:01:08 -0500
474 Subject: [PATCH] gold/ld: enable gnu hash by default
475
476 Glibc first added .gnu.hash support to glibc-2.5 (released 29 Sep 2006),
477 and gold was first released after that. Let's default the gnu hash style
478 to the new "gnu" rather than the classic sysv.
479
480 gold/:
481 2012-02-03 Mike Frysinger <vapier@g.o>
482
483 * options.h (General_options): Change default to gnu for hash_style.
484 ---
485 gold/options.h | 2 +-
486 ld/emultempl/elf32.em | 13 +++++++++++++
487 ld/testsuite/lib/ld-lib.exp | 4 ++--
488 3 files changed, 16 insertions(+), 3 deletions(-)
489
490 diff --git a/gold/options.h b/gold/options.h
491 index b7c725a82539..ef1756671242 100644
492 --- a/gold/options.h
493 +++ b/gold/options.h
494 @@ -921,7 +921,7 @@ class General_options
495 N_("Min fraction of empty buckets in dynamic hash"),
496 N_("FRACTION"));
497
498 - DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
499 + DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "gnu",
500 N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
501 {"sysv", "gnu", "both"});
502
503 diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
504 index 92b7e4aabd0b..ac2090a54eb1 100644
505 --- a/ld/emultempl/elf32.em
506 +++ b/ld/emultempl/elf32.em
507 @@ -100,6 +100,19 @@ static void
508 gld${EMULATION_NAME}_before_parse (void)
509 {
510 ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
511 +EOF
512 +# Enable gnu hash by default for Linux (non-mips) targets.
513 +# This has been supported since glibc-2.5.
514 +case ${target} in
515 + mips*) ;;
516 + *-*-linux-* | *-*-gnu*)
517 + fragment <<EOF
518 + link_info.emit_hash = FALSE;
519 + link_info.emit_gnu_hash = TRUE;
520 +EOF
521 + ;;
522 +esac
523 +fragment <<EOF
524 input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
525 config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
526 config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
527 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
528 index 6c6a0b7a001e..53ad4a15e983 100644
529 --- a/ld/testsuite/lib/ld-lib.exp
530 +++ b/ld/testsuite/lib/ld-lib.exp
531 @@ -147,7 +147,7 @@ proc default_ld_relocate { ld target objects } {
532 global HOSTING_EMU
533
534 remote_file host delete $target
535 - return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
536 + return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
537 }
538
539 # Check to see if ld is being invoked with a non-endian output format
540 @@ -228,7 +228,7 @@ proc default_ld_link { ld target objects } {
541
542 remote_file host delete $target
543
544 - return [run_host_cmd_yesno "$ld" "$HOSTING_EMU $flags -o $target $objs $libs"]
545 + return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv $flags -o $target $objs $libs"]
546 }
547
548 # Link a program using ld, without including any libraries.
549 --
550 2.11.1
551
552
553
554
555 1.1 src/patchsets/binutils/2.28/00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch
556
557 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch?rev=1.1&view=markup
558 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch?rev=1.1&content-type=text/plain
559
560 Index: 00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch
561 ===================================================================
562 From bb4bd6b89365800a7b403ce505401d0c02ad02f8 Mon Sep 17 00:00:00 2001
563 From: Mike Frysinger <vapier@g.o>
564 Date: Fri, 7 Jan 2005 00:15:53 -0500
565 Subject: [PATCH] libiberty: install PIC version of libiberty.a
566
567 This will install a PIC version of libiberty.a by overwriting the non-PIC
568 version of libiberty.a while compiling. We do this because there is no
569 shared version of libiberty for random apps to link against which means if
570 someone wants to use this in a shared library or PIE, they're out of luck.
571 It's arguable whether people should be able to use this in a shared lib,
572 but usage in PIE should be fine. You could argue that this penalizes the
573 non-PIE users, but the counter point is that people using this library in
574 general are fairly low, and we'd rather have things work for all of them.
575 ---
576 libiberty/Makefile.in | 1 +
577 1 file changed, 1 insertion(+)
578
579 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
580 index 0ff9e45e45ef..55a70330ffb8 100644
581 --- a/libiberty/Makefile.in
582 +++ b/libiberty/Makefile.in
583 @@ -256,6 +256,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
584 $(AR) $(AR_FLAGS) $(TARGETLIB) \
585 $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
586 $(RANLIB) $(TARGETLIB); \
587 + cp $(TARGETLIB) ../ ; \
588 cd ..; \
589 else true; fi; \
590 if [ x"$(NOASANFLAG)" != x ]; then \
591 --
592 2.11.1
593
594
595
596
597 1.1 src/patchsets/binutils/2.28/00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch
598
599 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch?rev=1.1&view=markup
600 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch?rev=1.1&content-type=text/plain
601
602 Index: 00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch
603 ===================================================================
604 From 561d984aa3a3b99bbd9c6ddf6ba08dadd107d62c Mon Sep 17 00:00:00 2001
605 From: Mike Frysinger <vapier@g.o>
606 Date: Tue, 5 Jul 2016 20:24:00 +0545
607 Subject: [PATCH] opcodes: link against libbfd.la for rpath deps
608
609 The reason opcodes doesn't link against libbfd.la is to workaround a
610 libtool bug where it uses installed -L paths ahead of DESTDIR paths.
611 The downside is that the library itself lacks rpath tags to find the
612 right version of libbfd.so.
613
614 Since Gentoo has patched the libtool bug for a while, we don't need
615 the workaround. Use the .la file so we get the rpath tags.
616
617 URL: https://bugs.gentoo.org/563934
618 ---
619 opcodes/configure | 2 +-
620 opcodes/configure.ac | 2 +-
621 2 files changed, 2 insertions(+), 2 deletions(-)
622
623 diff --git a/opcodes/configure b/opcodes/configure
624 index be87eb22a5f0..19528bef6906 100755
625 --- a/opcodes/configure
626 +++ b/opcodes/configure
627 @@ -12561,7 +12561,7 @@ if test "$enable_shared" = "yes"; then
628 SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
629 ;;
630 *)
631 - SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so ${SHARED_LIBADD}"
632 + SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
633 ;;
634 esac
635 SHARED_DEPENDENCIES="../bfd/libbfd.la"
636 diff --git a/opcodes/configure.ac b/opcodes/configure.ac
637 index b9f5eb8a4fdf..b5ff57a341ea 100644
638 --- a/opcodes/configure.ac
639 +++ b/opcodes/configure.ac
640 @@ -185,7 +185,7 @@ changequote([,])dnl
641 SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl ${SHARED_LIBADD}"
642 ;;
643 *)
644 - SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so ${SHARED_LIBADD}"
645 + SHARED_LIBADD="../bfd/libbfd.la ${SHARED_LIBADD}"
646 ;;
647 esac
648 SHARED_DEPENDENCIES="../bfd/libbfd.la"
649 --
650 2.11.1
651
652
653
654
655 1.1 src/patchsets/binutils/2.28/README.history
656
657 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/README.history?rev=1.1&view=markup
658 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.28/README.history?rev=1.1&content-type=text/plain
659
660 Index: README.history
661 ===================================================================
662 1.0 03 Mar 2017
663 + 00_all_0001-ld-always-warn-about-textrels-in-files.patch
664 + 00_all_0002-gold-ld-add-support-for-poisoned-system-directories.patch
665 + 00_all_0003-ld-enable-new-dtags-by-default-for-linux-gnu-targets.patch
666 + 00_all_0004-gold-ld-enable-gnu-hash-by-default.patch
667 + 00_all_0005-libiberty-install-PIC-version-of-libiberty.a.patch
668 + 00_all_0006-opcodes-link-against-libbfd.la-for-rpath-deps.patch