ld/
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:
parent
9ee913b8a0
commit
18b7982923
6 changed files with 48 additions and 32 deletions
|
@ -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
|
||||||
|
|
27
ld/ldexp.c
27
ld/ldexp.c
|
@ -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)
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
Loading…
Reference in a new issue