BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> gcc & coff
dvader
Публикувано на: 11-12-2023, 10:31
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5209
Регистриран на: 12.07.05



Имам един малък проблем.
Използвам някаква мноооого стара версия на гцц да компилирам едни .с файлове и после да дъвча .о файловете за да видя формата на данните.
.с файла има точно една глобална променлива, чието име се знае, която може да бъде от всякакъв тип - int, struct, etc.
В coff файла намирам в символната таблица името на променливата, която има тип T_STRUCT и sclass C_EXT.
До тук добре.
Проблемът ми почва със смяната на gcc с по-нов.
В новият в символната таблица типът е T_NULL вместо T_STRUCT и съответно описанието на променливата липсва.

gcc.exe -x c++ -g -o test.o -c test.c

Някакви идеи?

Това мнение е било редактирано от dvader на 11-12-2023, 10:31


--------------------
I find your lack of faith disturbing
PM
Top
DarkOne
Публикувано на: 12-12-2023, 15:31
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3699
Регистриран на: 30.01.04



Трябва да имаш сериозна причина, за да ровиш по COFF-ата. Може би може да се подходи по различен начин към оригиналната задача за формата на данните.

Иначе, подозирам че може би информацията за типа на глобалната променлива не е необходима и затова я няма в по-новата версия.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
dvader
Публикувано на: 12-12-2023, 16:01
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5209
Регистриран на: 12.07.05



QUOTE (DarkOne @ 12-12-2023, 15:31)
Трябва да имаш сериозна причина, за да ровиш по COFF-ата. Може би може да се подходи по различен начин към оригиналната задача за формата на данните.

Иначе, подозирам че може би информацията за типа на глобалната променлива не е необходима и затова я няма в по-новата версия.

Оригиналната задача не подлежи на промяна icon_smile.gif
Кратката версия е "трябва от .h файл да направим .xml файл с описанието на типовете данните в .h файла". Знам името на типа в .h файла - "SomeStruct" или "SomeOtherStruct".

Де да имаше друг начин....
Та това е въпросът - как да я направя тази информация "необходима" че да я има.


--------------------
I find your lack of faith disturbing
PM
Top
Дон Реба
Публикувано на: 12-12-2023, 17:07
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10205
Регистриран на: 11.11.06



не е ли по-лесно вместо да парсваш кофата да парснеш самия хедър?
PM
Top
relax4o
Публикувано на: 12-12-2023, 17:46
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2823
Регистриран на: 04.04.07



QUOTE

GCC allows you to use -g with -O. The shortcuts taken by optimized code may occasionally be surprising: some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values are already at hand; some statements may execute in different places because they have been moved out of loops. Nevertheless it is possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs.


https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

Не знам дали това отговаря на проблема ти.

Може да помогне, ако промениш нивото на дебъг или използвайки -О, ако не си пробвал вече.


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
SuN
Публикувано на: 12-12-2023, 22:47
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 12816
Регистриран на: 27.01.05



Нямам опит, но бих пробвал някой нормален език, който поддържа C хедъри. Например това:
QUOTE
go-gccxml: Go binding and extension to gccxml

go-gccxml is a Go binding to gccxml (http://gccxml.github.io). Its main purpose is to parse C headers, and contains some extentions to make C declarations easier to process.

https://pkg.go.dev/h12.io/go-gccxml

Е, може да пробваш и директно с ориганала gccxml. icon_smile.gif

Това мнение е било редактирано от SuN на 12-12-2023, 22:48


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
dvader
Публикувано на: 13-12-2023, 18:28
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5209
Регистриран на: 12.07.05



QUOTE (relax4o @ 12-12-2023, 17:46)
Не знам дали това отговаря на проблема ти.

Може да помогне, ако промениш нивото на дебъг или използвайки -О, ако не си пробвал вече.

Първото нещо, което пробвах беше да го компилирам с -Og, обаче разлика никаква.
Освен това, самият символ го има в символната таблица, просто преди имаше допълнителна информация а с по-новата версия я няма.


--------------------
I find your lack of faith disturbing
PM
Top
dvader
Публикувано на: 13-12-2023, 18:29
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5209
Регистриран на: 12.07.05



QUOTE (SuN @ 12-12-2023, 22:47)
Е, може да пробваш и директно с ориганала gccxml. icon_smile.gif

Това не го бях чувал, ще го погледна... Подозирам обаче, че ще трябва да се пренапише част от кода - бизнеса може да не се навие icon_sad.gif


--------------------
I find your lack of faith disturbing
PM
Top
dvader
Публикувано на: 13-12-2023, 18:41
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5209
Регистриран на: 12.07.05



QUOTE (Дон Реба @ 12-12-2023, 17:07)
не е ли по-лесно вместо да парсваш кофата да парснеш самия хедър?

Е то почти да си напиша компилатор icon_smile.gif
Звучи примамливо, ама това не е Лисп, това С++... прекалено много неща ще трябва поддържам, то инак можеше с regex да мина icon_smile.gif


--------------------
I find your lack of faith disturbing
PM
Top
relax4o
Публикувано на: 13-12-2023, 19:27
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2823
Регистриран на: 04.04.07



QUOTE

-fno-eliminate-unused-debug-symbols
By default, no debug information is produced for symbols that are not actually used. Use this option if you want debug information for all symbols.


От този флаг разбирам 2 вариант, които са по подразбиране (без този флаг):
1. Добавя символите в символната таблица, но не добавя информация за тези, които не се използват.
2. Не се добавят символите в символната таблица въобще, ако не се използват.

Нямам как да тествам сам, а и нямам идея как да разчитам coff файлове, но ми стана интересно. Ако ми остане време може да разцъкам малко повече, макар че тука скачам в съвсем непознати води.


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0