[prev in list] [next in list] [prev in thread] [next in thread]
List: binutils
Subject: symbol size as function size
From: "Paulo J. Matos" <pocmatos () gmail ! com>
Date: 2011-06-23 16:16:16
Message-ID: itvosh$96k$1 () dough ! gmane ! org
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic