In config/mips/linux.h, the macro ASM_DECLARE_FUNCTION_SIZE() doesn't actually
emit the .size directive. Testcase follows.
% cat tst.c
% mips-linux-gcc -c tst.c
% mips-linux-readelf -s tst.o
Symbol table '.symtab' contains 11 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS tst.c
2: 00000000 0 SECTION LOCAL DEFAULT 1
3: 00000000 0 SECTION LOCAL DEFAULT 3
4: 00000000 0 SECTION LOCAL DEFAULT 4
5: 00000000 0 SECTION LOCAL DEFAULT 8
6: 00000000 0 SECTION LOCAL DEFAULT 5
7: 00000000 0 SECTION LOCAL DEFAULT 6
8: 00000000 0 SECTION LOCAL DEFAULT 9
9: 00000000 0 FUNC GLOBAL DEFAULT 1 func1
10: 00000000 0 OBJECT GLOBAL DEFAULT UND _gp_disp
Will attach a patch after bug is opened.
Created attachment 7927 [details]
patch to emit .size directive for mips-linux
Forgot to note. I found it in 3.3.4 but it looks like it's still a problem in
Created attachment 7942 [details]
testing diff for size problem
here's a testing patch for it. as we spoke this is a problem in binutils, not
gcc. the patch also adds unwind info if it doesn't exist.
Created attachment 8129 [details]
Here's another patch that I'm testing. I was doing this in a weird place
before. It implements the size directive and adds the .eh_frame section if not
there. If you've still got the large binary problems let me know and I'll give
you a patch for just the size directives. On the bright side readelf -s does
give what appear to be accurate sizes for the functions now.
fixed quite a while ago.
Reopening to ...
Fixed (I thought we have a state called MOVED).