This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: dead function elimination


Nick Clifton wrote:
Hi Jimmy,

I thght the linker alone was supposed to be able to do dead-procedure-elimination.

No. It is a nice feature, but it is not a requirement of a linker.


After all can't the linker determine which procedures are unreferenced in the final executable?

Which is exactly what the --ffunction-sections and --gc-sections switches do.


If i'm not mistaken the diablo linker can do this?

It probably can.


Cheers
  Nick


If i understand things correctly, there is a restriction on '--gc-sections' that it doesn't work if the link is dynamic. What if my scenario is like this:


libsomething.a - some static library built with -ffunction-sections & -fdata-sections

src.o - my source code also built with -ffucntion-sections

final step:

ld -o exec --gc-sections src.o -lsomething

In the above step, ld simply says

'/usr/bin/ld: Warning: gc-sections option ignored'

My aim here was to remove unreferenced functions from both my code & the static library, but at the same time using libc as an '.so' (obviously that makes sense, cos it's shared across many apps & probably not built with -ffunction-sections to use a static link).

Is there any way to achieve this?


-jb
--
mathematician, n.:
Some one who believes imaginary things appear right before your i's.




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]