2005-06-05  H.J. Lu  <hongjiu.lu@intel.com>

	* ldexp.c (exp_mark_used_section): Set SEC_KEEP on current
	section only if the symbol will be defined.

ld/testsuite/

2005-06-05  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-cris/hiddef1.d: Undo the last change.
	* ld-cris/libdso-10.d: Likewise.
	* ld-cris/libdso-2.d: Likewise.
This commit is contained in:
H.J. Lu 2005-06-05 15:28:36 +00:00
parent 9ee913b8a0
commit 18b7982923
6 changed files with 48 additions and 32 deletions

View file

@ -1,3 +1,8 @@
2005-06-05 H.J. Lu <hongjiu.lu@intel.com>
* ldexp.c (exp_mark_used_section): Set SEC_KEEP on current
section only if the symbol will be defined.
2005-06-04 H.J. Lu <hongjiu.lu@intel.com> 2005-06-04 H.J. Lu <hongjiu.lu@intel.com>
PR 992 PR 992

View file

@ -1247,24 +1247,33 @@ exp_mark_used_section (etree_type *tree, asection *current_section)
if (tree->assign.dst[0] != '.' || tree->assign.dst[1] != 0) if (tree->assign.dst[0] != '.' || tree->assign.dst[1] != 0)
{ {
etree_value_type result; etree_value_type result;
bfd_boolean create = tree->type.node_class == etree_assign;
struct bfd_link_hash_entry *h;
result = exp_fold_tree_1 (tree->assign.src, result = exp_fold_tree_1 (tree->assign.src,
current_section, current_section,
lang_allocating_phase_enum, lang_allocating_phase_enum,
dot, &dot, TRUE); dot, &dot, TRUE);
if (current_section != bfd_abs_section_ptr)
/* We mark the current section SEC_KEEP only if the symbol
will be defined. */
if (!create)
h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
create, FALSE, TRUE);
else
h = NULL;
if ((create || h)
&& current_section != bfd_abs_section_ptr)
current_section->flags |= SEC_KEEP; current_section->flags |= SEC_KEEP;
if (result.valid_p) if (result.valid_p)
{ {
bfd_boolean create;
struct bfd_link_hash_entry *h;
if (tree->type.node_class == etree_assign) if (create)
create = TRUE; h = bfd_link_hash_lookup (link_info.hash,
else tree->assign.dst, create,
create = FALSE; FALSE, TRUE);
h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
create, FALSE, TRUE);
if (h == NULL) if (h == NULL)
{ {
if (create) if (create)

View file

@ -1,3 +1,9 @@
2005-06-05 H.J. Lu <hongjiu.lu@intel.com>
* ld-cris/hiddef1.d: Undo the last change.
* ld-cris/libdso-10.d: Likewise.
* ld-cris/libdso-2.d: Likewise.
2005-06-04 H.J. Lu <hongjiu.lu@intel.com> 2005-06-04 H.J. Lu <hongjiu.lu@intel.com>
* ld-cris/hiddef1.d: Updated. * ld-cris/hiddef1.d: Updated.

View file

@ -14,7 +14,7 @@
# and sections change, make sure that there's no .plt and that # and sections change, make sure that there's no .plt and that
# dsofn is hidden (not exported as a dynamic symbol). # dsofn is hidden (not exported as a dynamic symbol).
There are 12 section headers, starting at offset 0x[0-9a-f]+: There are 11 section headers, starting at offset 0x[0-9a-f]+:
#... #...
\[[ 0-9]+\] \.got PROGBITS [0-9a-f]+ [0-9a-f]+ 0+10 04 WA 0 0 4 \[[ 0-9]+\] \.got PROGBITS [0-9a-f]+ [0-9a-f]+ 0+10 04 WA 0 0 4
#... #...
@ -24,5 +24,5 @@ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
#... #...
Symbol table '\.dynsym' contains 9 entries: Symbol table '\.dynsym' contains 9 entries:
#... #...
Symbol table '\.symtab' contains 20 entries: Symbol table '\.symtab' contains 19 entries:
#pass #pass

View file

@ -35,7 +35,5 @@ Idx Name Size VMA LMA File off Algn
CONTENTS, ALLOC, LOAD, DATA CONTENTS, ALLOC, LOAD, DATA
5 \.got 0+c 0+21e0 0+21e0 0+1e0 2\*\*2 5 \.got 0+c 0+21e0 0+21e0 0+1e0 2\*\*2
CONTENTS, ALLOC, LOAD, DATA CONTENTS, ALLOC, LOAD, DATA
6 \.data 0+ 0+21ec 0+21ec 0+1ec 2\*\*0 6 \.bss 0+14 0+21ec 0+21ec 0+1ec 2\*\*0
CONTENTS, ALLOC, LOAD, DATA
7 \.bss 0+14 0+21ec 0+21ec 0+1ec 2\*\*0
ALLOC ALLOC

View file

@ -10,7 +10,7 @@
# entries. This formerly SEGV:ed because .rela.got was created # entries. This formerly SEGV:ed because .rela.got was created
# too late to have it mapped to an output section. # too late to have it mapped to an output section.
There are 15 section headers.* There are 14 section headers.*
#... #...
\[ 1\] \.hash HASH .* \[ 1\] \.hash HASH .*
\[ 2\] \.dynsym DYNSYM .* \[ 2\] \.dynsym DYNSYM .*
@ -21,11 +21,10 @@ There are 15 section headers.*
\[ 7\] \.text PROGBITS .* \[ 7\] \.text PROGBITS .*
\[ 8\] \.dynamic DYNAMIC .* \[ 8\] \.dynamic DYNAMIC .*
\[ 9\] \.got PROGBITS .* \[ 9\] \.got PROGBITS .*
\[10\] \.data PROGBITS .* \[10\] \.bss NOBITS .*
\[11\] \.bss NOBITS .* \[11\] \.shstrtab STRTAB .*
\[12\] \.shstrtab STRTAB .* \[12\] \.symtab SYMTAB .*
\[13\] \.symtab SYMTAB .* \[13\] \.strtab STRTAB .*
\[14\] \.strtab STRTAB .*
#... #...
Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 1 entries: Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
#... #...
@ -35,12 +34,12 @@ Symbol table '\.dynsym' contains 6 entries:
Num: Value Size Type Bind Vis Ndx Name Num: Value Size Type Bind Vis Ndx Name
0: 0+ 0 NOTYPE LOCAL DEFAULT UND 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
1: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 7 1: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 7
2: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 10 2: [0-9a-f]+ 0 NOTYPE LOCAL DEFAULT UND
3: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 11 3: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 10
4: 0+ 0 OBJECT GLOBAL DEFAULT ABS TST1 4: 0+ 0 OBJECT GLOBAL DEFAULT ABS TST1
5: 0+188 0 FUNC GLOBAL DEFAULT 7 export_1@@TST1 5: 0+188 0 FUNC GLOBAL DEFAULT 7 export_1@@TST1
Symbol table '\.symtab' contains 23 entries: Symbol table '\.symtab' contains 22 entries:
Num: Value Size Type Bind Vis Ndx Name Num: Value Size Type Bind Vis Ndx Name
0: 0+ 0 NOTYPE LOCAL DEFAULT UND 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
1: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 1 1: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 1
@ -56,12 +55,11 @@ Symbol table '\.symtab' contains 23 entries:
11: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 11 11: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 11
12: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 12 12: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 12
13: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 13 13: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 13
14: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 14 14: 0+2198 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
15: 0+2198 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC 15: 0+2230 0 NOTYPE LOCAL DEFAULT ABS __bss_start
16: 0+2230 0 NOTYPE LOCAL DEFAULT ABS __bss_start 16: 0+2230 0 NOTYPE LOCAL DEFAULT ABS _edata
17: 0+2230 0 NOTYPE LOCAL DEFAULT ABS _edata 17: 0+2220 0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_
18: 0+2220 0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ 18: 0+2240 0 NOTYPE LOCAL DEFAULT ABS _end
19: 0+2240 0 NOTYPE LOCAL DEFAULT ABS _end 19: 0+184 0 FUNC LOCAL DEFAULT 7 dsofn
20: 0+184 0 FUNC LOCAL DEFAULT 7 dsofn 20: 0+ 0 OBJECT GLOBAL DEFAULT ABS TST1
21: 0+ 0 OBJECT GLOBAL DEFAULT ABS TST1 21: 0+188 0 FUNC GLOBAL DEFAULT 7 export_1
22: 0+188 0 FUNC GLOBAL DEFAULT 7 export_1