2011-06-28 11 views
6

Ostatnio wiele godzin spędziłem próbując naprawić problematyczny skrypt ld. Kiedy już narysowałem (na papierze) wszystkie sekcje, mogłem zrozumieć problem.Generator skryptu linkera

Więc zacząłem szukać jakiegoś generatora skryptów LD, ale nie mogłem go znaleźć! Czy ktoś wie, czy takie narzędzie istnieje? Coś, co może importować/eksportować skrypty ld lub plik map-file/elf i wyświetlać różne obiekty/sekcje i adresy?

Wiem, że istnieje kilka IDE tam, gdzie nie trzeba się martwić o skrypty LD, ale używam zaćmienia i nie oferuje nawet podświetlania składni!

+0

Istnieje takie narzędzie w zestawie narzędzi Green Hills MULTI, który jest zastrzeżony. Nie widziałem takiego narzędzia w innym miejscu. Powiedziałem, że nigdy nie okazałem się przydatny do wyświetlania lub edycji. Zwalnianie granic sekcji z pliku wykonywalnego za pomocą readelfa i rozwijanie własnego wykresu byłoby prawdopodobnie szybką pracą. Twoja notatka na temat "niektórych IDE" sprawia, że ​​zastanawiam się, co dokładnie robisz ze skryptem linkera, chociaż ... – djs

+0

Tak, to, co zasugerowałeś powyżej, jest tym, co faktycznie robię. Chciałbym zrobić to automatycznie (jakiś GUI). Mój skrypt linkera jest dość skomplikowany, z wieloma różnymi sekcjami w pamięci flash/wewnętrznym i zewnętrznym ramie, więc jest to czasochłonne zadanie, aby ręcznie sprawdzić magię skryptów linkera. – theAlse

Odpowiedz

2

O ile mi wiadomo, nie ma żadnych niezastrzeżonych narzędzi do tego celu.

+0

Mam zamiar zaakceptować to jako odpowiedź, ponieważ nie widziałem jeszcze narzędzia do robienia tego! – theAlse

3

Nie znam żadnych edytorów WYSIWYG dla skryptów LD, ale mogę pomóc w graficznym debugowaniu tego typu problemów.

Zakładam, że był to problem w czasie wykonywania, a nie problem z czasem kompilacji. W takim przypadku możesz użyć danych wyjściowych mapy z linkera, aby zorientować się, co się dzieje.

gcc -Wl,-Map=main.map main.c 

Plik mapa może być następnie analizowany z grep lub można użyć graphical viewer dla pliku do debugowania problemów z sekcji i symboli.

Można również użyć nm, aby uzyskać podobne rezultaty z połączonego pliku wykonywalnego:

nm -S --size-sort a.out