source: scripts/patch/binutils/2.19.1/10-strip_symbol_table.patch@ 3386453

sysvinit
Last change on this file since 3386453 was 914669c, checked in by Jim Gifford <clfs@…>, 15 years ago

Updated Binutils Patch. Added Patches to fix Issues with Powerpc

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[914669c]1http://sourceware.org/bugzilla/show_bug.cgi?id=9945
2
32009-03-13 H.J. Lu <hongjiu.lu@intel.com>
4
5 PR binutils/9945
6 * elf.c (assign_section_numbers): Generate symbol table if there
7 is any relocation in output.
8 (_bfd_elf_compute_section_file_positions): Likewise.
9
102009-03-13 H.J. Lu <hongjiu.lu@intel.com>
11
12 PR binutils/9945
13 * objcopy.c (copy_object): Clear HAS_RELOC when stripping all.
14
15===================================================================
16RCS file: /cvs/src/src/bfd/elf.c,v
17retrieving revision 1.477
18retrieving revision 1.478
19diff -u -r1.477 -r1.478
20--- src/bfd/elf.c 2009/02/25 14:39:35 1.477
21+++ src/bfd/elf.c 2009/03/13 13:39:56 1.478
22@@ -2774,6 +2774,7 @@
23 unsigned int section_number, secn;
24 Elf_Internal_Shdr **i_shdrp;
25 struct bfd_elf_section_data *d;
26+ bfd_boolean need_symtab;
27
28 section_number = 1;
29
30@@ -2829,7 +2830,11 @@
31 _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->shstrtab_hdr.sh_name);
32 elf_elfheader (abfd)->e_shstrndx = t->shstrtab_section;
33
34- if (bfd_get_symcount (abfd) > 0)
35+ need_symtab = (bfd_get_symcount (abfd) > 0
36+ || (link_info == NULL
37+ && ((abfd->flags & (EXEC_P | DYNAMIC | HAS_RELOC))
38+ == HAS_RELOC)));
39+ if (need_symtab)
40 {
41 t->symtab_section = section_number++;
42 _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->symtab_hdr.sh_name);
43@@ -2868,7 +2873,7 @@
44 elf_elfsections (abfd) = i_shdrp;
45
46 i_shdrp[t->shstrtab_section] = &t->shstrtab_hdr;
47- if (bfd_get_symcount (abfd) > 0)
48+ if (need_symtab)
49 {
50 i_shdrp[t->symtab_section] = &t->symtab_hdr;
51 if (elf_numsections (abfd) > (SHN_LORESERVE & 0xFFFF))
52@@ -3261,6 +3266,7 @@
53 bfd_boolean failed;
54 struct bfd_strtab_hash *strtab = NULL;
55 Elf_Internal_Shdr *shstrtab_hdr;
56+ bfd_boolean need_symtab;
57
58 if (abfd->output_has_begun)
59 return TRUE;
60@@ -3285,7 +3291,11 @@
61 return FALSE;
62
63 /* The backend linker builds symbol table information itself. */
64- if (link_info == NULL && bfd_get_symcount (abfd) > 0)
65+ need_symtab = (link_info == NULL
66+ && (bfd_get_symcount (abfd) > 0
67+ || ((abfd->flags & (EXEC_P | DYNAMIC | HAS_RELOC))
68+ == HAS_RELOC)));
69+ if (need_symtab)
70 {
71 /* Non-zero if doing a relocatable link. */
72 int relocatable_p = ! (abfd->flags & (EXEC_P | DYNAMIC));
73@@ -3316,7 +3326,7 @@
74 if (!assign_file_positions_except_relocs (abfd, link_info))
75 return FALSE;
76
77- if (link_info == NULL && bfd_get_symcount (abfd) > 0)
78+ if (need_symtab)
79 {
80 file_ptr off;
81 Elf_Internal_Shdr *hdr;
82===================================================================
83RCS file: /cvs/src/src/binutils/objcopy.c,v
84retrieving revision 1.126
85retrieving revision 1.127
86diff -u -r1.126 -r1.127
87--- src/binutils/objcopy.c 2009/03/10 00:48:09 1.126
88+++ src/binutils/objcopy.c 2009/03/13 13:39:57 1.127
89@@ -1396,6 +1396,9 @@
90 flags &= ~bfd_flags_to_clear;
91 flags &= bfd_applicable_file_flags (obfd);
92
93+ if (strip_symbols == STRIP_ALL)
94+ flags &= ~HAS_RELOC;
95+
96 if (!bfd_set_start_address (obfd, start)
97 || !bfd_set_file_flags (obfd, flags))
98 {
99
Note: See TracBrowser for help on using the repository browser.