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]

symbol size as function size


Hi all,

Following a post to gcc mailing list I need help with setting up a binutils backend properly.

We currently have a builtin GCC function __function_size that expands into a symbol and a function sum would have the assembly code:

sum:
        ... // CODE FOR SUM
        .global __size_of_sum
        .equ __size_of_sum, .-sum

__size_of_sum would then be used as a symbol containing the size in words of sum.

The problem with the current setup is that as sets the value of __size_of_sum and when it is relaxed at link time, the size tends to decrease so the final value of __size_of_sum is wrong.

Ian told me through the GCC mailing list that adding defining DIFF_EXPR_OK should work and I did but it didn't work. My guess is that my rudimentary binutils backend is missing something or the version of binutils we are using is too old (version 2.17, I know its old but I think I am pretty much stuck to it unless you tell me this can't be done using this version).

Reiterating my previous thought, I thought that the solution could go through generating the additional line:
sum:
... // CODE FOR SUM
.global __size_of_sum
.size sum, .-sum
.equ __size_of_sum, <reference to size of symbol sum>


Then in the linker relaxation function for my backend, modify the size of symbol sum according to the relaxation. I guess the missing piece in this is a way in assembler to refer to the size of symbol sum (this would be code generated by gcc).

Any suggestions?

Cheers,
--
PMatos


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