Bug 2723 - ld puts unused section symbols in symbol table
Summary: ld puts unused section symbols in symbol table
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-01 16:49 UTC by H.J. Lu
Modified: 2006-06-02 00:39 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
A testcase (402 bytes, application/octet-stream)
2006-06-01 16:51 UTC, H.J. Lu
Details

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2006-06-01 16:49:17 UTC
This patch

http://sourceware.org/ml/binutils/2006-05/msg00458.html

removes unused section symbols from symbol table. Shouldn't ld try not to put
them in symbol table in the first place?
Comment 1 H.J. Lu 2006-06-01 16:51:34 UTC
Created attachment 1061 [details]
A testcase

I got

[hjl@gnu-13 symtab-1]$ make
as   -o foo.o foo.s
./ld -o foo foo.o
./objcopy foo bar
readelf -Ss foo > foo.l
readelf -Ss bar > bar.l
diff -up foo.l bar.l
--- foo.l	2006-06-01 09:50:12.000000000 -0700
+++ bar.l	2006-06-01 09:50:12.000000000 -0700
@@ -12,26 +12,23 @@ Section Headers:
   [ 3] .shstrtab	  STRTAB	   0000000000000000  000000b5
	0000000000000027  0000000000000000	     0	   0	 1
   [ 4] .symtab 	  SYMTAB	   0000000000000000  00000260
-	0000000000000138  0000000000000018	     5	   6	 8
-  [ 5] .strtab 	  STRTAB	   0000000000000000  00000398
+	00000000000000f0  0000000000000018	     5	   3	 8
+  [ 5] .strtab 	  STRTAB	   0000000000000000  00000350
	0000000000000033  0000000000000000	     0	   0	 1
 Key to Flags:
   W (write), A (alloc), X (execute), M (merge), S (strings)
   I (info), L (link order), G (group), x (unknown)
   O (extra OS processing required) o (OS specific), p (processor specific)

-Symbol table '.symtab' contains 13 entries:
+Symbol table '.symtab' contains 10 entries:
    Num:    Value	   Size Type	Bind   Vis	Ndx Name
      0: 0000000000000000     0 NOTYPE	LOCAL  DEFAULT	UND
      1: 00000000004000b0     0 SECTION LOCAL  DEFAULT	  1
      2: 00000000006000b4     0 SECTION LOCAL  DEFAULT	  2
-     3: 0000000000000000     0 SECTION LOCAL  DEFAULT	  3
-     4: 0000000000000000     0 SECTION LOCAL  DEFAULT	  4
-     5: 0000000000000000     0 SECTION LOCAL  DEFAULT	  5
-     6: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 __start
-     7: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 _start
-     8: 00000000006000b5     0 NOTYPE	GLOBAL DEFAULT	ABS __bss_start
-     9: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 main
-    10: 00000000006000b5     0 NOTYPE	GLOBAL DEFAULT	ABS _edata
-    11: 00000000006000b8     0 NOTYPE	GLOBAL DEFAULT	ABS _end
-    12: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 start
+     3: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 __start
+     4: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 _start
+     5: 00000000006000b5     0 NOTYPE	GLOBAL DEFAULT	ABS __bss_start
+     6: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 main
+     7: 00000000006000b5     0 NOTYPE	GLOBAL DEFAULT	ABS _edata
+     8: 00000000006000b8     0 NOTYPE	GLOBAL DEFAULT	ABS _end
+     9: 00000000004000b0     0 NOTYPE	GLOBAL DEFAULT	  1 start
make: *** [all] Error 1
[hjl@gnu-13 symtab-1]$