-
1. Data: 2015-03-23 18:43:06
Temat: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
Wtiam.
Mam taki problem.
Czy jest taka możliwość żeby adresy funkcji w momencie kompilacji/linkowania
projektu zrzucić do jakiegoś pliku?
Chodzi o to że mam tablicę adresów funkcji np:
typedef int( * HANDLER)(void);
HANDLER handler[] = {h1, h2, h3};
I teraz wyłuskać to np: z plików .o.
Udaje mi się to ze zmiennymi które zawierają np: napisy (stałe) w ten sposób
że umieszczam je w oddzielnej sekcji w pliku nazwy.c
char nazwy[] __attribute__((section(".dataflashsection"))) = {"nazwa1",
"nazwa2"};
i przy wykonywaniu make wyłuskuję to za pomocą
avr-objcopy -j .dataflashsection -O binary nazwy.o nazwy.bin
i wartości zmiennych mam w pliku nazwy.bin
Niestety kiedy robię tak z adresami funkcji to w pliku wynikowym są tylko
zera. Umieszczam zmienną handler w pliku handler.c i dalej
HANDLER handler[] __attribute__((section(".dataflashsection"))) = {h1, h2,
h3};
avr-objcopy -j .dataflashsection -O binary handler.o handler.bin
Czy jest na to jakiś sposób?
Pozdrawiam
Paweł
-
2. Data: 2015-03-23 19:50:49
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
Widzę że siedzi to w pliku map, ale jak to automatem wyłuskać?
-
3. Data: 2015-03-23 20:12:15
Temat: Re: avr-gcc adresy funkcji
Od: Mario <m...@...pl>
W dniu 2015-03-23 o 19:50, pawel pisze:
> Widzę że siedzi to w pliku map, ale jak to automatem wyłuskać?
>
Może awk?
--
pozdrawiam
MD
-
4. Data: 2015-03-23 20:35:41
Temat: Re: avr-gcc adresy funkcji
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
pawel <p...@p...onet.pl> napisał(a):
> Widzę że siedzi to w pliku map, ale jak to automatem wyłuskać?
A jaki system? Jak Windows to można w PowerShellu:
$fileContent = [io.file]::ReadAllText("plik.map")
$fileContent | Select-String
'\.text\.([a-zA-Z0-9_-]+)\s+([0-9a-fx]+)\s+' -AllMatches |
Foreach {$_.Matches} | Foreach {$_.Groups[1].Value + " " +
$_.Groups[2].Value}
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 6 hours, 12 minutes and 16 seconds
-
5. Data: 2015-03-23 21:11:52
Temat: Re: avr-gcc adresy funkcji
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
pawel <p...@p...onet.pl> napisał(a):
> Widzę że siedzi to w pliku map, ale jak to automatem wyłuskać?
A jaki system? Jak Windows, to można w PowerShellu:
$fileContent = [io.file]::ReadAllText("plik.map")
$fileContent | Select-String
'\.text\.([a-zA-Z0-9_-]+)\s+([0-9a-fx]+)\s+' -AllMatches |
Foreach {$_.Matches} | Foreach {$_.Groups[1].Value + " " +
$_.Groups[2].Value}
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 6 hours, 50 minutes and 24 seconds
-
6. Data: 2015-03-23 21:31:22
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
> A jaki system? Jak Windows to można w PowerShellu:
Windows.
A może jest jakaś opcja żeby linker wyrzucił to w trakcie konsolidacji? Nie
jestem z tym zbyt dobrze obyty.
-
7. Data: 2015-03-24 10:31:31
Temat: Re: avr-gcc adresy funkcji
Od: k...@g...com
W dniu poniedziałek, 23 marca 2015 21:31:15 UTC+1 użytkownik bravo napisał:
> > A jaki system? Jak Windows to można w PowerShellu:
>
> Windows.
> A może jest jakaś opcja żeby linker wyrzucił to w trakcie konsolidacji? Nie
> jestem z tym zbyt dobrze obyty.
A moze ten tool sie przyda
https://sourceware.org/binutils/docs/binutils/nm.htm
l
avr-nm w avr-gcc.
Pzdr Krystian
-
8. Data: 2015-03-24 11:40:14
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Mon, 23 Mar 2015 18:43:06 +0100, "pawel" <p...@p...onet.pl>
wrote:
> Czy jest taka możliwość żeby adresy funkcji w momencie
kompilacji/linkowania
> projektu zrzucić do jakiegoś pliku?
A nie możesz użyć avr-objdump? Tylko już na pliku zawierającym
zlinkowaną całość bo inaczej będą adresy lokalne obiektu.
Warto też skomplikować całość z opcją -g wtedy objdump wygeneruje mix
źródła z asm + adresy.
--
Marek
-
9. Data: 2015-03-25 17:29:52
Temat: Re: avr-gcc adresy funkcji
Od: Sebastian Biały <h...@p...onet.pl>
On 2015-03-23 18:43, pawel wrote:
> Czy jest taka możliwość żeby adresy funkcji w momencie
> kompilacji/linkowania projektu zrzucić do jakiegoś pliku?
> Chodzi o to że mam tablicę adresów funkcji np:
>
> typedef int( * HANDLER)(void);
> HANDLER handler[] = {h1, h2, h3};
>
> I teraz wyłuskać to np: z plików .o.
Pliki .o nie zawieraja *jeszcze* adresów.
Napisz dokładnie do czego to potrzebujesz. Prawdopodobnie szukasz czegoś
innego niż myślisz.
-
10. Data: 2015-03-25 20:24:42
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
> A nie możesz użyć avr-objdump? Tylko już na pliku zawierającym zlinkowaną
> całość bo inaczej będą adresy lokalne obiektu.
A jak go wygenerować?
Bo linker generuje mi tylko program wynikowy .bin.
Pozdrawiam
Paweł